project 04 of 04

Dark mode UI

Arduino Cloud

company Arduino
date 2023
team 2 Des + 3 Devs
ownership UX, UI
01

Context

Arduino Cloud is a powerful platform that enables users to connect, program, and monitor their IoT devices effortlessly.

However, the existing UI lacked a Dark mode — a feature that's become a standard in the 2020s. This was especially important for our dedicated users who spend long hours in front of the screen, immersed in their projects.

The Arduino Cloud home in its light UI: recent files, a getting-started row and the documentation section. before — light only
02

Goal

This project wasn't just about inverting colors; for me, it was an opportunity to refine the overall UI coherence, improve accessibility, and build a scalable design solution that would minimize maintenance efforts in a team-constrained environment.

03

Final Design

  • More Consistent UI across different sections of the platform, with the number of colors reduced to the essential.
  • Improved Accessibility, ensuring compliance with contrast guidelines.
  • Better usage of accent color for hover & selection to characterize more the UI.
  • Easy Maintenance, reducing the effort needed to scale or modify the system in the future (considering the absence of a dedicated design system team).
A dashboard in dark mode: value, switch, gauge and chart widgets with the teal accent on active controls. dashboard
The Arduino Cloud home in dark mode: recent files, getting started and documentation on layered dark surfaces. home
The Cloud editor in dark mode: library list on the left, sketch code on the right, console below. editor
04

“As is” analysis

We were already using the concept of surfaces in our UIs, but this was not standardized, so the first step was to analyze the current state.

And the same thing was done for texts, icons, and hover & selected states.

With accessibility always in mind.

The surface elevation scale, from level 0 to level 4, mapped as stacked planes. surfaces, standardised
Contrast ratios measured between adjacent surface levels: 1.06:1, 1.08:1, 1.15:1, 1.32:1. every step measured
05

Iteration and validation

Once we defined surfaces and color contrasts, we started applying these ideas to the numerous sections of the app, and iterating multiple times, in order to respond to every case.

This included multiple syncs with FE devs, in order to set up tokens.

We ended up with 2 versions, which we validated using an internal A/B test.

A Figma board of dark-mode iterations across Home, Cloud, Templates, Resources, Devices, Tablet and Components. every section, several passes
Arduino Cloud | Dark mode UI