React Native hay lập trình thuần (Swift, Kotlin)
React Native phù hợp phần lớn ứng dụng doanh nghiệp và thương mại: một bộ mã chạy cả iOS và Android nên chi phí và thời gian thấp hơn. Lập trình thuần bằng Swift và Kotlin cần thiết khi ứng dụng xử lý đồ hoạ nặng, AR, camera chuyên sâu hoặc đòi hỏi hiệu năng rất cao.
Từng lựa chọn
Đây là quyết định kiến trúc cần chốt sớm vì đổi hướng về sau gần như phải viết lại. Phần dưới đối chiếu hai hướng theo chi phí, thời gian, hiệu năng và khả năng bảo trì.
React Native + Expo
10 - 24 tuầnMột bộ mã cho cả iOS và Android
Ưu điểm
- Chi phí thấp hơn đáng kể so với hai bộ mã riêng
- Một đội phát triển cho cả hai nền tảng
- Dễ tuyển lập trình viên và chuyển giao bảo trì
- Xem thay đổi gần như tức thì khi phát triển
- Dùng chung logic với website Next.js
- Cập nhật giao diện và logic qua mạng (Expo), không chờ duyệt lại
- Nhiều thư viện có sẵn
Hạn chế
- Hiệu năng thấp hơn với giao diện rất phức tạp
- Tính năng phần cứng đặc thù vẫn cần viết mã thuần
- Nâng cấp thư viện đôi khi gây lỗi, cần kiểm thử kỹ
- Dung lượng ứng dụng lớn hơn
- Hiệu ứng chuyển động phức tạp cần tối ưu riêng
Chọn khi
- Giao diện dạng danh sách, biểu mẫu, thẻ thông tin
- Cần tối ưu ngân sách
- Cần ra mắt iOS và Android cùng lúc
- Đội phát triển ít người
- Đã có website Next.js, muốn dùng chung logic
Lập trình thuần (Swift + Kotlin)
20 - 52 tuầnHai bộ mã riêng: iOS viết bằng Swift, Android viết bằng Kotlin
Ưu điểm
- Hiệu năng cao nhất, chuyển động mượt
- Truy cập đầy đủ API hệ điều hành và phần cứng
- Giao diện theo đúng chuẩn từng nền tảng
- Dung lượng ứng dụng nhỏ hơn
- Dễ làm hiệu ứng phức tạp
- Xử lý camera và video chất lượng cao
Hạn chế
- Chi phí gần gấp đôi vì hai đội và hai bộ mã
- Thời gian phát triển dài hơn
- Sửa lỗi phải làm trên cả hai bộ mã
- Khó tuyển lập trình viên Swift hơn
- Giữ tính năng đồng bộ giữa hai nền tảng tốn công
Chọn khi
- Ứng dụng đồ hoạ nặng: game, AR/VR, 3D
- Xử lý camera, video chuyên sâu
- Yêu cầu hiệu năng rất cao
- Ngân hàng, tài chính có yêu cầu bảo mật khắt khe
- Ứng dụng đã có nhiều người dùng, hiệu năng là yếu tố then chốt
Chi tiết theo tiêu chí
| Tiêu chí | React Native | Thuần |
|---|---|---|
| Chi phí phát triển | Thấp hơn | Cao, gần gấp đôi |
| Thời gian (ứng dụng tương đương) | 10-24 tuần | 20-52 tuần |
| Bảo trì hằng năm | Một bộ mã | Hai bộ mã |
| Thêm một nền tảng | Dùng lại phần lớn mã | Viết mới toàn bộ |
| Tiêu chí | React Native | Thuần |
|---|---|---|
| Giao diện cơ bản | Mượt | Mượt |
| Hiệu ứng phức tạp | Cần tối ưu | Mượt sẵn |
| Thời gian khởi động | Chậm hơn | Nhanh hơn |
| Bộ nhớ sử dụng | Cao hơn | Thấp hơn |
| Tiêu chí | React Native | Thuần |
|---|---|---|
| Xem thay đổi khi sửa mã | Gần như tức thì | Phải biên dịch lại |
| Dùng chung mã với web | Có (Next.js) | Không |
| Nguồn lập trình viên | Dồi dào | Ít hơn, nhất là Swift |
| Cập nhật qua mạng | Có (Expo EAS Update) | Không, phải gửi duyệt lại |
| Tiêu chí | React Native | Thuần |
|---|---|---|
| Camera cơ bản | Có thư viện sẵn | Hỗ trợ đầy đủ |
| Camera AR, 3D | Khó | Hỗ trợ đầy đủ |
| Thông báo đẩy | Qua Firebase | APNs, FCM trực tiếp |
| Sinh trắc học (Face ID, vân tay) | Có thư viện sẵn | Hỗ trợ đầy đủ |
Tình huống thường gặp
Ứng dụng đặt món cho chuỗi 5-20 cửa hàng
React Native. Giao diện tiêu chuẩn: danh sách món, giỏ hàng, thanh toán, theo dõi đơn. Không cần phần cứng đặc biệt.
Ứng dụng ngân hàng, tài chính có định danh điện tử và sinh trắc học
Thuần, hoặc React Native kèm phân hệ viết thuần. Yêu cầu bảo mật cao và cần API sinh trắc học ổn định. Có thể dùng React Native cho phần chung và viết thuần các phân hệ nhạy cảm.
Mạng xã hội có camera và bộ lọc hình ảnh
Thuần. Xử lý hình ảnh thời gian thực và bộ lọc AR đòi hỏi hiệu năng mà React Native khó đáp ứng.
Ứng dụng CRM nội bộ cho đội kinh doanh 50 người
React Native. Chủ yếu là biểu mẫu, không đòi hỏi hiệu năng cao, cần có cả iOS và Android sớm.
Game, AR, VR
Thuần (hoặc Unity, Unreal). Cần truy cập trực tiếp Metal, OpenGL, ARKit, ARCore. React Native không phù hợp.
Nhận định của Alodev
Với phần lớn ứng dụng doanh nghiệp, Alodev đề xuất React Native. Lập trình thuần chỉ cần khi ứng dụng có yêu cầu đặc biệt về hiệu năng hoặc phần cứng. Trường hợp trung gian có thể kết hợp: ứng dụng viết bằng React Native, các phân hệ nhạy cảm như sinh trắc học, mã hoá viết thuần.
Dịch vụ thiết kế app di độngCâu hỏi thường gặp
Nên chọn React Native hay Flutter?
React Native có hệ sinh thái thư viện lớn, dễ tuyển lập trình viên và dùng chung mã với website Next.js. Flutter có giao diện nhất quán và hiệu năng tốt, nhưng nguồn lập trình viên trong nước ít hơn. Với đa số dự án trong nước, React Native là hướng an toàn hơn.
Lập trình thuần có còn cần thiết không?
Có. Apple và Google vẫn phát hành API mới cho lập trình thuần mỗi năm, và các ứng dụng game, AR, camera chuyên sâu, ngân hàng vẫn cần hướng này. Hai hướng cùng tồn tại, mỗi hướng phục vụ một nhóm ứng dụng khác nhau.
Expo khác gì React Native không dùng Expo?
Expo cung cấp sẵn công cụ build (EAS Build) và cập nhật qua mạng, giúp phát triển nhanh hơn. React Native không dùng Expo cho quyền kiểm soát đầy đủ hơn. Có thể bắt đầu với Expo và chỉ chuyển khi cần một mô-đun thuần chưa được hỗ trợ.
Có chuyển ứng dụng thuần sang React Native được không?
Được, nhưng thực chất là viết lại. Chỉ tái sử dụng được thiết kế và logic nghiệp vụ, mã Swift hoặc Kotlin không chuyển đổi tự động. Khối lượng gần tương đương làm mới.
Ứng dụng React Native có được Apple, Google duyệt bình thường không?
Có. Kho ứng dụng không phân biệt React Native với ứng dụng thuần, chỉ kiểm tra theo quy định chung về quyền riêng tư, nội dung và chất lượng. Dung lượng lớn hơn một chút không phải lý do bị từ chối.









