Porsche Design System

Porsche's system, built in web components, carrying the brand's precise, premium feel into consistent, high-quality web applications.

Why we like it

Porsche is a satisfying counter to the idea that web components can't carry a premium brand. The core is authored once in Stencil and published with thin React, Vue and Angular wrappers, so every major stack consumes one implementation. The theming is properly modern, too: color tokens use the native CSS light-dark() function and light or dark follows the browser's own color-scheme, with no JS switcher or duplicated token set.

It holds a real quality bar, WCAG 2.2 AA with text resizing to 200% without loss of function, and it's all developed in public on GitHub, visual-regression tests and all, rather than hidden behind the badge.

Where it fits

Porsche is best read as a reference for the compile-once (Stencil) approach and CSS-native theming, rather than something to adopt: its license is proprietary and restricts use to work on Porsche's behalf, with no modification or redistribution. So borrow the patterns, not the package.

Ideas to borrow

  1. 01.

    Theming

    Define color tokens with the native CSS light-dark() function and drive light and dark entirely through the color-scheme property, so there's no JS theme switcher or duplicated token set.

  2. 02.

    Architecture

    Author components once as web components (Stencil) and publish thin per-framework wrappers, so every framework consumes one implementation.

Screenshots

Fig. 1Porsche's background color tokens, each value written as a native CSS light-dark() pair so a single token carries both its light and dark color.
Fig. 2The theme page explaining how light and dark are driven entirely by the CSS color-scheme property, with .scheme-light, .scheme-dark and .scheme-light-dark utility classes that can be set on the html element or any container.
Fig. 3Porsche's Definition of Done, which requires unit, end-to-end, accessibility and visual regression tests, WCAG 2.2 AA, high contrast mode and 200% text zoom support before any task counts as finished.

Further reading

Related