MCPcopy Create free account
hub / github.com/ReactiveX/rxjs

github.com/ReactiveX/rxjs

Chat with this repo
repository ↗ · DeepWiki ↗ · release 9.0.0-beta.0 ↗ · + Follow · compare 3 versions
3,281 symbols 12,546 edges 1,020 files 252 documented · 8% updated 1d ago9.0.0-beta.0 · 2026-08-04★ 31,697122 open issues

Browse by type

Functions 2,527 Types & classes 754
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

RxJS

CI Release readiness Observable WPT npm stable npm next npm downloads Apache 2.0

Observable: platform native Extensions: Symbol keyed

RxJS is a library for composing asynchronous and event-based programs with Observable values. This repository contains the platform-based next generation of RxJS, planned for release as RxJS 9.

RxJS 9 is prerelease work in development. The planned first beta is 9.0.0-beta.0, but it has not been published to npm yet. The next tag still points to the earlier RxJS 8 prerelease, while RxJS 7 remains the production latest line and continues to be maintained.

Why RxJS 9? What happened to RxJS 8?

RxJS 8 was real work, not a skipped release. Development began years ago and was paused while the Web Platform Observable proposal was finalized. The new implementation is a platform-based generation rather than a continuation of that paused RxJS 8 branch, so it starts at version 9 to make the architectural break unmistakable and avoid presenting the old RxJS 8 work as the released product.

What is different in RxJS 9?

  • RxJS uses the native web-platform Observable when one exists and installs a conforming fallback only when needed.
  • RxJS operators and factories are exact, module-owned Symbols. They do not add string-named RxJS methods to the platform API.
  • Platform Observable behavior and producer-per-subscription behavior are explicit, separate contracts. Use ColdObservable when each direct subscription must create its own producer.
  • Cancellation is built on AbortSignal and the platform Subscriber lifecycle.
  • Published JavaScript is ESM-only. Current Node can bridge require() to the same ESM files; there is no duplicate CommonJS build.

Preview the RxJS 9 API

The following example shows the planned beta API. Until 9.0.0-beta.0 is published, do not use npm's next tag to install RxJS 9.

import { ColdObservable } from 'rxjs';
import { map } from 'rxjs/map';

const source = new ColdObservable<number>((subscriber) => {
  subscriber.next(1);
  subscriber.next(2);
  subscriber.complete();
});

source[map]((value) => value * 2).subscribe(console.log);

Import the Symbol and call it with bracket syntax. A platform method such as observable.map(project) remains the platform contract; observable[map](project) is the separately versioned RxJS contract.

Packages and documentation

Package Purpose Documentation
rxjs Symbol extensions and intentional RxJS primitives Package guide · API · RxJS 7 migration
@rxjs/observable-polyfill Conditional platform Observable fallback Package guide
@rxjs/test Implementation-neutral virtual-time and marble testing Package guide
@rxjs/migrate Deterministic migration engine and canonical agent Skill Package guide

Release support, budgets, and exact environment gates are documented in the rxjs package. The irreversible npm publication process is the public secure release runbook. The RxJS 9 security-assurance document explains the release evidence, verification commands, sole-maintainer model, and OpenSSF Scorecard in context. Repository-wide design records live in docs/rxjs-next.

Supported environments

The planned beta supports Node 22.13+ and Node 24 as blocking lanes, with Node 26 in an advisory lane. Current Chrome, Firefox, desktop Safari, Mobile Safari, Deno, Bun, and Webpack 5 are blocking. Every supported consumer receives the same ESM implementation, so Deno and Bun support adds no runtime-specific package or application-bundle code.

Contributing

Requires Node 22.13+ and pnpm 10.34.5. Run commands from the repository root.

pnpm install
pnpm --filter rxjs exec vitest --run src
pnpm --filter rxjs run test:package
pnpm run release:check

Start with the repository contribution guide and the rxjs package contribution guide. The active execution queue is PROJECT_PLAN.md.

The complete source-pinned RxJS 7 corpus intentionally retains reviewed lifecycle and compatibility divergences, so it is migration evidence rather than a blanket RxJS 9 compatibility gate. Focused source, package, runtime, browser, performance, and WPT commands are the release gates.

Community and governance

Extension points exported contracts — how you extend this code

browse all types & interfaces →

Core symbols most depended-on inside this repo

browse all functions →

Shape

Function 1,769
Method 758
Class 425
Interface 328
Enum 1

Languages

TypeScript100%

Modules by API surface

packages/observable-polyfill/test/wpt/upstream/resources/webidl2/lib/webidl2.js265 symbols
packages/observable-polyfill/test/wpt/upstream/resources/testharness.js133 symbols
packages/rxjs/test/ported/tools/generate-port-manifest.mjs132 symbols
packages/observable-polyfill/src/index.ts90 symbols
packages/test/src/virtual-time.ts67 symbols
packages/test/src/types.ts37 symbols
scripts/analyze-bundles.mjs35 symbols
packages/migrate/src/semantics.ts35 symbols
packages/rxjs/src/cold-observable.ts33 symbols
packages/test/src/test-sources.ts32 symbols
packages/rxjs/test/ported/tools/generate-failure-tracker.mjs30 symbols
packages/migrate/test/agent/seed-oracles.spec.ts29 symbols

Dependencies from manifests, versioned

@angular-devkit/build-angular13.1.2 · 1×
@angular-eslint/builder13.0.0 · 1×
@angular-eslint/eslint-plugin13.0.0 · 1×
@angular-eslint/eslint-plugin-template13.0.0 · 1×
@angular-eslint/template-parser13.0.0 · 1×
@angular/animations13.1.1 · 1×
@angular/cdk13.1.1 · 1×
@angular/cli13.1.2 · 1×
@angular/common13.1.1 · 1×
@angular/compiler13.1.1 · 1×
@angular/compiler-cli13.1.1 · 1×
@angular/core13.1.1 · 1×

For agents

$ claude mcp add rxjs \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page