One of the biggest UX wins of an installed PWA is that the app feels stateful — you reopen it and you're back where you left off. This article covers what's remembered, how the state survives device reboots, and how to tune retention.
What Can Be Remembered
- Last visited URL: User reopens to where they were.
- Active filters: Saved per-page so list views remember their state.
- Draft form contents: Unsaved input persisted; restored on reopen.
- Scroll position: Long pages restore to the previous scroll.
- Open tabs / panels: Multi-pane UIs remember which panes were open.
- Selection: Active rows in browse views.
- Search query: The query that produced the current results.
Where State Lives
- LocalStorage: Per-domain key-value store, persistent across sessions.
- IndexedDB: Structured storage for larger state (drafts, cached records).
- Service Worker cache: Page shells and assets for fast reopen.
- Session cookie: Authentication, refreshed via long-lived refresh tokens.
Privacy and Cleanup
Users can clear stored data by uninstalling the PWA. From inside the app, a “Clear local data” action wipes all state without signing out from the server. Useful when a device is shared or before lending it out.
Worked Examples
- Field engineer logs a job: Power dies mid-form. Reopens app, draft preserved, finishes and submits.
- Support agent on long ticket: Closes laptop overnight. Reopens, scroll position restored, comments draft preserved.
- Multi-step booking: User abandons booking flow mid-way, returns next day, finds step 3 of 5 still in progress.
- Filter state: User filters tickets to assignee=me and priority=high; closes app; reopens; filters still applied.