Design Systems in a Composable World

By Everett Quebral
Picture of the author
Published on

Introduction

Design systems have long been the cornerstone of UI consistency, branding, and developer velocity. But in the composable frontend era—where code is fragmented across micro frontends, shared libraries, and runtime-loaded components—traditional design systems hit scaling limits.

In this new landscape, design systems must evolve beyond static tokens and Figma specs. They need to become runtime-capable, contract-enforcing, context-aware platforms that plug seamlessly into dynamic delivery environments.

Design systems in a composable world are not just UI kits—they are platform primitives.


Why We Need a New Model

In today's modular and runtime-driven frontend ecosystems, traditional design systems often fall short. Let’s look at some of the most common issues teams face:

1. Inconsistent Brand Delivery

In organizations like Spotify and Airbnb, developers working across multiple surfaces (mobile, embedded, kiosk) often struggle to maintain a unified visual language. Buttons on mobile may render differently than on desktop simply because the systems lack shared runtime context. This results in misalignment between brand identity and product execution.

2. Fragmented Implementation

Consider a multi-team enterprise environment where marketing and product teams own different packages. Design tokens (colors, fonts) may be copy-pasted across repos, making them hard to maintain and impossible to synchronize. Teams might unknowingly override critical variables, creating regression bugs or visual inconsistencies.

3. No Runtime Adaptability

A travel app used in kiosks, watches, and phones needs adaptive presentation. With static CSS, there’s no way to account for user motion preferences, reduced color contrast modes, or edge-case screen sizes. Runtime adaptation lets the UI flex according to the situation, enabling inclusive and context-aware experiences.

4. Design-Dev Drift

Figma might show a perfectly aligned card layout, but by the time it's in production, padding, border radius, or theme switching may be completely broken. At companies like Atlassian, it takes structured bridging between design tools and live systems to avoid costly rework and restore designer-developer trust.


Responsibilities of a Composable Design System

  1. Contextual Tokens: Themes, sizes, spacing, colors adapt based on runtime signals (e.g. user preference, viewport, device).
  2. Cross-Surface Enforcement: Design primitives work consistently across Web, native, embedded.
  3. Dynamic Variants: Components adapt variants (density, accessibility, mode) during execution—not just during build.
  4. Runtime Contracts: Each component declares its design contract (expected tokens, behavior guarantees, fallback modes).
  5. Composable Themes: Tokens can be layered and scoped for brands, business units, or contexts.

Architecture Overview

Here’s how a modern composable design system is layered to support runtime adaptability and platform flexibility:

+------------------------------+
|     Surface Context         |
|  (viewport, input, theme)   |
+------------------------------+
              |
              v
+------------------------------+
|      Theme Resolvers         |
|  (tokens, variants, brands)  |
+------------------------------+
              |
              v
+------------------------------+
|     Component Primitives     |
|  (Button, Card, Icon, etc.)  |
+------------------------------+
              |
              v
+------------------------------+
|   Platform Adapters          |
|  (web, native, canvas, etc.) |
+------------------------------+

Implementation Examples

Context-Aware Token Hook

const { color, spacing, radius } = useTokens();

Explanation: This hook returns dynamic values scoped to the current environment (e.g., dark mode on mobile vs. high-contrast desktop).

React Design Component

<Button variant={theme.mode === 'dark' ? 'solid' : 'outline'}>
  Save
</Button>

Explanation: The component changes its visual style based on the active runtime theme, without needing rebuilds or different bundles.

Web Component Theming

<my-button theme="dark" size="compact"></my-button>

Explanation: Design attributes are passed at runtime, allowing system-wide theming via attribute selectors or JavaScript-controlled tokens.

Airbnb Design Tokens in Motion

Airbnb's design system "DLS" evolved to support adaptive UI components across mobile, web, and native platforms. Their team introduced runtime-friendly tokens that reflected spacing, type, and elevation across surfaces.

Use Case:

  • Airbnb teams struggled with inconsistent card layouts between iOS and Android due to differing native implementations.

Solution:

  • Developed a token pipeline that synchronized Figma and code via a shared JSON schema.
  • Token-based layout primitives automatically adjusted padding, shadows, and corner radius based on platform and user settings (e.g., dark mode).

Code Sample (React Native):

const padding = useDesignToken('card.padding');
return <View style={{ padding }}>{children}</View>;

Impact:

  • 📐 Layout parity achieved across web and native
  • 🧠 Enabled context-aware overrides (e.g., RTL, touch target size)
  • 🚀 Reduced UI regressions by 40% in quarterly rollout

Real-World Case Studies

Adobe Spectrum

