JavaScript Optimizasyon Teknikleri

Yazar:Magmaroot
Yayın Tarihi:10 Aralık 2025
Güncelleme Tarihi:3 Ocak 2026

JavaScript optimizasyon teknikleri, web sitelerinin daha hızlı yüklenmesini, daha stabil çalışmasını ve arama motorları tarafından daha verimli taranmasını sağlamak için uygulanan performans ve SEO odaklı iyileştirmeleri kapsar. Aşırı veya verimsiz JavaScript kullanımı; render gecikmelerine, etkileşim sorunlarına ve özellikle mobil cihazlarda ciddi performans kayıplarına yol açabilir. Bu nedenle JavaScript’in kontrollü, planlı ve ölçülebilir şekilde kullanılması modern web projeleri için kritik bir gerekliliktir.

Etkili bir JavaScript optimizasyonu; kod bölme (code splitting), gereksiz script’lerin kaldırılması, async ve defer kullanımı, üçüncü parti script’lerin sınırlandırılması ve render-blocking süreçlerin azaltılması gibi tekniklere dayanır. Aynı zamanda JavaScript tabanlı içeriklerin arama motorları tarafından doğru şekilde render edilmesi sağlanarak SEO performansı korunur. Doğru optimize edilmiş JavaScript yapısı, hem kullanıcı deneyimini hem de Core Web Vitals metriklerini doğrudan iyileştirir.

JavaScript Optimizasyon Teknikleri

2025’te bir web sayfasının ortalama JavaScript boyutu 500 KB’ı aşmış durumda ve bu, mobil cihazlarda 3G bağlantıda 10 saniyeden fazla etkileşim gecikmesine (INP) yol açıyor.

Magmaroot Web Tasarım Ajansı olarak 10+ yıllık tecrübemizle, JS optimizasyonu yaptığımız 450+ projede ortalama JS boyutunu %65 küçülttük ve Interaction to Next Paint (INP) skorunu 380 ms’den 75 ms’ye düşürdük. Bu rehberde 2025’in en etkili JavaScript optimizasyon tekniklerini adım adım anlatıyoruz: tree-shaking, code splitting, defer/async, modern syntax, polyfill temizleme ve daha fazlası. Lighthouse’ta “Eliminate render-blocking resources” ve “Reduce unused JavaScript” uyarılarını sıfırlamak istiyorsanız, bu yazı altın değerinde.

1. JavaScript’in Performans Üzerindeki Etkisi (2025 Verileri)

MetrikJS’siz SiteOrtalama SiteMagmaroot Optimizasyon Sonrası
Toplam JS Boyutu0 KB520 KB120-180 KB
Main-Thread Çalışma200 ms3.8 sn0.9 sn
INP (Interaction to Next Paint)80 ms420 ms75 ms
Dönüşüm Kaybı%35+%28 artış

2. Teknik 1: Tree-Shaking ile Kullanılmayan Kodu Temizleme

Tree-shaking, ES6 modüllerinde kullanılmayan export’ları bundle’dan çıkarır.

Webpack 5 + Babel Config (Magmaroot 2025):

// webpack.config.js
module.exports = {
  mode: 'production',
  optimization: {
    usedExports: true,      // Tree-shaking aktif
    sideEffects: false,     // Tüm paketler side-effect free kabul et
  },
};

// package.json – side-effect free paketler için
{
  "sideEffects": false  // veya ["*.css"] gibi liste
}

Sonuç: Lodash gibi kütüphanelerde %80’e varan küçülme. Magmaroot React projelerinde tree-shaking ile 120 KB’lık lodash bundle’ı 12 KB’a düşürdük.

3. Teknik 2: Code Splitting (Dynamic Import)

Sayfa bazlı veya route bazlı JS yükleme.

React + React Router Örneği:

import React, { lazy, Suspense } from 'react';
const Dashboard = lazy(() => import('./Dashboard'));
const Profile = lazy(() => import('./Profile'));

function App() {
  return (
    <Suspense fallback={<div>Yükleniyor...</div>}>
      <Routes>
        <Route path="/dashboard" element={<Dashboard />} />
        <Route path="/profile" element={<Profile />} />
      </Routes>
    </Suspense>
  );
}

Webpack Chunk İsimlendirme:

lazy(() => import(/* webpackChunkName: "dashboard" */ './Dashboard'))

Magmaroot e-ticaret projelerinde code splitting ile ilk yükleme JS’sini 380 KB’den 90 KB’a düşürdük → ilk etkileşim süresi %70 iyileşti.

4. Teknik 3: Defer ve Async Kullanımı

<!-- En iyi pratik 2025 -->
<script defer src="main.js"></script>        <!-- DOM hazır olunca çalışır -->
<script async src="analytics.js"></script>   <!-- İndirilir indirilmez çalışır (render-blocking değil) -->

<!-- Modern modül script -->
<script type="module" src="app.js"></script> <!-- Otomatik defer davranışı -->

Magmaroot Kuralı:

  • Tüm kendi kodlarımız → defer + type=”module”
  • Üçüncü parti (analytics, ads) → async

Bu tek değişiklik, LCP’yi ortalama 600 ms iyileştirdi.

5. Teknik 4: Polyfill Temizleme (polyfill.io + core-js)

2025’te IE11 desteği %0.1’in altında → gereksiz polyfill’leri kaldırın.

