SaaS Dashboard Design: 12 Principles for Data-Heavy Products

A data-heavy SaaS dashboard works when it answers one question for one audience, shows every number next to a comparison, and encodes quantities with length and position. The rest is discipline: fewer metrics per view, no decorative chart elements, colour that carries meaning but never carries it alone, and every data state designed, including empty and stale.
The 12 principles below come from our project work at Hatypo plus published research from Nielsen Norman Group, the W3C's WCAG 2.2 accessibility guidelines, and Google's Core Web Vitals thresholds for interface responsiveness.
We've delivered 20+ dashboard and SaaS projects since 2021. Most of them involved analytics screens that started simple and grew past what the first layout could hold.
What should a dashboard answer before you design a single widget?
The first 3 principles decide whether the rest matter. A beautiful dashboard that answers no particular question gets opened twice and then ignored.
- Give the dashboard one job and one audience. A support lead watching queue health and a CFO reviewing quarterly margin need different screens, different refresh rates and different levels of detail. SAS groups dashboards into operational, analytical and strategic, and the three differ most in how often the data changes. Write the job in one sentence before you open Figma. If you can't, the dashboard isn't ready to design.
- Lead with the answer, then the evidence. Put the conclusion where the eye lands first: "Churn is 4.2%, above your 3% target" in large type, with the trend chart underneath. Users who want the raw series will scroll. Users who want the status get it in 2 seconds.
- Cap the metrics per view. We aim for 5 to 7 primary metrics on an overview, with everything else behind a tab or a drill-down. Jakob Nielsen's definition of progressive disclosure is the pattern: show the few options that serve most tasks, and put the rest one clearly labelled level down. A screen with 20 equally sized tiles has no hierarchy, so the reader has to build one.

How do you present the numbers so people read them correctly?
These 4 principles cover the part teams usually treat as decoration. It decides whether a reader gets the right answer or a plausible wrong one.
- Give every number a comparison. A churn widget reading 4.2% means nothing on its own. Add last month's 3.1% and the 3% target, and the same number now says the business is moving the wrong way. Every metric needs at least one of 3 comparisons: previous period, target, or benchmark.
- Choose the encoding by the question. Nielsen Norman Group's guidance on dashboard visualisations is specific: length and 2D position communicate quantity fastest, because the eye processes them before conscious attention engages. Area and angle are weaker, which is why pie charts and treemaps fail at precise comparison. Use the table below as a starting point.
- Cut everything that isn't data. NN/g's rule on chartjunk is to remove elements that distract from the data. Edward Tufte coined the term in 1983. In practice: drop 3D effects, heavy gridlines, drop shadows, redundant legends and axis labels repeated on every tick. Round to 1 or 2 decimal places, because 6 decimals in a business dashboard add noise and no information.
- Use colour semantically, and never alone. Pick one colour for the primary series, one for comparison, and reserve red and amber for states that need action. Around 8% of men and 0.5% of women have a colour vision deficiency, so pair colour with a label, an icon, a pattern or position. WCAG's Use of Color criterion requires exactly this.


How do you handle live data without breaking trust?
Data-heavy products fail here more than anywhere else. The happy-path screen looks fine in Figma, then production serves a half-loaded chart over a 6-hour-old cache.
- Design all 5 data states for every widget. Loading, empty, partial, stale and error. The empty state is the one teams skip, and it's the first thing a new customer sees. Write real copy for it: what the widget will show, why it's blank, and what to do next. A chart that renders an empty grid with no explanation reads as a bug.
- Make the time range and data freshness explicit. Put the active range in the widget header, not only in a filter bar at the top of the page. Add a timestamp: "Updated 14:32, 6 Oct". Teams argue over numbers that disagree, and most of the time the 2 screens are showing different ranges or different refresh times.
- Keep interaction inside the response-time limits. Nielsen's 3 limits, drawn from Miller's 1968 research, still hold: 0.1 seconds feels instant, 1 second keeps the user's flow of thought, and 10 seconds is the edge of their attention. Google's INP threshold puts good responsiveness at 200 milliseconds or less at the 75th percentile. Sorting a table or switching a filter belongs in that first band. For anything slower, show a skeleton that matches the final layout, and render each widget as its query returns rather than holding the whole screen.

How do you keep a dashboard usable as it grows?
A dashboard is rarely finished. Customers ask for 1 more metric every quarter, and after 2 years the screen holds 40 widgets nobody planned together.
- Build on a small component set with accessibility in it. Define a widget shell, a metric tile, a chart container and a table, then build every new view from those. Set the rules once: text contrast of at least 4.5:1, non-text elements and chart strokes at 3:1, and interactive targets of at least 24 by 24 CSS pixels, which are the WCAG 2.2 AA thresholds. Fixing this later means touching every screen.
- Instrument the dashboard and cut what nobody opens. Log which widgets get viewed, which filters get changed and which drill-downs get clicked. In my experience a handful of widgets carry most of the use. Move the unused ones behind a tab or delete them, and run a usability session every few releases to check that people read the numbers the way you intended.

Heading 1
Heading 2
Heading 3
Heading 4
Heading 5
Heading 6
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Block quote
Ordered list
- Item 1
- Item 2
- Item 3
Unordered list
- Item A
- Item B
- Item C
Bold text
Emphasis
Superscript
Subscript
