Problem: Adobe’s applications span Creative Cloud desktop tools, web apps like Adobe Express, and hybrid platforms. Each of these experiences needed consistent branding, accessibility, and performance standards—but they were built on varying rendering models and theming solutions.

Challenge: The scale and platform diversity created alignment issues between designers and developers. Updates to tokens or accessibility guidelines would often lag weeks behind visual specs, introducing design debt and maintenance overhead.

Solution:

  • Adobe formed a cross-functional task force that co-developed the Spectrum design system.
  • They introduced Spectrum Tokens—context-aware, cross-platform theming contracts.
  • Spectrum leveraged React Spectrum and React Aria to provide accessibility and behavior at the component level.
  • The system supported runtime-resolved themes, enabling the same components to adapt on web, native desktop, and embedded surfaces.

Developer Insight: “We needed to go beyond visual design. Spectrum became a system for behavior and accessibility, not just a UI kit.” — Senior Frontend Engineer, Adobe Spectrum team

Timeline:

  • 🗓️ 2018: Design spec consolidation began
  • 🛠️ 2019: Token pipeline and component primitive refactor
  • 🚀 2020: Spectrum launched in Adobe Express and Adobe XD

Results:

  • 🔁 Design tokens synchronized across four surfaces in under 60 seconds using a live token service
  • ♿ WCAG 2.1 AA compliance built into every primitive component
  • 🚀 30% reduction in UI bugs across shared components in the first quarter post-launch
  • 🧩 Shared UI foundation accelerated delivery of new product lines like Firefly and Fresco

Shopify Polaris

Problem: Shopify’s admin experience spans desktop, mobile apps, and embedded partner extensions. Teams building for POS, checkout, and storefront needed to collaborate across surface boundaries.

Challenge: Design elements were implemented differently across surfaces. Mobile components lacked parity with admin surfaces, and embedded apps suffered from inconsistent theming. Developers often duplicated logic or styling in localized silos, which led to regressions during redesigns and upgrades.

Solution:

  • The Polaris design system was rebuilt with composable tokens, adaptive layout contracts, and theming APIs.
  • Runtime resolvers were introduced to interpret tokens based on device, locale, and context.
  • A Polaris Workbench CLI and Storybook preview allowed teams to validate styling decisions visually and in CI.
  • Developer handoffs were streamlined using synced Figma tokens that mirrored theme structure in code.

Developer Insight: “Before Polaris v2, we had five versions of the same component. Now we build once and adapt visually, dynamically.” — Design Systems Engineer, Shopify

Timeline:

  • 🗓️ 2021: Cross-platform token audit and theme system prototype
  • 🧪 2022: Live rollout to checkout, POS, and embedded apps
  • 🚀 2023: Polaris 2 launched publicly with fully dynamic theme layers

Results:

  • 🎯 Increased design consistency across app surfaces
  • 🧠 Reduced onboarding time for new frontend developers by 30%
  • 🚀 Decreased styling bugs by 45% across major updates
  • ✅ Enabled safer CI pipelines via visual regression coverage
  • 🧩 Unified brand presence and accelerated onboarding of frontend teams

Anti-Patterns to Avoid

  • ❌ Hardcoded colors or fixed spacing in components
  • ❌ Using static themes without runtime switching
  • ❌ Skipping token fallback logic for edge cases (e.g., kiosk, low-res)
  • ❌ Diverging platforms using forked design systems

Glossary

TermDescriptionAppears In
TokenA named design value (e.g., primaryColor, baseSpacing)Architecture Overview, Implementation Examples
Surface ContextRuntime attributes like device type, screen size, input methodArchitecture Overview, Real-World Cases
VariantA runtime-chosen presentation option for a component (e.g., dense, flat)Implementation Examples
Theme ResolverEngine that merges context with token scopesArchitecture Overview, Real-World Cases
Platform AdapterCode that maps component output to the rendering targetArchitecture Overview

Tooling for Design System Synchronization

ToolPurposeExample Use Case
Figma TokensSynchronize design tokens in design UIConnect theme values to dev tokens
Style DictionaryFormat and export tokens across stacksCreate platform-specific design maps
Token StudioManage tokens versioned in GitAuto-sync Figma ↔ code

Summary

In a composable frontend architecture, the design system is not a luxury—it's infrastructure. It connects disparate modules, aligns distributed teams, and adapts visuals and behavior in real time. The key to success lies in runtime adaptability, strong contracts, platform-agnostic tooling, and shared team ownership.

When design systems are treated as runtime-aware, composable platforms, they don’t just enforce consistency—they accelerate innovation.


📌 Figure 1: Structural mapping of Atomic Design principles to composable architecture layers.

Stay Tuned

Want to become a Next.js pro?
The best articles, links and news related to web development delivered once a week to your inbox.