Data Fetching
Server Actions
Learn Server Actions in Next.js for form submissions, mutations, cache invalidation, and server-side business logic.
1. Learning Objectives
By the end of this lesson, you will be able to:
"use server".Difficulty: Intermediate.
2. Prerequisites
3. Overview
Server Actions are async server functions that can be invoked from forms or Client Components. They let you run mutations on the server without manually creating a separate API endpoint for every in-app action.
4. Why This Topic Matters
Applications need mutations: creating posts, saving settings, deleting records, and updating profiles. Server Actions keep those mutations close to the UI while still running securely on the server.
5. Real-World Analogy
A Server Action is like handing a completed form to a staff member behind the counter. The user interacts with the form, but the actual record update happens in the secure back office.
6. Core Concepts
| Concept | Meaning |
|---|---|
"use server" | Directive that marks an async function as server-only. |
| Mutation | Operation that changes data. |
FormData | Standard object for submitted form fields. |
revalidatePath | Refreshes cached data for a path after mutation. |
| Progressive enhancement | Forms can submit without custom client fetch code. |
7. Syntax & API Reference
8. Visual Diagram
9. Live Example - Full Working Code
What just happened? The form submits to a server function that validates, mutates data, and refreshes the todos route.
10. Interactive Playground
Try this:
revalidatePath() after saving data.11. Common Mistakes
| Mistake | Why It Happens | Correct Approach |
|---|---|---|
| Trusting form input | The action runs on the server but input is still user-controlled. | Validate and authorize every mutation. |
| Forgetting cache revalidation | UI may show stale cached data. | Use revalidatePath or tag-based invalidation. |
| Using actions for external webhooks | Actions are app mutation functions. | Use Route Handlers for external HTTP calls. |
12. Best Practices
13. Browser Compatibility
| Feature | Browser Impact | Notes |
|---|---|---|
| HTML forms | Broad support | Server Actions integrate with form submissions. |
| Client invocation | Requires React/Next runtime | Used for interactive flows. |
| Server mutation | Server-side | Keeps secrets out of browser. |
14. Interview Questions
Easy: What directive marks a Server Action?Answer: "use server".
Answer: In-app mutations such as form submissions, settings updates, and data writes.
Hard: Why still validate authorization in a Server Action?Answer: Server Actions can mutate protected data, so the server must verify the current user is allowed to perform the operation.
15. Debugging Exercise
Bug report: "The record saves, but the page still shows the old list."
Solution
The mutation likely did not revalidate cached data. Call revalidatePath('/affected-route') or use tag-based invalidation after the write.
16. Practice Exercises
17. Scenario-Based Challenge
A settings form updates the user's display name. Should you use a Server Action or a Route Handler?
Walkthrough
Use a Server Action if the mutation is only used inside the Next.js app. Validate the session and input, update the database, then revalidate affected UI.
18. Quick Quiz
1. Are Server Actions async? Answer: Yes.
2. What object contains form fields? Answer: FormData.
3. What refreshes cached route data? Answer: revalidatePath.
4. Are Server Actions for public webhooks? Answer: Usually no.
5. Should input be validated? Answer: Always.
19. Summary & Key Takeaways
20. Cheat Sheet
| Need | Server Action? |
|---|---|
| In-app form submit | Yes |
| Stripe webhook | No |
| Save profile settings | Yes |
| Public mobile API | No |
| Revalidate after mutation | Yes |
21. Further Reading
22. Next Lesson Preview
Next, you will learn API Routes and how they relate to App Router Route Handlers.