Web geliştirme dünyası sürekli evrim geçiriyor. React tek başına güçlü bir kütüphane olsa da, production-ready uygulamalar için daha fazlasına ihtiyaç var. İşte tam bu noktada Next.js devreye giriyor.
Kısa cevap: Next.js, Vercel'in geliştirdiği, React üzerine kurulu açık kaynaklı bir full-stack web framework'üdür. React arayüz bileşenlerini yazmanızı sağlar; Next.js bunlara şunları ekler:
- Dosya tabanlı routing (klasör = URL)
- Sunucuda render (SSR), statik üretim (SSG) ve önbellekleme; bu sayede SEO dostu HTML
- Aynı projede API uç noktaları ve Server Actions ile backend
- Görsel, font ve kod bölme optimizasyonları
Ekim 2026 itibarıyla güncel ana sürüm Next.js 16'dır (ilk sürümü 21 Ekim 2025'te yayımlandı). Kısaca: React bir kütüphane, Next.js ise onu canlıya çıkacak bir web sitesine dönüştüren çatı.
Next.js Nedir?
Next.js, Vercel tarafından geliştirilen ve React üzerine inşa edilmiş bir full-stack web framework'üdür. 2016'da piyasaya sürülmesinden bu yana, React ekosisteminin en popüler framework'ü haline geldi.
Basitçe söylemek gerekirse: Next.js = React + Routing + SSR + Tooling
React size component'ler ve state yönetimi sağlarken, Next.js bunun üzerine:
- Dosya tabanlı routing sistemi
- Server-side rendering (SSR)
- Static site generation (SSG)
- API routes ile backend işlevselliği
- Otomatik code splitting
- Image ve font optimizasyonu
ekler.
Neden Next.js Kullanmalısınız?
1. SEO Dostu
Geleneksel React uygulamaları client-side rendering (CSR) kullanır. Bu, içeriğin JavaScript çalıştıktan sonra render edilmesi demektir. Arama motorları için bu bir problem:
// Geleneksel React - Google bunu görmekte zorlanır
function Page() {
const [data, setData] = useState(null);
useEffect(() => {
fetch('/api/data').then(res => setData(res));
}, []);
return <div>{data?.title}</div>;
}
Next.js ile server-side rendering kullanarak içeriği HTML olarak sunarsınız:
// Next.js - içerik sunucuda HTML olarak üretilir
export default async function Page() {
const res = await fetch('https://api.example.com/data');
const data = await res.json();
return <div>{data.title}</div>;
}
2. Mükemmel Performans
Next.js, performansı varsayılan olarak optimize eder:
- Otomatik code splitting: Her sayfa sadece ihtiyacı olan JavaScript'i yükler
- Prefetching: Viewport'taki linkler otomatik olarak ön yüklenir
- Image optimization:
next/imageile otomatik WebP/AVIF dönüşümü - Font optimization: Google Fonts bile self-host edilir
- Turbopack: Next.js 16 ile varsayılan derleyici oldu; Vercel'e göre production build'leri 2-5 kat, Fast Refresh'i 10 kata kadar hızlandırıyor
3. Full-Stack Geliştirme
Next.js ile hem frontend hem backend tek projede:
// app/api/users/route.ts - API endpoint
export async function GET() {
const users = await db.users.findMany();
return Response.json(users);
}
export async function POST(request: Request) {
const body = await request.json();
const user = await db.users.create(body);
return Response.json(user);
}
4. Vercel ile Mükemmel Entegrasyon
Vercel, Next.js'in yaratıcısı olduğu için deploy işlemi inanılmaz basit:
git push origin main
# Otomatik olarak production'a deploy edilir
Next.js'in Temel Kavramları
App Router vs Pages Router
Next.js 13 ile birlikte gelen App Router, modern React özelliklerini (Server Components, Streaming, Suspense) kullanır:
app/
├── layout.tsx # Root layout
├── page.tsx # Ana sayfa (/)
├── about/
│ └── page.tsx # /about
├── blog/
│ ├── page.tsx # /blog
│ └── [slug]/
│ └── page.tsx # /blog/nextjs-nedir
Pages Router ise eski yöntem:
pages/
├── index.tsx # /
├── about.tsx # /about
├── blog/
│ ├── index.tsx # /blog
│ └── [slug].tsx # /blog/nextjs-nedir
💡 Öneri: Yeni projeler için App Router kullanın. Daha modern, daha performanslı.
Server Components vs Client Components
App Router'da component'ler varsayılan olarak Server Component'tir (bu yaklaşımın ayrıntıları için React Server Components rehberimize bakabilirsiniz):
// Server Component (varsayılan)
// - Sunucuda render edilir
// - Direkt veritabanına erişebilir
// - useState, useEffect KULLANILAMAZ
async function ProductList() {
const products = await db.products.findMany();
return (
<ul>
{products.map(p => <li key={p.id}>{p.name}</li>)}
</ul>
);
}
Etkileşimli component'ler için Client Component kullanılır:
'use client'; // Bu direktif ile client component olur
import { useState } from 'react';
function Counter() {
const [count, setCount] = useState(0);
return (
<button onClick={() => setCount(count + 1)}>
Count: {count}
</button>
);
}
Rendering Stratejileri
Next.js dört farklı rendering stratejisi sunar:
| Strateji | Ne Zaman Render | Kullanım Alanı |
|---|---|---|
| SSG | Build time | Blog, dokümantasyon |
| SSR | Her request | Kişiselleştirilmiş içerik |
| ISR | Periyodik | E-ticaret, haber |
| CSR | Client-side | Dashboard, admin panel |
// Static Generation (SSG)
export const dynamic = 'force-static';
// Server-side Rendering (SSR)
export const dynamic = 'force-dynamic';
// Incremental Static Regeneration (ISR)
export const revalidate = 3600; // 1 saat
Next.js 16 ile Değişen Önbellekleme: Cache Components
Ocak'taki ilk yayında anlattığımız dynamic ve revalidate ayarları hâlâ çalışıyor, ama Next.js 16 yeni ve daha açık bir model getirdi: Cache Components. Resmi duyuruya göre bu modelde önbellekleme tamamen isteğe bağlı: sayfa, bileşen ya da fonksiyonun başına "use cache" yazana kadar dinamik kod her istekte çalışıyor. Eskiden "bu sayfa neden güncellenmiyor?" sorusunun kaynağı olan örtük önbellekleme böylece ortadan kalkıyor.
// next.config.ts → cacheComponents: true
async function PopulerUrunler() {
'use cache'; // bu bileşenin çıktısı önbelleğe alınır
const urunler = await db.products.findMany({ take: 8 });
return <UrunListesi urunler={urunler} />;
}
Aynı sayfada önbelleklenen kısımlar anında, kişiye özel kısımlar (sepet, kullanıcı adı) Suspense içinde akışla gelir. Bu, 2023'te deneysel olarak duyurulan Partial Prerendering fikrinin oturmuş hali.
Next.js ile Proje Başlatma
Kurulum
npx create-next-app@latest my-app
Next.js 16 ile kurulum sihirbazı sadeleşti: varsayılan şablon App Router, TypeScript, Tailwind CSS ve ESLint ile geliyor. Başlamadan önce bilgisayarınızda Node.js 20.9 veya üzeri olduğundan emin olun; Node.js 18 artık desteklenmiyor.
Dosya Yapısı
my-app/
├── src/
│ ├── app/
│ │ ├── layout.tsx # Root layout
│ │ ├── page.tsx # Ana sayfa
│ │ └── globals.css # Global stiller
│ ├── components/ # Paylaşılan component'ler
│ └── lib/ # Utility fonksiyonlar
├── public/ # Statik dosyalar
├── proxy.ts # İstek yakalama (eski adıyla middleware.ts)
├── next.config.ts # Next.js config
└── package.json
İlk Sayfanız
// src/app/page.tsx
export default function Home() {
return (
<main className="flex min-h-screen flex-col items-center justify-center">
<h1 className="text-4xl font-bold">
Merhaba Next.js! 👋
</h1>
</main>
);
}
Next.js 16'da Neler Değişti?
İlk yayından bu yana en büyük değişiklik Next.js 16'nın çıkması oldu. Mevcut bir projeyi yükseltecek ya da eski bir eğitimi takip ediyorsanız şu farkları bilin:
| Konu | Eskiden | Next.js 16 |
|---|---|---|
| Derleyici (bundler) | Webpack varsayılan | Turbopack varsayılan (--webpack ile eskiye dönülebilir) |
| İstek yakalama | middleware.ts | proxy.ts (middleware.ts kullanımdan kalkıyor) |
| Önbellekleme | Örtük, karmaşık | "use cache" ile açık, isteğe bağlı (Cache Components) |
params, cookies(), headers() | Senkron erişim | Sadece await ile asenkron erişim |
| Lint | next lint komutu | Kaldırıldı; ESLint veya Biome doğrudan |
| React Compiler | Deneysel | Stabil destek (varsayılan kapalı) |
| AMP desteği | Vardı | Kaldırıldı |
| Minimum Node.js | 18 | 20.9 |
Yükseltme için Vercel'in otomatik aracı çoğu değişikliği kendisi yapıyor: npx @next/codemod@canary upgrade latest. Bu blogun yayınlandığı digitexa.com da Next.js 16 ile çalışıyor; bizim deneyimimizde yükseltmede en çok vakit alan kısım asenkron params dönüşümü ve özel webpack ayarları oldu.
Next.js ile React Arasındaki Fark
"React mi, Next.js mi?" sorusu aslında yanlış kurulmuş bir soru, çünkü Next.js React'in yerine değil üzerine kullanılır:
| React | Next.js | |
|---|---|---|
| Ne? | Arayüz kütüphanesi | React tabanlı framework |
| Routing | Ek kütüphane gerekir | Dosya tabanlı, yerleşik |
| Sunucuda render | Kendiniz kurarsınız | Varsayılan |
| Backend / API | Ayrı sunucu gerekir | Aynı projede |
| SEO | Ek çaba ister | Kutudan çıkar |
| Ne zaman tek başına yeter? | Giriş gerektiren paneller, gömülü widget'lar | Herkese açık siteler, e-ticaret, içerik siteleri |
React'in kendi dokümantasyonu da yeni projelere başlarken Next.js gibi bir framework kullanmayı öneriyor.
Next.js vs Diğer Framework'ler
| Özellik | Next.js | Nuxt | React Router v7 (eski Remix) | Astro |
|---|---|---|---|---|
| Dil | React | Vue | React | Çoklu (React, Vue, Svelte...) |
| SSR | ✅ | ✅ | ✅ | ✅ |
| SSG / prerender | ✅ | ✅ | ✅ | ✅ (ana güç) |
| File-based Routing | ✅ | ✅ | Opsiyonel | ✅ |
| API / sunucu uç noktaları | ✅ | ✅ | ✅ (loader/action) | ✅ (endpoint) |
| React Server Components | ✅ Stabil | ❌ | Deneysel | ❌ (island mimarisi) |
| En iyi olduğu iş | Full-stack React uygulamaları | Vue ekipleri | Veri odaklı React uygulamaları | İçerik ağırlıklı, az JS'li siteler |
İlk yayındaki tabloda Remix'i statik üretim yapamaz, Astro'yu Server Components destekler gibi göstermiştik; ikisi de hatalıydı ve düzeltildi. Remix ekibi, Remix'in özelliklerini React Router v7 içinde birleştirdi.
Gerçek Dünya Örnekleri
Next.js'in resmi vitrin sayfasında listelenen örneklerden bazıları:
- Netflix - Netflix Jobs (kariyer sitesi)
- Nike - nike.com
- OpenAI - web siteleri
- Claude - Anthropic
Biz de bir yazılım ajansı olarak web projelerimizin büyük çoğunluğunda Next.js kullanıyoruz; neden bu tercihi yaptığımızı ve ne zaman kullanmadığımızı Next.js ile neden çalışıyoruz? yazısında anlattık. MEF Üniversitesi, Stuudy ve E-Kuralkan gibi projeler Next.js ile geliştirildi.
Next.js Öğrenme Yol Haritası
- Temel React bilgisi (component'ler, hooks, state)
- Next.js App Router (routing, layouts, loading states)
- Data Fetching (server components, fetch,
"use cache"ile önbellekleme) - Server Actions (form handling, mutations)
- Route Handlers ve proxy.ts (REST uç noktaları, istek yakalama)
- Deployment (Vercel, Docker, Node.js)
Sonuç
Next.js, React ile herkese açık, SEO önemli bir web sitesi ya da uygulama geliştirecekseniz bugün en olgun seçenek. Tek başına her iş için doğru araç değil: içerik ağırlıklı, neredeyse hiç etkileşim içermeyen bir sitede Astro daha hafif, Vue bilen bir ekipte Nuxt daha doğal olabilir. React biliyorsanız, Next.js öğrenmek doğal bir sonraki adım.
Eğer detaylı bilgi istiyorsanız, Next.js teknoloji sayfamıza göz atabilirsiniz. Orada daha teknik detaylar, kod örnekleri ve best practice'ler bulacaksınız.
Next.js ile proje mi kuracaksınız? Yazılım şirketi hizmetlerimizi inceleyin veya bizimle iletişime geçin — ücretsiz danışmanlık alın.
Bu yazı 7 Ekim 2026'da güncellendi: Next.js 16 değişiklikleri (Turbopack, proxy.ts, Cache Components ve "use cache", asenkron params, Node.js 20.9) ve "Next.js ile React farkı" bölümü eklendi; framework karşılaştırma tablosundaki Remix ve Astro hataları ile kullanıcı listesi resmi vitrine göre düzeltildi; kısa cevap eklendi.



