Turborepo + pnpm + shared UI package
For teams running several apps that must look and behave like one product.
Sources verified Sep 2026
Circumstances — when to use it
- You have a marketing site, an app, and maybe a docs site drifting apart visually
- Multiple teams need to change shared components without a publish-and-wait cycle
- CI time is climbing because every push rebuilds everything
Synergy — how the pieces fit
pnpm workspaces link packages from disk, so editing the shared UI package is instantly reflected in every app — no versioning ceremony. Turborepo builds a task graph and caches by content hash, so untouched packages are skipped and CI only rebuilds what changed. Remote caching means a teammate's build result becomes your cache hit. Shared ESLint, TypeScript, and Tailwind config packages keep the rules identical everywhere.
The tech and its role
Architectural examples
Each example links to a public source — no claims about private internals.
Vercel's design-system template
Turborepo's maintainer publishes a reference monorepo with a shared component package consumed by apps. A vendor example, not an independent one.
sourceOpenStatus
Open-source uptime monitoring whose Turborepo + pnpm monorepo shares one @openstatus/ui package across its marketing site, dashboard, and public status pages — the exact drift problem this stack solves.
sourceSkip if
Skip if you have one app and one team — a monorepo adds tooling overhead that only pays off across multiple consumers.