React (veya Next.js) ile Laravel’i birleştirmek, günümüzün en popüler ve güçlü “full-stack” yaklaşımlarından biridir. Laravel’in sağlam backend yeteneklerini, React’in dinamik kullanıcı arayüzü gücüyle birleştirerek ölçeklenebilir uygulamalar geliştirebilirsiniz.
Genel olarak iki ana yaklaşım mevcuttur: Decoupled (Bağımsız API) ve Inertia.js (Bütünleşik Yapı).
Bu yöntemde Laravel sadece bir veri kaynağı (API) görevi görür. Next.js ise tamamen bağımsız bir proje olarak bu veriyi tüketir.
config/cors.php dosyasında Next.js uygulamanızın URL’ine izin vermeniz gerekir.fetch veya axios kullanarak Laravel API’sine istek atılır.Inertia.js, Laravel’den ayrılmadan “Single Page Application” (SPA) deneyimi yaşamanızı sağlar. Laravel rotalarını kullanmaya devam ederken, görünüm (View) dosyası olarak React bileşenlerini kullanırsınız.
// Laravel Controller Örneği (Inertia)
public function index() {
return Inertia::render('Home', [
'users' => User::all()
]);
}
Bağlantının en kritik noktası kullanıcı oturum yönetimidir.
| Yöntem | Kullanım Alanı | Açıklama |
|---|---|---|
| Sanctum (Stateful) | Aynı domain altında (örn: api.site.com ve site.com) | Cookie tabanlı güvenli oturum. En kolayıdır. |
| Sanctum (Tokens) | Mobil uygulamalar veya farklı domainler | API Token üretilir ve her istekte Header’da gönderilir. |
| JWT (Json Web Token) | Tamamen bağımsız mikroservisler | Stateless bir yapı sunar, Laravel tarafında tymon/jwt-auth gibi paketler gerektirir. |
Hangi yolu seçmelisiniz? İhtiyaca göre karar verin:
| İhtiyaç | Tercih Edilen Yapı | Neden? |
|---|---|---|
| E-Ticaret / Blog | Next.js + Laravel API | Üstün SEO ve ISR (Incremental Static Regeneration) desteği. |
| Yönetim Paneli / SaaS | Laravel + Inertia.js + React | Çok hızlı geliştirme süreci ve karmaşık form yönetimi. |
| Mobil Uygulama Destekli | Laravel API (Headless) | Aynı API hem web hem mobil uygulama tarafından kullanılabilir. |
NEXT_PUBLIC_API_URL değişkenini tanımlayarak Laravel API’nize erişin.Image bileşeni ile kullanırken, Laravel domainini next.config.js içinde images.remotePatterns kısmına eklemeyi unutmayın.Bu mimariyi kurarken pnpm kullanıyorsan, Next.js projenin bağımlılıklarını çok daha hızlı yönetebilirsin. Laravel tarafında ise composer paketlerini güncel tutman yeterli olacaktır.