Perry vs React Native
React Native cho phép bạn viết JavaScript/TypeScript điều khiển UI gốc trên iOS và Android — các thành phần UI ánh xạ đến widget nền tảng qua một bridge JS-to-native (hoặc, trong New Architecture, một lớp JSI / Fabric với cùng hình dạng khái niệm). Perry đi theo một cách tiếp cận khác: TypeScript được biên dịch ahead-of-time thành mã máy gốc, và UI gốc là một phần của binary đã biên dịch, không phải bridge tại runtime.
React Native là gì?
React Native là framework của Meta để xây dựng ứng dụng di động bằng React. JavaScript chạy trong một engine nhúng — Hermes mặc định, hoặc JavaScriptCore — và tương tác với widget iOS/Android gốc qua một bridge (legacy) hoặc JSI/Fabric (New Architecture). Framework này ưu tiên di động (iOS và Android); Microsoft duy trì các fork cộng đồng cho Windows và macOS. React Native đã hỗ trợ ứng dụng tại Meta, Microsoft, Shopify, Discord và nhiều nơi khác.
Perry là gì?
Perry biên dịch TypeScript trực tiếp thành mã máy gốc. Module perry/ui của nó là một hệ thống UI khai báo kiểu SwiftUI biên dịch thành widget nền tảng gốc tại thời điểm build — không có runtime JS trong binary, không có bridge và không có JSI. Cùng một mã nguồn TypeScript biên dịch đến macOS, iOS, iPadOS, Android, Linux, Windows, watchOS, tvOS, Wear OS, WebAssembly và Web.
So sánh song song
| Tính năng | Perry | React Native |
|---|---|---|
| Mô hình thực thi | Mã máy gốc biên dịch AOT | Engine JS (Hermes/JSC) + bridge gốc (hoặc JSI/Fabric) |
| Engine JS trong ứng dụng | Không có | Hermes (mặc định) hoặc JavaScriptCore |
| UI | Widget gốc — API khai báo kiểu SwiftUI | Widget gốc qua React + bridge / Fabric |
| Mục tiêu chính | macOS, iOS, iPadOS, Android, Linux, Windows, watchOS, tvOS, WASM, Web | iOS, Android (Windows/macOS qua fork cộng đồng) |
| Binary server / CLI / desktop | Có (công cụ CLI, máy chủ, ứng dụng desktop) | Không (framework UI di động) |
| Bridge giữa JS và gốc | Không có bridge — mã gốc chính là chương trình | Có (bridge legacy hoặc JSI/Fabric) |
| Hot reload trong phát triển | perry dev (tự động biên dịch lại watch-mode) | Fast Refresh (rất nhanh) |
| Độ trưởng thành | Trước 1.0 | Ổn định, được triển khai rộng rãi trong sản xuất |
| Thư viện thành phần | widget cốt lõi perry/ui + lớp tương thích React perry-react | Rất rộng — React Native + các gói cộng đồng |
Perry thắng ở đâu
- +Không có engine JS trong ứng dụng được phát hành. Binary Perry biên dịch không mang theo Hermes hay JSC; TypeScript chính là tệp thực thi.
- +Không có chi phí bridge / JSI. Các lệnh gọi UI gốc là lệnh gọi hàm biên dịch trực tiếp, không phải marshaling JS-to-native.
- +Độ phủ nền tảng rộng hơn. Một mã nguồn Perry biên dịch sang desktop (macOS/Linux/Windows), di động (iOS/iPadOS/Android), thiết bị đeo (watchOS/Wear OS), TV (tvOS), WASM và Web. React Native ưu tiên di động.
- +Binary phía server và CLI từ cùng một trình biên dịch — Perry cũng là một runtime máy chủ, không chỉ là framework UI.
- +Hiệu năng tính toán biên dịch AOT — không có warmup, không có JIT, không có round trip qua bridge.
- +perry-react cho bạn React/JSX biên dịch thành widget gốc, vì vậy mô hình tư duy React có sẵn mà không cần engine JS trong binary.
React Native thắng ở đâu
- +Hệ sinh thái trưởng thành, được thử thách trong trận chiến với cộng đồng, thư viện và công cụ hỗ trợ khổng lồ.
- +Fast Refresh trong phát triển là tốt nhất trong lớp — thay đổi mã xuất hiện trong mili giây mà không cần build lại.
- +Nguồn nhân lực khổng lồ. Tuyển dụng nhà phát triển React Native dễ dàng; Perry còn mới.
- +Pipeline CI/CD, xuất bản App Store / Play Store và cập nhật OTA kiểu codepush đã được thiết lập.
- +JSI/Fabric và New Architecture đã thu hẹp phần lớn khoảng cách hiệu năng lịch sử với gốc, đồng thời bảo toàn mô hình lập trình React.
- +Hỗ trợ trực tiếp từ Meta và các đơn vị áp dụng lớn (Microsoft, Shopify, Amazon) giữ cho framework tiếp tục tiến lên.
Khi nào nên chọn Perry
Chọn Perry nếu bạn muốn một mã nguồn TypeScript duy nhất qua di động, desktop, watch, TV, WASM và web; nếu bạn không muốn có runtime JS trong ứng dụng được phát hành; nếu bạn muốn UI gốc không có bridge; hoặc nếu bạn đã đầu tư vào TypeScript và muốn biên dịch gốc thay vì một engine JS.
Khi nào nên chọn React Native
Chọn React Native nếu bạn xây dựng ứng dụng di động và muốn framework UI gốc đa nền tảng trưởng thành nhất, bạn có một đội React hiện có, bạn phụ thuộc vào hệ sinh thái thư viện React Native, hoặc bạn cần stack đa nền tảng di động tiêu chuẩn ngành ngày nay.
Kết luận
React Native là một framework ưu tiên di động với runtime JS và một bridge (hiện đã được cải thiện). Perry là một trình biên dịch tạo ra binary gốc từ TypeScript, với UI gốc là một phần của đầu ra biên dịch. Nếu bạn muốn React trên di động với hệ sinh thái sâu nhất, React Native là câu trả lời ngày nay. Nếu bạn muốn một mã nguồn TypeScript duy nhất biên dịch đến di động + desktop + watch + TV mà không có runtime JS trong ứng dụng, Perry là câu trả lời.