Bird
Raised Fist0
NextJSframework~5 mins

Use server directive in NextJS - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What does the use server directive do in Next.js?
It marks a function or component to run only on the server side, ensuring it does not run in the browser. This helps with security and performance.
Click to reveal answer
beginner
Where should you place the use server directive in your Next.js code?
At the very top of the file or function before any other code, as a special directive line: 'use server'.
Click to reveal answer
intermediate
Why is it important to use the use server directive for server-only functions?
It prevents server-only code from being bundled and sent to the browser, reducing bundle size and avoiding exposing sensitive logic.
Click to reveal answer
beginner
Can a component marked with use server access browser APIs like window?
No. Components or functions with use server run only on the server and do not have access to browser-specific APIs.
Click to reveal answer
intermediate
How does use server relate to React Server Components in Next.js?
It explicitly marks functions or components as server-only, which is a key part of React Server Components to separate server and client logic.
Click to reveal answer
What is the correct way to mark a function as server-only in Next.js?
Aimport server from 'next/server'
B'use server' at the top of the file
CAdd a comment // server-only
DUse <ServerOnly> component wrapper
What happens if you do NOT use 'use server' for a server-only function?
AThe function might be bundled and sent to the browser
BThe function runs only on the server anyway
CThe function will run twice on server and client
DNext.js throws a compile error
Can a 'use server' function use browser APIs like localStorage?
AYes, always
BOnly if wrapped in useEffect
CNo, it runs only on the server
DOnly in development mode
Where should the 'use server' directive be placed in a file?
AAt the very top before any code
BAfter imports
CAnywhere inside the function
DInside the component return
What is a benefit of using 'use server' in Next.js?
AImproves client-side rendering speed
BAllows server-only code to run in the browser
CAutomatically converts code to TypeScript
DReduces client bundle size and hides server logic
Explain what the 'use server' directive does in Next.js and why it is important.
Think about where your code runs and what you want to hide from the browser.
You got /3 concepts.
    Describe how to correctly use the 'use server' directive in a Next.js component or function.
    It's a special comment line that must come first.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the use server directive in Next.js?
      easy
      A. To enable client-side rendering of components.
      B. To import CSS stylesheets into components.
      C. To mark functions that should only run on the server for security and performance.
      D. To declare global variables accessible on both client and server.

      Solution

      1. Step 1: Understand the role of use server

        The directive marks functions to run only on the server side, not on the client.
      2. Step 2: Recognize benefits

        This separation helps keep sensitive code secure and improves app performance by avoiding client execution.
      3. Final Answer:

        To mark functions that should only run on the server for security and performance. -> Option C
      4. Quick Check:

        use server = server-only functions [OK]
      Hint: Remember: use server means run code only on server [OK]
      Common Mistakes:
      • Thinking it enables client-side rendering
      • Confusing it with CSS imports
      • Assuming it shares variables globally
      2. Which of the following is the correct way to declare a server-only function using the use server directive in Next.js?
      easy
      A. 'use server'; function fetchData() { return 'data'; }
      B. "use server" function fetchData() { return 'data'; }
      C. use server; function fetchData() { return 'data'; }
      D. use server() function fetchData() { return 'data'; }

      Solution

      1. Step 1: Identify correct directive syntax

        The use server directive must be a string literal: 'use server';
      2. Step 2: Check function declaration

        The function follows normal JavaScript syntax after the directive.
      3. Final Answer:

        'use server'; function fetchData() { return 'data'; } -> Option A
      4. Quick Check:

        Directive as string literal = correct syntax [OK]
      Hint: Use quotes around use server directive [OK]
      Common Mistakes:
      • Omitting quotes around use server
      • Using semicolon incorrectly
      • Trying to call use server as a function
      3. Given the code below, what will be the output when the component renders?
      "use client";
      import { useState } from 'react';
      
      export default function Page() {
        const [count, setCount] = useState(0);
      
        async function increment() {
          'use server';
          // server-only logic
          return count + 1;
        }
      
        return  setCount(count + 1)}>Count: {count};
      }
      medium
      A. Button shows count starting at 0 and increments on click.
      B. Error because server function is called inside client component.
      C. Button shows count but does not update on click.
      D. Button shows count starting at 1 immediately.

      Solution

      1. Step 1: Identify client and server code

        The component uses "use client" so it runs on client. The increment function is marked 'use server' but is not called in this code.
      2. Step 2: Understand state update

        The button's onClick updates state locally with setCount(count + 1), so count increments on click.
      3. Final Answer:

        Button shows count starting at 0 and increments on click. -> Option A
      4. Quick Check:

        Client state updates on click = Button shows count starting at 0 and increments on click. [OK]
      Hint: Server functions don't run unless explicitly called [OK]
      Common Mistakes:
      • Assuming server function runs automatically
      • Expecting error from server function inside client
      • Thinking count starts at 1
      4. What is wrong with the following Next.js server function?
      'use server'
      export async function getData() {
        const res = await fetch('/api/data');
        return res.json();
      }
      medium
      A. Missing semicolon after 'use server' directive.
      B. The fetch URL should be absolute or use Next.js fetch options.
      C. Cannot use fetch inside server functions.
      D. Async functions cannot be marked with 'use server'.

      Solution

      1. Step 1: Check directive syntax

        Missing semicolon is not a syntax error in JavaScript, so not critical here.
      2. Step 2: Analyze fetch usage

        In server functions, fetch should use absolute URLs or Next.js fetch options to avoid errors.
      3. Final Answer:

        The fetch URL should be absolute or use Next.js fetch options. -> Option B
      4. Quick Check:

        Server fetch needs absolute URL or options [OK]
      Hint: Use absolute URLs in server fetch calls [OK]
      Common Mistakes:
      • Thinking semicolon is mandatory after directive
      • Believing fetch is disallowed on server
      • Assuming async can't be used with use server
      5. You want to create a Next.js API route that uses a server-only function to fetch user data securely. Which approach correctly uses the use server directive to keep the fetch logic server-side while exposing only safe data to the client?
      hard
      A. Fetch data in client components and mark the fetch function with 'use server' to secure it.
      B. Mark the API route file with 'use server' and call fetch directly in client components.
      C. Use 'use server' in client components to fetch data and pass it to API routes.
      D. Declare 'use server' inside the API route handler and call fetch there, then return safe data.

      Solution

      1. Step 1: Understand server-only logic placement

        The server-only fetch logic should be inside the API route handler marked with 'use server' to keep it secure.
      2. Step 2: Avoid client-side fetch for sensitive data

        Client components should not fetch sensitive data directly or use 'use server' since it only works server-side.
      3. Final Answer:

        Declare 'use server' inside the API route handler and call fetch there, then return safe data. -> Option D
      4. Quick Check:

        Server fetch in API route = secure data [OK]
      Hint: Keep fetch in API route with use server [OK]
      Common Mistakes:
      • Trying to use use server in client components
      • Fetching sensitive data directly on client
      • Marking entire API route file incorrectly