rxjs README

The project's README from github.com/ReactiveX/rxjs. As one markdown file: README.md.

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?

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

rxjs (ReactiveX/rxjs)

Searching Database…

31.7K ·GitHub
What is this?RxJS is a JavaScript library for composing asynchronous and event-based programs with Observable values. This repo is the platform-based next generation of RxJS, planned for release as RxJS 9.
Is there still a CommonJS build, or is it ESM-only now?No duplicate CommonJS build: published JavaScript is ESM-only, and current Node can bridge require() to those same ESM files.
So how do I actually get my hands on it?For apps, stay on the RxJS 7 production line and avoid npm's next tag until 9.0.0-beta.0 is published. To build or contribute to this repo you need Node 22.13+ and pnpm 10.34.5, running commands from the repository root.
Is this the version I should use in production right now?No. RxJS 9 is prerelease work in development: its planned first beta (9.0.0-beta.0) is not on npm yet, the next tag still points to an older RxJS 8 prerelease, and RxJS 7 remains the maintained production latest line.
So what's actually different in RxJS 9?It uses the native web-platform Observable when the environment provides one and installs a conforming fallback only when needed. Operators and factories are exact module-owned Symbols you call with bracket syntax instead of string-named platform methods, and cancellation is built on AbortSignal.
What packages ship in this repo?Four: rxjs (Symbol extensions and intentional RxJS primitives), @rxjs/observable-polyfill (a conditional platform Observable fallback), @rxjs/test (implementation-neutral virtual-time and marble testing), and @rxjs/migrate (a deterministic migration engine with a canonical agent Skill).
Why does it jump from 7 to 9 — what happened to RxJS 8?RxJS 8 was real work, but development was paused while the Web Platform Observable proposal was finalized. The new line is a platform-based generation rather than a continuation of that branch, so it starts at 9 to make the architectural break unmistakable.
Can I migrate an existing RxJS 7 codebase to 9?There is dedicated tooling: @rxjs/migrate is a deterministic migration engine. Expect real differences, though — the retained RxJS 7 corpus intentionally keeps reviewed lifecycle and compatibility divergences, so it is migration evidence rather than a blanket compatibility gate.
What are similar projects?RxJS, cyclejs, es-toolkit, vueuse, router, comlink, marked, core-js
Creator
ReactiveX
Size
52.1 MB
Stars
31.7K
Updated
CommitAug 05
Age
11y
Commits · 90 Days