01 / 12
Kurulum ve proje yapısı
create-next-app varsayılanları, app klasörü, özel dosyalar ve kodu nereye koyacağın.
Bu Rehber Ne Anlatıyor
Next.js dokümanı güncel ve ayrıntılı. Bu rehber onu tekrar etmiyor. Her derste konuyu kısaca özetleyip Next.js ekibinin ve deneyimli mühendislerin önerilerini, yaygın hataları topluyor. Sürüm: Next.js 16.4 (Ekim 2026), React 19.3.1
Ön koşul React rehberi. Component, state, Suspense ve Actions'ı orada gördünüz. Burada bunların sunucuyla birleştiği yeri öğreneceksiniz.
İpucu
Bu rehberdeki kodlar create-next-app@16.4.2 ile açılan bir projede tsc, eslint ve next build ile kontrol edildi.
Next.js Ne Getirir
React yalnızca arayüz kütüphanesidir. Routing, veri çekme ve sunucuda render için bir framework gerekir. React ekibi yeni uygulamalara Next.js App Router'ı önerdiği framework'ler arasında sayar.2
Next.js'in farkı render modelinde. Çoğu framework bir sayfayı ya tamamen statik ya tamamen dinamik sayar. Next.js bu sınırı component seviyesine indirir: aynı sayfada anında gelen statik bir kabuk (shell) ve sonradan akan dinamik parçalar olabilir.3 Rehberin geri kalanı bu fikrin üzerine kurulu.
İlk Proje
$ pnpm create next-app@latest my-shop --yescd my-shop
npm run dev--yes önerilen varsayılanları seçer:4
| Ayar | Varsayılan |
|---|---|
| Dil ve stil | TypeScript ve Tailwind CSS |
| Lint | ESLint (Biome da seçilebilir) |
| Router | App Router |
| Bundler | Turbopack |
| Cache Components ve Partial Prefetching | Açık |
AGENTS.md | Var |
| React Compiler | Kapalı |
Turbopack, Next.js 16'dan beri hem next dev hem next build için varsayılan.5 16.4 ile yeni projeler Cache Components açık gelir; sayfalar varsayılan olarak dinamik olur ve neyin cache'leneceğini siz seçersiniz.1 Bu modeli Cache ve render modeli dersinde göreceksiniz.
// next.config.ts
import type { NextConfig } from "next";
const nextConfig: NextConfig = {
cacheComponents: true,
partialPrefetching: true,
};
export default nextConfig;Uyarı
Next.js 16'dan beri next build lint çalıştırmaz ve next lint komutu yoktur. Lint'i npm run lint ile ayrıca çalıştırın.4 CI kurulumu Kod Kalitesi dersinde.
Önemli Dosyalar
| Dosya | Ne işe yarar |
|---|---|
app/layout.tsx | Kök layout; <html> ve <body> burada, zorunlu |
app/page.tsx | / adresindeki sayfa |
public/ | Olduğu gibi sunulan statik dosyalar (public/logo.png → /logo.png) |
next.config.ts | Framework ayarları |
proxy.ts | İstekten önce çalışan kod (isteğe bağlı) |
AGENTS.md | AI agent'ları projedeki sürümün dokümanına yönlendirir |
AGENTS.md'nin işi ilginç: agent'a eğitim verisine değil, node_modules/next/dist/docs/ altındaki, kurulu sürümle eşleşen dokümana bakmasını söyler.6 Ayrıntısı AI agent'larla Next.js dersinde.
app Klasörü ve Özel Dosyalar
App Router'da klasörler URL'yi, özel dosyalar o adreste ne gösterileceğini belirler. Bir klasör ancak içinde page.tsx ya da route.ts olduğunda erişilebilir olur.7
| Dosya | Görevi |
|---|---|
page.tsx | Sayfanın kendisi |
layout.tsx | Alt sayfaları saran, gezinmede korunan ortak arayüz |
loading.tsx | Sayfa yüklenirken gösterilen iskelet (Suspense) |
error.tsx | Hata sınırı (Error Boundary) |
not-found.tsx | 404 arayüzü |
route.ts | API uç noktası |
Next.js bu dosyaları sabit bir sırayla iç içe koyar: layout > error > loading > not-found > page.7 React rehberindeki Suspense ve Error Boundary'yi hatırlayın: loading.tsx bir <Suspense>, error.tsx bir Error Boundary'dir. Next.js onları dosya adından kurar.
Kodu Nereye Koymalı
Next.js yapı konusunda görüş bildirmez, tutarlı olmanızı ister.7 İşe yarayan üç kural var:
Colocation güvenlidir.
app/products/içineproduct-card.tsxkoymak yeni bir adres açmaz; adres yalnızcapage.tsxile açılır._ile başlayan klasör (private folder) routing'den tamamen çıkar:app/products/_components/.Parantezli klasör (route group) URL'ye eklenmez:
app/(shop)/cart/page.tsx→/cart. Bölümleri gruplamak ve onlara ayrı layout vermek için kullanılır.
Büyüyen projelerde app/ klasörünü yalnızca routing için tutup kodu features/ altında toplamak yaygın bir tercih. Bu yaklaşımı Klasör Yapısı ve İsimlendirme dersi anlatıyor.
İpucu
Editörünüzde sekmeler page.tsx, page.tsx, page.tsx diye dolacak. Next.js dokümanı VS Code ve Cursor için workbench.editor.customLabels.patterns ayarıyla sekmeye klasör adını yazdırmayı önerir (ör. products/[slug] - page.tsx).4
Güncel Kalmak
Next.js sık sürüm çıkarır. Her sürüm güvenlik yaması da içerir. Küçük ve sık güncellemek, büyük ve seyrek güncellemekten kolaydır.4
npx next upgradeGüncelleme, paketle gelen dokümanı da yeni sürüme taşır. Böylece agent'lar her zaman kurulu sürümün dokümanını okur.4
Kendin Dene
my-shopprojesini kurun.next.config.ts'tecacheComponentsvepartialPrefetching'in açık geldiğini görün.app/about/page.tsxoluşturun ve/about'a gidin. Sonra dosyayıapp/(marketing)/about/page.tsx'e taşıyın; adres değişti mi?app/about/_components/team.tsxoluşturun./about/_components/teamadresine gidince ne oluyor?AGENTS.md'yi açın ve agent'ı hangi klasöre yönlendirdiğini okuyun.
Detaylı Öğrenmek İçin
Resmi doküman: Next.js Learn kursu; App Router ile adım adım bir panel uygulaması kurar.8
Resmi doküman: "Rendering Philosophy" sayfası; statik ile dinamiği neden bir yelpaze olarak gördüklerini ve bunun hosting'e etkisini anlatır.3
Video: Next.js Conf 2025 açılış konuşması; Guillermo Rauch, Sam Selikoff ve Jimmy Lai Next.js 16'yı tanıtıyor.9
Resmi doküman: Next.js 16 duyurusu; Turbopack,
proxy.tsve Cache Components'in ilk hâli.5
Kaynaklar
6 Ekim 2026. Cache Components'in tüm uygulamalara önerilmesi, `create-next-app`'te varsayılan olması ve React 19.3.
Next.js App Router, React Router ve Expo önerisi.
Statik ve dinamiğin component seviyesinde bir yelpaze olması ve altyapıya etkisi.
`create-next-app` varsayılanları, lint ayarı, editör etiketleri ve `next upgrade`.
21 Ekim 2025. Turbopack'in varsayılan olması, `middleware`'in `proxy` olması ve Cache Components.
Paketle gelen doküman ve `AGENTS.md`'deki yönetilen talimat bloğu.
Özel dosyalar, component hiyerarşisi, colocation, private folder ve route group.
Next.js ekibinin ücretsiz App Router kursu.
22 Ekim 2025. Next.js 16, Cache Components ve anında navigasyon.
Son güncelleme tarihi: 21 Ekim 2026
