PWA & Service Worker di desktop
Template Electron memuat NexaJS (SPA) yang sama dengan jalur web, tetapi
bukan aplikasi terpasang lewat browser. Nonaktifkan lapisan PWA
dan, umumnya, Service Worker di App.js.
Electron · App.js · NexaRoute
pwa.enabled: false dan
serviceWorker.enabled: false.
webWorker boleh tetap true — itu fetch HTTP di thread terpisah, bukan PWA.
Mengapa tidak mengaktifkan PWA?
PWA (Progressive Web App) ditujukan untuk browser: manifest,
“Install app”, tampilan standalone, dan banner pembaruan saat Service Worker
diganti. Di Electron, aplikasi sudah dijalankan sebagai jendela desktop
(electron.exe); pembaruan versi mengikuti
build installer
(electron-builder), bukan alur install PWA di Chrome/Edge.
| Fitur | Web (browser) | Electron (desktop) |
|---|---|---|
manifest.webmanifest |
Diperlukan untuk “Pasang aplikasi” | Tidak dipakai — tidak ada prompt install |
pwa di App.js |
Meta manifest, theme-color, banner update SW |
Nonaktifkan (enabled: false) |
serviceWorker |
Cache offline, navigasi fallback | Umumnya nonaktifkan — update lewat paket desktop |
webWorker |
Fetch/cache API di thread terpisah | Boleh aktif — tidak sama dengan PWA |
Penjelasan lapisan SPA vs PWA di web: SPA vs PWA.
Contoh App.js (template Electron)
serviceWorker: {
enabled: false,
scriptUrl: "/sw.js",
scope: "/",
backgroundSync: false,
},
pwa: {
enabled: false,
manifestUrl: "/manifest.webmanifest",
themeColor: "#CB2F2F",
promptUpdate: false,
},Hanya pwa.enabled: false — cukup untuk apa?
Cukup untuk mematikan modul NexaPwa (initNexaPwa):
tidak ada injeksi <link rel="manifest">, meta
theme-color dari PWA, atau banner “Versi baru tersedia” dari watcher PWA.
Tidak mematikan Service Worker — blok serviceWorker terdaftar
terpisah lewat initNexaServiceWorker. Jika hanya pwa yang
false tetapi serviceWorker.enabled: true, SW tetap bisa
terpasang di Chromium dalam jendela Electron.
Service Worker di desktop
Aktifkan SW hanya jika Anda sengaja ingin cache offline / background sync di dalam
shell Electron. Untuk kebanyakan proyek desktop, set
serviceWorker.enabled: false agar perilaku cache dan pembaruan tidak
bentrok dengan ekspektasi “satu versi = satu installer”.
Kesalahan umum
-
Menyalin
App.jsdari proyek web denganpwa.enabled: true— tidak merusak Electron, tetapi manifest dan banner PWA tidak relevan dan bisa membingungkan saat debug. -
Menganggap
npm start devsama dengan mode development — gunakannpm run dev(lihat Perintah npm). -
Menghapus
manifest.webmanifestdari folder proyek — file boleh tetap ada untuk kesamaan struktur dengan template web; yang penting adalah konfigurasipwa/serviceWorkerdiApp.js.
Proyek web tetap memakai PWA
Satu codebase NexaJS bisa dipakai di dua jalur: deploy web (PHP/Node) dengan PWA aktif, dan fork/template Electron dengan PWA/SW dimatikan. Jangan matikan PWA di proyek web hanya karena ada versi Electron — sesuaikan per target runtime.