RxJS
The standard library for composing asynchronous and event-based programs using observable sequences
Repository Health
Technical Analysis
RxJS (Reactive Extensions for JavaScript) is the reference implementation of the ReactiveX pattern for JavaScript and TypeScript. It models any source of asynchronous data — DOM events, HTTP responses, WebSocket messages, timers, or plain arrays — as an Observable, then lets you compose that stream with a large, consistent library of pipeable operators (map, filter, mergeMap, debounceTime, and roughly a hundred more) rather than hand-rolling callback or Promise chains.
It underpins reactive state and async orchestration in Angular (which ships it as a first-class dependency), and is widely adopted standalone in React, Vue, Node.js backends, and any codebase that needs precise control over cancellation, backpressure, timing, and multicasting of async event sequences.
What You Get
- The Observable/Observer/Subscription primitives plus Subject variants (Subject, BehaviorSubject, ReplaySubject, AsyncSubject) for multicasting values to many consumers
- Around 100 pipeable operators covering transformation (map, scan, mergeMap), filtering (filter, debounceTime, distinctUntilChanged), combination (combineLatest, forkJoin, merge, zip), and error handling (catchError, retry)
- A pluggable Scheduler system (asap, async, animationFrame, queue, virtual time) for controlling exactly when and where work executes, including deterministic testing via TestScheduler and marble diagrams
- Creation functions (of, from, interval, fromEvent, fromFetch, timer) that turn events, promises, iterables, and timers into Observables
- First-class TypeScript types shipped in the package itself, plus ajax/fetch/testing/webSocket sub-path exports for scoped imports
Common Use Cases
- Debouncing and cancelling in-flight search-as-you-type or autocomplete HTTP requests
- Coordinating complex async workflows in Angular apps (HTTP, forms, router events) via the framework’s built-in RxJS integration
- Multicasting a single WebSocket or SSE connection to multiple UI subscribers without re-opening it per consumer
- Modeling drag-and-drop, gesture, and other multi-event DOM interactions as composable streams instead of nested event listeners
- Orchestrating retry/backoff and timeout logic around flaky network calls with built-in operators instead of custom state machines
Under The Hood
Architecture — RxJS layers on top of a small core (Observable, Subscriber, Subscription) that governs subscription lifecycle and teardown; Subject and its variants (BehaviorSubject, ReplaySubject, AsyncSubject) extend Observable to add multicasting, and roughly 100 pipeable operators (src/internal/operators/*.ts) are built as pure higher-order functions composed via .pipe() rather than instance methods, keeping the core surface small and tree-shakeable. A dedicated Scheduler abstraction (Scheduler.ts, scheduler/AsyncScheduler.ts, QueueScheduler.ts, AnimationFrameScheduler.ts, VirtualTimeScheduler.ts) decouples what runs from when it runs, which is also what enables deterministic marble-diagram testing via TestScheduler.
Tech Stack — The codebase is ~91% TypeScript, built through tsc project references into separate CJS, ESM, and .d.ts type outputs (compiled by tsconfig.cjs.json/tsconfig.esm.json/tsconfig.types.json), managed as an Nx-orchestrated Yarn workspace monorepo (packages/rxjs, packages/observable, apps/rxjs.dev docs site). Dependency-cruiser enforces the internal module boundaries (no accidental circular imports between operators and core), and the package ships dual CJS/ESM exports plus sub-path exports for /ajax, /fetch, /operators, /testing, and /webSocket.
Code Quality — The test suite is extensive: 163 spec files under spec/, including one spec per operator (98 operator specs alone) using Mocha, Chai, and Sinon, plus a separate spec-dtslint suite that type-checks the public API surface at the type level. ESLint is configured project-wide, and every operator source file follows the same shape — typed signature, exhaustive JSDoc with a runnable example, then a small operate-based implementation — which keeps the ~100-operator surface consistent despite its size.
API Design — The pipeable-operator model (source$.pipe(map(...), filter(...), catchError(...))) is RxJS’s signature ergonomic choice: operators are plain functions, so consumers only import the ones they use and tree-shaking removes the rest, and since v7.2 all operators are importable directly from the rxjs root instead of a separate rxjs/operators path. Every operator’s JSDoc includes a runnable usage example and links to related operators, and the marble-diagram testing utilities (TestScheduler, cold()/hot() helpers) give consumers the same tooling the library’s own test suite uses, which is unusually generous for a library of this scope.
Used by 53 apps in this directory
Convoy
Developer Tools · Devops
Convoy is an open-source, cloud-native webhooks gateway that ingests events over HTTP or straight from Kafka, SQS, Google Pub/Sub, and RabbitMQ, then reliably delivers them to subscriber endpoints with signed payloads, automatic retries, circuit breaking, and JavaScript-based transformations.
DefGuard
Authentication · Networking · Security
Self-hosted secure remote access that unifies WireGuard VPN, identity management, and connection-level MFA in one open-source platform.
Docmost
CMS · Collaboration · Note Taking
Self-hosted collaborative wiki and knowledge base with real-time editing, diagrams, AI assistance, and enterprise access controls — a modern alternative to Confluence and Notion.
FeatBit
Developer Tools · Devops
Self-hosted, enterprise-grade feature flag platform for safe, targeted, and data-driven feature releases.
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.
Ghostfolio
Invoicing Finance
Track your stocks, ETFs, and crypto with a privacy-first, self-hostable wealth management platform built for data-driven investors.
GitButler
AI Development · Developer Tools · Devops
Git, but better — a modern version control client with stacked branches, parallel workflows, unlimited undo, and first-class support for AI-powered development.
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.