Bird
Raised Fist0
NextJSframework~5 mins

Server-only modules in NextJS - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What are server-only modules in Next.js?
Server-only modules are files or code that run only on the server side in Next.js. They never get sent to the browser, keeping sensitive logic or data safe.
Click to reveal answer
intermediate
How do you mark a module as server-only in Next.js?
Import `server-only` at the top of the file (e.g., `import 'server-only';`). Place the module where it is used only in server components or server actions.
Click to reveal answer
beginner
Why should you use server-only modules for database access?
Because database credentials and queries should never be exposed to the browser. Server-only modules keep this code hidden and secure on the server.
Click to reveal answer
intermediate
Can server-only modules import client-side code in Next.js?
No, server-only modules cannot import client-side code because client code depends on browser APIs that don't exist on the server.
Click to reveal answer
intermediate
What happens if you try to use server-only modules in client components?
Next.js will throw an error during build or runtime because server-only modules are not allowed in client components to protect security and avoid runtime issues.
Click to reveal answer
What is the main purpose of server-only modules in Next.js?
ATo improve client-side rendering speed
BTo style components
CTo share code between client and server
DTo keep sensitive code hidden from the browser
Where should you place server-only modules in a Next.js app?
AInside the 'pages/api' directory only
BInside the 'public' directory
CInside the 'app' directory and used only in server components
DAnywhere, no restrictions
What do you add at the top of a file to mark it as server-only?
A"use client"
Bimport "server-only";
C"use strict"
D"use module"
Can server-only modules import browser APIs like 'window' or 'document'?
ANo, because those APIs don't exist on the server
BYes, always
COnly if you use dynamic imports
DOnly in development mode
What error occurs if you import a server-only module inside a client component?
ABuild or runtime error preventing the app from running
BSilent failure with no error
CWarning but app still runs
DNo error, it works fine
Explain what server-only modules are in Next.js and why they are important.
Think about what code should never be visible to users.
You got /4 concepts.
    Describe how to create and use a server-only module in a Next.js app.
    Focus on file location, directives, and usage rules.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of server-only modules in Next.js?
      easy
      A. To enable server code to be bundled with client JavaScript
      B. To run code on both server and client for faster rendering
      C. To allow client-side code to access server secrets directly
      D. To run code only on the server and keep it hidden from the browser

      Solution

      1. Step 1: Understand server-only module purpose

        Server-only modules run exclusively on the server and are not sent to the browser.
      2. Step 2: Identify security benefit

        This keeps secrets safe and improves app security by hiding sensitive code from clients.
      3. Final Answer:

        To run code only on the server and keep it hidden from the browser -> Option D
      4. Quick Check:

        Server-only modules hide code from browser = A [OK]
      Hint: Server-only means code runs only on server, hidden from browser [OK]
      Common Mistakes:
      • Thinking server-only modules run on client too
      • Assuming server-only modules expose secrets to browser
      • Confusing server-only with shared server-client code
      2. Which line correctly marks a Next.js module as server-only?
      easy
      A. export const client = true;
      B. export const runtime = 'edge';
      C. import 'server-only';
      D. export default function ServerOnly() {}

      Solution

      1. Step 1: Recall server-only marking syntax

        Next.js uses import 'server-only'; to mark server-only modules.
      2. Step 2: Compare options

        import 'server-only'; matches the correct syntax; others either mark edge runtime or client code.
      3. Final Answer:

        import 'server-only'; -> Option C
      4. Quick Check:

        Server-only marker = import 'server-only' [OK]
      Hint: Look for import 'server-only' to mark server-only [OK]
      Common Mistakes:
      • Using 'edge' runtime which is for edge functions, not server-only
      • Confusing client export with server-only marking
      • Missing the import keyword
      3. Given this server-only module code in Next.js, what will happen if you try to import it in a client component?
      import 'server-only';
      
      export function secretData() {
        return 'top-secret';
      }
      medium
      A. The client component will fail to compile with an error
      B. The client component will receive the secret data as a string
      C. The secretData function will run on the client without errors
      D. The secretData function will be bundled into client JavaScript

      Solution

      1. Step 1: Understand server-only import restrictions

        Server-only modules cannot be imported into client components; Next.js blocks this to protect secrets.
      2. Step 2: Predict behavior on import

        Trying to import causes a compile-time error because the module is not allowed in client code.
      3. Final Answer:

        The client component will fail to compile with an error -> Option A
      4. Quick Check:

        Importing server-only in client causes error = D [OK]
      Hint: Server-only modules cannot be imported by client components [OK]
      Common Mistakes:
      • Assuming server-only code runs on client
      • Thinking secret data is exposed to client
      • Believing server-only modules are bundled with client code
      4. You wrote this server-only module but get an error when running your Next.js app:
      export function getSecret() {
        return 'hidden';
      }

      What is missing to make this module server-only?
      medium
      A. You need to add import 'server-only'; at the top
      B. You must rename the function to start with 'server'
      C. You should import React in this module
      D. You need to export the function as default

      Solution

      1. Step 1: Identify server-only module requirement

        Next.js requires import 'server-only'; to mark a module as server-only.
      2. Step 2: Check given code

        The code lacks this import, so Next.js treats it as shared or client code, causing errors if used improperly.
      3. Final Answer:

        You need to add import 'server-only'; at the top -> Option A
      4. Quick Check:

        Missing 'server-only' import causes error = A [OK]
      Hint: Always add import 'server-only'; to mark server-only [OK]
      Common Mistakes:
      • Thinking function name controls server-only status
      • Assuming React import is needed for server-only modules
      • Believing default export affects server-only behavior
      5. You want to fetch a secret API key only on the server in Next.js and prevent it from being sent to the client. Which approach correctly uses server-only modules to achieve this?
      // secret.js
      import 'server-only';
      export function getApiKey() {
        return process.env.API_KEY;
      }
      
      // page.jsx
      'use client';
      import { getApiKey } from './secret';
      
      export default function Page() {
        const key = getApiKey();
        return <p>API Key: {key}</p>;
      }
      hard
      A. This code will cause an error because getApiKey is called in a client component
      B. You should move getApiKey call inside a server component or server action
      C. This code works and safely shows the API key on the client
      D. You must export getApiKey as default to work

      Solution

      1. Step 1: Understand server-only module usage

        Server-only modules cannot be imported or called directly in client components without error.
      2. Step 2: Analyze the code

        The page.jsx is a client component calling getApiKey(), which is server-only, causing an error.
      3. Step 3: Correct approach

        Call getApiKey() inside a server component or server action to keep the secret on the server.
      4. Final Answer:

        You should move getApiKey call inside a server component or server action -> Option B
      5. Quick Check:

        Server-only calls must be inside server components = B [OK]
      Hint: Call server-only functions only inside server components or actions [OK]
      Common Mistakes:
      • Calling server-only functions directly in client components
      • Exposing secrets by rendering them in client JSX
      • Assuming default export fixes server-only usage
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard