Repository navigation
feat(pwa): installable offline PWA with cached feed and consented updates - #562
Merged
james2177 merged 4 commits intoSep 30, 2026
Merged
Conversation
…ne-capable PWA with a serv Closes stellar-vortex-protocol#500
…ion: Server Components for Closes stellar-vortex-protocol#501
…er storms from WebSocket s Closes stellar-vortex-protocol#503
|
@josunday002 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
# Conflicts: # next.config.mjs # src/app/contributors/page.tsx # src/components/ConnectivityBanner.tsx # src/hooks/useIntentFeed.ts # src/hooks/useLiveIntents.ts # src/hooks/useMyLiveIntents.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
feat(pwa): installable offline PWA with cached feed and consented updates
What was solved
#500 — [High] Deliver an installable, offline-capable PWA with a service worker, maskable icons and shortcuts
Deliver a production-ready, installable offline-capable PWA: add a service worker with a strict allowlist of cacheable public GET requests (stale-while-revalidate), network-first HTML, precached app shell, cache versioning/cleanup and size/expiry limits; expand manifest.ts with PNG + maskable icons, shortcuts, screenshots, categories, id, scope and localised names; add an offline fallback page and wire it into ConnectivityBanner with an 'offline — last updated X' state that blocks (never queues) submissions; and add a user-consented 'New version available — Reload' update flow with skipWaiting gated behind consent, SW registered only in production with worker-src 'self' CSP.
Addressed:
#501 — [High] Optimize rendering and hydration: Server Components for static shells, streaming with Suspense and reduced client boundaries
Restructure the app so static shells (Nav, Footer, headings/copy, layout) render as Server Components while interactive wallet widgets remain client islands; add server-side data prefetch with SWR fallback, Suspense boundaries with skeletons, and per-route loading.tsx/error.tsx for analytics/governance/contributors; document the pattern in docs/performance.md and docs/architecture.md; verify hydration cleanliness via a Playwright console-error assertion.
Addressed:
#503 — [High] Profile and eliminate re-render storms from WebSocket streams with batching, transitions and render-count tests
Eliminate WebSocket-driven re-render storms by batching message ingestion per animation frame (with timer fallback for background tabs), memoising row components with stable props, using startTransition/useDeferredValue for heavy views, and adding a React Profiler-based render-count test harness plus a dev-only perf overlay. Scope is limited to the live-intent hooks, realtime batcher utility, ActivityFeed/Explore/My Intents/Analytics views, and new test helpers; worker-based analytics is explicitly out of scope.
Addressed:
Changes
src/app/manifest.ts(modify)src/app/analytics/page.tsx(modify)next.config.mjs(modify)src/components/ConnectivityBanner.tsx(modify)src/app/governance/page.tsx(modify)src/app/contributors/page.tsx(modify)src/hooks/useMyLiveIntents.ts(modify)src/hooks/useLiveIntents.ts(modify)src/hooks/useIntentFeed.ts(modify)Approach
Issues
Closes #500
Closes #501
Closes #503