Repo and versioning strategy for multi-platform DS
Multi-platform packaging.
Shared platform-agnostic tokens as source of truth, per-platform packages, independent semver, a monorepo with workspaces.
WHAT THIS TESTS Whether you can separate shared, platform-agnostic intent from platform-specific implementation, and choose a versioning scheme that respects differing release cadences.
A GOOD ANSWER COVERS Establish tokens as the platform-agnostic single source of truth, authored once and transformed into platform outputs such as CSS variables, JSON, Swift, and Kotlin via a tool like Style Dictionary. Structure components into per-platform and per-framework packages, for example a React package, a Vue package, and an iOS package, that each consume the generated tokens. Favor a monorepo with workspaces so shared tooling, tokens, and tests live together while packages publish independently. Use independent semantic versioning per package, because a Vue-only bug fix should not force an iOS release. Coordinate releases with a tool like Changesets. Document a parity matrix so consumers see which components exist where.
COMMON WRONG ANSWERS Forcing a single lockstep version across every platform, which couples unrelated release cadences. Duplicating token values by hand in each framework, guaranteeing drift. Putting platform-specific logic in shared token files. Assuming one codebase can target web and native identically.
LIKELY FOLLOW-UPS How do you generate platform outputs from one token source? How do you track cross-platform parity? Monorepo versus polyrepo trade-offs? How do you coordinate a token change that affects all platforms?
ONE CONCRETE EXAMPLE Tokens live in one package and Style Dictionary emits CSS, Swift, and Kotlin artifacts. The React, Vue, and iOS component packages each depend on their generated token artifact. A Vue accessibility fix ships as a Vue patch release without bumping React or iOS, while a brand color change updates the token package and triggers coordinated downstream releases.
Interview question
Why should per-platform packages in a multi-platform design system use independent semantic versioning rather than one shared version?
- a.So a fix on one platform can release without forcing unrelated platforms to bumpCorrect
- b.To prevent the token source of truth from ever changing
- c.Because semantic versioning is only valid within a single framework
- d.Because shared versions cannot be published to package registries
Why? this is the answer
Independent versioning lets each platform release on its own cadence, so a Vue fix does not drag iOS along. A shared lockstep version artificially couples unrelated release timelines.
Just read this? Test yourself on what you have been reading.
- #monorepo
- #versioning
- #multi-platform
- #design-tokens
- #style-dictionary
Put your scrolling time to good use
Learn one idea, try a quiz and save useful cards for revision. Tezvyn makes it easy to learn and stay current in your tech field, a few minutes at a time.
The iPhone app is on the way
We are building it. Until it lands, nothing here is held back from you: every interview card, your saved cards, streaks and the job board all work in Safari, plus hundreds of free practice quizzes of thirty questions each. Sign in and it all carries over to the app the day it arrives.
Want it as an icon? Tap Share at the bottom of Safari, then Add to Home Screen. It opens full screen and the cards you have read stay available offline.
We are hiring for this. Every open role lists the topics its interview covers, so you can prepare for the real thing rather than guessing.
See open roles