Web app, Mobile app, PWA, Native — phân biệt 4 loại ứng dụng
Web app là 'quán mở 24/7 ai cũng vào', Mobile native là 'cửa hàng riêng phải cài', PWA là lai giữa hai. Hiểu 4 loại app để biết loại nào phù hợp dự án — tiết kiệm 50-70% chi phí dev khi chọn đúng.
Mục lục bài viết(23)

Mobile app native như Instagram — cài từ App Store, có icon trên màn home. Bên cạnh đó, người dùng cũng có thể vào instagram.com qua trình duyệt (web app), hoặc "add to home screen" để biến thành PWA. Một thương hiệu có thể tồn tại ở cả 3 dạng cùng lúc. Nguồn: Wikimedia Commons (CC BY-SA 4.0).
Hiểu đơn giản nhất
Có 4 loại app mà user gặp hàng ngày, khác nhau ở cách phân phối + công nghệ build:
| Loại | Là gì | Analogy |
|---|---|---|
| Web app | App chạy trong trình duyệt, gõ URL là vào | Quán mở 24/7 ai cũng vào, không cần cài gì |
| Mobile Native app | Native (chạy thẳng trên hệ điều hành — iOS Swift, Android Kotlin). App cài từ App Store / Play Store | Cửa hàng riêng phải đăng ký mới mua được |
| PWA (Progressive Web App — web có thể cài như app) | Web app có thể "add to home screen" | Cửa hàng kiosk — vừa pop-up, vừa có biển hiệu |
| Hybrid (web đóng gói thành app) / Cross-platform (1 code chạy nhiều platform) | App native dùng 1 codebase cho cả iOS + Android | Chuỗi cửa hàng nhiều địa điểm, cùng layout |
Cùng một app như Shopee tồn tại ở cả 4 dạng: shopee.vn (web app) + Shopee iOS/Android (native, viết bằng React Native — cross-platform), và bạn có thể "add to home screen" web shopee.vn để có icon (PWA).
Tại sao bạn cần biết
- Tiết kiệm 50-70% chi phí dev. Build web app riêng + iOS riêng + Android riêng = $300k+. Build cross-platform (React Native, Flutter) hoặc web + PWA = $80-150k.
- Time-to-market. Web app deploy 1 ngày. Native app xét duyệt 1-7 ngày (iOS) + chuẩn bị App Store 1-2 tuần. Test ý tưởng cần web trước.
- Hiểu báo giá agency. Hỏi agency "build app" — phải đào sâu họ định nghĩa "app" là gì. Native iOS+Android = đắt nhất. Web + PWA = rẻ nhất.
- SEO mang user. SEO (Search Engine Optimization — tối ưu công cụ tìm kiếm). Native app không xuất hiện trên Google. Web app có SEO = lượt traffic miễn phí. Mỗi user mobile app cost $5-50 acquisition; web app SEO cost $0.
So sánh chi tiết 4 loại
| Tiêu chí | Web app | PWA | Cross-platform (RN/Flutter) | Native (Swift/Kotlin) |
|---|---|---|---|---|
| Cài đặt | Không cần | "Add to home" 1 chạm | App Store / Play Store | App Store / Play Store |
| Cập nhật | Tự động khi reload | Tự động | User phải update từ store | User phải update từ store |
| SEO | ✅ Có | ✅ Có | ❌ Không | ❌ Không |
| Offline | ❌ Không | ✅ Có (Service Worker) | ✅ Có | ✅ Có |
| Camera, GPS, Bluetooth | Hạn chế | Hạn chế (iOS yếu) | ✅ Đầy đủ | ✅ Đầy đủ + tốc độ tối đa |
| Push notification | Hạn chế | ✅ Có (iOS 16.4+) | ✅ Có | ✅ Có |
| Performance | Trung bình | Khá | Khá-Tốt | Tốt nhất |
| App Store fee | $0 | $0 | $124/năm (cả 2) | $124/năm (cả 2) |
| Time to market | 1 ngày deploy | 1 ngày | 1-2 tuần review | 1-2 tuần review |
| Phí dev (web đã có) | $0 | $5-15k | $30-80k | $60-200k (riêng 2 platform) |
| Maintain (yearly) | Thấp | Thấp | Trung bình | Cao |
| User cài cao | ✅ Truy cập tự nhiên | Hạn chế (iOS không quảng bá) | ✅ Có icon | ✅ Có icon |
Web app — quán mở 24/7
Web app chạy trong trình duyệt — không cần cài. Truy cập bằng URL hoặc Google search.
Ví dụ web app trong cuộc sống
- Notion, Linear, ClickUp (productivity)
- Google Docs, Sheets, Slides (office)
- Canva, Figma (design)
- Vercel, Cloudflare, GitHub (dev)
- Shopee Web, Tiki Web, Lazada Web (e-commerce)
Tất cả đều có version web đầy đủ tính năng, đa số có cả mobile native riêng nhưng web là "primary".
Khi nào chọn web app
- MVP (Minimum Viable Product — sản phẩm tối thiểu khả dụng) test ý tưởng — deploy (triển khai — đưa code lên server chạy) nhanh, sửa nhanh, không cần xét duyệt
- B2B SaaS, internal tool — user dùng máy tính, không cần offline
- Content + marketing site — SEO là main source of traffic
- App ít engagement — user dùng 1 lần/tuần, không cần icon trên màn home
Mobile Native — cửa hàng riêng
App native được code riêng cho từng platform:
| Platform | Ngôn ngữ | IDE | Phí cài đặt |
|---|---|---|---|
| iOS | Swift (hiện đại) hoặc Objective-C (cũ) | Xcode trên Mac | Apple Developer $99/năm |
| Android | Kotlin (hiện đại) hoặc Java (cũ) | Android Studio | Google Play $25/lần |
Khi nào chọn native
- Game cần GPU performance cao
- Camera/AR/3D (TikTok hiệu ứng, Snapchat filter)
- Bluetooth, NFC, Push siêu engagement (Spotify, Strava, banking)
- App độc đáo platform (Apple Watch app, Android Auto)
- Có budget + team chuyên ($60-200k dự án trung bình)
PWA — kiosk lai giữa web + app
PWA là web app cộng thêm 3 tính năng:
- Service Worker — cache để chạy offline
- Web App Manifest — file
manifest.jsoncho phép "add to home screen" - HTTPS bắt buộc (Let's Encrypt free)
User vào web → trình duyệt nhận biết là PWA → hỏi "Add to Home Screen?". Sau khi add, app xuất hiện như icon native, mở fullscreen không có thanh URL.
PWA mạnh ở đâu
- ✅ 1 codebase cho cả web + "app" → không cần build iOS/Android riêng
- ✅ Update tự động — không cần user cài lại
- ✅ SEO — vẫn là web nên Google index được
- ✅ Không cần App Store — phân phối qua URL, KHÔNG bị Apple/Google ăn 30%
PWA yếu ở đâu
- ❌ iOS hạn chế — Apple cố tình không quảng bá "Add to Home" để bảo vệ App Store
- ❌ Performance ~30% kém hơn native — không truy cập GPU trực tiếp
- ❌ Tính năng phần cứng hạn chế — không có Bluetooth, AR, các API native
Khi nào chọn PWA
- Web đã có sẵn, muốn upgrade cho user power
- Content app (Twitter, Pinterest đều có PWA tốt)
- E-commerce không cần performance đỉnh (Aliexpress, Alibaba có PWA rất tốt)
Cross-platform — chuỗi cửa hàng
Frameworks cho phép 1 code chạy cả iOS + Android:
| Framework | Tạo bởi | Ngôn ngữ | Tỷ lệ share code |
|---|---|---|---|
| React Native | Facebook (2015) | TypeScript/JS | 70-90% |
| Flutter | Google (2017) | Dart | 95-100% |
| Capacitor / Ionic | Ionic team | Web (HTML/CSS/JS) | 95-100% |
| Tauri (Mobile) | Tauri team (2024) | Web + Rust | 90-100% |
| .NET MAUI | Microsoft (2022) | C# | 80-90% |
React Native trong thực tế
// Code 1 lần
import { Text, View, Button } from 'react-native';
export default function HomeScreen() {
return (
<View style={{ padding: 20 }}>
<Text>Chào mừng đến VietCodex</Text>
<Button title="Bắt đầu" onPress={() => navigate('/services')} />
</View>
);
}Cùng code → build ra app iOS (.ipa) + Android (.apk). 70-90% code share, 10-30% còn lại là native module (camera, push, payment) viết riêng.
Khi nào chọn cross-platform
- Team biết React/JS sẵn → React Native, 1 ngôn ngữ
- Cần UI đẹp + animation phức tạp → Flutter
- App business logic không tối ưu performance gắt → bất kỳ cross-platform nào
- Budget hạn chế — gấp đôi iOS/Android native nhưng vẫn rẻ hơn build 2 platform riêng
Ví dụ thực tế: VietCodex tư vấn cho 3 dự án
Dự án 1: SaaS quản lý phòng khám nha khoa
- User: Bác sĩ + nhân viên lễ tân, dùng trên máy tính desktop
- Yêu cầu: Quản lý lịch hẹn, hồ sơ bệnh nhân, đơn thuốc, billing
- Chọn: Web app thuần (Next.js + Tailwind + Supabase)
- Lý do: User trên máy tính, ít có nhu cầu mobile, SEO không quan trọng vì B2B
- Cost: $40k, 2 tháng
Dự án 2: App giao đồ ăn cho khu vực nhỏ
- User: Khách hàng order trên mobile + chủ quán quản đơn
- Yêu cầu: Push notification realtime, GPS shipper, payment integration
- Chọn: React Native + web admin riêng
- Lý do: Cần push + GPS + có cả iOS lẫn Android, budget hạn chế
- Cost: $80k, 3 tháng
Dự án 3: App ngân hàng
- User: Mọi loại khách hàng, sensitive transactions
- Yêu cầu: Bảo mật cao, FaceID, NFC payment, performance tối đa
- Chọn: Native iOS (Swift) + Native Android (Kotlin) riêng
- Lý do: Bảo mật + tính năng phần cứng + UX phải perfect, budget cho phép
- Cost: $200k+, 6-12 tháng
Khi nào chọn gì — quy tắc nhanh
Bắt đầu MVP?
├─ User chủ yếu trên desktop → Web app thuần
├─ User chủ yếu trên mobile → Web responsive + PWA
└─ Có > 10.000 user retention tốt? → Build mobile native
Mobile native?
├─ Cần Bluetooth/AR/GPU heavy → Native Swift + Kotlin
├─ Logic business chính + UI thường → Cross-platform (RN/Flutter)
└─ Web đã có, muốn "app feel" → PWA + nâng cấp dần
Cost + time tổng quan
| Loại | Time (MVP) | Cost (MVP) | Maintain/năm | App Store fee |
|---|---|---|---|---|
| Web app | 1-3 tháng | $10-50k | $5-15k | $0 |
| PWA | +2 tuần (sau web) | +$5-15k | +$2-5k | $0 |
| Cross-platform | 2-4 tháng | $40-100k | $15-30k | $124 |
| Native (1 platform) | 3-5 tháng | $50-150k | $20-40k | $99 hoặc $25 |
| Native (2 platforms) | 5-8 tháng | $100-300k | $40-80k | $124 |
Tóm tắt 1 dòng
Web app = quán mở 24/7 (rẻ, nhanh, SEO). PWA = web có icon (free upgrade). Cross-platform (React Native/Flutter) = 1 code cho cả iOS + Android. Native = đỉnh performance + bảo mật, đắt nhất. Quy tắc: MVP startup nên bắt đầu web → có user → cân nhắc PWA → có scale → React Native + giữ web.
Đọc tiếp
- Framework là gì? React, Vue, Next.js — React Native build trên React
- Frontend vs Backend khác nhau ở đâu — mọi loại app đều cần backend riêng
- HTML, CSS, JavaScript — 3 ngôn ngữ tạo nên mọi website — web app + PWA dùng 3 ngôn ngữ này
- Domain, Hosting, DNS — 3 thứ phải mua riêng — web app cần, native app KHÔNG (chỉ cần App Store)