pnpm devpnpm installpnpm buildpnpm format
pnpm exec prettier --write .Lint with ESLint
pnpm lintThe app keeps two layers of state outside of Apollo's in-memory cache:
schemaCache(localStorage) — pristine introspection results so warm mounts skip network introspection.queryState(localStorage) — user-set filters that persist across pages + refresh.
Chrome's refresh variants do NOT clear localStorage, so for a true cold boot you have to clear it explicitly.
- Normal Reload — uses everything cached (HTTP, localStorage, Apollo in-memory).
- Hard Reload — revalidates HTTP cache but keeps localStorage and Apollo in-memory cache.
- Empty Cache and Hard Reload — same as Hard Reload but also drops HTTP cache. localStorage still intact.
Quickest per-key from DevTools → Application → Local Storage → your origin: right-click schemaCache or queryState → Delete → reload.
Or from the console:
// Clear just the schema cache
localStorage.removeItem("schemaCache");
location.reload();
// Clear just the user's filter state
localStorage.removeItem("queryState");
location.reload();
// Clear both at once
localStorage.removeItem("schemaCache");
localStorage.removeItem("queryState");
location.reload();
// Nuke everything for this origin (incl. unrelated keys)
localStorage.clear();
location.reload();DevTools → Application → Storage → Clear site data. Clears HTTP cache + localStorage + cookies + Apollo in-memory cache in one click. Reload.
- Verify warm schema cache works — Normal Reload. Expect no
__type(...)introspection queries in the Network tab; filters/sorts/columns appear instantly from localStorage. - Verify cold introspection still works — Clear site data (or
removeItem("schemaCache")) then reload. Expect introspection queries to fire and the cache to refill. - Test cross-page filter state persistence — Normal Reload with
queryStateintact. Clear justqueryStateto test the empty case. - Isolated clean session — open the app in an Incognito / Private window. Fresh localStorage, torn down on window close.