ProblemThe merchant dashboard is entirely network-dependent; there is no offline shell, cached assets, or stale-while-revalidate for the app shell.
Solution
- Add a service worker (workbox) that pre-caches the app shell and runtime-caches GET API responses stale-while-revalidate for list endpoints.
- Add an offline banner (reusing
offlineStore and useOnlineStatus) that reflects API reachability, not just navigator.onLine.
- Implement background-sync for payment-link creation and webhook test submissions.
- Add a manifest with icons and an install prompt for the merchant dashboard.
Acceptance Criteria
- After first load, the merchant dashboard renders offline with cached data and a banner.
- Offline-created payment links sync when connectivity returns.
- API-reachability and browser-online states never contradict for long.
npm run build passes.
Note for Contributors: Write a clear PR description. Show the app shell loading offline and a background-synced link.
ProblemThe merchant dashboard is entirely network-dependent; there is no offline shell, cached assets, or stale-while-revalidate for the app shell.
Solution
offlineStoreanduseOnlineStatus) that reflects API reachability, not justnavigator.onLine.Acceptance Criteria
npm run buildpasses.Note for Contributors: Write a clear PR description. Show the app shell loading offline and a background-synced link.