Hermes và New Architecture không phụ thuộc kỹ thuật bắt buộc — JSI hoạt động cả với JSC. Nhưng combo này được Meta đẩy mạnh vì cộng hưởng:
1. JSI implementation tốt nhất ở Hermes: Hermes được viết cùng thời với JSI, có tối ưu specific cho HostObject, ArrayBuffer share-memory. JSC vẫn implement JSI nhưng tốc độ TurboModule call thường chậm hơn measurable (vài % đến hơn 10% tùy workload — kiểm chứng bằng benchmark trên app cụ thể).
2. Bytecode + JSI = startup nhanh:
- Hermes load bytecode (hbc) ngay, không parse JS.
- JSI bind native module lazy, không upfront cost.
- Combo: TTI giảm 40–50% trên Android low-end vs JSC + legacy.
3. Memory:
- Hermes generational GC tốt cho object short-lived (mỗi animation frame).
- Fabric C++ ShadowTree không lookup qua bridge → ít cấp phát JS object.
- Tổng memory footprint giảm 20–30%.
4. Profiling tools:
- RN DevTools dựa trên Chrome DevTools Protocol qua Hermes inspector.
- Heap snapshot, CPU profile chỉ hoạt động với Hermes.
- JSC mode mất feature debugging hiện đại.
5. Future features:
- Static Hermes (đang phát triển 2025): bytecode pre-compiled với type info → AOT optimization. Roadmap chính thức của Meta — version chính xác RN tích hợp default có thể đổi.
- Concurrent React và Suspense workflow giả định Fabric + Hermes.
Khi nào không dùng combo:
- Lib critical chỉ work trên JSC (rất hiếm 2026).
- iOS-only app cần feature JSC engine cụ thể (ví dụ Safari Inspector).
Hermes default trong Expo từ SDK 49+; New Architecture + Bridgeless trở thành default từ Expo SDK 52 (RN 0.76, Q4 2024). RN CLI 0.76+ cũng default combo này.
Hermes and the New Architecture are not strictly coupled — JSI works with JSC too. But Meta pushed the combo because the synergy is strong:
1. Best JSI implementation lives in Hermes: Hermes was written alongside JSI with specific optimizations for HostObject and ArrayBuffer shared memory. JSC also implements JSI but TurboModule calls typically show measurable slowdown (a few percent up to over 10% depending on workload — verify with benchmarks for your specific app).
2. Bytecode + JSI = fast startup:
- Hermes loads bytecode (hbc) immediately, no JS parsing.
- JSI binds native modules lazily — no upfront cost.
- Result: TTI drops 40–50% on low-end Android vs JSC + legacy.
3. Memory:
- Hermes's generational GC is good for short-lived objects (per animation frame).
- Fabric's C++ ShadowTree avoids bridge lookups — fewer JS object allocations.
- Total memory footprint drops 20–30%.
4. Profiling tools:
- RN DevTools is built on the Chrome DevTools Protocol via the Hermes inspector.
- Heap snapshots and CPU profiles only work with Hermes.
- JSC mode loses modern debugging features.
5. Future features:
- Static Hermes (in development through 2025): bytecode pre-compiled with type info → AOT optimisations. On Meta's public roadmap — the exact RN version it ships as default may shift.
- Concurrent React and Suspense workflows assume Fabric + Hermes.
When to skip the combo:
- A critical library only works on JSC (very rare in 2026).
- An iOS-only app needs specific JSC features (e.g. Safari Inspector).
Hermes has been the Expo default since SDK 49+; New Architecture + Bridgeless became default in Expo SDK 52 (RN 0.76, Q4 2024). RN CLI 0.76+ also defaults to this combo.