Skip to Content
RecipesSync with OS Dark Mode

Sync with OS Dark Mode

Read at startup

import { os, tyndWindow } from "@tynd/core/client"; export async function applyInitialTheme() { const dark = await os.isDarkMode(); document.documentElement.dataset.theme = dark ? "dark" : "light"; }

React to changes

tyndWindow.onThemeChanged fires when the OS theme flips:

tyndWindow.onThemeChanged(({ theme }) => { document.documentElement.dataset.theme = theme; });

CSS

:root[data-theme="light"] { --bg: #ffffff; --text: #111111; } :root[data-theme="dark"] { --bg: #0a0a0a; --text: #fafafa; } body { background: var(--bg); color: var(--text); }

Or rely on pure CSS via @media (prefers-color-scheme: dark) — matches the same OS signal:

@media (prefers-color-scheme: dark) { :root { --bg: #0a0a0a; --text: #fafafa; } }

Both work. Pick JS if you need programmatic access or want to override (user toggles “always light”); pick CSS if OS-synced behavior is all you need.

Related: os API · tyndWindow events.

Last updated on