ConstReadonlyUSER_SETTINGS: "user_settings"Application settings
ReadonlyQUERY: "query"The current query
ReadonlySEARCH_INPUT: "search_input"The current search input text
ReadonlySEARCH_IS_NEW_SEARCH: "is_new_search"Flag indicating a new search was submitted from the search home panel
ReadonlySELECTED_SUPPLIERS: "selected_suppliers"Selected suppliers list for search filtering
ReadonlyHTTP_LRU: "httplru"HTTP LRU cache
ReadonlyPANEL: "panel"The current panel (0 = SearchHome, 1 = Results, 2 = Stats)
ReadonlyTABLE_STATE: "table_state"Persisted TanStack table state (sorting, pagination, expanded rows, column visibility)
ReadonlyBOOKMARKS_FOLDER_ID: "bookmarks_folder_id"ID of the ChemPal Favorites bookmarks folder
ReadonlyCHEMSAVERS_API_KEY: "chemsavers_api_key"Rehydrated Chemsavers Typesense API key (overrides the hardcoded default when present)
ReadonlyLABCHEM_CATALOG: "labchem_catalog"LabChem full product catalog snapshot, cached for 24h (empty-query search)
ReadonlyUPDATE_CHECK: "update_check"UI-owned update bookkeeping: GitHub poll throttle and per-version dismissal
ReadonlyUPDATE_PENDING: "update_pending"Service-worker-owned: a Web Store update staged and awaiting a reload
ReadonlyLAST_SEEN_VERSION: "last_seen_version"Last app version this profile has opened; drives the post-update what's-new prompt
ReadonlyREVIEW_PROMPT: "review_prompt"Review-prompt bookkeeping: install date, lifetime search/result counts, dismissal state
ReadonlyERROR_RING_BUFFER: "error_ring_buffer"Bounded ring buffer of recent exceptions, attached to bug reports
ReadonlyANALYTICS_CLIENT_ID: "analytics_client_id"Retired GA4 client id — kept only so the PostHog sender can delete it on upgrade
ReadonlyANALYTICS_DISTINCT_ID: "analytics_distinct_id"Stable per-install random id used as the PostHog distinct_id
export const CACHE = {
/** Application settings */
USER_SETTINGS: 'user_settings',
/** The current query */
QUERY: 'query',
/** The current search input text */
SEARCH_INPUT: 'search_input',
/** Flag indicating a new search was submitted from the search home panel */
SEARCH_IS_NEW_SEARCH: 'is_new_search',
/** Selected suppliers list for search filtering */
SELECTED_SUPPLIERS: 'selected_suppliers',
/** HTTP LRU cache */
HTTP_LRU: 'httplru',
/** The current panel (0 = SearchHome, 1 = Results, 2 = Stats) */
PANEL: 'panel',
/** Persisted TanStack table state (sorting, pagination, expanded rows, column visibility) */
TABLE_STATE: 'table_state',
/** ID of the ChemPal Favorites bookmarks folder */
BOOKMARKS_FOLDER_ID: 'bookmarks_folder_id',
/** Rehydrated Chemsavers Typesense API key (overrides the hardcoded default when present) */
CHEMSAVERS_API_KEY: 'chemsavers_api_key',
/** LabChem full product catalog snapshot, cached for 24h (empty-query search) */
LABCHEM_CATALOG: 'labchem_catalog',
/** UI-owned update bookkeeping: GitHub poll throttle and per-version dismissal */
UPDATE_CHECK: 'update_check',
/** Service-worker-owned: a Web Store update staged and awaiting a reload */
UPDATE_PENDING: 'update_pending',
/** Last app version this profile has opened; drives the post-update what's-new prompt */
LAST_SEEN_VERSION: 'last_seen_version',
/** Review-prompt bookkeeping: install date, lifetime search/result counts, dismissal state */
REVIEW_PROMPT: 'review_prompt',
/** Bounded ring buffer of recent exceptions, attached to bug reports */
ERROR_RING_BUFFER: 'error_ring_buffer',
/** Retired GA4 client id — kept only so the PostHog sender can delete it on upgrade */
ANALYTICS_CLIENT_ID: 'analytics_client_id',
/** Stable per-install random id used as the PostHog `distinct_id` */
ANALYTICS_DISTINCT_ID: 'analytics_distinct_id',
} as const;
Keys used for storing and retrieving data in chrome.storage.session.