2.9 KiB
2.9 KiB
PWA Release Concept (Phase 1 -> Phase 2)
Goal
Ship a strong mobile-ready release quickly without splitting into separate app codebases too early.
Phase 1: strongest possible web push path
Core deliverables
- Installable manifest with stable identity:
id,name,short_name,start_url,scope,display: standalone- maskable icons
- shortcuts to core actions
- Service worker versioning and controlled lifecycle:
- version token tied to theming/cachebuster
install,activate,push,notificationclick
- Notification readiness flow:
- explicit onboarding/readiness screen
- notification permission state
- service worker registration state
- push subscription state
- Notification UX/ops controls:
Test notificationbuttonLast successful push received atstatus- subscription refresh/re-register action
Delivery behavior
- Deep links should target exact app/resource URLs.
- Use notification actions where practical in service worker payload handling.
- Keep fallback email for important notifications.
- Keep optional SMS for critical-only events (later connector/backend expansion).
Health + telemetry expectations
- Track per-device registration state in backend.
- Record subscription freshness and stale endpoints.
- Expose in-app health checks before users rely on Talk alerts.
Phase 2: wrap, do not rewrite
When web reliability becomes the limiting factor:
- Wrap existing web app with Capacitor first.
- Defer React Native/full native split unless native-heavy features become mandatory.
Why this path
- Faster route to APNs/FCM native push channels.
- Better background behavior and app-store presence.
- Lower risk than parallel app rewrites.
Current implementation baseline
Implemented now in custom_pwa:
- Expanded install page into readiness center:
- install prompt state
- standalone state
- notification permission state
- service worker registration state
- push subscription state
- last notification timestamp
- Added test notification action.
- Added service worker refresh/re-register action.
- Added service worker endpoint with versioned script.
- Added manifest enrichments (description, display override, shortcuts).
- Added backend per-device status scaffolding:
- device registration API
- device status API
- push-received timestamp API
- test-notification backend status API
- VAPID-backed browser push delivery test
- stale endpoint marking for failed push delivery
Next immediate tasks
- Add deeper push delivery result reporting for operational dashboards.
- Add readiness deep-link checks for Talk preflight path.
- Add optional email fallback adapter trigger for critical notification classes.
Current config keys (custom_pwa app values)
vapid_subject(example:mailto:alerts@your-domain.tld)vapid_public_key(base64url VAPID public key)vapid_private_key(PEM EC private key or base64url 32-byte private key)