From 582693a4c86eeeb32b1f67452b37aad802115dcc Mon Sep 17 00:00:00 2001 From: sw-factory-automations Date: Sun, 24 May 2026 00:11:05 +0000 Subject: [PATCH 1/2] fix: guard ThemeProvider localStorage access against SecurityError MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wrap localStorage.getItem and localStorage.setItem in try-catch in theme.tsx to prevent crashes when storage access is denied (restricted browsers, privacy settings, embedded contexts). Falls back to dark theme on read, silently ignores on write. The inline theme script in layout.tsx already had this protection, but ThemeProvider did not — causing a SecurityError that broke the entire React render tree for affected users. Co-authored-by: Ona --- .agents/conventions.md | 1 + src/lib/sentry/sentry.test.ts | 1 + src/lib/theme.test.tsx | 91 +++++++++++++++++++++++++++++++++++ src/lib/theme.tsx | 18 +++++-- 4 files changed, 106 insertions(+), 5 deletions(-) create mode 100644 src/lib/theme.test.tsx diff --git a/.agents/conventions.md b/.agents/conventions.md index 46e1fcb..1bf6a04 100644 --- a/.agents/conventions.md +++ b/.agents/conventions.md @@ -596,6 +596,7 @@ Theme is managed by `src/lib/theme.tsx` which provides `ThemeProvider` and `useT - **Flash prevention:** Inline `