tslib
The runtime library that houses TypeScript's compiler helper functions so your emitted code stays small.
Repository Health
Technical Analysis
tslib is Microsoft’s runtime library containing every helper function the TypeScript compiler would otherwise inline into each emitted file - things like __extends, __assign, __awaiter, __decorate, and __spreadArray. When you enable the importHelpers compiler flag, TypeScript emits a single require(“tslib”) reference instead of redeclaring these helpers in every module.
The result is smaller output on average and less duplicated runtime code across a project or bundle. tslib ships in UMD, ES module, and native .mjs formats with full type declarations, has zero runtime dependencies, and is one of the most widely depended-upon packages in the JavaScript ecosystem.
What You Get
- A single shared copy of all TypeScript helper functions (__extends, __assign, __awaiter, __decorate, __spreadArray, and more) instead of duplicated inline declarations in every emitted module.
- Multiple distribution formats - UMD (tslib.js), ES modules (tslib.es6.js), and native ESM (tslib.es6.mjs) with a modules/ named-export layer - resolved automatically via the package.json exports map.
- Complete TypeScript type declarations (tslib.d.ts) with JSDoc on every helper, so tooling and editors understand the runtime.
- Zero runtime dependencies and a tree-shakeable, side-effect-free package that bundlers can prune down to only the helpers you actually use.
Common Use Cases
- Reducing bundle size in libraries and applications by enabling importHelpers so helper code is shared rather than inlined per file.
- Shipping npm libraries that downlevel modern syntax without bloating consumers with repeated helper boilerplate.
- Providing the runtime helpers required by frameworks like Angular, which depend on tslib for their compiled output.
- Standardizing helper emission across a large TypeScript monorepo so every package references one shared implementation.
Under The Hood
Architecture
tslib is organized around a single hand-authored source of truth: tslib.js defines every helper (__extends, __assign, __awaiter, __generator, __spreadArray, __decorate, __classPrivateFieldGet, __addDisposableResource, and the rest) inside a UMD wrapper that works under CommonJS, AMD, and global script loading. Parallel builds - tslib.es6.js and tslib.es6.mjs - expose the same helpers as ES modules, and a thin modules/index.js layer destructures the default export into individually named ESM exports so bundlers can tree-shake. The package.json exports map routes Node ESM, bundler module resolution, and legacy require() consumers to the correct artifact, while tslib.d.ts supplies types for all formats.
Tech Stack
The library is written in plain JavaScript and TypeScript declarations with zero runtime dependencies. It ships UMD, ESM, and native .mjs formats plus a complete .d.ts, coordinated through the package.json exports field and the sideEffects:false flag that marks it safe to prune. There is no heavy build toolchain - the distributed files are the source - and the code deliberately mirrors the helpers the TypeScript compiler emits so the two stay in lockstep.
Code Quality
Correctness is validated through integration tests rather than unit tests: the test/ directory runs the package through real consumers - Node ESM (exportStructure.test.js, rewriteRelativeImportExtension.test.js), plus webpack, rollup, and vite fixtures orchestrated by runTests.js - to confirm every module format resolves and every export is reachable across bundlers. Helper names follow TypeScript’s own emit conventions exactly, and each is documented with JSDoc in tslib.d.ts, keeping the public surface predictable.
API Design
The developer experience is intentionally invisible: users never call tslib helpers directly. Enabling the importHelpers compiler flag is the entire integration, after which TypeScript rewrites its emitted helper references to pull from tslib automatically. This zero-boilerplate design means the ergonomic surface is a single tsconfig option, while the fully typed, JSDoc-annotated declarations keep editors and type-checkers accurate for the rare cases where the helpers are referenced explicitly.
Used by 81 apps in this directory
Firezone
Networking · Security
Enterprise-grade zero-trust access platform built on WireGuard® that replaces legacy VPNs with peer-to-peer, identity-aware secure tunnels.
Flowise
AI Development · Automation · Developer Tools
Drag-and-drop visual builder for AI agents, RAG pipelines, and multi-agent systems—deploy anywhere in minutes.
FormBee
Forms Surveys
A self-hostable form backend that accepts HTML form submissions and routes them to email, Telegram, Discord, webhooks, and automation platforms — without writing any server-side code.
Frappe Books
Invoicing Finance
Offline desktop accounting with double-entry, POS, and custom invoice templates
GDevelop
Design Tools · Developer Tools · Game Development
No-code, open-source game engine for building 2D, 3D and multiplayer games — publish to iOS, Android, Steam and the web.
Ghostfolio
Invoicing Finance
Track your stocks, ETFs, and crypto with a privacy-first, self-hostable wealth management platform built for data-driven investors.
Grafana
Analytics · Monitoring
The open-source observability platform that unifies metrics, logs, and traces from any data source into dynamic, queryable dashboards.
Hanko
Authentication · Security
Open source, self-hostable authentication platform with passkeys, SAML SSO, and OAuth — the privacy-first alternative to Auth0 and Clerk.
HeyForm
Forms Surveys · No Code Platforms
Open-source conversational form builder with AI generation, conditional logic, and 30+ integrations — self-host with full data ownership.