diff --git a/packages/web/src/stores.ts b/packages/web/src/stores.ts index 8bc5649fe..7f6885ad7 100644 --- a/packages/web/src/stores.ts +++ b/packages/web/src/stores.ts @@ -18,9 +18,18 @@ export interface TabDefinition { tabOrder?: number; } +function safeJsonParse(json, defaultValue) { + try { + return JSON.parse(json); + } catch (err) { + console.error(`Error parsing JSON value "${json}"`, err); + return defaultValue; + } +} + export function writableWithStorage(defaultValue: T, storageName) { const init = localStorage.getItem(storageName); - const res = writable(init ? JSON.parse(init) : defaultValue); + const res = writable(init ? safeJsonParse(init, defaultValue) : defaultValue); res.subscribe(value => { localStorage.setItem(storageName, JSON.stringify(value)); });