From c2ded1f3e1db168d234dd53609b72623e8535257 Mon Sep 17 00:00:00 2001 From: Emir Karabeg <78010029+emir-karabeg@users.noreply.github.com> Date: Wed, 20 Aug 2025 20:20:23 -0700 Subject: [PATCH] fix(theme-provider): preventing flash on page load (#1067) * fix(theme-provider): preventing flash on page load * consolidated themes to use NextJS theme logic * improvement: optimized latency --- apps/sim/app/layout.tsx | 31 +++++---- apps/sim/app/theme-provider.tsx | 19 ++++++ .../[workspaceId]/providers/providers.tsx | 7 +- .../providers/settings-loader.tsx | 27 ++++++++ .../providers/theme-provider.tsx | 23 ------- .../components/general/general.tsx | 11 ++-- apps/sim/lib/theme-sync.ts | 43 ++++++++++++ apps/sim/stores/settings/general/store.ts | 65 +++++++++++++++++-- 8 files changed, 175 insertions(+), 51 deletions(-) create mode 100644 apps/sim/app/theme-provider.tsx create mode 100644 apps/sim/app/workspace/[workspaceId]/providers/settings-loader.tsx delete mode 100644 apps/sim/app/workspace/[workspaceId]/providers/theme-provider.tsx create mode 100644 apps/sim/lib/theme-sync.ts diff --git a/apps/sim/app/layout.tsx b/apps/sim/app/layout.tsx index 3f966a8bbc..6afd37f00a 100644 --- a/apps/sim/app/layout.tsx +++ b/apps/sim/app/layout.tsx @@ -10,6 +10,7 @@ import { createLogger } from '@/lib/logs/console/logger' import { getAssetUrl } from '@/lib/utils' import '@/app/globals.css' +import { ThemeProvider } from '@/app/theme-provider' import { ZoomPrevention } from '@/app/zoom-prevention' const logger = createLogger('RootLayout') @@ -45,11 +46,14 @@ if (typeof window !== 'undefined') { } export const viewport: Viewport = { - themeColor: '#ffffff', width: 'device-width', initialScale: 1, maximumScale: 1, userScalable: false, + themeColor: [ + { media: '(prefers-color-scheme: light)', color: '#ffffff' }, + { media: '(prefers-color-scheme: dark)', color: '#0c0c0c' }, + ], } // Generate dynamic metadata based on brand configuration @@ -70,8 +74,7 @@ export default function RootLayout({ children }: { children: React.ReactNode }) /> {/* Meta tags for better SEO */} - - + @@ -107,16 +110,18 @@ export default function RootLayout({ children }: { children: React.ReactNode }) )}
-