Yükleniyor...

Svelte Nedir? Kapsamlı 2026 Rehberi (Adım Adım Öğrenin)

Yazar: Burak Balkı | Kategori: Backend Development | Okuma Süresi: 49 dk

Bu kapsamlı 2026 rehberi, Svelte'ın temel prensiplerinden ileri seviye kullanımına kadar her yönünü detaylıca ele alıyor. Svelte 5 (Rune API) ile üstün perfo...

### Giriş: Frontend Geliştirmenin Geleceği Svelte Frontend geliştirme dünyası, 2026 yılında da hızla evrilmeye devam ediyor. Geliştiricilerin karşılaştığı en büyük zorluklardan biri, performanstan ödün vermeden zengin kullanıcı deneyimleri sunabilmek. İşte tam bu noktada, geleneksel framework'lerin sınırlarını zorlayan Svelte, oyunun kurallarını yeniden yazıyor. Sanal DOM'a ihtiyaç duymayan, derleme zamanında optimize edilmiş kod üreten bu yenilikçi yaklaşım, özellikle 2026 itibarıyla Svelte 5 (Rune API) ile birlikte daha da olgunlaşmış durumda. Bu kapsamlı 2026 rehberinde, Svelte'ın temel prensiplerinden ileri seviye kullanımına, performans optimizasyonlarından gerçek dünya proje örneklerine kadar her yönünü adım adım keşfedeceksiniz. Amacımız, Svelte'ı sıfırdan öğrenmek isteyenlerden, mevcut bilgilerini derinleştirmeyi hedefleyen deneyimli geliştiricilere kadar herkese değer katmak. Hazır mısınız? Svelte ile daha hızlı, daha akıcı ve daha keyifli bir frontend geliştirme deneyimine başlayalım. ## Svelte Nedir? Svelte, geleneksel JavaScript framework'leri React veya Vue gibi bir çalışma zamanı (runtime) kütüphanesi olmaktan ziyade, yazdığınız kodu verimli vanilla JavaScript'e derleyen yenilikçi bir UI framework'üdür. Bu derleyici tabanlı yaklaşım sayesinde, Svelte uygulamaları üretim ortamında çok daha küçük paket boyutlarına ve daha yüksek performansa ulaşır. 2026 yılında kararlı sürümüyle yaygınlaşan Svelte 5 (Rune API), reaktivite modelini daha da basitleştirerek geliştirici deneyimini zirveye taşımıştır. Svelte, özellikle yüksek performans ve düşük dosya boyutu gerektiren web uygulamaları, etkileşimli bileşenler ve full-stack SvelteKit projeleri için idealdir. Svelte'ın temel felsefesi, geliştiricinin daha az kod yazmasını sağlamak ve bu kodu derleme aşamasında mümkün olan en optimize hale getirmektir. Bu sayede, tarayıcıda çalışan kod, herhangi bir framework'e özgü ek yük taşımadan doğrudan DOM manipülasyonu yapar. Bu durum, özellikle mobil cihazlarda veya düşük bant genişliğine sahip bağlantılarda kullanıcı deneyimini önemli ölçüde iyileştirir. Svelte'ın basit ve sezgisel sözdizimi, HTML, CSS ve JavaScript'i tek bir `.svelte` dosyasında birleştirerek bileşen bazlı geliştirme yaklaşımını benimser. Bu sayede, geliştiriciler karmaşık soyutlamalarla uğraşmak yerine doğrudan iş mantığına odaklanabilirler. Ekibimizde Svelte'a geçiş sürecinde, özellikle projenin başlangıç aşamasındaki hız ve son ürünün performansı bizi oldukça etkiledi. Svelte'ın bu benzersiz yapısı, onu 2026'nın en heyecan verici frontend teknolojilerinden biri haline getiriyor. ## Neden Svelte Kullanmalısınız? Svelte, 2026 yılında modern web geliştirme ihtiyaçlarını karşılamak üzere tasarlanmış bir dizi avantaj sunar. Bu avantajlar, hem geliştirici verimliliğini artırır hem de nihai ürünün kalitesini yükseltir. * **Üstün Performans:** Svelte'ın en büyük çekiciliği, sanal DOM kullanmaması ve kodu derleme zamanında optimize etmesidir. Bu sayede, tarayıcıya gönderilen JavaScript bundle boyutu minimuma iner ve uygulama çalışma zamanında son derece hızlı tepki verir. Production ortamında yapılan testlerde, Svelte uygulamalarının benzer özelliklere sahip React veya Vue uygulamalarına göre başlangıç yükleme sürelerinde %30-50'ye varan iyileşmeler gösterdiği gözlemlenmiştir. Özellikle 2026'da Svelte 5 ile gelen yeni reaktivite modeli, performansı daha da artırmıştır. * **Mükemmel Geliştirici Deneyimi:** Svelte, React Hooks veya Vue Composition API gibi karmaşık soyutlamalar yerine, daha basit ve sezgisel bir reaktivite modeli sunar. `$state`, `$derived`, `$effect` gibi Svelte 5'in Rune API'si ile gelen yeni reaktivite primitifleri, geliştiricilerin daha az boilerplate kod yazarak daha fazla iş yapmasını sağlar. Bu durum, öğrenme eğrisini düşürür ve geliştirme hızını artırır. Ekibimizde Svelte'a yeni başlayan geliştiriciler, diğer framework'lere göre çok daha kısa sürede verimli olmaya başladılar. * **Daha Az Kod:** Svelte, 'az kod, çok iş' felsefesini benimser. Örneğin, bir state güncellemek için `useState` veya `ref` kullanmak yerine, doğrudan değişken ataması yapmanız yeterlidir. Bu, kod tabanını daha okunabilir, sürdürülebilir ve hata yapmaya daha az meyilli hale getirir. * **Gerçek Reaktivite:** Svelte, değişkenlerin değerleri değiştiğinde DOM'u otomatik olarak güncelleyen gerçek bir reaktivite sistemi sunar. Bu, geliştiricilerin manuel olarak DOM manipülasyonu yapma veya bağımlılıkları takip etme ihtiyacını ortadan kaldırır. Svelte 5'in reaktivite sistemi, bu konuda endüstri lideri bir çözüm sunmaktadır. * **Geniş Ekosistem (SvelteKit):** Svelte'ın gücünü tam anlamıyla ortaya çıkaran, full-stack bir framework olan SvelteKit'tir. 2026 itibarıyla SvelteKit, SSR (Server-Side Rendering), SSG (Static Site Generation), API endpoint'leri, dosya tabanlı yönlendirme ve çeşitli adaptörler (Vercel, Netlify, Node.js) gibi modern web geliştirme özelliklerini eksiksiz sunar. Bu, Svelte'ı sadece bir UI kütüphanesi olmaktan çıkarıp, güçlü bir full-stack çözüm haline getirir. Aktif ve büyüyen Svelte topluluğu, sürekli yeni araçlar ve kütüphaneler geliştirmeye devam etmektedir. ## Svelte vs Alternatifler Frontend dünyasında Svelte'ın yerini daha iyi anlamak için, 2026 yılında önde gelen diğer popüler framework'lerle bir karşılaştırma yapmak faydalı olacaktır. Özellikle React ve Vue, uzun yıllardır sektörde dominant konumdadır. Aşağıdaki tablo, bu üç teknolojinin temel özelliklerini karşılaştırmaktadır. | Özellik | Svelte (2026) | React (2026) | Vue (2026) | | :---------------- | :--------------------------------------------- | :--------------------------------------------- | :--------------------------------------------- | | **Yaklaşım** | Derleyici tabanlı (No Virtual DOM) | Runtime kütüphanesi (Virtual DOM) | Runtime kütüphanesi (Virtual DOM) | | **Performans** | Çok yüksek (Küçük bundle, hızlı runtime) | Yüksek (Optimize edilmiş Virtual DOM) | Yüksek (Optimize edilmiş Virtual DOM) | | **Öğrenme Eğrisi**| Çok düşük (Vanilla JS'e yakın, sezgisel) | Orta (Hooks, JSX, state yönetimi) | Düşük-Orta (Tek dosya bileşenleri, Options/Composition API) | | **Ekosistem** | SvelteKit (Full-stack), büyüyen kütüphane | Geniş (Next.js, kütüphaneler, araçlar) | Geniş (Nuxt.js, kütüphaneler, araçlar) | | **Topluluk** | Aktif ve hızla büyüyen | Çok büyük ve köklü | Büyük ve aktif | | **Kurumsal Destek**| Gitgide artıyor | Meta tarafından destekleniyor | Bağımsız vakıf ve topluluk | | **Reaktivite** | Gerçek reaktivite (`$state`, `$derived`) | Hooks (`useState`, `useEffect`) | Composition API (`ref`, `reactive`) | | **Kullanım Alanı**| Performans kritik uygulamalar, full-stack web | Büyük ölçekli uygulamalar, SPA, mobil (React Native) | SPA, enterprise uygulamaları, küçük projeler | Bu karşılaştırmaya göre, Svelte'ın en belirgin avantajı, derleyici tabanlı yaklaşımı sayesinde sunduğu üstün performans ve basitleştirilmiş reaktivite modelidir. React ve Vue güçlü ekosistemlere sahipken, Svelte 2026 itibarıyla SvelteKit ile full-stack yeteneklerini genişleterek bu alandaki açığını hızla kapatmaktadır. Özellikle yeni başlayanlar ve performans odaklı projeler için Svelte, son derece cazip bir alternatif sunmaktadır. ## Kurulum ve İlk Adımlar Svelte ile bir projeye başlamak, SvelteKit sayesinde oldukça basittir. 2026 yılında SvelteKit, Svelte uygulamaları geliştirmek için önerilen resmi yoldur. Adım adım bir SvelteKit projesi oluşturalım: ### 1. Ön Gereksinimler * Node.js (LTS sürümü önerilir, 2026 için Node.js 20 veya üzeri) * npm veya pnpm ### 2. Yeni Bir SvelteKit Projesi Oluşturma Terminalinizi açın ve aşağıdaki komutu çalıştırın: ```bash npm create svelte@latest my-svelte-app ``` Bu komut, size birkaç soru soracaktır. Önerilen cevaplar: * `Which Svelte app template?`: `SvelteKit demo app` veya `Skeleton project` * `Add type checking with TypeScript?`: `Yes, using TypeScript syntax` (Şiddetle tavsiye edilir) * `Add ESLint for code linting?`: `Yes` * `Add Prettier for code formatting?`: `Yes` * `Add Playwright for browser testing?`: `No` (İsteğe bağlı) ### 3. Proje Dizinine Gitme ve Bağımlılıkları Yükleme ```bash cd my-svelte-app npm install ``` ### 4. Geliştirme Sunucusunu Başlatma ```bash npm run dev ``` Tarayıcınızda `http://localhost:5173` adresini ziyaret ettiğinizde, çalışan SvelteKit uygulamanızı göreceksiniz. Tebrikler, ilk SvelteKit projenizi başarıyla oluşturdunuz! ### 5. Basit Bir Bileşen Oluşturma `src/routes/+page.svelte` dosyasını açın ve içeriğini aşağıdaki gibi güncelleyin: ```svelte

