Khác nhau ở chỗ UI được vẽ bằng gì và code chạy trên nền nào:
- Native: viết riêng cho từng nền tảng — Kotlin/Java cho Android, Swift cho iOS. Truy cập đầy đủ API hệ thống, hiệu năng tốt nhất, nhưng phải duy trì hai codebase.
- Hybrid: một web app (HTML/CSS/JS) chạy bên trong WebView của một app vỏ native — Ionic, Cordova, Capacitor. Tái sử dụng kỹ năng web, nhưng UI là trang web nên cuộn/animation khó đạt cảm giác native, tính năng thiết bị phải đi qua plugin.
- Cross-platform: một codebase, build ra app thật cho cả hai nền tảng. React Native render ra component native của hệ điều hành; Flutter tự vẽ toàn bộ UI bằng engine riêng (Impeller) nên giao diện giống hệt nhau trên mọi máy.
Ví dụ thực tế: trang điều khoản hay mini app khuyến mãi hay dùng WebView (hybrid một phần), còn phần lõi app vẫn native hoặc Flutter/React Native.
Lưu ý: không có lựa chọn "tốt nhất" — quyết định dựa trên kỹ năng team, ngân sách, mức cần API native (Bluetooth, camera nâng cao) và yêu cầu hiệu năng.