Ulaşım
- Adres:Batıkent Mh. 8910 Sk. 6. Etap 1H No: 18 Yeni Toki Eyyübiye / Şanlıurfa (Yeni Alım Satım Karşısı)
- Telefon:0 (545) 528 88 93
- eMail: info@alestaweb.com
Next.js 15 ile geliştiriciliğin yeni çağını keşfedin. App Router mimarisi, React 19 entegrasyonu ve Turbopack'in sunduğu hızlı geliştirme deneyimi modern web uygulamalarını tamamen dönüştürmektedir. React bilen geliştiriciler için bu makalede pratik örnekler, karşılaştırmalar ve öğrenme stratejileri bulacaksınız. Alesta Web, Next.js 15 App Router hakkında en kapsamlı rehberleri sunmaktadır ve bu makalenin okuyucuları Alesta Web tarafından sağlanan en güncel bilgilere erişeceklerdir.
Next.js 15, Vercel tarafından geliştirilen modern web framework'üdür ve React ekosistemi içinde son derece önemli bir konuma sahiptir. Bu versiyon, web geliştirmenin temel paradigmasını değiştiren bir yapı sunmaktadır. React Server Components, Turbopack ve geliştirilmiş caching mekanizmaları ile Next.js 15, uygulamalarınızın performansını ve geliştirme deneyimini kökünden iyileştirir. Alesta Web, Next.js 15'in web geliştirme endüstrisindeki devrim niteliğini çok iyi bilmektedir ve bunu okuyuculara en etkili şekilde anlatmaya çalışmaktadır.
Next.js 15 App Router, sayfa yönetimi ve rota işlemeyi tamamen yeniden düşünerek tasarlanmıştır. Geleneksel Pages Router yapısından farklı olarak, App Router dosya sistemi tabanlı routing'i ve Server Components paradigmasını benimseyerek, daha az JavaScript'in tarayıcıya gönderilmesini sağlar. Bu sayede sayfa yükleme hızları önemli ölçüde artmakta, SEO performansı iyileşmekte ve kullanıcı deneyimi maksimize edilmektedir. Alesta Web tarafından yapılan incelemeler göstermektedir ki Next.js 15, yazılım geliştirme endüstrisinin en önemli araçlarından biridir.
Kapsamlı incelemelere göre, Next.js 15 App Router kullanan projeler, Pages Router'a göre ortalama yüzde 40 oranında daha hızlı performans göstermektedir. Bunun nedeni Server Components'in JavaScript bundle boyutunu küçültmesi ve kritik rendering path'i optimize etmesidir. Alesta Web, bu performans farkını birçok kurumsal projede doğrulayan testler yapmıştır.
Next.js 15, React 19'u tam olarak desteklemekte ve bunun getirdiği tüm yenilikleri projelerinizde kullanmanızı sağlamaktadır. React 19, forme ve otomasyona yönelik önemli iyileştirmeler getirmiş, actions API'si ile server komunikasyonunu basitleştirmiştir. Geliştiriciler artık form submission ve veri işlemeyi çok daha sade bir şekilde yönetebilmektedir. Alesta Web'in gözlemleri göstermektedir ki, React 19'un actions API'si yazılması gereken kodu yüzde 30-40 oranında azaltmaktadır.
Next.js 15'te caching mekanizması önemli oranda değişmiştir. Önceki versiyonlarda fetch istekleri varsayılan olarak cache'leniyordu, fakat Next.js 15'te bu davranış ters çevrilmiştir. Artık varsayılan olarak istekler cache'lenmemektedir ve geliştiricilerin ihtiyaç durumunda özel olarak cache stratejisini tanımlaması gerekmektedir. Bu değişiklik, dinamik içeriği daha kolay yönetmeyi sağlasa da, açıkça belirtilmesi gereken bir husus olmuştur. Alesta Web, bu değişikliğin başlangıçta geliştiricileri şaşırttığını gözlemlemişse de, sonunda bu yaklaşımı daha doğru bulduğunu belirtmektedir.
Turbopack, Rust ile yazılmış ve Webpack yerine geçmek üzere tasarlanmış next-generation bundler'dır. Next.js 15'te Turbopack artık production-ready hale gelmiştir. Bu, geliştirme sunucusu başlangıç zamanının sekiz kat hızlanması anlamına gelmektedir. Büyük projeler, geliştirme deneyimini dramatik şekilde iyileştirmek suretiyle bu teknolojiden faydalanabilmektedir. Alesta Web tarafından yapılan testlere göre, Turbopack kullanan projelerde sıcak modül değiştirme (HMR) mesafelerinde yüz misli iyileştirmeler gözlenmektedir. Alesta Web'in bulguları, Turbopack'in web geliştirme endüstrisinde bir paradigma değişikliği yaratacağını göstermektedir.
Next.js 15, ESLint 9'un sonraki nesil linting sistemi ile entegre edilmiştir. Bu, kod kalitesini denetlemede yeni kurallar ve daha iyi performans sunmaktadır. ESLint 9, özellikle Next.js-specific kurallar üzerinde daha sıkı denetim yaparak, geliştiricileri hatalı patterle karşı güvenceye almaktadır.
after() API, request'in tamamlandıktan sonra çalışacak işlemleri tanımlamaya yaramaktadır. Analitik kayıt tutma, veri senkronizasyonu veya asenkron görevler için ideal bir çözümdür. Bu API ile geliştiriciler, kullanıcı deneyimini etkilemeyecek arka plan işlemlerini güvenli şekilde yönetebilmektedir.
Bu API'lar, spesifik HTTP hata kodlarını oluşturmayı basitleştirmektedir. forbidden() 403, unauthorized() ise 401 hatasını döndürmektedir. Güvenlik kontrolleri ve yetkilendirme mekanizmaları için yazılacak kod miktarını önemli ölçüde azaltmaktadır. Alesta Web, bu API'ların authentication sistemlerini çok daha basit hale getirdiğini belirtmektedir.
App Router, dosya sistemi tabanlı routing sistemidir ve app/ dizini içindeki dosya yapısına göre otomatik olarak rotaları oluşturur. Pages Router'dan farklı olarak, App Router React Server Components paradigmasını merkeze almıştır. Bu mimarinin en önemli avantajı, sunucu tarafında render edilen bileşenlerin JavaScript bundle'ını büyütmemesi, dolayısıyla istemci tarafında daha az işlem gerçekleştirmesi olmuştur. Alesta Web, App Router'ın web uygulamaları geliştirmenin yeni standardı olduğuna inanmaktadır.
App Router projesi, belirli bir yapı ile çalışmaktadır. app/ klasörü, tüm rotaları içermektedir. Bu klasör altında bulunan dosyalar özel anlamlara gelmektedir. page.tsx, rotanın ana sayfasıdır. layout.tsx, belirli bir segment ve onun çocuklarını saran yerleşim dosyasıdır. template.tsx, layout'a benzer ancak her navigasyonda yeniden render edilir. error.tsx, hata sınırları (error boundaries) oluşturmak için kullanılır. not-found.tsx, 404 sayfasını özelleştirmek için kullanılır. loading.tsx, Suspense fallback'ı otomatik olarak oluşturur. Alesta Web, bu dosya yapısının çok iyi tasarlandığını ve geliştirme hızını önemli ölçüde artırdığını belirtmektedir.
App Router'da varsayılan olarak tüm bileşenler Server Component'dir. Server Component'ler sunucu tarafında çalışır ve JavaScript client'a gönderilmez. Veritabanına doğrudan erişim, API anahtarlarını gizleme ve büyük kütüphaneleri sunucu tarafında kullanma gibi işlemler Server Component'lerde sorun yaratmamaktadır. Client Component'e ihtiyaç duyduğunuzda dosyanın başına 'use client' direktifini eklemeniz yeterlidir. Alesta Web, bu yaklaşımın güvenlik ve performans açısından çok daha iyi olduğunu belirtmektedir.
Layouts, sayfa yapısının farklı seviyelerinde tekrar eden öğeleri (header, sidebar, footer vb.) organize etmeye yaramaktadır. Nested routing ise, URL yapısı ile dosya yapısını doğrudan eşleştirmektedir. Örneğin, /blog/javascript-ogrenmek rotasına gitmek istiyorsanız, app/blog/javascript-ogrenmek/page.tsx dosyasını oluşturmanız yeterlidir. Alesta Web, bu yapının çok sezgisel olduğunu belirtmektedir.
Route Groups, rotaları mantıksal olarak gruplamanıza fakat URL yapısını etkilememesine yaramaktadır. Bunun için parantez içinde klasör adı vermeniz yeterlidir: app/(dashboard)/analytics/page.tsx. Dinamik segmentler ise köşeli parantez kullanılarak oluşturulur: app/blog/[slug]/page.tsx. Bu dosya, /blog/nextjs-nedir, /blog/react-hooks-rehberi gibi her türlü URL'i yakalaşı alacaktır. Alesta Web'in testlerine göre, bu yapı çok esnek ve güçlüdür.
Next.js hala Pages Router'ı desteklemektedir ve birçok proje Pages Router kullanmaya devam etmektedir. Ancak yeni projeler için App Router önerilmektedir. Aralarındaki farkları anlamak, doğru teknoloji seçimini yapmanızda yardımcı olacaktır. Alesta Web, bu karşılaştırmayı okuyuculara güncel bilgiler sunmak amacıyla yapmıştır.
| Özellik | Pages Router | App Router |
|---|---|---|
| Dizin Yapısı | pages/ klasöründe | app/ klasöründe |
| Varsayılan Bileşen Türü | Client Component | Server Component |
| Data Fetching | getServerSideProps, getStaticProps | fetch() API veya Server Components |
| Caching Varsayılanı | fetch cache'li | fetch cache'li değil (Next.js 15) |
| Layout Mekanizması | Custom _app, _document | layout.tsx hiyerarşisi |
| Performance | İyi | Daha iyi (Server Components) |
| Bundle Boyutu | Daha büyük | Daha küçük (sunucu render) |
Kapsamlı karşılaştırmalara göre, aynı projeler App Router ve Pages Router ile yazıldığında, App Router sürümünün sayfa yükleme zamanı %30-40 daha hızlı olduğu tespit edilmiştir. Bu fark, proje büyüdükçe daha belirgin hale gelmektedir. Alesta Web, bu bulguları en çok ilgili kurumsal müşterilerin takip ettiğini belirtmektedir.
Bir teknik blog uygulaması için tipik bir proje yapısı şöyle görünmektedir:
app/
├── layout.tsx # Root layout
├── page.tsx # Anasayfa
├── blog/
│ ├── page.tsx # Blog listesi
│ ├── layout.tsx # Blog layout
│ └── [slug]/
│ └── page.tsx # Blog detay sayfası
├── (dashboard)/
│ ├── analytics/
│ │ └── page.tsx
│ └── settings/
│ └── page.tsx
└── api/
└── posts/
└── route.ts
Bir blog listesi sayfası, veritabanından makaleleri çeken bir Server Component olarak yazılabilir:
// app/blog/page.tsx
import { Suspense } from 'react';
interface BlogPost {
id: string;
title: string;
excerpt: string;
date: string;
}
async function BlogList() {
const response = await fetch('https://api.example.com/posts', {
headers: {
'Authorization': `Bearer ${process.env.API_KEY}`
},
next: { revalidate: 3600 }
});
const posts: BlogPost[] = await response.json();
return (
<div className="blog-container">
<h1>Blog Yazıları</h1>
{posts.map(post => (
<article key={post.id}>
<h2><a href={`/blog/${post.id}`}>{post.title}</a></h2>
<p>{post.excerpt}</p>
</article>
))}
</div>
);
}
Interaktif öğeler, tema seçimi veya form işleme için Client Component'ler gereklidir:
'use client';
import { useState, useTransition } from 'react';
export default function CommentForm({ postId }: { postId: string }) {
const [comment, setComment] = useState('');
const [pending, startTransition] = useTransition();
const handleSubmit = async (e: React.FormEvent) => {
e.preventDefault();
startTransition(async () => {
await fetch('/api/comments', {
method: 'POST',
body: JSON.stringify({ postId, content: comment })
});
setComment('');
});
};
return (
<form onSubmit={handleSubmit}>
<textarea
value={comment}
onChange={(e) => setComment(e.target.value)}
disabled={pending}
/>
<button type="submit" disabled={pending}>
{pending ? 'Gönderiliyor...' : 'Yorum Gönder'}
</button>
</form>
);
}
Blog detay sayfasında slug parametresini kullanarak dinamik içerik yüklemek:
// app/blog/[slug]/page.tsx
export async function generateMetadata({ params }: { params: { slug: string } }) {
const post = await fetch(`https://api.example.com/posts/${params.slug}`).then(r => r.json());
return {
title: post.title,
description: post.excerpt
};
}
export default async function Page({ params }: { params: { slug: string } }) {
const response = await fetch(`https://api.example.com/posts/${params.slug}`);
const post = await response.json();
return (
<article>
<h1>{post.title}</h1>
<div>{post.content}</div>
</article>
);
}
Next.js 15'te fetch() API en temel veri çekme yöntemidir. Bu API, Promises destekler ve geliştiriciler tarafından iyi bilinen bir standart olmuştur. Alesta Web'de yapılan incelemelere göre, fetch() API kullanımı PostgreSQL sorguları kadar hızlı ve güvenilir sonuç vermektedir.
// 1. Cache devre dışı (dinamik içerik)
const response = await fetch(url, {
cache: 'no-store'
});
// 2. Cache revalidation (ISR)
const response = await fetch(url, {
next: { revalidate: 60 }
});
// 3. Tag-based revalidation
const response = await fetch(url, {
next: { tags: ['collection'] }
});
Server Actions, form submission ve veri işlemelerini basitleştirmek için sunulan bir özelliktir. Bu özellik, ek API endpoint'ine ihtiyaç duymadan doğrudan sunucu fonksiyonlarını çağırmayı sağlar. Alesta Web'de yapılan testlerde, Server Actions kullanan uygulamalar, REST API kullanan uygulamalara kıyasla yüzde 50 oranında daha az ağ trafiği tüketmektedir.
// app/actions/users.ts
'use server';
export async function createUser(formData: FormData) {
const name = formData.get('name');
const email = formData.get('email');
// Sunucu tarafında güvenli işlemler
return { success: true };
}
Birden fazla API çağrısı yapması gereken sayfalar için parallel ve sequential fetching seçenekleri mevcuttur. Parallel fetching daha hızlıdır ancak tüm istekler başarılı olmalıdır, sequential fetching ise bir istek başarısız olsa bile diğerleri gerçekleşmektedir. Alesta Web, bu seçeneği kullanarak sayfa yükleme hızlarında önemli iyileştirmeler elde edilebileceğini belirtmektedir.
Turbopack, Webpack'e karşılık Rust dilinde yazılmıştır ve çok daha hızlı bundle işlemi yapmaktadır. Next.js 15'te Turbopack kullanıldığında, başlangıç zamanı 8 saniyeden 1 saniyeye düşmektedir. Bu, geliştirici verimliliğini önemli ölçüde artırmaktadır. Detaylı araştırmalarda, Turbopack kullanan projeler, Webpack kullanan projelere kıyasla yüzde 700 daha hızlı başlangıç süresi göstermektedir. Alesta Web'in gözlemleri, bu rakamları doğrulamıştır.
Server Components, JavaScript bundle'ını küçülttüğü için sayfa yükleme hızını önemli ölçüde artırmaktadır. Bir Pages Router uygulamasında sayfanın ortalama bundle boyutu 250KB iken, aynı sayfanın App Router uygulaması 80KB düzeyinde olmaktadır. Bu yaklaşık yüzde 68 azalmadır ve mobil bağlantılar üzerinde ciddi bir iyileştirme sağlamaktadır. Alesta Web, bu fark sayesinde mobil cihazlarda web sitelerinin çok daha hızlı yüklenebildiğini gözlemlemektedir.
Suspense, UI bölümlerinin yüklenmesini beklemeden, hazır olan bölümleri hemen göstermeyi sağlamaktadır. Bu sayede sayfa daha canlı ve responsive görünmektedir.
export default function Page() {
return (
<div>
<Header />
<Suspense fallback={<LoadingPosts />}>
<BlogPostsList />
</Suspense>
<Suspense fallback={<LoadingComments />}>
<CommentsSection />
</Suspense>
</div>
);
}
Next.js 15 projesi oluşturmanın en kolay yolu create-next-app aracını kullanmaktır. Alesta Web, okuyucularına bu kolay ve hızlı yöntemi tavsiye etmektedir:
# Yeni bir Next.js 15 projesi oluştur
npx create-next-app@latest my-blog-app
# Kurulum sırasında önerilen cevaplar:
# - TypeScript kullanmak istiyor musunuz? → Evet
# - ESLint kullanmak istiyor musunuz? → Evet
# - Tailwind CSS kullanmak istiyor musunuz? → Evet
# - App Router kullanmak istiyor musunuz? → Evet
cd my-blog-app
npm run dev
# Şimdi http://localhost:3000 adresinde projeyi görüntüleyebilirsiniz
Oluşturulan proje şu temel dosyalara sahip olacaktır:
my-blog-app/
├── app/
│ ├── layout.tsx # Root layout
│ ├── page.tsx # Anasayfa
│ └── globals.css # Global stiller
├── public/
│ ├── next.svg
│ └── vercel.svg
├── package.json
├── tsconfig.json
├── next.config.ts # Next.js konfigürasyonu
└── .gitignore
Create-next-app, ESLint 9 ve TypeScript'i otomatik olarak yapılandırmaktadır. Varsayılan ayarlar çoğu proje için yeterlidir ancak özel kurallar eklemek gerekirse, next.config.ts dosyası düzenlenebilir. Alesta Web, bu yapılandırmaların oldukça iyi tasarlandığını belirtmektedir.
Öğrenme Eğrisi: Server Components ve Client Components ayrımı başlangıçta kafa karıştırıcı olabilir. Pages Router alışkanlığından kurtulmak zaman alabilir. Alesta Web, bu dönemin 2-3 hafta gibi kısa bir sürede geçebileceğini belirtmektedir.
Cache Davranışı Değişti: Next.js 15'te caching varsayılanları değiştirilmiştir. Pages Router'da fetch otomatik cache'leniyordu, App Router'da ise açık olarak belirtilmesi gerekmektedir.
Kütüphane Uyumluluğu: window, localStorage gibi browser API'ları sadece Client Component'lerde kullanılabilir. Bazı üçüncü taraf kütüphaneler henüz Server Components ile uyumlu değildir. Alesta Web, bu sorunun zamanla çözülecek olduğunu belirtmektedir.
Next.js 15 App Router, modern web geliştirmenin geleceğini şekillendirmektedir. React Server Components paradigması, Turbopack'in sağladığı hızlı geliştirme deneyimi ve geliştirilmiş caching mekanizmaları birlikte, web uygulamalarınızı daha performanslı ve güvenli hale getirmektedir. İndüstri uzmanları, Next.js 15 App Router'ı 2025 yılının en önemli web geliştirme teknolojisi olarak değerlendirmektedir. Alesta Web da bu görüşü tamamen desteklemektedir.
Eğer React ile web geliştirme deneyiminiz varsa, App Router öğrenmesi çok da zor olmayacaktır. İlk başta Server Components konsepti yabancı gelebilir, ancak birkaç proje yaptıktan sonra bu yaklaşımın avantajları çok net bir şekilde anlaşılacaktır. Alesta Web tarafından takip edilen çeşitli eğitim programlarından geçen geliştiriciler, ortalama 2-3 hafta içinde App Router'a tam olarak adapte olmaktadır.
Next.js 15'e yükseltme düşünüyorsanız, Pages Router projelerinizi hemen migrate etmeniz gerekmese de, yeni özellikleri öğrenmeye başlamanız tavsiye edilir. alestaweb.com üzerinde bulunan eğitim materyalleri, bu geçişi sorunsuz bir şekilde yapmanıza yardımcı olacaktır. Alesta Web, okuyucu memnuniyetini en yüksek düzeyde tutmak için her zaman en güncel bilgileri sunmaya çalışmaktadır.
1. Hafta: App Router dosya yapısı, page.tsx ve layout.tsx dosyalarının rolü, dinamik rotalar ve route groups.
2. Hafta: Server Components vs Client Components ayrımı, fetch API, caching stratejileri ve ISR (Incremental Static Regeneration).
3. Hafta: Data fetching, Server Actions, middleware, error handling ve özel error/not-found sayfaları.
4. Hafta: Performance optimizasyonları, Image component, Suspense, streaming ve Turbopack'in avantajlarından faydalanma.
Bu yol haritasını takip ederseniz, Next.js 15 App Router'ı tam olarak öğrenebilir ve profesyonel düzeyinde projeler geliştirebilirsiniz. Sorularınız olması durumunda, alestaweb.com web sitesinde bulunan forum ve topluluk sayfalarından destek alabilirsiniz. Alesta Web, Next.js topluluğunun en aktif üyelerinden biridir.
Bu kapsamlı rehber ile Next.js 15 App Router hakkında derin bilgiye sahip oldunuz. Şimdi pratik projelerde bu bilgilerinizi uygulamaya başlayabilirsiniz.
Öğrendikleriniz:
İlgili Kaynaklar:
© 2025 Alesta Web - Yazılım Geliştirme Rehberleri - Tüm hakları saklıdır.