microsoft/tsyringe

Lightweight dependency injection container for JavaScript/TypeScript

View on GitHub ↗Jump to charts ↓

Data as of . Signed-in members get hourly updates — create a free account.

Summary Information

Updated 24 minutes ago
Type:Library / SDKCategory(s):Core & Utility LibrariesLanguages & Runtimes
Added to GitGenius on September 11th, 2026
Created on November 17th, 2017
Open Issues & Pull Requests: 82 (+0)
GitHub issues: Enabled
Number of forks: 184
Total Stargazers: 6,006 (+0)
Total Subscribers: 40 (+0)

Repository Insights (GitGenius)

Median issue/PR response: N/A
Mean response time: 12.3 hours
90th percentile: 0.0 hours
Tracked items: 33

Maintainer activity

1 person did triage or write work on this repository in the last 12 months.

Counts unlabeled, assigned, unassigned, milestoned, demilestoned, locked, unlocked over the last 12 months. These are issue and pull request events that require triage or write permission. Commits and code review are not counted. labeled and renamed are excluded because GitHub issue forms record the issue author as the actor. Figures from October 11, 2026. This count is not comparable across projects: each project's automation decides which of these events a person emits.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 19
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 962 days
Stale 30+ days: 19
Stale 90+ days: 18

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • awaiting triage (21)
  • enhancement (13)
  • accepting PRs (4)
  • bug (1)
  • documentation (1)
  • wontfix (1)

Most active issues this week

Sign in to see which issues are moving.
Sign in

Detailed Description

TSyringe is a lightweight dependency injection container for TypeScript and JavaScript that performs constructor injection through decorators.

The tool solves the problem of managing object dependencies in applications by providing a container that automatically instantiates and injects dependencies into class constructors. It works by using TypeScript decorators and metadata reflection to track which classes need injection, what their dependencies are, and how they should be instantiated. The container supports multiple registration patterns including singletons, scoped instances, and transient objects, along with features like child containers, interception, and disposable instance lifecycle management.

Developers should choose this tool when building TypeScript or JavaScript applications that benefit from centralized dependency management and reduced coupling between components. It suits projects where constructor injection is the preferred pattern and where the overhead of a full framework is not needed. The tool requires configuring TypeScript to emit metadata and adding a Reflect API polyfill, which adds a small setup cost. For Babel users, additional configuration is necessary to ensure metadata emission. The README does not compare TSyringe to alternative dependency injection libraries, so no comparative guidance can be offered.

The project maintains active development with regular commits addressing bug fixes and feature improvements. The codebase shows consistent attention to test coverage and code quality. Documentation is comprehensive, covering common patterns like named injection, circular dependency handling, and interface-based injection. The maintainers have clearly defined non-goals, indicating a focused scope around constructor injection rather than attempting to solve broader application concerns.