Our product · open source soon
CDS.
One set of components for web, iOS and Android.
You write the UI once and use it in Next.js, React Native and a Vite SPA, with no Platform.select in your code. This site already runs on CDS.
LoginForm is a 135-line file with no native twin. Only its primitives differ by platform.
components, one API on every platform
of what the phone draws is reused unchanged
tests after the port to mobile
catalog pages, props generated from source
lines of checks that fail the build
Platform.select in app code
Why it exists
Five problems CDS was built to solve.
We ran into the same five failures on eleven projects, and each one cost money before we started building CDS.
Why it happens · Platform.select and conditional imports let any file branch by platform for free. Neither leaves a trace, and nothing fails as branches multiply.
What CDS does · The platform split happens one layer below the code that calls a component. A theme token resolves per platform, to a CSS variable on web and a value the native resolver fills in, so one color definition serves both.
The principle
We split only what differs by platform.
38 of 74 components have a native twin, which sounds like half the system diverged. It didn’t: 33 of the 38 import no other component. They are leaf components that translate one element, div to View, so nothing above them has to know which platform it is on.
And no pattern has a native twin at all, because CI fails on any change that adds one.
Native twins by layer
Enforced conventions
If a rule is broken, the build fails.
- verify-tokens902Checks token integrity, from the Figma values to every platform.
- verify-conventions1,056Checks that no pattern has a native twin, that twin exports match and that client boundaries hold.
- verify-katalog485Runs ten hard checks on the generated catalog.
- eslint-plugin4 rulesApplies the same rules in the editor as you type, before the hook and CI.
Status
Free and open source at launch.
The repository stays private until the example apps are ready to publish with it. Leave your email and we’ll send one message when it goes public.
Before launch
Want the same approach in your product? We also build design systems for clients.
The first call takes 30 minutes, and you’re under no obligation.