// the find
microsoft/rushstack
Monorepo for tools developed by the Rush Stack community
Rush Stack is Microsoft's monorepo toolchain for large-scale TypeScript projects — think hundreds of packages managed with Rush (the orchestrator), Heft (the build system), API Extractor (for .d.ts rollups and API surface tracking), and a constellation of supporting tools. It's what the SharePoint and Teams teams actually use internally, so it's battle-tested at a scale most projects will never reach. If you're building a TypeScript monorepo with dozens of packages and need serious build coordination, this is the reference implementation.
API Extractor is genuinely useful beyond Rush — tracking your public API surface and generating clean .d.ts rollups solves a real problem that nothing else handles as well. The build caching story is solid: incremental builds with content-addressed caching (S3, Azure Blob, Redis, or HTTP), and 'cobuild' for distributed parallel execution across CI agents. Heft's rig system lets you share build configuration across packages without copy-pasting — one rig package defines TypeScript, Jest, and ESLint config, and every consumer inherits it. The `eslint-bulk-suppressions` tool is a pragmatic solution to adopting stricter lint rules incrementally rather than fixing 500 violations at once or disabling the rule entirely.
The learning curve is steep and the configuration surface is enormous — rush.json, heft.json, rig packages, subspaces, and per-package overrides interact in ways that take real time to internalize. It's unapologetically PNPM-first; if you're on npm or yarn, you're a second-class citizen. The MCP server integration and some newer features feel bolted on rather than designed in. Migrating an existing monorepo to Rush is not a weekend project — the toolchain assumes you're building with it from the start, and retrofitting it onto a Lerna/Nx/Turborepo setup means rewriting your entire build pipeline.