Marketing pages

We’ve just launched a new feature!

Check out the new dashboard.

Design

Dark mode done right

Dark mode is not an inverted light mode. What we changed, what we measured, and what we got wrong first.

Mia Ward

Our first dark mode took a weekend. We inverted the greys, darkened the brand blue a little and shipped it. It took the next six months to undo. This is what we changed, what we measured, and what we would tell anyone about to start.


Introduction

Dark mode is not light mode with the lights off. On a light surface, shadows show depth and a saturated colour reads as calm. On a dark one, shadows vanish, the same colour glows, and pure white text shimmers against the background for anyone with astigmatism. Very little carries across unchanged.

About sixty percent of DrumKit sessions now run in dark mode, and the share is higher among the designers who spend all day in the editor. It isn’t a novelty setting for us. It is the product most of our customers actually see.

The glossy green leaves of a rubber plant against a plain pale grey wall.
The same leaf reads differently on a light wall and in a dim room. So does every colour in an interface.

We rebuilt dark mode as its own theme, with its own decisions, sharing only the token names with light mode. Every component still asks for bg-primary or text-secondary; each theme decides what those mean.

The moment we stopped calling it the inverted theme, we started making good decisions about it.

Nic Davidson, Co-founder & CTO

Surfaces and elevation

In light mode, a card lifts off the page with a shadow. In dark mode a shadow on a near-black page is almost invisible, so we show elevation with lightness instead: the higher a surface sits, the lighter its grey. A menu over a card over the page reads as three clear layers without a single shadow.

We also stopped using pure black. Our darkest surface is a very dark blue-grey, which gives the lighter layers room above it and stops text from vibrating at the edges. Pure white text went the same way, replaced by a near-white that keeps a contrast ratio above 15:1.

Brand colour in the dark

Our brand blue at step 600 is perfect on white and far too loud on near-black. In dark mode, buttons keep the solid 600, but brand text, links and icons move to lighter, slightly less saturated steps from the same ramp. The hue stays recognisably DrumKit; the glow goes.

Status colours needed the same care. An error red that reads as urgent on white reads as alarming on black, so dark mode uses the softer 400 step for error text and keeps the stronger colours for backgrounds and borders.

  • Surfaces get lighter as they rise, instead of casting shadows.
  • No pure black backgrounds and no pure white text.
  • Brand and status text use lighter, calmer steps of the same ramp.
  • Illustrations and charts get their own dark versions, never a filter.
A woman with curly hair smiling at the camera at a desk covered in sticky notes, with a colleague working beside her.
We asked customers who work in dark mode all day what tired their eyes. Their answers shaped the theme.

What we measured

We checked every text and surface pair against the same contrast table we use for light mode, and added a check the table can’t make: a row of real screens, viewed on a phone at minimum brightness in a dark room. Several pairs that passed on paper were uncomfortable in practice, and we fixed those too.

We also watched support tickets. Before the rebuild, dark mode drew about thirty complaints a month about unreadable text or invisible borders. Three months after it, the number was four, and two of those were about a third-party plugin.

What we got wrong first

Inverting the grey ramp was the big mistake. It put our lightest borders on our darkest surfaces and made every divider glare. We now choose dark mode’s borders separately, one or two steps above the surface they sit on.

Images were the other. A screenshot of a light interface in the middle of a dark page is a flashbang, so our docs now keep light and dark versions of every product image and swap them with the theme.

What’s next?

Open your product in dark mode on a phone, turn the brightness right down and use it for ten minutes. Write down every place you squint or lose track of where you are. That list is your first dark mode backlog.

In DrumKit, every theme is a set of token values, so you can duplicate the dark theme, adjust it and preview any file in both themes side by side before you publish a change.

Next month we’ll publish the full token table for both themes, including the pairs we forbid and why.

Still thinking
about it?

Sign up for our newsletter and get 10% off your first year of DrumKit.

Read about ourWe care about your data in our privacy policy.

Join over 4,000+ startups growing with DrumKit

Start your 30-day free trial today.

  • EphemeralEphemeral
  • WildcraftedWildcrafted
  • CodecraftCodecraft
  • ConvergenceConvergence
  • ImgCompressImgCompress
  • EpicuriousEpicurious
  • WatchtowerWatchtower
  • RenaissanceRenaissance
  • ContrastAIContrastAI