React 19.3 ve React 18: ürün ekibi için gerçekte neler değişti

2026-09-10

React 19.3, 9 Eylül 2026’da yayımlandı. Çoğu sürüm yazısı özellik listesi gibi okunuyor; ben silebileceğim kodların listesi olarak okuyorum. Hâlâ pek çok production uygulamasında kullanılan React 18 ile karşılaştırınca 19 serisi yeni sözdiziminden çok ekiplerin kendi yazdığı geçici çözümleri bırakmakla ilgili: formlar için durum makineleri, forwardRef sarmalayıcıları, her yerde memo ve typeof window kontrolleri.

React 19.0 temeli attı. Actions ve useActionState, her formda elle kurulan isPending / error / data üçlüsünün yerini aldı. useOptimistic, iyimser arayüzü reducer yerine hook’a dönüştürdü. use(), render sırasında bir promise’i veya context’i koşullu olarak bile okur. ref normal bir prop oldu; dolayısıyla forwardRef artık eski yöntem. <Context> kendi başına provider olarak çalışır; <title> ve <meta> herhangi bir bileşenden head’e taşınır. Bunun gerçek bir bedeli de vardı: string ref’ler, legacy context, ReactDOM.render ve fonksiyon bileşenlerindeki propTypes kaldırıldı. Eski bağımlılıkları olan React 18 uygulaması yalnızca sürüm numarasını yükseltmemeli, gerçek bir yükseltme yapmalı.

React 19.2 ve React Compiler 1.0 uygulamanın hissini değiştirdi. <Activity mode="hidden"> bir sekmeyi veya sıradaki sayfayı durumuyla birlikte mounted tutarken efektlerini duraklatır — eskiden display: none ile taklit edip işe yaramasını umduğumuz şey. useEffectEvent exhaustive-deps kuralıyla çekişmeyi bitirir: efekt roomId’ye tepki verir, callback ise en güncel temayı okur. Kısmi ön-oluşturma (prerender, ardından resume), dinamik bölüm akış hâlinde gelirken statik kabuğun CDN’den sunulmasını sağlar. Compiler ayrıca elle yazılan useMemo, useCallback ve React.memo çağrılarının çoğunu gereksiz kıldı. Bir kütüphanenin referans kimliğine ihtiyaç duyduğu yerde hâlâ tutuyorum ama artık otomatik bir refleks değiller.

React 19.3 hareket ve DOM’un sınırlarıyla ilgili. <ViewTransition> artık kararlı: bir öğeyi sarın, güncellemeyi startTransition ile işaretleyin; tarayıcı giriş, çıkış ve ortak öğeleri canlandırır. addTransitionType, aynı durum güncellemesinden «next» ve «previous» geçişlerinin farklı yönlere kaymasını sağlar. Fragment refs, ek bir sarmalayıcı div olmadan focus(), IntersectionObserver için observeUsing() ve kardeş öğe grubunun ölçümlerini sunar. react-dom’daki use(browser()), typeof window !== "undefined" kontrolünün yerini alır: bileşen sunucuda askıya alınır, Suspense yedeğini gösterir ve hydration sonrasında istemcide render edilir. Server Components, «use client» provider dosyasına gerek kalmadan <Context value> render edebilir; react-dom Trusted Types nesnelerini dizgeye çevirmeden aktarır, böylece katı require-trusted-types-for CSP’si React’le çalışır.

Yan yana bakınca fark import’larda görülür. React 18’de bekleme durumu, iyimser güncelleme ve animasyonlu liste içeren bir form üç kütüphane ve özel bir hook gerektirirdi; 19.3’te useActionState, useOptimistic ve <ViewTransition> yeterlidir, hepsi React’in içinden gelir. 18’de «yalnızca istemcide render et» demek mounted bayrağı ve yerleşim sıçraması demekti; artık tek satır ve Suspense sınırı yeter. 18’de performans, memo’yu disiplinli kullanmaktı; şimdi Compiler ve Chrome DevTools’taki React Performance Tracks gerçekten hangi işlemin kareyi engellediğini gösteriyor.

Para işleyen bir üründe 18’den 19.3’e tek pull request ile geçmezdim. Bilerek sıkıcı tuttuğum yol şu: önce kullanımdan kaldırma uyarılarını görmek için 18.3, sonra resmi codemod’larla 19, ardından tek rotada flag arkasında Compiler ve en son yalnızca kodu sildikleri yerlerde yeni API’ler. 19.3 tek başına eklemeli bir sürüm; duyuruda uyumluluğu bozan değişiklik yok. Yine de Aralık 2025 Server Components güvenlik uyarıları, yama sürümlerinin de ana sürümler kadar önemli olduğunu hatırlatıyor. Uygulaman hâlâ 18’deyse package.json’ı ve en önemli üç ekranı gönder. Yükseltme sırasını ve sonrasında silebileceğin kodları önereyim.

Bir sonraki ürüne kalacak birini verin.

Başlamaya hazır mısınız? Bana yazın — hemen başlayabilir ve kalabilirim. İki haftalık devir değil, uzun vadeli iş birliği. Projenizi, gereksinimleri ve ilerlemenin en iyi yolunu konuşalım.

Deneyim veya hizmetler hakkında sorun