Flutter và React Native là hai lựa chọn hàng đầu cho phát triển phần mềm đa nền tảng. Nhiều người vẫn băn khoăn liệu Flutter hay React Native là lựa chọn tốt hơn. Hãy cùng dành khoảng 10 phút để xem xét các điểm quan trọng và đưa ra quyết định sáng suốt hơn.
Tìm hiểu thêm về dịch vụ Phát triển ứng dụng React Native và Phát triển ứng dụng Flutter đa nền tảng của HDWEBSOFT.
Flutter là gì?
Để quyết định liệu Flutter có phải là lựa chọn tốt hơn hay không, chúng ta cần nhìn kỹ hơn. Flutter là bộ công cụ UI di động, một bộ Software Development Kit (SDK) toàn diện cho ứng dụng, được hỗ trợ bởi nhiều widget và công cụ.

Lược sử Flutter:
- Tháng 2/2018, Mobile World Congress – Flutter phát hành bản beta đầu tiên
- Tháng 4/2018, Google I/O – Flutter phát hành beta 2
- Tháng 5/2018, Google I/O – Flutter phát hành beta 3
- Flutter lọt vào top 100 repository hàng đầu trên GitHub
- Tháng 6/2018 – Flutter Preview 1 được phát hành
- Tháng 9/2018 – Flutter Preview 2 được phát hành
- Tháng 11/2018 — Dart 2.1 được phát hành
- Tháng 12/2018, Google I/O – Flutter 1.0 được phát hành
- Một cột mốc quan trọng của công nghệ này – kể từ tháng 12/2018, Flutter được xem là ổn định và sẵn sàng cho môi trường production
- Tháng 2/2019, Mobile World Congress – Flutter 1.2 được phát hành
- Tháng 5/2019, Mobile World Congress:
- Flutter 1.5 được phát hành
- Bản xem trước Flutter for the Web
- Dart 2.3 được phát hành
- Tháng 7/2019, Flutter 1.7 được phát hành
- Tháng 9/2019, Flutter 1.9 được phát hành
- Flutter được phát triển đều đặn và Google liên tục phát hành các phiên bản mới hơn. Phiên bản mới nhất được nhắc đến là 2.2.0, công bố trong sự kiện Google I/O tháng 5/2021.
Những ứng dụng phổ biến nào được xây dựng bằng Flutter?
- Ứng dụng Xianyu của Alibaba
- Ứng dụng Hamilton
- Ứng dụng Google Ads
- Ứng dụng eBay Motors
- Google Stadia
- Groupon
- Baidu Tieba
- Philips Hue
- Ứng dụng Topline của Abbey Road Studios
- Reflect
Flutter – Ưu điểm và nhược điểm
Trong phần này, chúng ta sẽ điểm nhanh những lợi ích và hạn chế chính của Flutter.
Ưu điểm của Flutter:
Hot Reload
Hot Reload là một trong những điểm mạnh nhất của Flutter và được nhiều công ty phát triển ứng dụng di động hàng đầu đánh giá cao. Nhờ tính năng này, Flutter mang lại quy trình phát triển ứng dụng linh hoạt và nhanh hơn. Lập trình viên có thể thay đổi codebase ngay trong lúc làm việc và thấy thay đổi có hiệu lực lập tức trong ứng dụng. Nói cách khác, họ có thể thêm tính năng, sửa lỗi và thử nghiệm ý tưởng mới gần như tức thì.
Một codebase cho 2 hoặc nhiều nền tảng di động
Với Flutter, lập trình viên chỉ cần viết một codebase cho hai ứng dụng, bao phủ cả nền tảng iOS và Android. Google hiện đang phát triển Flutter for the Web, và khi hoàn tất, một codebase Flutter duy nhất sẽ có thể bao phủ Android, iOS và web.
Tìm hiểu thêm và thuê Flutter Developers từ đội ngũ nhân sự của HDWEBSOFT.
Giảm tới 50% khối lượng kiểm thử
Có thể đạt được khoảng 50% số lượng automated test ít hơn vì cùng một bộ kiểm thử có thể chạy trên cả hai nền tảng, từ đó giảm áp lực cho đội ngũ QA.
Ứng dụng nhanh hơn
Ứng dụng Flutter hoạt động mượt và nhanh vì Flutter sử dụng Skia Graphics Library. Nhờ đó, UI được vẽ lại mỗi khi view thay đổi. Phần lớn công việc được xử lý bởi bộ xử lý đồ họa. Kết quả là UI của Flutter mượt mà và có khả năng đạt 60fps (khung hình mỗi giây).
Thiết kế khiến người dùng yêu thích
Flutter không chỉ phụ thuộc vào các thành phần hệ thống native vì framework này có bộ widget tùy chỉnh riêng được quản lý bởi graphics engine. Ứng dụng Flutter thân thiện với người dùng, một lợi thế quan trọng của Flutter so với React Native. Ngoài ra, Flutter được tạo ra để giúp bạn dễ dàng xây dựng widget của riêng mình hoặc tùy chỉnh widget hiện có.
UI ứng dụng đồng nhất, kể cả trên thiết bị cũ
Ngay cả ứng dụng mới cũng hiển thị giống nhau trên các hệ thống iOS hoặc Android cũ hơn, vì vậy bạn không cần quá lo lắng về việc hỗ trợ thiết bị đời cũ.
Phù hợp cho MVP
Nếu bạn cần xây dựng MVP (Minimum Viable Product) để trình bày với nhà đầu tư tiềm năng, Flutter là lựa chọn tốt hơn, đặc biệt khi thời gian hạn chế.

