CB DIGITAL
Tüm Makalelere Dön
Next.js & React
5 Mart 2026

Next.js 15 Server Actions ile Güvenli ve Tip Korumalı Form Yönetimi Nasıl Yapılır?

Cengiz Bozdemir
Cengiz BozdemirKurumsal Yazılım Mimarı
Next.js 15 Server Actions ile Güvenli ve Tip Korumalı Form Yönetimi Nasıl Yapılır?

📌 Rehber Özeti & Hedef Çıktı

Next.js 15 sürümünde API rotalarına ihtiyaç duymadan doğrudan sunucu fonksiyonları (Server Actions) ve Zod doğrulama kütüphanesiyle tip güvenli form yönetimi rehberi.

1. Giriş ve Karşılaşılan Temel Zorluklar

Geleneksel React uygulamalarında form gönderimleri için ayrı API route'ları yazmak, state yönetimiyle uğraşmak ve istemci ile sunucu arasında tipleri senkronize etmek ciddi bir zaman kaybı ve hata kaynağıdır.

Modern kurumsal yazılım mimarisinde bu adımı doğru tasarlamak; hem uygulamanın bakım maliyetini (maintainability) düşürür hem de gelecekteki ölçekleme (scaling) süreçlerinde refactor ihtiyacını en aza indirir. Bu rehberde, sektörde kabul görmüş standartlar ışığında adım adım uygulamayı ele alıyoruz.

2. Ortam Hazırlığı ve Gerekli Bağımlılıklar

Geliştirmeye başlamadan önce sistem ortamınızın ve ilgili paketlerin hazır olduğundan emin olmalısınız. Terminalinizde aşağıdaki komutları çalıştırarak ilgili yapılandırmayı tamamlayın:

  • Adım: Next.js projenizde Zod paketini kurun: 'npm install zod'.
  • Adım: Form şemasını ve Server Action fonksiyonunu 'use server' direktifiyle tanımlayın.

3. Uygulama Mimarisi ve Kod Örneği

Aşağıdaki kod bloğunda, temiz kod (Clean Code) prensiplerine ve SOLID standartlarına uygun olarak tasarlanmış örnek implementasyonu inceleyebilirsiniz:

'use server';

import { z } from 'zod';
import { revalidatePath } from 'next/cache';

const ContactSchema = z.object({
  name: z.string().min(2, 'İsim en az 2 karakter olmalıdır'),
  email: z.string().email('Geçersiz e-posta adresi'),
  message: z.string().min(10, 'Mesaj en az 10 karakter olmalıdır'),
});

export async function submitContactAction(prevState: any, formData: FormData) {
  const validatedFields = ContactSchema.safeParse({
    name: formData.get('name'),
    email: formData.get('email'),
    message: formData.get('message'),
  });

  if (!validatedFields.success) {
    return {
      success: false,
      errors: validatedFields.error.flatten().fieldErrors,
    };
  }

  // Veritabanına kaydet veya e-posta gönder
  await db.contactMessage.create({ data: validatedFields.data });
  revalidatePath('/contact');

  return { success: true, message: 'Mesajınız başarıyla iletildi.' };
}

4. Kod Analizi ve Çalışma Mantığı

Server Action fonksiyonu sunucuda güvenli şekilde çalışır. safeParse ile form verisi doğrulanır ve hata varsa nesne olarak istemciye döner. Başarılı işlemde revalidatePath ile önbellek tazelenir.

Yukarıdaki implementasyonda dikkat edilmesi gereken en kritik husus, işlemlerin bağımsız (decoupled) ve test edilebilir şekilde katmanlara ayrılmış olmasıdır. Bu yaklaşım, birim testlerin (Unit Tests) ve entegrasyon testlerinin hızlıca yazılabilmesine olanak tanır.

5. Performans ve Güvenlik İpuçları

Canlı üretim (production) ortamında sistemin kararlı çalışması için aşağıdaki pratikleri mutlaka dikkate almalısınız:

  • İstemci tarafında React 19 ile gelen 'useActionState' hook'unu kullanarak yükleme ve hata durumlarını yönetin.
  • Hassas işlemler için Server Action içinde oturum (session) kontrolü yapmayı asla atlamayın.
  • Spam gönderimlerini önlemek için rate limiting veya Turnstile/reCAPTCHA token doğrulaması ekleyin.

6. En Sık Yapılan Hatalar ve Hata Ayıklama (Troubleshooting)

Server Action içine istemciye özel (client-only) paketleri import etmek build hatalarına yol açar.

Eğer beklenmedik bir hata ile karşılaşırsanız; öncelikle log dosyalarını incelemeli, ortam değişkenlerinin (.env) doğru tanımlandığını doğrulamalı ve önbellek (cache) mekanizmalarını temizleyerek sistemi yeniden başlatmalısınız.

7. Sonuç ve Mimari Değerlendirme

Server Actions, frontend ve backend arasındaki duvarları kaldırarak kod tabanını yarı yarıya sadeleştiren devrim niteliğinde bir mimaridir.

Cengiz Bozdemir olarak 18 yılı aşkın kurumsal yazılım mimarlığı deneyimimle tavsiyem; sistem tasarımında her zaman sürdürülebilirlik, güvenlik ve yüksek eşzamanlılık (high concurrency) hedeflerini ön planda tutmanızdır. Kurumsal projelerinizde özel mimari danışmanlık veya uçtan uca yazılım geliştirme desteği için bizimle iletişime geçebilirsiniz.

#nextjs 15#server actions#react 19#typescript#zod#forms
Cengiz Bozdemir

Cengiz Bozdemir

Kurumsal Yazılım Mimarı & Full-Stack Geliştirici

İşletmeniz veya girişiminiz için yüksek performanslı sistemler, özel yazılımlar ve yapay zeka otomasyonları inşa ediyorum.

KURUMSAL YAZILIM MİMARİSİ18+ YILLIK TECRÜBEPHP 8.3 & LARAVELFLUTTER & MOBİL ÇÖZÜMLERNEXT.JS & REACT UYGULAMALARIYAPAY ZEKA & OTOMASYONE-TİCARET & PAZARYERİ ENTEGRASYONUCENGİZ BOZDEMİRCBDIGITALKURUMSAL YAZILIM MİMARİSİ18+ YILLIK TECRÜBEPHP 8.3 & LARAVELFLUTTER & MOBİL ÇÖZÜMLERNEXT.JS & REACT UYGULAMALARIYAPAY ZEKA & OTOMASYONE-TİCARET & PAZARYERİ ENTEGRASYONUCENGİZ BOZDEMİRCBDIGITALKURUMSAL YAZILIM MİMARİSİ18+ YILLIK TECRÜBEPHP 8.3 & LARAVELFLUTTER & MOBİL ÇÖZÜMLERNEXT.JS & REACT UYGULAMALARIYAPAY ZEKA & OTOMASYONE-TİCARET & PAZARYERİ ENTEGRASYONUCENGİZ BOZDEMİRCBDIGITALKURUMSAL YAZILIM MİMARİSİ18+ YILLIK TECRÜBEPHP 8.3 & LARAVELFLUTTER & MOBİL ÇÖZÜMLERNEXT.JS & REACT UYGULAMALARIYAPAY ZEKA & OTOMASYONE-TİCARET & PAZARYERİ ENTEGRASYONUCENGİZ BOZDEMİRCBDIGITAL
© 2026 CB DIGITAL Tüm hakları saklıdır.