Skip to content
Kinetixui

One design language. Five native implementations.

Shared tokens, native components, and platform differences documented instead of hidden — for teams whose web and native apps drift apart the moment they are maintained separately.

5 implementations: React, SwiftUI, Jetpack Compose and Flutter, with Angular in preview.

bash
npx @kinetixui/cli add button

Example — adds one component. Installation covers the full library.

[00] Beta — every package is 0.x, MIT

Source: tokens/semantic/color.light.json

color.action

→ color.primary → color.azure.700 → #1d4ed8

Tokens generated · components written per platform

React

npm · @kinetixui/ui

Generated · packages/tokens/dist/web/globals.css
--action: var(--primary);
Written by hand · packages/ui/src/components/switch.tsx:26
"data-[state=checked]:bg-action data-[state=unchecked]:bg-tertiary",
React setup and coverage
The color.action token, defined once in tokens/semantic/color.light.json, is generated into 4 platform token files (CSS, read by React and Angular; Swift, read by SwiftUI; Kotlin, read by Compose; Dart, read by Flutter). Each of the 5 platforms reads it from a Switch written by hand.
  • React
  • Angular
  • SwiftUI
  • Jetpack Compose
  • Flutter
[02]The tradeshared contract, not shared runtime

Share the contract. Keep the platform.

There are two ways to keep one design consistent across platforms. One runtime can draw every screen, and each platform’s own behaviour becomes something to imitate. Or a contract is shared and each platform implements it in its own idiom — which means differences exist, and have to be written down. KinetixUI takes the second trade, and writes them down.

Drawn by
Each platform's own UI toolkit: the DOM, Angular templates, SwiftUI views, Compose and Flutter widgets.
Accessibility
Each platform's own semantics, with test evidence recorded per platform where it exists.
Where platforms differ
In the manifest, with a reason — 19 documented exceptions today.

Dynamic tokens

One DTCG source, compiled by Style Dictionary. Change a value once — it moves everywhere, in every language.

Implemented per platform

Two different things, deliberately. Tokens are generated — one DTCG source becomes CSS variables and TypeScript for the web, plus Swift, Kotlin and Dart constants. Components are hand-built: React, SwiftUI, Jetpack Compose and Flutter, with Angular in preview each implement the same component contract natively, never web code wrapped or converted into a native app.

Own your code

Components install through the kinetixui CLI and land in your repo, with the npm packages they import. No runtime dependency you cannot patch, no lock-in — the code is yours to change.

Light & dark, verified

One semantic contract, two value sets, toggled with a class. Contrast is audited against WCAG AA in CI.

[03]Token boundarygenerated · written per platform

Generated tokens. Hand-written components.

One DTCG token source generates every platform’s native token output. React, SwiftUI, Jetpack Compose and Flutter, with Angular in preview each implement the same component contract natively — hand-written per platform, never one source converted into five. And every platform claim is checked against real source in CI, so the coverage you read is the coverage that exists.

  1. 01 · canonical source

    tokens/semantic/color.light.json

    tokens/semantic/color.dark.json

    DTCG JSON, one file per theme

  2. 02 · build

    Style Dictionary

    style-dictionary/build.mjs

  3. 03 · generated

    • CSSpackages/tokens/dist/web/globals.css
    • Swiftpackages/tokens/dist/ios/KinetixColorsSwiftUI.swift
    • Kotlinpackages/tokens/dist/android/Theme.kt
    • Dartpackages/tokens/dist/flutter/kinetix_color_scheme.dart
  4. 04 · written per platform

    • Reactpackages/ui
    • Angularpreviewpackages/ui-angular
    • SwiftUIpackages/ui-swiftui
    • Jetpack Composepackages/ui-compose
    • Flutterpackages/ui-flutter
[04]Implementationsswitch · 5 source trees

Same contract. Different platform.

KinetixUI does not convert one component implementation into five. The token is shared; the Switch beside this is written once per platform, in that platform’s own language — and every copy reads the same action colour.

React and Angular (preview) install from a package registry today. SwiftUI, Jetpack Compose and Flutter are real implementations, compiled in their own CI, that you build from source — not yet distributed as packages. What ships where.

