Corrupt shell-head localStorage value bricks app shell on boot
Author: soroush5Created Sep 4, 2026Updated Sep 4, 2026
Summary
A corrupt openmct-shell-head value in localStorage bricks the whole app shell on boot: AppLayout.vue setup() calls JSON.parse(storedHeadProps) with no guard, so a SyntaxError aborts the shell mount. The bad value stays in storage, so every reload re-throws until the key is manually cleared.
Verified against fresh upstream/master: the parse at AppLayout.vue:216-217 is the boot path with no surrounding try/catch. Triggers: shared-origin writer, devtools edit, or a truncated write under that key. First run is safe (JSON.parse(null) → null, handled by ?./??); only corrupt strings throw.
Expected
Treat an unparseable stored value like a missing one (fall back to defaults and overwrite with a fresh value on mount), instead of throwing.
Source: nasa/openmct