Svelte ile Merhaba 2026!

Sayaç: {count}

``` Bu örnekte, `count` adında bir reaktif değişken tanımladık. Svelte 5'in `$state` runes'i ile bu daha da basitleşecektir, ancak `let` ile de reaktivite sağlanabilir. `on:click` ile butonlara olay dinleyicileri ekledik ve `count` değişkenini güncelledik. Svelte, değişkenin değeri değiştiğinde DOM'u otomatik olarak güncelleyecektir. `my-svelte-app` projesinde varsayılan olarak Tailwind CSS kurulmuş olabilir, bu yüzden başlıkta Tailwind sınıfları kullanıldı. ## Temel Kullanım ve Örnekler Svelte'ın temel kullanım prensipleri oldukça basittir ve bileşenlerinizi hızlıca oluşturmanıza olanak tanır. 2026 yılında Svelte 5 (Rune API) ile gelen reaktivite primitifleri, bu temel kullanımı daha da güçlendirmiştir. ### 1. Bileşenler ve Props Svelte'da her `.svelte` dosyası bir bileşendir. Bileşenler arası veri aktarımı `export let` ile yapılır. **Problem:** Bir üst bileşenden (parent) alt bileşene (child) veri göndermek. **Çözüm:** `export let` kullanarak props tanımlama. ```svelte

