Lesson 12 / 25

Dark Mode

The dark: variant.

System preference or a toggle

By default dark: utilities apply when the operating system prefers a dark colour scheme (prefers-color-scheme: dark). To let users toggle, override the variant in CSS so it follows a class or data attribute, for example @custom-variant dark (&:where(.dark, .dark *));, then add the dark class to <html> with a little JavaScript and remember the choice. Pair every light colour with a dark one, and consider theme variables so components switch automatically.

Class-based dark mode

A toggleable dark variant.

@import "tailwindcss";
@custom-variant dark (&:where(.dark, .dark *));

/* markup:
<html class="dark">
  <body class="bg-white text-gray-900 dark:bg-gray-950 dark:text-gray-100">
*/

Avoid a flash of the wrong theme

Set the dark class in a small inline script in before the page renders.

Quick check: By default, when do dark: utilities apply in Tailwind v4?

  • Always
  • When the system prefers a dark colour scheme
  • Only after 6pm
  • Only when a .dark class exists
Answer

When the system prefers a dark colour scheme — Override with @custom-variant for a toggle.