Skip to content

Commit 97d8e1b

Browse files
authored
fix(experience): fix page flashing issue on page load (#7800)
* fix(experience): fix page flashing issue on page load fix the page flashing issue on the page load * chore(experience): keep the changeTheme event keep the changeTheme event
1 parent 540082b commit 97d8e1b

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

packages/experience/src/Providers/SettingsProvider/use-sign-in-experience.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,26 @@ import PageContext from '@/Providers/PageContextProvider/PageContext';
44
import initI18n from '@/i18n/init';
55
import { getSignInExperienceSettings } from '@/utils/sign-in-experience';
66

7-
import useTheme from './use-theme';
7+
import useTheme, { getThemeBySystemConfiguration } from './use-theme';
88

99
const useSignInExperience = () => {
10-
const { isPreview, setExperienceSettings } = useContext(PageContext);
10+
const { isPreview, setExperienceSettings, setTheme } = useContext(PageContext);
1111

1212
useTheme();
1313

1414
useEffect(() => {
1515
(async () => {
1616
const [settings] = await Promise.all([getSignInExperienceSettings(), initI18n()]);
1717

18-
// Init the page settings and render
18+
// Ensure theme is set before page rendering with new settings to avoid page flashing
19+
if (settings.color.isDarkModeEnabled) {
20+
setTheme(getThemeBySystemConfiguration());
21+
}
22+
23+
// Init the page settings and render the page content
1924
setExperienceSettings(settings);
2025
})();
21-
}, [isPreview, setExperienceSettings]);
26+
}, [isPreview, setExperienceSettings, setTheme]);
2227
};
2328

2429
export default useSignInExperience;

packages/experience/src/Providers/SettingsProvider/use-theme.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import { useEffect, useContext } from 'react';
44
import PageContext from '@/Providers/PageContextProvider/PageContext';
55

66
const darkThemeWatchMedia = window.matchMedia('(prefers-color-scheme: dark)');
7-
const getThemeBySystemConfiguration = (): Theme =>
7+
8+
export const getThemeBySystemConfiguration = (): Theme =>
89
darkThemeWatchMedia.matches ? Theme.Dark : Theme.Light;
910

1011
export default function useTheme() {

0 commit comments

Comments
 (0)