Audit Kesiapan PWA Enterprise & Offline-First
Jamin kelancaran operasional karyawan lapangan di lokasi minim sinyal internet (perkebunan, site pertambangan, pabrik manufaktur). Evaluasi strategi Service Worker caching dan antrian sinkronisasi data lokal.

Kriteria Evaluasi Kesiapan Offline-First Lapangan
manifest.webmanifest
{
"name": "Portal Operasional Lapangan Korporat",
"short_name": "PortalField",
"start_url": "/",
"display": "standalone",
"background_color": "#020617",
"theme_color": "#0B0F19",
"icons": [
{
"src": "/icons/icon-192x192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "any maskable"
},
{
"src": "/icons/icon-512x512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "any maskable"
}
]
}service-worker.js
// service-worker.js (PuluhLabs Offline-First Engine)
const CACHE_NAME = 'app-cache-v1';
const OFFLINE_URL = '/offline';
const PRECACHE_ASSETS = [
'/',
'/offline',
'/manifest.webmanifest',
'/css/global.css',
'/icons/icon-192x192.png',
];
self.addEventListener('install', (event) => {
event.waitUntil(
caches.open(CACHE_NAME).then((cache) => cache.addAll(PRECACHE_ASSETS))
);
self.skipWaiting();
});
self.addEventListener('activate', (event) => {
event.waitUntil(
caches.keys().then((keys) =>
Promise.all(keys.filter((k) => k !== CACHE_NAME).map((k) => caches.delete(k)))
)
);
self.clients.claim();
});
self.addEventListener('fetch', (event) => {
if (event.request.mode === 'navigate') {
event.respondWith(
fetch(event.request).catch(() => caches.match(OFFLINE_URL))
);
return;
}
// Strategy: STALE-WHILE-REVALIDATE
event.respondWith(
caches.match(event.request).then((cachedResponse) => {
const fetchPromise = fetch(event.request).then((networkResponse) => {
if (networkResponse && networkResponse.status === 200) {
const responseToCache = networkResponse.clone();
caches.open(CACHE_NAME).then((cache) => cache.put(event.request, responseToCache));
}
return networkResponse;
});
return cachedResponse || fetchPromise;
})
);
});Pentingnya Desain Offline-First bagi Industri Lapangan
Ketahanan Konektivitas Fluktuatif
Aplikasi web konvensional akan langsung menampilkan pesan galat browser ketika koneksi internet terputus di tengah pengisian formulir audit keselamatan kerja (K3), menyebabkan hilangnya data inspeksi kritis.
Pengalaman Aplikasi Native Tanpa App Store
PWA memungkinkan pengguna menginstal aplikasi langsung ke homescreen perangkat Android, iOS, atau Windows tanpa proses review toko aplikasi yang memakan waktu dan biaya lisensi pengembang tahunan.
Antrian Latar Belakang (Background Sync)
Ketika jaringan seluler kembali terdeteksi, Service Worker secara otomatis mengirimkan seluruh antrian data yang tersimpan di IndexedDB ke API server tanpa mengharuskan pengguna membuka ulang aplikasi.