Tüm yazılar
React8 dk okuma890 okunma28 Tem 2026

Server Components'ta state sınırlarını doğru çizmek

Hangi bileşen client'ta kalmalı? Veri akışını bozmadan 'use client' sınırını aşağı çekmenin pratik yolları.

Server Components'ta state sınırlarını doğru çizmek

Server Components, React'ın veri akışını yeniden düşünmenin bir yolu. Ama 'use client' direktifini nereye koyduğunuz, uygulamanızın performansını ve mimarisini doğrudan etkiler.

Alt ağaç kuralı: En aşağı itin

En yaygın hata, 'use client' direktifini çok yukarı koymak. Bir bileşen client'a geçtiğinde, tüm alt bileşenleri de client'a dahil olur. Bu yüzden sınırı mümkün olduğunca aşağı çekmek önemli.

Children prop'u ile server bileşenleri geçirmek

Bir client bileşeninin içinde server bileşeni render etmek mümkün değil, ama children prop'u olarak geçirmek mümkün. Bu, interaktif bir wrapper'ı client'ta tutup içeriği server'da bırakmanın en temiz yolu.

// app/page.tsx (Server)
<InteractiveWrapper>
  <ServerContent />
</InteractiveWrapper>

// InteractiveWrapper.tsx (Client)
'use client';
export function InteractiveWrapper({ children }) {
  return <div onClick={...}>{children}</div>;
}

State nerede yaşamalı?

Basit kural: state sadece interaktif olduğunda client'ta olmalı. Veri çekme, formatting, hesaplama — bunların hepsi server'da kalabilir.

  • useState, useEffect → client
  • Veri çekme → server
  • Statik hesaplama → server
  • Event handler → client
Her 'use client' direktifi bir maliyettir. Gereksiz yere eklemek, bundle'ınızı şişirir ve server'ın avantajlarını elinizden alır.

Pratik kontrol listesi

Bir bileşen yazmadan önce kendinize sorun: Bu bileşen interaktif mi? State tutuyor mu? Browser API'si kullanıyor mu? Cevap hayırsa, server'da kalsın.

Bu yazıya tepkin ne?

Yorumlar (2)

Deniz Arslan

Deniz Arslan

2 gün önce

Harika yazı, özellikle children prop'u ile server bileşeni geçirme kısmı çok aydınlatıcı oldu. Pratik kullanacağım.

Musa Yazlık

Musa Yazlık

1 gün önce

Çok sevindim işine yaradığına! Pratikte karşılaştığın soruları yazabilirsin.

Selin Yıldız

Selin Yıldız

5 gün önce

State'i aşağı çekme kuralını projeme uyguladım, bundle boyutu ciddi düştü. Teşekkürler!