Nhược điểm của Flutter:
Quy mô cộng đồng lập trình viên
Nhiều người sẽ cho rằng Flutter không phải là lựa chọn tốt hơn vì React Native đã ra đời lâu hơn và có cộng đồng lập trình viên giàu kinh nghiệm hơn. Bên cạnh đó, Dart, ngôn ngữ lập trình mà Flutter dựa trên, chưa được sử dụng rộng rãi như JavaScript. Chấp nhận thực tế này, cộng đồng Flutter cần thêm thời gian để đào tạo người dùng và tích lũy kinh nghiệm.
Nhìn ở khía cạnh tích cực, hai năm trước Flutter có cộng đồng nhỏ hơn, ít kinh nghiệm hơn, và Dart vẫn là ngôn ngữ ngách hơn JavaScript. Tuy nhiên, các xu hướng hiện tại cho thấy Flutter đang vượt lên đối thủ trong khía cạnh này. Hãy xem các số liệu dưới đây:
- Stack overflow tag trends cho thấy mức độ quan tâm của lập trình viên đối với Flutter tăng mạnh.
- Trên Udemy có hơn 257 khóa học Flutter (với khoảng 1.410.000 học viên).
- Ngoài ra còn có 75 khóa học Dart (với khoảng 608.000 học viên tính đến tháng 5/2021).
- Số liệu của React Native thấp hơn – khoảng 866.000 học viên trên 133 khóa học.
- Flutter có hơn 120.000 sao trên Github, trong khi React Native có hơn 95.300.
Thư viện và hỗ trợ còn mới
Dù được Google hậu thuẫn, Flutter vẫn còn khá mới. Điều này có nghĩa là không phải lúc nào bạn cũng tìm được chức năng mình cần trong các thư viện hiện có, nên đôi khi bạn phải tự xây dựng tính năng tùy chỉnh.
Cần hỗ trợ Continuous Integration
Flutter thiếu hỗ trợ cho các nền tảng CI như Travis hoặc Jenkins. Để tự động build, test và deploy, lập trình viên của bạn phải sử dụng và duy trì các script tùy chỉnh.
Rủi ro nền tảng
Nếu Google quyết định dừng dự án, điều đó sẽ là thảm họa với Flutter dù framework này là open-source.
Kích thước ứng dụng
Ứng dụng viết bằng Flutter lớn hơn ứng dụng native. Bạn có thể xem bài viết Comparing APK sizes. Tuy nhiên, đội ngũ Flutter đang nỗ lực giảm kích thước các ứng dụng được xây dựng bằng Flutter.
React Native là gì?
Tương tự, để quyết định liệu React Native có phải là lựa chọn tốt hơn hay không, chúng ta cần hiểu nó là gì. React Native là một framework ứng dụng di động open-source sử dụng JavaScript.
React Native dùng để làm gì?
React Native là một framework hiệu quả cho:
- Phát triển đa nền tảng
- Xây dựng ứng dụng di động bằng ngôn ngữ JavaScript
- Phát triển ứng dụng cho cả Android và iOS bằng một codebase duy nhất
- Sử dụng cùng tư duy thiết kế như React
Lược sử React Native:
- Mùa hè 2013, Facebook hackathon – React Native bắt đầu như một dự án nội bộ của Facebook
- Tháng 1/2015, React.js Conference – React Native 1 Preview được phát hành
- Tháng 3/2015, F8 Conference – React Native chính thức ra mắt
- Facebook tuyên bố React Native “mở để sử dụng và có mặt trên GitHub”
- Lean Core – giảm kích thước ứng dụng bằng cách chuyển các thành phần/tính năng tùy chọn sang repository riêng (để thêm vào ứng dụng khi cần)
- TurboModules – cải thiện cách xử lý native modules
- React Native Fabric – tái kiến trúc lớp UI
Những ứng dụng phổ biến nào được xây dựng bằng React Native?
- Fb Ads Manager
- Skype
- Tesla
- Bloomberg
- Wix.com

