[PR #5784] Frontend plugins Support [2/10]: Plugin service worker #13170

Closed
opened 2026-04-10 21:48:52 -05:00 by GiteaMirror · 0 comments
Owner

Original Pull Request: https://github.com/actualbudget/actual/pull/5784

State: closed
Merged: Yes


  • PR 1: Basic CORS Proxy Structure
  • PR 2: Plugin Service Worker & PWA Infrastructure (This PR)
  • PR 3: System-Wide Feature Flag System + Frontend plugins feature flag
  • PR 4: Plugins Core Package
  • PR 5: Update loot-core to reference plugins-core
  • PR 6: Update desktop-client to reference plugins-core
  • PR 7: Plugin runtime on desktop-client (module federation)
  • PR 8: Plugins frontend pages
  • PR 9: Plugin example
  • PR 10: Integration fixes and documentation

To enable plugins to run on frontend-only (without sync server - uploading the plugin zip directly), we need a service worker to work as a web server. It captures the calls to /plugins-data/ and serve the files from runtime cache.

This just enables the service worker. It doesn't do the communication with the clients (browser), and doesn't have the cache to use.

Since we already have PWA in Actual, I had to merge the VitePWA service worker with the plugin service worker.
Also, since the service worker is mandatory for the frontend plugin to work, the service worker runs even in dev mode (previously wasn't)

**Original Pull Request:** https://github.com/actualbudget/actual/pull/5784 **State:** closed **Merged:** Yes --- - [x] ~PR 1: Basic CORS Proxy Structure~ - [x] PR 2: Plugin Service Worker & PWA Infrastructure (**This PR**) - [ ] PR 3: System-Wide Feature Flag System + Frontend plugins feature flag - [ ] PR 4: Plugins Core Package - [ ] PR 5: Update `loot-core` to reference `plugins-core` - [ ] PR 6: Update `desktop-client` to reference `plugins-core` - [ ] PR 7: Plugin runtime on desktop-client (module federation) - [ ] PR 8: Plugins frontend pages - [ ] PR 9: Plugin example - [ ] PR 10: Integration fixes and documentation To enable plugins to run on frontend-only (without sync server - uploading the plugin zip directly), we need a service worker to work as a web server. It captures the calls to /plugins-data/ and serve the files from runtime cache. This just enables the service worker. It doesn't do the communication with the clients (browser), and doesn't have the cache to use. Since we already have PWA in Actual, I had to merge the VitePWA service worker with the plugin service worker. Also, since the service worker is mandatory for the frontend plugin to work, the service worker runs even in dev mode (previously wasn't)
GiteaMirror added the pull-request label 2026-04-10 21:48:52 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/actual#13170