Ana içeriğe geç
Performans

Code Splitting Nedir?

Code splitting, JavaScript bundle'ın küçük parçalara ayrılıp sadece kullanıldığında yüklenmesi tekniği. Tüm sayfayı tek bir 500KB JS'le yüklemek yerine, her route veya komponent için ayrı 50-100KB chunk'lar oluşur. İlk sayfa weight'i %60-80 düşürüyor, INP iyileşiyor.

Code splitting türleri: 1. Route-based splitting — her sayfa için ayrı chunk (Next.js otomatik yapıyor) 2. Component-based splitting — React.lazy + Suspense ile heavy component'ler 3. Vendor splitting — node_modules ayrı chunk'a alınıyor (browser cache'leri uzun süre tutuyor) 4. Dynamic import — kullanıcı bir butona tıkladığında modul yüklensin

Next.js otomatik code splitting: - /pages/about.tsx ve /pages/contact.tsx ayrı chunk'lar — sadece o sayfayı ziyaret edince yüklenir - _app.tsx ve component'ler '_app' ve 'common' chunk'larında - node_modules 'vendors' chunk'ında

Manuel dynamic import: ```typescript import dynamic from 'next/dynamic' const HeavyChart = dynamic(() => import('@/components/HeavyChart'), { loading: () => <Skeleton />, ssr: false, // server-side render etme }) ```

Ne zaman code splitting: - 3rd party library 100KB+ (chart.js, framer-motion, lodash) - Modal/dialog içeriği — sadece açıldığında gerekli - Form validation library — sadece form sayfasında - Heavy widget — LiveSupport, video player, harita

DevPixel'de framer-motion (animation library) 60 dosyada kullanılıyor — bundle size 200KB. Code splitting ile her sayfa sadece kullandığı animasyon component'ini yüklüyor, vendor chunk uzun süre cache'leniyor.

DevPixel Yaklaşımı

DevPixel'in code splitting stratejisi: Next.js automatic route splitting + React.lazy heavy component'ler + DeferredChrome ile widget'ları idle-time mount. Vercel build ortalama 60-80 küçük chunk üretiyor (her chunk 20-80KB), browser cache hit ratio %85+.

İlgili terimler