# Server Actions у Next.js 16 у 2026: мутації, ревалідація та питання співбесід > Як Server Actions у Next.js 16 обробляють мутації, ревалідацію, стан очікування, оптимістичний інтерфейс і безпеку, разом із питаннями співбесід на кожну концепцію. - Published: 2026-06-24 - Updated: 2026-07-06 - Author: SharpSkill - Tags: next.js, server-actions, react, mutations, revalidation, interview - Reading time: 11 min --- Server Actions у Next.js перетворюють звичайну асинхронну функцію на серверний ендпоінт для мутацій, який форма може викликати напряму — без API-маршруту, без клієнтського `fetch` і без ручної серіалізації JSON. У Next.js 16 це стандартний спосіб писати мутації даних, і вони зустрічаються майже на кожній співбесіді для senior-розробників React у 2026 році. Цей детальний розбір пояснює, як вони виконуються, як ревалідація доносить свіжі дані до інтерфейсу, як моделювати стани очікування й помилок, а також правила безпеки, на яких спотикається більшість розробників. > **Визначення в одному реченні** > > Server Action — це асинхронна функція, позначена директивою `"use server"`, яка виконується лише на сервері й може викликатися з клієнтського компонента або форми так, ніби вона локальна, тоді як Next.js автоматично бере на себе мережевий запит, серіалізацію аргументів і захист від CSRF. ## Як Server Actions виконуються під капотом Server Action — це функція, що виконується виключно на сервері та викликається через мережу за допомогою ендпоінта, згенерованого компілятором. Коли функція має директиву `"use server"`, компілятор Next.js ніколи не надсилає її тіло до браузера. Натомість він замінює функцію на легке посилання: хешований ідентифікатор дії, прив'язаний до згенерованого POST-маршруту. Виклик дії з клієнта надсилає запит на цей маршрут, справжня функція виконується на сервері, а серіалізований результат стрімиться назад до того, хто її викликав. Такий дизайн має три наслідки, які варто пам'ятати як для продакшн-коду, так і для співбесід. По-перше, аргументи та значення, що повертаються, мають бути серіалізовними, бо вони перетинають мережу у вигляді закодованих даних. По-друге, секрети залишаються на сервері, оскільки тіло функції ніколи не потрапляє до клієнтського бандла. По-третє, дії, прив'язані до `
`, працюють навіть до гідратації, і саме тому progressive enhancement є ключовою перевагою. Офіційний [посібник Next.js з оновлення даних](https://nextjs.org/docs/app/getting-started/updating-data) документує повну модель виконання. Кожна Server Action живе у файлі чи блоці, позначеному `"use server"`. Одна мутація виглядає так: ```typescript // app/posts/actions.ts "use server" import { revalidatePath } from "next/cache" import { redirect } from "next/navigation" import { PostService } from "@/lib/services/post-service" export async function createPost(formData: FormData) { // FormData values arrive as strings; cast explicitly const title = formData.get("title") as string const body = formData.get("body") as string // Run business logic through the service layer, never the ORM directly const post = await PostService.create({ title, body }) // Purge the cached list so the next request refetches it revalidatePath("/posts") // Send the user to the freshly created resource redirect(`/posts/${post.id}`) } ``` Функція читає надіслані `FormData`, зберігає дані через сервіс, інвалідовує кешований список і виконує перенаправлення. Жодного клієнтського JavaScript для цього не потрібно. ## Підключення Server Action до форми без клієнтського JavaScript Передача дії у пропс `action` форми — це найпростіша інтеграція. Next.js серіалізує надіслані дані у `FormData` і викликає функцію на сервері. Оскільки використовується нативний механізм надсилання форми, це працює навіть із вимкненим JavaScript і безшовно покращується після гідратації сторінки. ```tsx // app/posts/new-post-form.tsx import { createPost } from "./actions" export default function NewPostForm() { return (