PWA là web app dùng một nhóm API để đạt trải nghiệm gần app native: chạy offline, cài được lên màn hình chính, nhận push notification.
Ba điều kiện bắt buộc:
1. HTTPS — Service Worker chỉ chạy trên secure context (localhost được miễn).
2. Service Worker — proxy nằm giữa app và mạng, cho phép phục vụ từ cache khi mất mạng.
3. Web App Manifest — khai báo tên, icon, màu, chế độ hiển thị.
json
{
"name": "Luyện Phỏng Vấn IT",
"short_name": "LPV",
"start_url": "/",
"display": "standalone",
"theme_color": "#2563eb",
"icons": [{ "src": "/icon-512.png", "sizes": "512x512", "type": "image/png" }]
}js
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js')
}Lưu ý: Service Worker cũ bị cache rất dai — deploy bản mới mà không xử lý skipWaiting/versioning thì user vẫn chạy bản cũ sau nhiều lần reload.
Đây là sự cố PWA hay gặp nhất trong thực tế.