Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
R

rxjs

> 编程语言
Open source

A reactive programming library for JavaScript

31.7K stars0 likes1 views
WebsiteGitHub

About

A reactive programming library for JavaScript

RxJS

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

  • Code of Conduct
  • Contribution guidelines
  • Apache 2.0 License
  • Issues
  • Discussions

GitHub Issues· 187 open

View all on GitHub
  • #7638

    Polyfill refuses to initialize when AbortController is a subclass

    Updated Sep 16, 2026
  • #7637

    [combineLatest] loses the tuple shape of array-literal sources, unlike [forkJoin]

    Updated Sep 16, 2026
  • #7636

    ColdObservable.from(promise) never delivers a rejection to the subscriber

    Updated Sep 16, 2026
  • #5967

    `observers` should be private on Subjects.

    TS8.xUpdated Sep 9, 2026
  • #7096

    auditTime(0, animationFrameScheduler) stops emiting unexpectedly.

    Updated Aug 31, 2026
  • #6030

    Ensure we're properly supporting ESM in Node

    Updated Aug 27, 2026
  • #4416

    Standard compliant ES Modules format

    featureUpdated Aug 24, 2026
  • #6786

    Monorepo and Splitting Out To Different Packages

    AGENDA ITEM8.xUpdated Aug 11, 2026

Highlights

  • •RxJS uses the native web-platform Observable when one exists and installs
  • •RxJS operators and factories are exact, module-owned Symbols. They do not add
  • •Platform Observable behavior and producer-per-subscription behavior are
  • •Cancellation is built on AbortSignal and the platform Subscriber lifecycle.
  • •Published JavaScript is ESM-only. Current Node can bridge require() to the
  • •Code of Conduct
  • •Contribution guidelines
  • •Apache 2.0 License
  • •Discussions

> Tags

TypeScriptjavascriptrxjs

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言