[Findings](/findings/index.md) / UX-047

# localStorage throws inside the vault app frame, so reader data is lost on reload

Open · medium severity · failure · dev.vault.sgraph.ai

## What we saw

The app frame refuses localStorage with SecurityError. Lab kit v0.1.2 kept highlights, notes and ratings only until reload.

## Why it matters

A reader's notes disappear on reload, the worst failure a note-taking feature can have.

## The fix

Store through the host's async sg.state (survives reload). Kit v0.1.3 does; every lab vault was republished on it.

## The record

| | |
| --- | --- |
| **Status** | Open. Open as a platform trap; fixed in the lab by kit v0.1.3. |
| **Severity** | Medium |
| **Kind** | Failure: works against the reader |
| **Product** | [dev.vault.sgraph.ai](/findings/?product=dev.vault.sgraph.ai), platform |
| **Where** | any vault app that stores reader state |
| **Problems** | [Host trap](/findings/?problem=host-trap), [Data loss](/findings/?problem=data-loss) |
| **Visibility** | [Intermittent](/findings/?visibility=intermittent): some readers, some of the time: depends on a gesture, a device or a state, and is hard to reproduce on demand |
| **Recommendation** | [Design for the host](/findings/?recommendation=design-for-the-host): use the host's own mechanisms (route variable, sg.state, vault snapshot) instead of the browser's defaults |
| **Area** | [Platform](/findings/?area=platform) |
| **Breaks** | [A vault app works inside the host, not just on its own](/principles/index.md#host-safe-apps) |
| **Observed** | 2026-10-11, host |
| **Last checked** | 2026-10-11, host |
| **Source** | [Design lab: what building it measured](/lab/index.md#what-building-the-lab-measured) |

Previous: [UX-046 Setting location.hash inside a vault app re-navigates the frame: every link silently dead](/findings/UX-046.md)

Next: [UX-048 A vault app can load images and scripts from a site but cannot fetch its data](/findings/UX-048.md)
