Bird
Raised Fist0
NextJSframework~5 mins

API routes vs server actions decision in NextJS - Quick Revision & Key Differences

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 is an API route in Next.js?
An API route is a special file inside the 'app/api' folder that handles HTTP requests like GET or POST. It runs on the server and lets you create backend endpoints easily within your Next.js app.
Click to reveal answer
beginner
What are server actions in Next.js?
Server actions are functions that run on the server and can be called directly from client components. They simplify server communication by avoiding separate API endpoints and letting you handle server logic inline.
Click to reveal answer
intermediate
When should you choose API routes over server actions?
Choose API routes when you need a RESTful or external API, want to share endpoints with other apps, or need fine control over HTTP methods and headers.
Click to reveal answer
intermediate
What are the benefits of using server actions instead of API routes?
Server actions reduce boilerplate code, improve developer experience by calling server code directly, and help keep client and server logic close together for simpler apps.
Click to reveal answer
intermediate
Can server actions replace all API routes in Next.js?
No. Server actions are great for internal server logic but API routes are still needed for public APIs, external integrations, or when you want to expose endpoints outside your app.
Click to reveal answer
Which Next.js feature lets you create backend endpoints with HTTP methods?
AAPI routes
BServer actions
CClient components
DStatic props
What is a key advantage of server actions over API routes?
AThey run on the client
BThey avoid creating separate API endpoints
CThey require more boilerplate code
DThey only support GET requests
When should you prefer API routes instead of server actions?
AFor internal server logic only
BWhen you want to call server code inline
CTo reduce code complexity
DWhen exposing public APIs to other apps
Which Next.js feature improves developer experience by reducing boilerplate for server calls?
AAPI routes
BClient components
CServer actions
DStatic site generation
Can server actions handle all use cases of API routes?
ANo, especially for public APIs
BOnly for GET requests
CYes, always
DOnly for static data
Explain the main differences between API routes and server actions in Next.js.
Think about how each handles server logic and when to use them.
You got /4 concepts.
    Describe a scenario where you would choose API routes over server actions and why.
    Consider if your server code needs to be accessed outside your Next.js app.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main difference between Next.js API routes and server actions?
      easy
      A. API routes and server actions are exactly the same in Next.js.
      B. API routes run only on the client; server actions run only on the server.
      C. API routes create separate endpoints; server actions call server code directly from components.
      D. API routes are used for styling; server actions handle routing.

      Solution

      1. Step 1: Understand API routes purpose

        API routes create separate API endpoints that the client can call to communicate with the server.
      2. Step 2: Understand server actions purpose

        Server actions allow calling server code directly from React components without creating separate endpoints.
      3. Final Answer:

        API routes create separate endpoints; server actions call server code directly from components. -> Option C
      4. Quick Check:

        API routes vs server actions difference = D [OK]
      Hint: API routes = endpoints; server actions = direct calls [OK]
      Common Mistakes:
      • Thinking API routes run on client side
      • Confusing server actions with styling or routing
      • Believing API routes and server actions are identical
      2. Which of the following is the correct way to define a server action in Next.js?
      easy
      A. export default function handler(req, res) { /* server code */ }
      B. export async function actionName() { /* server code */ }
      C. function actionName() { return
      Server Action
      }
      D. const actionName = () => fetch('/api/data')

      Solution

      1. Step 1: Identify server action syntax

        Server actions are defined as exported async functions that run on the server.
      2. Step 2: Compare with API route syntax

        API routes use a default export function with (req, res) parameters, not named async functions.
      3. Final Answer:

        export async function actionName() { /* server code */ } -> Option B
      4. Quick Check:

        Server action syntax = B [OK]
      Hint: Server actions use named async functions exported directly [OK]
      Common Mistakes:
      • Using default export with req, res (API route style)
      • Writing server actions as React components
      • Calling fetch inside server action definition
      3. Given this Next.js server action code, what will be the output when called from a component?
      export async function addNumbers(a, b) {
        return a + b;
      }
      medium
      A. Returns a Promise resolving to the sum of a and b.
      B. Returns undefined because server actions cannot return values.
      C. Throws a syntax error due to missing parameters.
      D. Returns a string concatenation of a and b.

      Solution

      1. Step 1: Analyze the server action function

        The function is async and returns the sum of a and b, which is a number.
      2. Step 2: Understand async function return

        Async functions return a Promise that resolves to the returned value, here the sum.
      3. Final Answer:

        Returns a Promise resolving to the sum of a and b. -> Option A
      4. Quick Check:

        Async function returns Promise with sum = A [OK]
      Hint: Async server actions return Promises with results [OK]
      Common Mistakes:
      • Thinking server actions cannot return values
      • Confusing number addition with string concatenation
      • Assuming syntax error due to parameters
      4. You wrote this API route in Next.js but it throws an error:
      export async function handler(req, res) {
        res.status(200).json({ message: 'Hello' });
      }

      What is the error and how to fix it?
      medium
      A. Response method json is invalid; use send instead.
      B. Should use server action syntax instead of API route syntax.
      C. Function must not be async in API routes.
      D. Missing default export; change to export default async function handler(req, res).

      Solution

      1. Step 1: Identify API route export requirement

        API routes require a default export function to handle requests.
      2. Step 2: Fix export statement

        Change named export to default export: export default async function handler(req, res).
      3. Final Answer:

        Missing default export; change to export default async function handler(req, res). -> Option D
      4. Quick Check:

        API route default export required = C [OK]
      Hint: API routes need default export function [OK]
      Common Mistakes:
      • Using named export instead of default export
      • Confusing API routes with server actions syntax
      • Incorrect response method usage
      5. You want to build a Next.js app that needs a public API for multiple clients and also some simple server logic tightly integrated with components. Which approach should you choose?
      hard
      A. Use API routes for the public API and server actions for simple server logic inside components.
      B. Use only server actions for everything to keep code simple.
      C. Use only API routes for all server logic to avoid confusion.
      D. Use client-side fetching only; avoid server code.

      Solution

      1. Step 1: Analyze app needs

        The app requires a public API accessible by multiple clients and simple server logic integrated with components.
      2. Step 2: Match features to approaches

        API routes are best for broad public APIs; server actions are ideal for simple, direct server calls from components.
      3. Final Answer:

        Use API routes for the public API and server actions for simple server logic inside components. -> Option A
      4. Quick Check:

        Public API + integrated logic = A [OK]
      Hint: Public API = API routes; simple logic = server actions [OK]
      Common Mistakes:
      • Using only server actions for public APIs
      • Using only API routes for simple component logic
      • Avoiding server code when needed