mobxjs/mobx

Simple, scalable state management.

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 23 minutes ago
Added to GitGenius on January 5th, 2022
Created on March 14th, 2015
Open Issues & Pull Requests: 56 (+0)
Number of forks: 1,800
Total Stargazers: 28,205 (+0)
Total Subscribers: 330 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 47.4 hours
Mean response time: 125.6 days
90th percentile: 552.2 days
Tracked items: 96

How this project is maintained

Around half of the issues opened in the past year never receive a reply. 91% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Only 7% of issues opened in the past year have been closed. Three people close 82% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 33
New in 7 days: 1
Closed in 7 days: 7
Avg open age: 772 days
Stale 30+ days: 30
Stale 90+ days: 30

Recent activity

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

Top labels

  • 🐛 bug (272)
  • ❔ question (96)
  • 🍗 enhancement (51)
  • 📖 documentation (44)
  • 💀 wontfix (39)
  • 🚶 stale (28)
  • ⏰ needs-more-info (27)
  • 💬 discuss (26)

Detailed Description

MobX is a TypeScript-based state management library that implements signal-based reactive programming for JavaScript applications. The library is built on the principle that anything derivable from application state should be computed automatically, eliminating the need for manual synchronization between state and UI.

The core philosophy of MobX centers on three key benefits. First, it enables straightforward code with minimal boilerplate by allowing developers to use normal JavaScript assignments to update data, with the reactivity system automatically detecting and propagating changes. Second, it provides effortless optimal rendering by tracking all changes to and uses of data at runtime, building a dependency tree that ensures computations like React component renders execute only when necessary, without requiring manual memoization or selector optimization. Third, it offers architectural freedom by remaining unopinionated about where application state lives, allowing state management outside UI frameworks and making code more decoupled, portable, and testable.

The library uses an observer pattern where components wrapped with the observer function automatically detect dependencies on observable state. When observable state updates through actions, changes propagate precisely to all computations and side effects that depend on them. This reactive system operates transparently without requiring explicit dependency declarations.

The repository maintains connections with major open-source projects including Microsoft's VSCode and TypeScript repositories, as well as the Rust language repository, indicating its influence across the JavaScript and broader programming ecosystem. The project receives substantial financial support from platinum sponsors including Guilded, Canva, and Parallax, along with gold sponsors such as Coinbase, Facebook Open Source, and Frontend Masters, demonstrating significant industry backing.

MobX is classified across numerous reactive programming and state management categories including observable data, dependency tracking, data bindings, observable objects, autorun reactions, action-based updates, and UI synchronization. The library emphasizes minimalist design principles while providing comprehensive integration with UI libraries, particularly React through mobx-react integration. Documentation is centralized at mobx.js.org and includes interactive tutorials, a quick start guide, and comprehensive resources for learning the framework's concepts and implementation patterns.