RxJS

The standard library for composing asynchronous and event-based programs using observable sequences

Library
npm
v7.8.2
31,702 stars
Apache License 2.0

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
79 /100 Good
Development Activity 68
Maintenance 72
Community 76
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
82 /100 Excellent
Architecture 90
Code Quality 85
Innovation 88
Learning Curve 65

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

TypeScript
98%
Other

Hexabot

AI Development · Automation

1,160

Build and run agentic workflows across channels with YAML, tools, and RAG

View details
76
Repo Health
76
Technical
65
Dependency
Built with
TypeScript 98%
Updated 1 months ago
TypeScript
95%
AGPL 3.0

HeyForm

Forms Surveys · No Code Platforms

9,048

Open-source conversational form builder with AI generation, conditional logic, and 30+ integrations — self-host with full data ownership.

View details
86
Repo Health
67
Technical
67
Dependency
Built with
TypeScript 95%
Updated 5 days ago
TypeScript
71%
Other

highlight.io

Analytics · Developer Tools · Monitoring

9,384

Open-source full-stack monitoring that unifies session replay, error tracking, logging, and distributed tracing so you can stop context-switching between tools.

View details
76
Repo Health
78
Technical
65
Dependency
Built with
TypeScript 71%
Go 16%
Updated 6 days ago
TypeScript
68%
MIT

Hoppscotch

Developer Tools

80,676

A lightweight, offline-capable API development ecosystem for testing HTTP, GraphQL, WebSocket, MQTT, and SSE endpoints across web, desktop, and CLI.

View details
91
Repo Health
83
Technical
62
Dependency
Built with
TypeScript 68%
Vue 24%
Updated 6 days ago
Rust
56%
Other

Jan

AI Assistants

45,052

Run LLMs 100% locally with full privacy, or connect to cloud AI — your machine, your data, your control.

View details
90
Repo Health
81
Technical
65
Dependency
Built with
Rust 56%
TypeScript 40%
Updated 5 days ago
Python
64%
Other

Keep

Automation · Devops · Monitoring

12,433

The open-source AIOps and alert management platform that unifies 130+ monitoring tools into a single pane of glass with AI-powered correlation, deduplication, and workflow automation.

View details
88
Repo Health
79
Technical
66
Dependency
Built with
Python 64%
TypeScript 36%
Updated 1 weeks ago
TypeScript
98%
Other

Kibana

Analytics · Monitoring

21,338

Your open source window into the Elastic Stack — query, visualize, and act on data stored in Elasticsearch with real-time dashboards, AI-assisted search, and automated alerting.

View details
98
Repo Health
87
Technical
63
Dependency
Built with
TypeScript 98%
Updated 5 days ago
TypeScript
94%
AGPL 3.0

Laudspeaker

Automation · Marketing

2,629

Open-source customer engagement platform for building visual, event-triggered messaging journeys across email, SMS, push, in-app, and webhooks.

View details
45
Repo Health
66
Technical
62
Dependency
Built with
TypeScript 94%
Updated 3 months ago
TypeScript
99%
Apache 2.0

Mastra Code

AI Code Assistants

29,041

"A coding agent that never compacts" — a terminal-based AI coding agent built on the Mastra framework, with Observational Memory instead of context compaction, multi-model support, and OAuth login for Claude Max or ChatGPT Plus.

View details
90
Repo Health
73
Technical
65
Dependency
Built with
TypeScript 99%
Updated 5 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers