Skip to content

Commit 8e632fa

Browse files
fix(theme): wait for localStorage to load
1 parent 9033516 commit 8e632fa

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

lib/context/theme.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import { Callback } from 'lib/model/callback';
44

55
export type Theme = 'system' | 'dark' | 'light';
66
export interface ThemeContextType {
7-
theme: Theme;
8-
setTheme: Callback<Theme>;
7+
theme?: Theme;
8+
setTheme: Callback<Theme | undefined>;
99
}
1010

1111
export const ThemeContext = createContext<ThemeContextType>({

pages/_app.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ export default function App({ Component, pageProps }: AppProps): JSX.Element {
114114
[orgs, loggedIn]
115115
);
116116

117-
const [theme, setTheme] = useState<Theme>('system');
117+
const [theme, setTheme] = useState<Theme>();
118118
useEffect(() => {
119119
if (theme === 'dark') {
120120
document.documentElement.classList.add('dark');
@@ -124,7 +124,7 @@ export default function App({ Component, pageProps }: AppProps): JSX.Element {
124124
document.documentElement.classList.add('light');
125125
document.documentElement.classList.remove('dark');
126126
document.documentElement.classList.remove('system');
127-
} else {
127+
} else if (theme === 'system') {
128128
document.documentElement.classList.add('system');
129129
document.documentElement.classList.remove('dark');
130130
document.documentElement.classList.remove('light');
@@ -134,7 +134,7 @@ export default function App({ Component, pageProps }: AppProps): JSX.Element {
134134
setTheme((prev) => (localStorage.getItem('theme') as Theme) || prev);
135135
}, []);
136136
useEffect(() => {
137-
localStorage.setItem('theme', theme);
137+
if (theme) localStorage.setItem('theme', theme);
138138
}, [theme]);
139139

140140
return (

0 commit comments

Comments
 (0)