# Server Actions w Next.js 16 w 2026: mutacje, rewalidacja i pytania rekrutacyjne > Jak Server Actions w Next.js 16 obsługują mutacje, rewalidację, stan oczekiwania, optymistyczny interfejs i bezpieczeństwo, wraz z pytaniami rekrutacyjnymi sprawdzającymi każdą koncepcję. - 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 w Next.js zamieniają zwykłą funkcję asynchroniczną w serwerowy punkt końcowy mutacji, który formularz może wywołać bezpośrednio, bez trasy API, bez klienckiego `fetch` i bez ręcznej serializacji JSON. W Next.js 16 to domyślny sposób pisania mutacji danych i pojawiają się niemal na każdej rozmowie rekrutacyjnej na stanowisko senior React w 2026 roku. Ta szczegółowa analiza wyjaśnia, jak są wykonywane, jak rewalidacja dostarcza świeże dane do interfejsu, jak modelować stany oczekiwania i błędów oraz które reguły bezpieczeństwa najczęściej podkładają nogę programistom. > **Definicja w jednym zdaniu** > > Server Action to funkcja asynchroniczna oznaczona dyrektywą `"use server"`, która działa wyłącznie na serwerze i może zostać wywołana z komponentu klienckiego lub formularza tak, jakby była lokalna, podczas gdy Next.js automatycznie obsługuje żądanie sieciowe, serializację argumentów i ochronę CSRF. ## Jak Server Actions działają pod maską Server Action to funkcja działająca wyłącznie na serwerze, wywoływana przez sieć za pośrednictwem punktu końcowego wygenerowanego przez kompilator. Gdy funkcja nosi dyrektywę `"use server"`, kompilator Next.js nigdy nie wysyła jej treści do przeglądarki. Zamiast tego zastępuje funkcję lekkim odwołaniem: zahaszowanym identyfikatorem akcji przypisanym do wygenerowanej trasy POST. Wywołanie akcji z klienta wysyła żądanie do tej trasy, prawdziwa funkcja uruchamia się na serwerze, a zserializowany wynik wraca strumieniowo do wywołującego. Ten projekt ma trzy konsekwencje warte zapamiętania zarówno dla kodu produkcyjnego, jak i na rozmowach rekrutacyjnych. Po pierwsze, argumenty i wartości zwracane muszą być serializowalne, ponieważ przechodzą przez sieć jako zakodowane ładunki. Po drugie, sekrety pozostają na serwerze, bo treść funkcji nigdy nie trafia do pakietu klienckiego. Po trzecie, akcje dołączone do `
` działają jeszcze przed hydracją, dlatego progresywne ulepszanie stanowi jeden z kluczowych atutów. Oficjalny [przewodnik Next.js po aktualizacji danych](https://nextjs.org/docs/app/getting-started/updating-data) dokumentuje pełny model wykonania. Każda Server Action znajduje się w pliku lub bloku oznaczonym `"use server"`. Pojedyncza mutacja wygląda tak: ```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}`) } ``` Funkcja odczytuje przesłane `FormData`, zapisuje dane przez warstwę serwisową, unieważnia zbuforowaną listę i przekierowuje. Do żadnej z tych operacji nie jest potrzebny kod JavaScript po stronie klienta. ## Podłączanie Server Action do formularza bez klienckiego JavaScriptu Przekazanie akcji do właściwości `action` formularza to najprostsza integracja. Next.js serializuje przesłane dane do `FormData` i wywołuje funkcję na serwerze. Ponieważ wykorzystuje to natywny mechanizm wysyłania formularzy, działa z wyłączonym JavaScriptem i płynnie się ulepsza po hydracji strony. ```tsx // app/posts/new-post-form.tsx import { createPost } from "./actions" export default function NewPostForm() { return (