What is a key restriction of Next.js Server Components regarding browser APIs?
Server Components cannot use browser-only APIs like window, document, or localStorage because they run on the server, not in the browser.
Click to reveal answer
beginner
Can Server Components in Next.js use React hooks like useState or useEffect?
No, Server Components cannot use client-only React hooks such as useState or useEffect because they do not run in the browser and have no state or lifecycle.
Click to reveal answer
intermediate
Why can't Server Components import client components directly in Next.js?
Server Components can import client components, but client components must be marked with <code>"use client"</code>. This keeps server and client code separate.
Click to reveal answer
beginner
What kind of data fetching is recommended inside Next.js Server Components?
Server Components can fetch data directly using async/await because they run on the server, allowing secure and fast data fetching without exposing secrets to the client.
Click to reveal answer
beginner
Explain why Server Components cannot have event handlers like onClick.
Event handlers like onClick require client-side JavaScript to run. Server Components render HTML on the server and do not handle client events, so event handlers must be in Client Components.
Click to reveal answer
Which of the following is NOT allowed inside a Next.js Server Component?
ARendering JSX
BFetching data with async/await
CUsing <code>window</code> object
DImporting other Server Components
✗ Incorrect
Server Components run on the server and cannot access browser-only objects like window.
Can you use React's useState hook inside a Server Component?
ANo, never
BOnly if marked with "use client"
CYes, always
DOnly in Next.js 12
✗ Incorrect
useState is a client-side hook and cannot be used in Server Components.
How do you mark a component as a Client Component in Next.js?
AUse <code>React.useClient()</code>
BAdd <code>"use client"</code> at the top of the file
CName the file with .client.js extension
DWrap component in <Client> tag
✗ Incorrect
Adding "use client" at the top tells Next.js this component runs on the client.
Why can't Server Components handle user events like clicks?
AThey don't render HTML
BThey only handle data fetching
CThey are deprecated
DThey run only on the server without client JavaScript
✗ Incorrect
Server Components do not run in the browser, so they cannot handle client-side events.
Which is a benefit of Server Components in Next.js?
AThey enable secure server-side data fetching
BThey run faster in the browser
CThey replace Client Components completely
DThey allow direct access to browser APIs
✗ Incorrect
Server Components run on the server, so they can fetch data securely without exposing secrets.
Describe the main restrictions of Next.js Server Components and why they exist.
Think about where Server Components run and what that means for code they can use.
You got /5 concepts.
Explain how Server Components and Client Components work together in Next.js.
Consider the roles of server and client in a web app.
You got /5 concepts.
Practice
(1/5)
1. Which of the following is NOT allowed inside a Next.js server component?
easy
A. Using window.alert() to show a popup
B. Using fetch to get data from an API
C. Accessing the file system with fs module
D. Rendering static HTML content
Solution
Step 1: Understand server component environment
Server components run only on the server and do not have access to browser APIs like window.
Step 2: Identify browser-only features
Using window.alert() requires a browser environment, so it is not allowed in server components.
Final Answer:
Using window.alert() to show a popup -> Option A
Quick Check:
Browser APIs forbidden in server components = B [OK]
Hint: Server components can't use browser-only APIs like window [OK]
Common Mistakes:
Thinking fetch is a browser-only API
Assuming file system access is disallowed
Confusing client and server component roles
2. Which syntax correctly marks a component as a server component in Next.js?
easy
A. 'use server'; export default function MyComponent() { return
Hello
}
B. 'use client'; export default function MyComponent() { return
Hello
}
C. export default function MyComponent() { return
Hello
}
D. 'use client'; export const MyComponent = () =>
Hello
Solution
Step 1: Recall default component type
By default, components in Next.js are server components unless marked otherwise.
Step 2: Identify client directive usage
Adding 'use client' marks a component as client-side, so 'use client'; export default function MyComponent() { return <div>Hello</div> } is client, not server.
Final Answer:
export default function MyComponent() { return <div>Hello</div> } -> Option C
Quick Check:
Default is server component = A [OK]
Hint: No 'use client' means server component by default [OK]
Common Mistakes:
Adding 'use server' which is not a valid directive
Confusing arrow function export with client directive
Assuming explicit 'use server' is required
3. What will happen if you try to use useState hook inside a Next.js server component?
medium
A. It will convert the component to a client component automatically
B. It will work normally and manage state on the server
C. It will silently ignore the state and render static content
D. It will cause a runtime error because hooks are client-only
Solution
Step 1: Understand hook restrictions in server components
Hooks like useState require a browser environment and are only valid in client components.
Step 2: Identify behavior when used in server components
Using useState in server components causes a runtime error because state management is not supported there.
Final Answer:
It will cause a runtime error because hooks are client-only -> Option D
Quick Check:
useState only works in client components = A [OK]
Hint: useState is client-only; server components error if used [OK]
Common Mistakes:
Thinking useState works on server for pre-rendering
Assuming server components can manage interactive state
Believing server components auto-convert to client
4. You wrote this server component code but get an error:
import { useEffect } from 'react';
export default function Page() {
useEffect(() => { console.log('Hello'); });
return <div>Welcome</div>;
}
What is the main cause of the error?
medium
A. You cannot import from 'react' in server components
B. useEffect is a client-only hook and cannot be used in server components
C. Missing 'use client' directive at the top of the file
D. The return statement must be wrapped in a fragment
Solution
Step 1: Identify hook usage in server components
Hooks like useEffect run only in client components because they depend on browser lifecycle.
Step 2: Understand error cause
Using useEffect in a server component causes an error since server components do not support client hooks.
Final Answer:
useEffect is a client-only hook and cannot be used in server components -> Option B
Quick Check:
useEffect forbidden in server components = C [OK]
Hint: useEffect only works in client components, not server [OK]
Common Mistakes:
Thinking 'use client' fixes the error without adding directive
Assuming import from 'react' is disallowed
Believing return must be wrapped in fragment
5. You want to fetch data securely on the server and display it in a component. Which approach respects Next.js server component restrictions?
hard
A. Create a server component that uses fetch to get data and renders it directly
B. Create a client component that uses fetch inside useEffect to load data
C. Create a server component that uses window.fetch to get data
D. Create a client component that reads data from the file system
Solution
Step 1: Identify secure data fetching method
Server components can use fetch directly on the server to securely get data before rendering.
Step 2: Eliminate invalid options
Client components fetch data in the browser, less secure; window.fetch does not exist on server; file system access is server-only.
Final Answer:
Create a server component that uses fetch to get data and renders it directly -> Option A
Quick Check:
Server fetch for secure data = D [OK]
Hint: Fetch data in server components for security, not client hooks [OK]
Common Mistakes:
Using window.fetch in server components
Fetching data in client components unnecessarily
Trying to access file system in client components
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.