Loadding..

React Native New Architecture: Tại sao app của bạn sẽ mượt hơn mà không cần sửa 1 dòng JSX?

React Native New Architecture: Tại sao app của bạn sẽ mượt hơn mà không cần sửa 1 dòng JSX?

React Native New Architecture

Bạn từng debug performance “lòi mắt” vì Bridge bottleneck hay UI flicker? Kiến trúc mới xóa bỏ hoàn toàn rào cản này, mang lại tốc độ native thực thụ nhờ JSI và Fabric renderer viết bằng C++.

Bạn có thể ship app mà không cần biết internals. Nhưng khi cần debug performance, viết native module, hay migrate version — đây là những thứ bạn cần hiểu.

Vấn đề với kiến trúc cũ

Old architecture dùng Bridge: JS serializes message thành JSON → gửi qua queue → Native parse lại. Mỗi lần gọi native là một roundtrip tốn kém: extra copying, extra parsing, extra delay. Đây là lý do animation nặng hay camera real-time thường bị lag.

New Architecture (mặc định từ v0.82+) xóa bỏ Bridge hoàn toàn.

4 trụ cột của New Architecture

JSI (JavaScript Interface) — thay thế Bridge

JS trực tiếp call C++ functions mà không qua JSON serialization. Không có message queue, không có bottleneck. Đây là nền tảng cho mọi thứ còn lại.

Fabric — renderer mới viết bằng C++

Fabric convert React components thành native views, support Concurrent Rendering, Suspense, và Transitions. Quan trọng: layout info có thể đọc synchronously — giảm layout flicker và UI jump đáng kể. Core logic share giữa Android và iOS nên behavior nhất quán hơn.

TurboModules

Native modules theo kiểu cũ đều khởi động khi app mở, dù bạn không dùng chúng. TurboModules lazy load — chỉ khởi động khi thực sự cần. Kết quả: app start nhanh hơn, RAM thấp hơn, scale tốt hơn với app lớn.

Codegen

Tự động generate type-safe bindings giữa JS, C++, và platform code (Java/Kotlin/Swift). Ít runtime error, ít boilerplate, behavior đoán được hơn. Hầu hết không thấy nó — nhưng nó tăng độ tin cậy đáng kể.

Render pipeline — từ JSX đến pixel

  1. Render phase: React chạy JS của bạn → tạo Element Tree → JSI chuyển sang Shadow Tree (C++, chưa hiển thị, chỉ mô tả cấu trúc).
  2. Commit phase: Yoga engine tính toán Flexbox layout — width, height, position. Với Fabric, layout info có thể đọc synchronously khi cần, không cần chờ async.
  3. Mount phase: Fabric tạo native views thực sự → pixel xuất hiện trên màn hình.

Khi state thay đổi (setColor("yellow")): React tạo tree mới → diff với tree cũ → chỉ update đúng view bị thay đổi. Không re-render toàn màn hình — đây là lý do React Native scale tốt.

Threading model + Hermes

JavaScript Thread chạy toàn bộ React logic, state update, rendering. UI Thread xử lý gesture, drawing, mount — chỉ UI Thread mới được modify native views. Phân tách này giúp animations mượt và UI luôn responsive dù JS thread bận.

Hermes — JS engine tối ưu cho mobile: startup nhanh hơn, bundle size nhỏ hơn, memory thấp hơn. Mặc định trong hầu hết setup kể cả Expo. Không cần config thủ công.


New Architecture không thay đổi cách bạn viết React code. Engine phía dưới trở nên thông minh hơn — nhanh hơn, ổn định hơn, cross-platform nhất quán hơn. Bạn vẫn viết JSX như cũ, nhưng giờ bạn biết nó đi đâu.

Print