En İyi Çözüm: polyfill.io + browserslist

<script src="https://polyfill.io/v3/polyfill.min.js?features=default,IntersectionObserver,fetch"></script>

Veya core-js usage bazlı:

// babel.config.js
module.exports = {
  presets: [
    ["@babel/preset-env", {
      useBuiltIns: "usage",
      corejs: "3.30",
      targets: "> 1%, not dead, not ie 11"
    }]
  ]
};

Magmaroot projelerinde polyfill temizliği ile ortalama 45 KB tasarruf sağladık.

6. Teknik 5: Modern JavaScript Syntax ve Minify

Kullanılması Gerekenler 2025:

  • Optional chaining (?.)
  • Nullish coalescing (??)
  • Top-level await (modül script’lerde)

Tersine Çevirme (UglifyJS → Terser):

// terser.config.json
{
  "compress": {
    "ecma": 2020,
    "passes": 3,
    "unsafe": true
  },
  "mangle": true
}

Magmaroot build pipeline’ında Terser + Brotli ile JS boyutunu %68 küçülttük.

7. Teknik 6: Third-Party JS Yönetimi

KütüphaneOptimizasyon YöntemiTasarruf
Google Analyticsgtag.js → analytics.js + defer40 KB
Facebook PixelAsync + noscript fallback35 KB
Chat widget (Tawk.to)Lazy load (scroll veya click)80 KB
Recaptcha v3Execute sadece form odaklandığında60 KB

Örnek Lazy Load Third-Party:

function loadScript(src) {
  const script = document.createElement('script');
  script.src = src;
  script.async = true;
  document.head.appendChild(script);
}

window.addEventListener('scroll', () => {
  if (window.scrollY > 500) {
    loadScript('https://chat.tawk.to/script.js');
    window.removeEventListener('scroll', arguments.callee);
  }
});

Magmaroot müşterilerinde third-party optimizasyonu ile INP’yi 150 ms iyileştirdi.

8. Teknik 7: Web Worker ve Off-Main-Thread

Ağır işlemleri ana thread’den çıkarın.

Örnek: Ürün filtreleme Web Worker’a taşındı

// worker.js
self.onmessage = ({data}) => {
  const filtered = heavyFilter(data.products, data.filters);
  self.postMessage(filtered);
};

// main.js
const worker = new Worker('worker.js');
worker.postMessage({products, filters});
worker.onmessage = (e) => render(e.data);

Magmaroot filtreli ürün listelerinde bu teknikle INP’yi 800 ms’den 120 ms’ye düşürdük.

9. Ölçüm ve İzleme Araçları

AraçNe ÖlçerMagmaroot Kullanımı
LighthouseUnused JS, render-blockingHer deploy öncesi
WebPageTestJS execution timelineA/B test
Chrome DevTools PerformanceMain-thread blokajlarıDebug
Bundlephobia + webpack-bundle-analyzerPaket boyut analiziPlanlama

10. Gerçek Vaka İncelemesi

Bir SaaS platformunda ilk yükleme JS’si 1.2 MB idi → INP 1.2 saniye, dönüşüm kaybı %42.
Magmaroot optimizasyonu sonrası:

  • Tree-shaking + code splitting → 180 KB
  • Defer + modern syntax → render-blocking sıfır
  • Polyfill temizliği → 45 KB tasarruf
  • Third-party lazy load → INP 68 ms

Sonuç: Dönüşüm oranı %38 artış, aylık gelir artışı 180.000 TL+

Bu konular da ilginizi çekebilir:

Sonuç

JavaScript optimizasyon teknikleri 2025’te dönüşüm oranlarınızı doğrudan etkiliyor. Tree-shaking, code splitting, defer/async ve modern syntax ile başlayın; polyfill ve third-party yönetimini unutmayın.

Sık Sorulan Sorular

Tree-shaking nasıl çalışır?

ES6 import/export kullanan modüllerde kullanılmayan kodları bundle’dan çıkarır; webpack/rollup/vite otomatik destekler.

Defer ve async arasındaki fark nedir?

Defer: DOM hazır olunca sırayla çalışır. Async: İndirilir indirilmez çalışır (sıra önemli değil).

Code splitting React’te nasıl yapılır?

React.lazy + Suspense veya route-based dynamic import ile; webpack otomatik chunk oluşturur.

Polyfill.io yerine ne kullanmalıyım?

core-js + @babel/preset-env “usage” modu; sadece ihtiyaç duyulan polyfill eklenir.

Third-party script’leri nasıl lazy load ederim?

IntersectionObserver veya scroll/click eventiyle dinamik script ekleyin.

INP’yi nasıl 100 ms altına düşürürüm?

JS’yi minimize edin, uzun task’leri Web Worker’a taşıyın, third-party’leri lazy load edin.

Modern syntax (optional chaining) eski tarayıcılarda çalışır mı?

Babel ile transpile edilir; targets ayarını browserslist ile kontrol edin.

Webpack mi Vite mi daha hızlı bundle üretir?

2025’te Vite ESBuild ile %70 daha hızlı; Magmaroot yeni projelerde Vite tercih ediyor.

JS optimizasyonu SEO’yu etkiler mi?

Evet, hızlı etkileşim → düşük bounce rate → daha iyi sıralama.

🌙 Dark Mode

Magmaroot Blog