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

# Setting location.hash inside a vault app re-navigates the frame: every link silently dead

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

## What we saw

In the host the app is an about:srcdoc frame, where assigning location.hash re-navigates instead of firing hashchange. The How Much Evidence vault shipped on 5 October 2026 with every view link dead.

## Why it matters

An app that works when opened as a file ships to readers with no working navigation, and nothing errors.

## The fix

Keep the route in a variable; catch a[href^="#"] in a capture click handler; mark links data-sg-native; use the hash only when running standalone. Documented in the sgit.ai guidance.

## The record

| | |
| --- | --- |
| **Status** | Open. Open as a platform trap; every lab vault avoids it. |
| **Severity** | High |
| **Kind** | Failure: works against the reader |
| **Product** | [dev.vault.sgraph.ai](/findings/?product=dev.vault.sgraph.ai), platform |
| **Where** | any vault app that routes by hash |
| **Problems** | [Host trap](/findings/?problem=host-trap), [Dead end](/findings/?problem=dead-end) |
| **Visibility** | [Silent](/findings/?visibility=silent): no symptom on screen: found only by measuring, or by its consequences |
| **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-05, host |
| **Last checked** | 2026-10-11, host |
| **Source** | [Design lab: what building it measured](/lab/index.md#what-building-the-lab-measured) |

Previous: [UX-045 Persona pages are a list, with no story, opinion or next step](/findings/UX-045.md)

Next: [UX-047 localStorage throws inside the vault app frame, so reader data is lost on reload](/findings/UX-047.md)