packages/ui/src/components/switch.tsxlines 23–29

    className={cn(      "peer inline-flex h-6 w-12 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent",      "transition-[background-color,box-shadow] duration-instant ease-standard",      "data-[state=checked]:bg-action data-[state=unchecked]:bg-tertiary",      "[@media(hover:hover)]:enabled:hover:[box-shadow:0_0_0_5px_hsl(var(--foreground)/0.08)]",      // Pressed is written twice: bare for touch, and again inside the hover media query, because Tailwind      // emits media-wrapped utilities after plain ones and the hover layer would otherwise outrank the press.
Package
stable · npm · @kinetixui/ui
Switch verification
beta
Evidence on file
accessibility · build · interaction · large text · published · reduced motion · RTL

Marked lines read the action token.Switch on every platform

[05]Components109 catalogue entries

Real components, and what is true of each one everywhere.

Browse all 109 catalogue entries

Notification preferences

Open Notification preferences

A composed interface — Card, Badge, Switch and Button — rendered live with the React implementation.

Compiled copies of this recipe

  • Reactcompiled in CI
  • Angularnot written yet
  • SwiftUIcompiled in CI
  • Composecompiled in CI
  • Fluttercompiled in CI

Segmented control

Open Segmented control

One choice from a few, with the selection carried by shape as well as colour.

Verification by platform

  • Reactbeta
  • Angularpreview
  • SwiftUIexperimental
  • Composeexperimental
  • Flutterexperimental

A value on a track, keyboard-adjustable on every platform that implements it.

Verification by platform

  • Reactbeta
  • Angularpreview
  • SwiftUIexperimental
  • Composeexperimental
  • Flutterexperimental

Native select

Open Native select

The browser's own select, on the web only. Native platforms compose Select instead, and the manifest says so.

Verification by platform

  • Reactbeta
  • Angularpreview
  • SwiftUIcomposition
  • Composecomposition
  • Fluttercomposition
[06]Verificationfrom the manifest this page was built from

Claims you can check.

A platform badge costs nothing to add. Ours has to compile.

Every design system claims to be cross-platform, and almost none publishes where it falls short. That is why coverage tables drift into aspiration — and why you usually find out after migrating. KinetixUI derives its coverage from one manifest and fails the build when a claim outruns the source behind it.

  • React

    Catalogue entries
    109 of 109
    Verified to at least
    beta
    Distribution
    npm · @kinetixui/ui
    Build verification
    Verified
    All 109 React catalogue entries have build evidence.
    Interaction verification
    Partial
    48 of 109 React catalogue entries have interaction evidence.
    Accessibility verification
    Verified
    All 109 React catalogue entries have accessibility evidence.
    RTL verification
    Partial
    38 of 109 React catalogue entries have right-to-left evidence.
    Large-text verification
    Partial
    39 of 109 React catalogue entries have large-text evidence.
    Reduced-motion verification
    Limited evidence
    Tests record it for 6 React entries so far.
  • Angularpreview

    Catalogue entries
    80 of 109
    Verified to at least
    preview
    Distribution
    npm · @kinetixui/angular
    Build verification
    Verified
    All 80 Angular catalogue entries have build evidence.
    Interaction verification
    Verified
    All 80 Angular catalogue entries have interaction evidence.
    Accessibility verification
    Verified
    All 80 Angular catalogue entries have accessibility evidence.
    RTL verification
    Partial
    47 of 80 Angular catalogue entries have right-to-left evidence.
    Large-text verification
    Partial
    53 of 80 Angular catalogue entries have large-text evidence.
    Reduced-motion verification
    Partial
    23 of 80 Angular catalogue entries have reduced-motion evidence.
  • SwiftUI

    Catalogue entries
    90 of 109
    Verified to at least
    experimental
    Distribution
    Source checkout · not on a registry
    Build verification
    Verified
    All 90 SwiftUI catalogue entries have build evidence.
    Interaction verification
    Not yet verified
    No SwiftUI test records this yet.
    Accessibility verification
    Not yet verified
    No SwiftUI test records this yet.
    RTL verification
    Not yet verified
    No SwiftUI test records this yet.
    Large-text verification
    Not yet verified
    No SwiftUI test records this yet.
    Reduced-motion verification
    Limited evidence
    Tests record it for 7 SwiftUI entries so far.
  • Jetpack Compose

    Catalogue entries
    90 of 109
    Verified to at least
    experimental
    Distribution
    Source checkout · not on a registry
    Build verification
    Verified
    All 90 Jetpack Compose catalogue entries have build evidence.
    Interaction verification
    Limited evidence
    Tests record it for 7 Jetpack Compose entries so far.
    Accessibility verification
    Limited evidence
    Tests record it for 6 Jetpack Compose entries so far.
    RTL verification
    Limited evidence
    Tests record it for 1 Jetpack Compose entry so far.
    Large-text verification
    Not yet verified
    No Jetpack Compose test records this yet.
    Reduced-motion verification
    Limited evidence
    Tests record it for 7 Jetpack Compose entries so far.
  • Flutter

    Catalogue entries
    90 of 109
    Verified to at least
    experimental
    Distribution
    Source checkout · not on a registry
    Build verification
    Verified
    All 90 Flutter catalogue entries have build evidence.
    Interaction verification
    Limited evidence
    Tests record it for 6 Flutter entries so far.
    Accessibility verification
    Limited evidence
    Tests record it for 5 Flutter entries so far.
    RTL verification
    Partial
    58 of 90 Flutter catalogue entries have right-to-left evidence.
    Large-text verification
    Partial
    58 of 90 Flutter catalogue entries have large-text evidence.
    Reduced-motion verification
    Limited evidence
    Tests record it for 7 Flutter entries so far.

90/109 catalogue entries on all 4 catalogue-complete platforms · 19 documented exceptions · Angular (preview) still rolling out

A claim without source fails the build
If a component says it runs on SwiftUI and no SwiftUI source exists, CI rejects it. This check found direction-provider claiming three native platforms with no implementation on any of them — our own claim, caught by our own check.
Platform snippets are checked against real source
Where a compiled example exists, the snippet is extracted from a file that platform’s CI builds. The rest are still written by hand, and every KinetixUI symbol in them must exist in that platform’s source. Where a component is not ported, the tab is labelled as guidance instead. This caught a Compose symbol being advertised that had no source file at all.
Gaps are published, with reasons
Where a component is absent on a platform, the manifest records why — usually because a platform-native pattern serves better than a forced port. You can read the exceptions before you commit to anything.
Even this page is under test
A stale platform list, a blanket parity claim, or an install command for something you cannot install fails CI. The marketing is held to the same standard as the code, because otherwise the standard is decoration.
[07]Start smallthree ways in

You do not have to replace your design system to use this one.

Most adoption cost lands before any benefit does. These are three independent entry points — take the first and stop, if that is all you need.

  1. Level 01 — tokens

    Keep your components

    Install the token package and generate your platform’s native output. On Flutter the Material and Cupertino adapters style stock widgets, so nothing of ours has to appear in your tree. Your components stay exactly as they are.

    Start with tokens
  2. Level 02 — components

    Copy what you need

    Bring in one component at a time. The CLI writes the source into your repository and resolves the npm packages those files import, so what lands is yours to edit — no runtime dependency you cannot patch.

    Browse the catalogue
  3. Level 03 — blocks

    Whole patterns

    Composed interface patterns — settings panels, pricing tiers, forms — with real source on every platform that lists them. The step past primitives, for when the pattern rather than the button is what you are rebuilding.

    See the blocks
[08]Modulesbeyond the catalogue

Connected-device products

Models, framework-independent functions and accessible React primitives for device status, telemetry, battery, signal, firmware and alerts. A module on top of the token contract — not a sixth platform, and not part of the component catalogue.

Explore IoT Experimental · 0.5.0
[09]Who it's for

Built for teams that ship on more than one platform.

Agencies and product teams shipping a consistent design across React, SwiftUI, Jetpack Compose and Flutter, with Angular in preview — one token contract, a native implementation per platform, with documented exceptions where a platform-native pattern serves better than a forced port. MIT licensed, all of it.

Platforms
5
Components
108
Documented recipes
1
Source
DTCG
Core version
v0.24.0
License
MIT