Polaris launched in 2017 to unify the merchant-facing surfaces of Shopify Admin. It has matured through multiple major versions while remaining unusually grounded in the realities of merchant workflows — long forms, complex tables, error recovery, asynchronous bulk operations.
Centralized core team owns the canonical components and tokens; product teams contribute through a public contribution model. Token decisions go through internal RFCs; component changes ship behind versioning with deprecation periods.
The identity-bearing decisions, rendered. Names and values are illustrative — refer to the system's official tokens reference for the canonical, current set.
color-bg-surface
Page surface
color-text
Default body text
color-text-critical
Destructive emphasis
space-400
Default control padding
shadow-200
Card elevation
border-radius-200
Card and input radius
The full picture — palette, type ramp, spacing grid, radius, elevation and motion, restated in our own structure from Polaris's public references. Factual values for study; the official docs remain canonical.
Surface
Page surface
--p-color-bg-surface
Background App
App background behind surfaces
--p-color-bg
Text
Default body text
--p-color-text
Text Secondary
Secondary text
--p-color-text-secondary
Interactive / Link
Links and interactive text
--p-color-text-link
Primary Button
Primary action fill (v12 dark button)
--p-color-bg-fill-brand
Critical
Destructive emphasis
--p-color-text-critical
Success
Positive states
--p-color-text-success
Border
Hairlines and input borders
--p-color-border
Inter, -apple-system, 'San Francisco', 'Segoe UI', Roboto, sans-serif
Weights: 400, 450, 550, 650
ui-monospace, SFMono-Regular, Menlo, monospace
Weights: 400
Base unit 4px
Shadow 200
Shadow 300
Exactly what ships in polaris-design.md — plus the same token snapshot restated as CSS custom properties. Copy either, or feed the Markdown straight to an AI coding tool as styling context.
# Polaris — Design Style Reference
> **Unofficial, community-authored reference.** Compiled by [designsystems.one](https://www.designsystems.one). Not affiliated with, endorsed by, or sponsored by Shopify. "Polaris" and related marks belong to their respective owners. This document describes publicly observable style attributes in original words — it contains no copied documentation, logos, icon artwork, or original token files. Always defer to the official source for canonical, current values.
**System:** Polaris
**Owner:** Shopify
**Official documentation:** https://polaris.shopify.com/
**Visual character:** Merchant-workbench pragmatism: quiet grays, one decisive dark action button, and type tuned for forms and data, not marketing.
---
## Summary
Merchant-first design system shipping a real product surface.
_Confidence: high. Values are drawn from well-documented public token references._
## Color tokens
| Color | Value | CSS variable | Role |
| --- | --- | --- | --- |
| Surface | `#ffffff` | `--p-color-bg-surface` | Page surface |
| Background App | `#f1f1f1` | `--p-color-bg` | App background behind surfaces |
| Text | `#202223` | `--p-color-text` | Default body text |
| Text Secondary | `#6d7175` | `--p-color-text-secondary` | Secondary text |
| Interactive / Link | `#005bd3` | `--p-color-text-link` | Links and interactive text |
| Primary Button | `#303030` | `--p-color-bg-fill-brand` | Primary action fill (v12 dark button) |
| Critical | `#d72c0d` | `--p-color-text-critical` | Destructive emphasis |
| Success | `#29845a` | `--p-color-text-success` | Positive states |
| Border | `#e3e3e3` | `--p-color-border` | Hairlines and input borders |
## Typography
- **Body:** Inter — weights 400, 450, 550, 650 — `Inter, -apple-system, 'San Francisco', 'Segoe UI', Roboto, sans-serif`
- **Mono:** SF Mono — weights 400 — `ui-monospace, SFMono-Regular, Menlo, monospace`
## Type scale
| Step | Size | Line height |
| --- | --- | --- |
| heading-2xl | `30px` | `32px` |
| heading-xl | `24px` | `28px` |
| heading-lg | `20px` | `24px` |
| heading-md | `16px` | `20px` |
| body-md | `14px` | `20px` |
| body-sm | `12px` | `16px` |
## Spacing
Base unit: `4px`
Scale: `4px` · `8px` · `12px` · `16px` · `20px` · `24px` · `32px`
## Corner radius
| Name | Value |
| --- | --- |
| radius-100 | `4px` |
| radius-200 | `8px` |
| radius-300 | `12px` |
| radius-full | `9999px` |
## Elevation / shadows
| Name | Value |
| --- | --- |
| shadow-200 | `0 1px 2px rgba(0,0,0,0.06)` |
| shadow-300 | `0 4px 6px -2px rgba(26,26,26,0.20)` |
## Motion
| Name | Value |
| --- | --- |
| duration-100 | `100ms` |
| duration-200 | `200ms` |
| ease | `cubic-bezier(0.25, 0.1, 0.25, 1)` |
## Quick start (CSS)
```css
/* Polaris — illustrative tokens, restated as CSS custom properties.
Unofficial reference by designsystems.one; values are indicative, not
canonical. Official reference: https://polaris.shopify.com/ */
:root {
/* Color */
--p-color-bg-surface: #ffffff; /* Page surface */
--p-color-bg: #f1f1f1; /* App background behind surfaces */
--p-color-text: #202223; /* Default body text */
--p-color-text-secondary: #6d7175; /* Secondary text */
--p-color-text-link: #005bd3; /* Links and interactive text */
--p-color-bg-fill-brand: #303030; /* Primary action fill (v12 dark button) */
--p-color-text-critical: #d72c0d; /* Destructive emphasis */
--p-color-text-success: #29845a; /* Positive states */
--p-color-border: #e3e3e3; /* Hairlines and input borders */
/* Typography */
--font-body: Inter, -apple-system, 'San Francisco', 'Segoe UI', Roboto, sans-serif;
--font-mono: ui-monospace, SFMono-Regular, Menlo, monospace;
/* Type scale */
--text-heading-2xl: 30px /* line-height 32px */;
--text-heading-xl: 24px /* line-height 28px */;
--text-heading-lg: 20px /* line-height 24px */;
--text-heading-md: 16px /* line-height 20px */;
--text-body-md: 14px /* line-height 20px */;
--text-body-sm: 12px /* line-height 16px */;
/* Spacing */
--space-1: 4px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-5: 20px;
--space-6: 24px;
--space-7: 32px;
/* Radius */
--radius-radius-100: 4px;
--radius-radius-200: 8px;
--radius-radius-300: 12px;
--radius-radius-full: 9999px;
/* Elevation */
--shadow-shadow-200: 0 1px 2px rgba(0,0,0,0.06);
--shadow-shadow-300: 0 4px 6px -2px rgba(26,26,26,0.20);
/* Motion */
--motion-duration-100: 100ms;
--motion-duration-200: 200ms;
--motion-ease: cubic-bezier(0.25, 0.1, 0.25, 1);
}
```
## Origin
Polaris launched in 2017 to unify the merchant-facing surfaces of Shopify Admin. It has matured through multiple major versions while remaining unusually grounded in the realities of merchant workflows — long forms, complex tables, error recovery, asynchronous bulk operations.
## Governance
Centralized core team owns the canonical components and tokens; product teams contribute through a public contribution model. Token decisions go through internal RFCs; component changes ship behind versioning with deprecation periods.
## Known for
- Industry-leading content guidelines — Polaris's voice & tone documentation is widely cited beyond Shopify.
- Mature data-table and form patterns built for genuinely complex merchant flows.
- Public, opinionated guidance on accessibility for transactional interfaces.
## Underrated
- The empty-state and error-state catalog — better thought through than most public design systems acknowledge.
- Detailed admin UI patterns (bulk actions, async results) that most design systems duck.
## Watch out for
- Polaris is built for Shopify Admin, not for marketing surfaces — applying it to a content site without adaptation produces a tool-shaped marketing site.
- Heavy on patterns specific to commerce; you will inherit assumptions you may not want.
## Components worth studying
- **ResourceList / IndexTable** — Bulk-action data grids that are genuinely usable at scale.
- **FormLayout** — Field grouping that handles long forms and inline validation cleanly.
- **Banner** — The reference example for inline status messaging in admin UIs.
## When to choose Polaris
Pick Polaris if you're building merchant- or operator-facing tools with form-heavy interactions. Don't pick it as a marketing or storytelling system — its patterns assume a logged-in user doing real work.
## Apply this style with an AI tool
Paste this into your AI coding assistant as a direction, then iterate:
> Design in the spirit of Polaris by Shopify — Merchant-first design system shipping a real product surface. Character: Merchant-workbench pragmatism: quiet grays, one decisive dark action button, and type tuned for forms and data, not marketing. Use a primary colour near #303030, the typeface "Inter" (or a close equivalent), corner radius around 4px, a spacing rhythm on a 4px base. Lean into what it's known for: Industry-leading content guidelines — Polaris's voice & tone documentation is widely cited beyond Shopify. Match the intent, not the pixels; adapt it to my product rather than cloning it.
## Official references
- [Polaris docs](https://polaris.shopify.com/)
- [Polaris on GitHub](https://github.com/Shopify/polaris)
- [Tokens reference](https://polaris.shopify.com/tokens/colors)
---
_Generated by [designsystems.one](https://www.designsystems.one/design-systems/polaris) — a catalogue of public design systems. Style facts are reported for reference and education; adapt them to your own product. Report issues or takedown requests via the site._
If you're evaluating this system
Pick Polaris if you're building merchant- or operator-facing tools with form-heavy interactions. Don't pick it as a marketing or storytelling system — its patterns assume a logged-in user doing real work.