Hermes là JavaScript engine open-source do Meta viết riêng cho React Native, tối ưu cho thời gian khởi động, bộ nhớ và kích thước app. JSC (JavaScriptCore) là engine của Safari, từng là mặc định của RN.
Khác biệt chính:
- Biên dịch bytecode trước (AOT): lúc build, Hermes dịch JS bundle thành bytecode (.hbc) đóng gói vào app. Khi mở app, engine không phải parse/compile JS nữa → khởi động nhanh hơn, thấy rõ nhất trên Android cấu hình thấp. JSC phải parse source JS lúc chạy.
- Bộ nhớ: Hermes dùng garbage collector Hades chạy song song (concurrent), giảm thời gian dừng GC và RAM tiêu thụ.
- Kích thước app: nhỏ hơn so với đóng gói JSC trên Android.
- Debug: React Native DevTools (RN 0.76+) kết nối qua Chrome DevTools Protocol, chỉ hỗ trợ Hermes.
Mốc version:
- RN 0.70 (2022): Hermes thành engine mặc định trên cả Android và iOS.
- JSC sau đó được tách khỏi core thành package cộng đồng @react-native-community/javascriptcore.
- RN 0.84 (02/2026): Hermes V1 thành mặc định — cải tiến cả compiler lẫn VM, chạy JS nhanh hơn và tốn ít bộ nhớ hơn; app đang dùng Hermes tự nâng cấp, không cần migrate.
Lưu ý: chỉ cân nhắc quay lại JSC khi gặp thư viện thật sự không tương thích — gần như không còn trường hợp này. Hermes tối ưu cho khởi động và bộ nhớ, nên đoạn code tính toán nặng (xử lý dữ liệu lớn) vẫn nên đo thực tế hoặc đẩy xuống native.