# Next.js 16 Server Actions 2026: Mutation, Revalidation ve Mülakat Soruları > Next.js 16 Server Actions'ın mutation, revalidation, bekleme durumu, optimistic UI ve güvenliği nasıl ele aldığı ve her kavramı sınayan mülakat soruları. - Published: 2026-06-24 - Updated: 2026-07-06 - Author: SharpSkill - Tags: next.js, server-actions, react, mutations, revalidation, interview - Reading time: 11 min --- Next.js Server Actions, sıradan bir async fonksiyonu; API rotası, istemci tarafı `fetch` çağrısı veya manuel JSON serileştirmesi olmadan bir formun doğrudan çağırabileceği bir sunucu tarafı mutation uç noktasına dönüştürür. Next.js 16'da veri mutation'ları yazmanın varsayılan yolu bunlardır ve 2026'da neredeyse her senior React mülakatında karşımıza çıkarlar. Bu derinlemesine inceleme; bunların nasıl çalıştığını, revalidation'ın taze veriyi arayüze nasıl aktardığını, bekleme (pending) ve hata durumlarının nasıl modelleneceğini ve çoğu geliştiricinin takıldığı güvenlik kurallarını adım adım ele alıyor. > **Tek Cümlelik Tanım** > > Server Action, `"use server"` ile işaretlenen ve yalnızca sunucuda çalışan; bir istemci bileşeninden veya formdan sanki yerel bir fonksiyonmuş gibi çağrılabilen async bir fonksiyondur; bu sırada Next.js ağ isteğini, argüman serileştirmesini ve CSRF korumasını otomatik olarak üstlenir. ## Server Action'lar Perde Arkasında Nasıl Çalışır Server Action, derleyicinin ürettiği bir uç nokta üzerinden ağ aracılığıyla çağrılan, yalnızca sunucuda çalışan bir fonksiyondur. Bir fonksiyon `"use server"` yönergesini taşıdığında, Next.js derleyicisi fonksiyonun gövdesini tarayıcıya asla göndermez. Bunun yerine fonksiyonun yerine hafif bir referans koyar: üretilen bir POST rotasına eşlenmiş, hash'lenmiş bir action kimliği. Action istemciden çağrıldığında bu rotaya bir istek gönderilir, gerçek fonksiyon sunucuda çalışır ve serileştirilmiş sonuç çağırana geri akıtılır. Bu tasarımın hem üretim kodu hem de mülakatlar açısından akılda tutulması gereken üç sonucu vardır. Birincisi, argümanlar ve dönüş değerleri serileştirilebilir olmalıdır; çünkü ağ üzerinden kodlanmış yükler (payload) olarak geçerler. İkincisi, sırlar sunucuda kalır; çünkü fonksiyon gövdesi hiçbir zaman istemci için paketlenmez. Üçüncüsü, bir `
` öğesine bağlanan action'lar hydration'dan önce bile çalışır; progressive enhancement'ın (aşamalı geliştirme) temel bir satış noktası olmasının nedeni budur. Resmi [Next.js veri güncelleme kılavuzu](https://nextjs.org/docs/app/getting-started/updating-data) tam çalışma modelini belgeler. Her Server Action, `"use server"` ile işaretlenmiş bir dosyada veya blokta yer alır. Tek bir mutation şuna benzer: ```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}`) } ``` Fonksiyon, gönderilen `FormData`'yı okur, bir servis katmanı üzerinden kalıcı hale getirir, önbelleğe alınmış listeyi geçersiz kılar ve yönlendirme yapar. Bunların hiçbiri için istemci tarafı JavaScript gerekmez. ## Server Action'ı İstemci JavaScript'i Olmadan Bir Forma Bağlamak Action'ı bir formun `action` prop'una geçirmek en basit entegrasyondur. Next.js, gönderimi `FormData`'ya serileştirir ve fonksiyonu sunucuda çağırır. Bu yaklaşım yerel form gönderim mekanizmasını kullandığı için JavaScript devre dışı bırakıldığında da çalışır ve sayfa hydrate olur olmaz sorunsuzca gelişir. ```tsx // app/posts/new-post-form.tsx import { createPost } from "./actions" export default function NewPostForm() { return (