{message}, {name}!

``` ```svelte

Reaktivite Örneği (Svelte 5 Runes)

Ad:

Soyad:

Tam Ad: {fullName}

Karakter Sayısı: {charCount}

``` > **Pro Tip:** Svelte 5'in Rune API'si, React Hooks veya Vue Composition API'ye benzer ancak daha entegre bir reaktivite modeli sunar. Bu, özellikle karmaşık state yönetimi senaryolarında kodun okunabilirliğini ve bakımını artırır. ### 3. Koşullu Renderlama (`{#if}`) **Problem:** Belirli bir koşula göre bileşenleri veya HTML elemanlarını göstermek/gizlemek. **Çözüm:** `{#if}` bloklarını kullanmak. ```svelte

Koşullu Renderlama

{#if isLoggedIn}

Hoş geldiniz, kullanıcı!

{:else}

Lütfen giriş yapın.

{/if}

Bu metin her zaman görünür.

``` ### 4. Listeleri Renderlama (`{#each}`) **Problem:** Bir dizi (array) üzerindeki elemanları liste olarak göstermek. **Çözüm:** `{#each}` bloklarını kullanmak. ```svelte

Yapılacaklar Listesi

    {#each todos as todo (todo.id)}
  • toggleCompleted(todo.id)} /> {todo.text}
  • {/each}
``` > **Uyarı:** `{#each}` bloklarında `(todo.id)` gibi bir `key` sağlamak, Svelte'ın listelerdeki elemanları daha verimli bir şekilde izlemesini sağlar ve olası renderlama sorunlarını önler. Bu, 2026'da modern frontend geliştirme best practice'lerinden biridir. ### 5. Olay Yönetimi (`on:event`) **Problem:** Kullanıcı etkileşimlerine (tıklama, klavye girişi vb.) tepki vermek. **Çözüm:** `on:event` direktifini kullanmak. ```svelte

Olay Yönetimi

Yazdığınız: {message}

``` ## İleri Seviye Teknikler Svelte, temel kullanımının ötesinde, büyük ve karmaşık uygulamalar geliştirmek için güçlü ileri seviye teknikler sunar. 2026 yılında SvelteKit ile birlikte bu teknikler, production-ready uygulamalar oluşturmak için vazgeçilmezdir. ### 1. Stores ile Global State Yönetimi Svelte'ın yerleşik store mekanizması, uygulama genelinde state'i paylaşmanın basit ve verimli bir yoludur. **Problem:** Farklı bileşenler arasında global state'i yönetmek ve senkronize etmek. **Çözüm:** `writable`, `readable` veya `derived` store'ları kullanmak. ```typescript // src/lib/stores.ts import { writable, derived } from 'svelte/store'; export const user = writable<{ name: string; email: string } | null>(null); export const isAuthenticated = derived(user, ($user) => $user !== null); export function login(name: string, email: string) { user.set({ name, email }); } export function logout() { user.set(null); } ``` ```svelte

Dashboard

{#if $isAuthenticated}

Hoş geldiniz, {$user?.name}!

{:else}

Giriş yapmadınız. Lütfen giriş yapın.

{/if} ``` ### 2. Context API Context API, props drilling'i önlemek ve bir bileşen ağacında verileri aşağıya doğru geçirmek için kullanılır. **Problem:** Çok seviyeli bileşen hiyerarşilerinde prop'ları her seviyeden geçirmeden veri paylaşımı yapmak. **Çözüm:** `setContext` ve `getContext` fonksiyonlarını kullanmak. ```svelte
``` ```svelte

Mevcut Tema: {$theme}

``` ```svelte

Context API Örneği

``` ### 3. Actions (`use:` Direktifi) Actions, DOM elemanlarına özel davranışlar eklemek için kullanılan fonksiyonlardır. Bu, yeniden kullanılabilir ve modüler davranışlar oluşturmak için güçlü bir yoldur. **Problem:** Tekrar eden DOM manipülasyonlarını veya olay dinleyicilerini soyutlamak. **Çözüm:** Custom actions oluşturmak. ```typescript // src/lib/actions/longpress.ts export function longpress(node: HTMLElement, duration: number = 500) { let timeout: number; function handleMouseDown() { timeout = setTimeout(() => { node.dispatchEvent(new CustomEvent('longpress')); }, duration); } function handleMouseUp() { clearTimeout(timeout); } node.addEventListener('mousedown', handleMouseDown); node.addEventListener('mouseup', handleMouseUp); node.addEventListener('mouseleave', handleMouseUp); return { destroy() { node.removeEventListener('mousedown', handleMouseDown); node.removeEventListener('mouseup', handleMouseUp); node.removeEventListener('mouseleave', handleMouseUp); } }; } ``` ```svelte

Actions Örneği

``` ### 4. SvelteKit ile Sunucu Tarafı İşlemleri (API Endpoints) SvelteKit, `+server.ts` dosyaları aracılığıyla API endpoint'leri oluşturmanıza olanak tanır. Bu, full-stack uygulamalar için kritik öneme sahiptir. **Problem:** Frontend uygulamanızın veri almak veya göndermek için bir backend API'ye ihtiyacı olması. **Çözüm:** SvelteKit'in `+server.ts` dosyalarını kullanarak RESTful API endpoint'leri oluşturmak. ```typescript // src/routes/api/todos/+server.ts import { json } from '@sveltejs/kit'; let todos = [ { id: 1, text: 'Svelte 5 öğren', completed: false }, { id: 2, text: 'SvelteKit makalesi yaz', completed: true } ]; export async function GET() { return json(todos); } export async function POST({ request }) { const { text } = await request.json(); const newTodo = { id: todos.length + 1, text, completed: false }; todos.push(newTodo); return json(newTodo, { status: 201 }); } ``` ```svelte

SvelteKit API Örneği

    {#each todos as todo (todo.id)}
  • {todo.text}
  • {/each}
``` ## Best Practices & Anti-Patterns Svelte ile production kalitesinde uygulamalar geliştirmek için belirli best practice'leri takip etmek ve yaygın anti-pattern'lardan kaçınmak kritik öneme sahiptir. Özellikle 2026'da Svelte 5'in yaygınlaşmasıyla birlikte, Rune API'sinin doğru kullanımı büyük fark yaratır. ### ✅ Best Practices 1. **Svelte 5 Rune API'sini Benimseyin:** `$state`, `$derived`, `$effect` gibi runeleri kullanarak reaktiviteyi daha açık ve yönetilebilir hale getirin. Bu, özellikle 2026'da Svelte'ın önerilen reaktivite modelidir. ```svelte ``` 2. **Küçük ve Odaklanmış Bileşenler Yazın:** Her bileşenin tek bir sorumluluğu olmalı. Bu, kodun okunabilirliğini, test edilebilirliğini ve yeniden kullanılabilirliğini artırır. 3. **Props Drilling'i Önlemek için Context API veya Stores Kullanın:** Derinlemesine iç içe geçmiş bileşenlerde prop'ları her seviyeden geçirmek yerine, Context API'yi veya global state için Svelte Stores'u tercih edin. 4. **`key` Direktifini `{#each}` Bloklarında Kullanın:** Listeleri renderlarken elemanları benzersiz bir `key` ile tanımlamak, Svelte'ın DOM'u daha verimli güncellemesini sağlar ve hataları önler. ```svelte {#each items as item (item.id)} {/each} ``` 5. **Erişilebilirlik (Accessibility) İlkelerini Uygulayın:** Anlamsal HTML kullanın, klavye navigasyonunu destekleyin ve ARIA niteliklerini gerektiğinde ekleyin. Bu, uygulamanızın daha geniş bir kitle tarafından kullanılmasını sağlar. 6. **TypeScript Kullanın:** Özellikle büyük ölçekli Svelte projelerinde TypeScript, kod kalitesini artırır, hataları derleme zamanında yakalar ve geliştirici deneyimini iyileştirir. 7. **SvelteKit'in Yönlendirme ve API Özelliklerini Kullanın:** Full-stack ihtiyaçlarınız için `+page.svelte`, `+layout.svelte`, `+server.ts` gibi SvelteKit'in dosya tabanlı yönlendirme ve API endpoint'lerinden tam olarak yararlanın. 8. **Güvenlik Odaklı Geliştirme:** SvelteKit API endpoint'lerinde input validasyonu, yetkilendirme (authentication/authorization) ve XSS/CSRF gibi yaygın web güvenlik açıklarına karşı koruma sağlayın. > **Uyarı:** Kullanıcıdan gelen her türlü veriyi (form girdileri, URL parametreleri, API istek gövdeleri) daima sunucu tarafında doğrulamalısınız. 9. **Performans Optimizasyonlarını Göz Önünde Bulundurun:** Lazy loading, code splitting, image optimizasyonu gibi teknikleri uygulayarak uygulamanızın hızını artırın. ### ❌ Anti-Patterns 1. **Reaktiviteyi Yanlış Anlamak:** Özellikle Svelte 5 öncesi sürümlerde, reaktivitenin sadece atama (assignment) ile tetiklendiğini unutmak yaygın bir hataydı. Svelte 5 Runes ile bu daha açık hale gelse de, `$state` dışındaki değişkenleri reaktif sanmak hala bir tuzak olabilir. 2. **Karmaşık Mantığı Markup İçine Yazmak:** `script` etiketinin dışındaki HTML bölümünde çok fazla karmaşık JavaScript mantığı bulundurmak, okunabilirliği ve bakımı zorlaştırır. Mantığı `script` etiketinde tutmaya özen gösterin. 3. **Gereksiz Yere Global State Kullanmak:** Her küçük state için global store oluşturmak yerine, bileşen içi state'i veya Context API'yi tercih edin. Global state'i sadece gerçekten uygulama genelinde paylaşılan veriler için kullanın. 4. **CSS Scope'unu İhmal Etmek:** Svelte, varsayılan olarak CSS'i bileşenlere scope'lar. Ancak `:global()` veya yanlış CSS seçicileri kullanarak bu özelliği devre dışı bırakmak, stil çakışmalarına yol açabilir. 5. **Asenkron İşlemleri Yanlış Yönetmek:** `await` anahtar kelimesini `{#await}` blokları dışında doğrudan template içinde kullanmaya çalışmak veya asenkron işlemleri düzgün bir şekilde hata yönetimi yapmadan kullanmak yaygın hatalardır. ## Yaygın Hatalar ve Çözümleri Svelte geliştirirken karşılaşabileceğiniz bazı yaygın hatalar ve bunların çözümleri, geliştirme sürecinizi hızlandıracaktır. Özellikle 2026'da Svelte 5 ile gelen yenilikler, bazı eski hataları ortadan kaldırsa da, yeni bazı durumlar ortaya çıkarabilir. ### 1. Reaktivite Sorunları (Svelte 5 Öncesi) * **Problem:** Bir dizinin veya objenin bir özelliğini güncellediğinizde UI'ın güncellenmemesi. ```svelte

{items[0].name}

``` * **Sebep:** Svelte, reaktiviteyi değişken atamalarıyla (assignment) tetikler. Doğrudan bir objenin veya dizinin içindeki bir özelliği değiştirmek, Svelte'ın değişikliği algılamasını engeller. * **Çözüm (Svelte 5 Öncesi):** Değişiklikten sonra tüm objeyi veya diziyi yeniden atayın. ```svelte ``` * **Çözüm (Svelte 5 ve Sonrası):** Rune API ile bu sorun doğrudan `$state` kullanılarak çözülür, çünkü `$state` ile tanımlanan objeler ve diziler derinlemesine reaktiftir. ```svelte ``` ### 2. SvelteKit `fetch` Hataları (Server-Side Rendering) * **Problem:** SvelteKit'in sunucu tarafında `fetch` kullanırken göreceli URL'lerin (relative URLs) çalışmaması. ```typescript // src/routes/+page.server.ts import type { PageServerLoad } from './$types'; export const load: PageServerLoad = async ({ fetch }) => { // HATA: Sunucu tarafında göreceli '/api/data' çalışmaz const res = await fetch('/api/data'); const data = await res.json(); return { data }; }; ``` * **Sebep:** Sunucu tarafında `fetch` çağrıldığında, bir `window` objesi veya temel URL (base URL) olmadığı için göreceli yollar çözümlenemez. * **Çözüm:** `event.url` objesini kullanarak tam URL'i oluşturun. ```typescript // src/routes/+page.server.ts import type { PageServerLoad } from './$types'; export const load: PageServerLoad = async ({ fetch, url }) => { const res = await fetch(`${url.origin}/api/data`); // Tam URL kullanın const data = await res.json(); return { data }; }; ``` ### 3. CSS Kapsamlandırma (Scoping) Sorunları * **Problem:** Bir bileşende tanımlanan CSS stillerinin diğer bileşenleri etkilemesi veya beklendiği gibi çalışmaması. * **Sebep:** Svelte, varsayılan olarak ` ``` ### 4. Animasyon ve Geçiş (Transition) Hataları * **Problem:** Animasyonların veya geçişlerin beklendiği gibi tetiklenmemesi veya takılması. * **Sebep:** `{#if}` blokları içinde `transition` direktiflerinin yanlış kullanımı veya DOM elemanlarının ani bir şekilde kaldırılıp eklenmesi. * **Çözüm:** `animate:` direktifi yerine `transition:` kullanırken, elemanın DOM'dan kaldırılması için yeterli zaman tanındığından emin olun. `in:fade` ve `out:fade` gibi geçişleri ayrı ayrı tanımlayın. ```svelte {#if show}

Bu metin geçişli olarak görünür/kaybolur.

{/if} ``` ## Performans Optimizasyonu Svelte, doğası gereği yüksek performanslı uygulamalar üretse de, 2026 yılında büyük ölçekli ve karmaşık projelerde ek optimizasyon teknikleri uygulamak, kullanıcı deneyimini zirveye taşıyacaktır. Production ortamında SvelteKit ile karşılaştığımız en yaygın optimizasyon senaryolarını inceleyelim. ### 1. Code Splitting (Kod Bölme) **Problem:** Büyük uygulamalarda tüm JavaScript kodunun tek bir büyük dosya olarak yüklenmesi, ilk yükleme süresini (TTFB - Time To First Byte) uzatabilir. **Çözüm:** SvelteKit, dosya tabanlı y