Usability testing when you have no research budget
Five participants and an afternoon will tell you more about your product than a quarter of internal debate.
Dark mode is not an inverted palette. Contrast, elevation and imagery all need separate consideration.
Inverting colours produces harsh, high-contrast interfaces that are tiring to read. Pure white text on pure black causes halation, where light text appears to bleed on dark backgrounds.
Use a dark grey rather than black for surfaces and slightly reduced-intensity text. The result is more comfortable for extended reading.
In light interfaces, elevation is shown with shadow. On dark backgrounds shadows are nearly invisible, so elevation is conveyed with progressively lighter surfaces — the higher the element, the lighter it is.
Define these surface levels as tokens so components use them consistently rather than each choosing its own shade.
Default to the system preference, offer an explicit override, and remember it. Support all three states: light, dark and follow-system.
Test the transition too — a flash of the wrong theme on load is a small detail that makes an implementation feel unfinished.
Dark mode defects are easy to miss because most testing happens in the default theme. Add an explicit pass in both themes to the review checklist for any visual change.
Pay attention to the places colour is set outside the design system: charts, embedded content, email templates, PDF exports, third-party widgets and images with baked-in backgrounds. These are where theme support breaks.
Check the loading state as well. A flash of light theme before the preference is applied is a small detail that undermines an otherwise careful implementation.
It depends on ambient lighting and the individual. In dark environments it is more comfortable for many people; in bright ones, light mode is often easier to read. Offering both is the answer.
On OLED displays, meaningfully so for dark content. On LCD screens the effect is negligible.
Modest if built on semantic tokens from the start. Substantial if colours are hard-coded throughout, which is the usual reason it gets deferred.
Keep reading
Five participants and an afternoon will tell you more about your product than a quarter of internal debate.
Software people use all day has different requirements from software people use occasionally. Optimising for the wrong one makes experts slower.
Tokens turn visual decisions into named values shared by design and code. Naming them well is the whole trick.