New Architecture; Fabric (yeni renderer) + Turbo Modules (yeni native API) + Bridgeless / JSI (doğrudan JS↔native çağrı) birleşimidir. Tek bir Gradle flag’i değildir — sözleşme modernizasyonudur: Spec, codegen, C++ shadow tree, lazy native init.
Orta/büyük uygulamalarda önce envanter, sonra kademeli açılış, sonra metrik gerekir. Acele eden ekipler “New Arch’ı kapattık” post-mortem’i yazar.
Migrasyona kod yazarak başlamayın: envanter
İlk sprint envanter sprint’i olmalı:
- Bağımlılıklar: Her native lib için New Arch / Fabric / Turbo notu
- İç native modüller:
NativeModuleskullanan JS import’ları - Custom view’lar:
requireNativeComponentve eski ViewManager - Kritik journey: Auth, ödeme, kamera, harita, push, deep link
Kırmızı lib varsa: upgrade, fork, replace veya New Arch’ı ertele. “Belki çalışır” production stratejisi değildir.
Bağımlılık matrisi şablonu
| Kütüphane | Sürüm | Fabric | Turbo | Issue | Aksiyon |
|---|---|---|---|---|---|
| reanimated | 3.x | ✓ | N/A | — | Upgrade |
| eski-maps | 1.x | ✗ | ✗ | #123 | Replace veya ertele |
Matris yeşil olunca “New Arch açalım” kararı verilir.
Açma sırası
1) Toolchain baseline
Hermes varsayılan olmalı. Eski JSC + New Arch = debug/release tutarsızlığı. RN sürümü maintainer’ın önerdiği minimumda olsun.
2) Android önce (sık tercih)
# android/gradle.properties
newArchEnabled=true
Android iterasyonu genelde daha hızlıdır. Önemli olan tek platformda stabilize edip diğerine geçmek.
3) iOS ikinci dalga
Pod install, clean build, codegen çıktısının Xcode target’ına girdiğini doğrulayın.
4) Bridgeless
RN sürümüne göre ayrı flag veya New Arch ile birlikte gelir. “Fabric açık ama bridge hâlâ ortada” hibrit dönemleri vardır — interop uyarılarını izleyin.
Interop: dost ve tuzak
Interop (eski modüllerin New Arch altında geçici çalışması) geçişi hızlandırır; üçüncü parti henüz Spec’e geçmemişse uygulama ayakta kalır.
Tuzaklar:
- “Tamam migrate olduk” illüzyonu
- Performans beklentisi — interop bridge’e yakın maliyet taşıyabilir
- Yeni kod interop’a eklenmemeli
Strateji: Interop’u ölçülen borç sayın. Her sprint N modül Spec’e; sayı azalmalı, artmamalı.
İç modül migrasyon sırası
- En az bağımlı, en çok test edilenle başlayın
- Spec → codegen → Android/iOS implement → JS import
- Feature flag ile eski/yeni paralel (yüksek risk)
- E2E smoke her migrasyonda
- ProGuard keep güncelle
Custom view migrasyonu genelde daha pahalıdır — kritik olmayanları sona bırakın.
Test matrisi
| Katman | Ne test edilir | Araç |
|---|---|---|
| Unit | Spec tipleri, JS logic | Jest |
| Native smoke | Turbo Module metotları | Integration |
| UI | Fabric custom view | Snapshot |
| E2E | Kritik journey | Detox / Maestro |
| Perf | TTI, JS/UI FPS | Perf Monitor, systrace |
| Release | R8 minify açık | CI release |
Debug yeşil, release kırmızı — New Arch + R8’de klasik.
Rollback: OTA yetmez
New Arch OTA ile kapanmaz. Yanlış Fabric bug’ı store binary ister.
newArchEnabled=falseartifact’ını aynı commit’ten üretebilecek CI- Staged rollout: %5 → %25 → %100; crash-free karşılaştırması
- Rollback eşiği önceden tanımlı
- Feature flag yalnızca JS davranışını keser — native renderer değil
Metrikler
- Crash-free sessions: New Arch cohort vs kontrol
- ANR rate (Android)
- Cold start p50/p95
- Checkout / signup conversion
- Support ticket trend
- JS FPS / UI FPS
En az iki haftalık production verisi — bir gün yeşil yetmez.
Sık başarısızlık nedenleri
- Reanimated / Gesture Handler major upgrade atlamak
- Monorepo codegen path hataları
- ProGuard’ın generated sınıfları yemesi
- Release minify farkını test etmemek
- Tek QA cihazı (yalnızca flagship)
- Third-party Fabric desteği varsayımı
- Interop borcunu sıfır sanmak
Production checklist
- Bağımlılık matrisi tamam — kırmızı lib aksiyonu net
- İç modüller Spec planı backlog’da
-
newArchEnabledtek platformda açıldı, stabilize - E2E smoke yeşil (auth, pay, kamera, push)
- İkinci platform açıldı
- Release minify smoke geçti
- Staged store rollout başladı (%5)
- Interop borç backlog’u azalıyor
- Rollback binary hazır ve test edildi
- Metrik dashboard New Arch cohort izliyor
Özet
New Architecture migrasyonu bir bayrak değil, sözleşme modernizasyonudur. Başarı; lib envanteri, kademeli açılış, interop’u borç sayma, release smoke ve store metrikleriyle ölçülür. Turbo, Fabric ve bridgeless’i birlikte planlayın.