React Native – ưu điểm và nhược điểm
Để quyết định Flutter là lựa chọn tốt hơn hay React Native mới phù hợp hơn, đã đến lúc xem xét các ưu điểm và hạn chế của React Native.
Ưu điểm của React Native:
Fast refresh
Tương tự, Hot Reload của Flutter giúp tăng tốc quy trình phát triển bằng cách cho phép lập trình viên đưa code mới trực tiếp vào ứng dụng đang chạy. Hot Reload cũng giữ lại trạng thái của ứng dụng, giúp tránh nguy cơ mất code trong quá trình reload toàn bộ.
Một codebase cho 2 nền tảng di động
Một codebase React Native hiện có thể chạy mượt trên cả Android và iOS. Đưa khả năng này lên một tầm cao hơn, JavaScript còn cho phép tạo ứng dụng đa nền tảng bằng cách chia sẻ code với web app.
Dưới đây là một số thư viện ví dụ cho phép bạn đồng thời tạo code trên các nền tảng khác ngoài iOS và Android (bao gồm ứng dụng web và desktop):
- React Native for Web – hỗ trợ Android, iOS và web (Twitter đã dùng thư viện này để tạo Twitter Lite)
- ReactXp – được phát triển bởi đội ngũ Skype để hỗ trợ Android, iOS và Web; ngoài ra còn hoạt động trên Windows 10 (UWP)
- React-native-windows – được phát triển bởi đội ngũ Microsoft, hỗ trợ tất cả thiết bị được Windows 10 hỗ trợ (PC, tablet, thiết bị 2-trong-1, Xbox, thiết bị Mixed Reality, v.v.)
Cộng đồng năng động và rất lớn
React Native được phát hành hơn 5 năm trước, vì vậy Facebook đã có nhiều thời gian để ổn định API, đồng thời tập trung sửa lỗi và giải quyết vấn đề. Họ cũng đang phát triển một số cải tiến đáng chú ý, chẳng hạn giảm kích thước ứng dụng.
React Native cũng có cộng đồng lập trình viên rất lớn, cùng vô số tutorial, thư viện và UI framework giúp việc học công nghệ này dễ dàng hơn.
Khi xét đến việc tập hợp bài viết, công cụ và tài liệu về các công nghệ cụ thể, React Native có vị thế tốt hơn nhiều so với Xamarin, Flutter hoặc Ionic.
Dễ học với lập trình viên React
Vì React Native thuộc hệ sinh thái React, bất kỳ ai có kinh nghiệm với React đều có thể nhanh chóng làm việc với React Native mà không cần học thư viện mới. Họ có thể dùng cùng các thư viện, công cụ và pattern.
Tìm hiểu thêm về React Native Developers của HDWEBSOFT.
Giảm tới 50% khối lượng kiểm thử
Có thể giảm khoảng 50% automated test bắt buộc vì cùng một bộ kiểm thử có thể chạy trên cả hai nền tảng, từ đó giảm áp lực cho đội ngũ QA.
Nhược điểm của React Native
Không hoàn toàn native
Vấn đề thường gặp của mọi ứng dụng đa nền tảng là trải nghiệm UI và hiệu năng sẽ không giống hoàn toàn như ứng dụng native. Mức độ tương đồng khoảng 80-90%.
Ít component có sẵn hơn
React Native chỉ hỗ trợ các component cơ bản ngay từ đầu (nhiều component trong số đó tự thích ứng với nền tảng, chẳng hạn button, loading indicator hoặc slider).
Ngược lại, Flutter được thiết kế để hỗ trợ Material Design ngay từ đầu, nên framework này hỗ trợ nhiều widget hơn. Điều đó giúp tiết kiệm thời gian. Lập trình viên dùng Flutter có thể tạo hầu hết view bằng các widget dựng sẵn, dễ tùy chỉnh và nhất quán trên nhiều nền tảng.
Nhiều package bị bỏ rơi
React Native sở hữu số lượng thư viện khổng lồ. Tuy nhiên, quá nhiều thư viện trong số đó có chất lượng thấp hoặc đã bị bỏ rơi.
UI dễ bị ảnh hưởng
React Native sử dụng native component, cho phép các component trong ứng dụng được nâng cấp tức thì sau mỗi lần hệ điều hành cập nhật UI. Tuy nhiên, điều này có thể làm hỏng UI của ứng dụng. Nói cách khác, các bản cập nhật có thể gây mất ổn định nếu chúng tạo ra thay đổi nhất định trong Native Components API.
Ngược lại, với Flutter, UI của ứng dụng ổn định hơn nhiều.
Ứng dụng lớn hơn ứng dụng native
Ứng dụng viết bằng React Native phải có khả năng chạy JavaScript code. Vì Android không có sẵn chức năng này, ứng dụng cần đi kèm một thư viện hỗ trợ JavaScript code. Kết quả là ứng dụng thường lớn hơn so với phiên bản native Android tương đương.
Khi nào nên chọn React Native, và khi nào nên chọn Flutter
Điều này phụ thuộc vào đặc thù dự án và sự cân bằng kỹ năng trong đội ngũ của bạn.
- Khi đội ngũ quen thuộc với Dart, Flutter sẽ là lựa chọn tốt hơn.
- Nếu họ thành thạo JavaScript, React Native là lựa chọn tốt hơn.
- Nếu GUI của ứng dụng cần các native UI component, React Native chiếm ưu thế.
- Nếu thiết kế ưu tiên thương hiệu là mục tiêu quan trọng, Flutter sẽ là giải pháp phù hợp.
Nếu bạn gặp khó khăn khi lựa chọn giữa Flutter và React Native, hãy tham khảo ý kiến đội ngũ HDWEBSOFT – Công ty phát triển phần mềm offshore. Chúng tôi tự hào là một trong những công ty phát triển phần mềm hàng đầu tại Việt Nam và sẽ đồng hành để bảo đảm thành công cho dự án của bạn.