SaaS Dashboard Layout Patterns That Scale
The dashboard is where users spend most of their time in a SaaS product. These patterns separate dashboards that help users accomplish goals from ones that just display data.
Nextcraft Engineering Team
The Dashboard Trap
Most SaaS dashboards are built around what the product team finds interesting to show, not what the user needs to do. The result: a metrics parade that requires significant interpretation before it drives any action.
The best dashboards invert this. They start with the user's job to be done and surface only the information necessary to do that job.
Pattern 1: The Command Dashboard
Used by: Linear, Notion, Vercel
The command dashboard puts the primary action front and center. Instead of opening to a wall of charts, the user lands on a focused workspace: their most recent work, their immediate next actions, and a prominent way to start something new.
The metrics (if any) are secondary — reachable, but not the first thing the user processes.
Layout structure:
┌─────────────────────────────────┐
│ Quick action bar (create, import, invite) │
├─────────────────────────────────┤
│ Recent + In Progress │
│ (the work the user cares about) │
├──────────────┬──────────────────┤
│ Activity │ Suggestions / │
│ feed │ Smart next steps │
└──────────────┴──────────────────┘
When to use: Products where the primary value is creating or completing things (project management, design tools, dev tools).
Pattern 2: The Overview Dashboard
Used by: Stripe, Mixpanel, Datadog
The overview dashboard surfaces aggregate metrics across the user's portfolio — the state of the business at a glance. Individual items are accessed via drill-down, not displayed directly.
The key design principle: every metric should answer a question the user actually has. Revenue, active users, error rate — these are real questions. "Total events processed" is usually not.
Layout structure:
┌───────────┬───────────┬───────────┐
│ KPI card │ KPI card │ KPI card │
├───────────┴───────────┴───────────┤
│ Primary trend chart (time series) │
├──────────────┬────────────────────┤
│ Secondary │ Recent events / │
│ breakdown │ alerts │
└──────────────┴────────────────────┘
When to use: Products where the primary value is monitoring or measuring something (analytics, infrastructure, finance).
Pattern 3: The Inbox Dashboard
Used by: GitHub (notifications), Intercom, Front
The inbox pattern presents a prioritized list of items requiring attention. The user's job is to process the list — respond, resolve, delegate, or dismiss.
The design challenge: the inbox must be scannable. Each item needs to communicate enough context that the user can decide whether to open it without clicking. Sender, subject, preview, age, and urgency signal — all in a single row.
What to avoid: Showing every item with equal weight. Use visual hierarchy (unread state, urgency badges, assignment indicators) to let users triage at a glance.
When to use: Products where the primary user job is responding to events (customer support, code review, content moderation).
Pattern 4: The Contextual Sidebar
Almost every dashboard benefits from a persistent sidebar — but what goes in it matters enormously.
Navigation items should reflect how users think about the product, not how it's built internally. Group features by user goal, not by engineering team.
Bad sidebar structure (engineering-centric):
- Users module
- Products module
- Orders module
- Reports module
- Settings module
Good sidebar structure (goal-centric):
- Dashboard
- Customers (users + orders together)
- Catalog (products + inventory)
- Analytics (reports + insights)
- Settings
Progressive disclosure: Hide advanced features until users have established competency. A new user doesn't need "Advanced segments" on day one. Surface it after they've built their first segment.
Pattern 5: The Data Table
Tables are unavoidable in SaaS dashboards. They're also frequently implemented poorly.
The highest-impact table improvements:
Inline actions: The most common actions (edit, delete, view) should be available on row hover without navigating away. A row that requires two clicks to act on is a friction point repeated for every record.
Bulk actions: Once users have more than ~20 records, they need to operate on groups. Checkboxes + a floating bulk-action bar (disappears when nothing is selected) is the standard pattern.
Column customization: Power users have different information priorities than new users. Let them show/hide and reorder columns. Persist their preferences.
Smart filtering: Simple text search is table stakes. The step up is filter-by-column with multiple conditions. The step beyond that is saved filter views ("My open items", "High-priority customers").
Handling Empty States in Dashboards
An empty dashboard is the first impression for every new user. It should:
- Explain what will appear here — not with a wall of text, but with a lightweight illustration or labeled placeholder
- Provide the primary action — "Add your first project" not "Get started"
- Show sample data (optional) — some products show demo data that disappears after the first real item is added, giving users a sense of what the full dashboard looks like
What to avoid: an empty page with only a loading spinner or a blank white space. Both create confusion and anxiety.
Responsive Dashboards
Most SaaS products claim to be responsive but actually mean "usable on tablet." True mobile responsiveness for dashboards requires more than breakpoints:
- Prioritize columns: On mobile, show 2–3 key columns in a table, not all 8
- Transform complex charts: A line chart with 5 series becomes 5 individual sparklines on mobile
- Bottom navigation: Move the sidebar to a bottom tab bar on small screens — thumbs can't reach a left sidebar easily
- Touch targets: Action buttons and checkboxes need minimum 44px tap targets
The best approach: design mobile explicitly, not as a responsive afterthought.
The Performance Constraint
A dashboard that loads 200ms faster than competitors is a feature. Dashboards are often revisited dozens of times per day — accumulated latency is accumulated friction.
Optimizations specific to dashboards:
- Stagger data loading: show the layout and skeleton states immediately, load data in parallel
- Cache aggressively at the component level (React Query, SWR) — most dashboard data doesn't change between navigations
- Paginate tables: never render 10,000 rows
- Use virtual scrolling for very long lists
The dashboard is where your product's performance reputation is built, session after session.
Continue reading
Related articles
Why Next.js App Router Is Better for SEO Than Pages Router
The App Router isn't just a new file-system convention — it fundamentally changes how search engines crawl and index your Next.js application.
EngineeringServer Components vs Client Components: Making the Right Call
The boundary between Server and Client Components is the most consequential architectural decision you make in a Next.js application. Here's how to draw it correctly.
EngineeringBuilding High-Performance Next.js Applications for Scale
A deep dive into how we utilize App Router and React Server Components to scale our client builds effectively.
Stay Informed.
Join 1,200+ founders and engineers receiving our monthly deep dives on product engineering, design, and growth.