Sourcemap Explorer
Stack · npm package

rxjs

Reactive Extensions for modern JavaScript

latest 7.8.2· Apache-2.0· 167 versions publishedView on npm

About

Reactive Extensions for modern JavaScript

RxRxJSReactiveXReactiveExtensionsStreamsObservablesObservableStreamES6ES2015

What detecting rxjs tells you about a site

rxjs in a bundle signals reactive, stream-based programming — observables, operators and pipelines rather than imperative event handling. On the web it is most often a transitive dependency of Angular (which is built on it), so its presence frequently confirms an Angular app; outside Angular it marks a team that models complex async flows as composable streams.

Why the exact rxjs version matters

RxJS 7 reworked the operator imports and improved tree-shaking over RxJS 6, so the exact version tells you which import style the code uses and how much of the (large) operator surface actually ships.

rxjs in a real-world stack

When you find rxjs in a bundle, it rarely travels alone. @angular/core (which depends on it) almost always; otherwise a state library or a websocket-heavy data layer.

Quick facts

Latest version7.8.2
LicenseApache-2.0
AuthorBen Lesh
Homepagerxjs.dev
Installnpm install rxjs
Direct dependencies1

What rxjs pulls in

rxjs declares 1 direct dependency — each one also rides into any bundle that ships rxjs, so they are detection targets too. Reading them is a quick way to understand the package's real footprint .

tslib

How Sourcemap Explorer detects rxjs

rxjs ships as v7.8.2, published 2025-02-22 and carries 1 direct dependency, 167 versions on the registry. Those exact numbers are the footprint Sourcemap Explorer matches when rxjs rides inside a deployed bundle — here is how the detection works.

We catch rxjs from two complementary signals: bundled source paths and the embedded package.json. Modern bundlers (webpack, Vite, esbuild, Rollup, Turbopack) preserve the original node_modules/rxjs/ paths inside the JavaScript sourcemap's sources[] array — that's the canonical signal. When the matching package.json is also captured in sourcesContent[], we read the exact version field — patch number included. No regex guessing, no version inference.

  1. 1

    Confirm the site exposes sourcemaps

    In DevTools Network, check the response headers of any application script for `SourceMap` or `X-SourceMap`. Failing that, fetch the script's last 4 KB and look for a `//# sourceMappingURL=` comment — that map is where the `rxjs` paths live.

  2. 2

    Find the package in the bundle

    Open DevTools → Network → reload. Click any application script and look at its sourcemap. Inside, search `sources[]` for entries matching `node_modules/rxjs/` — every match confirms the package is bundled. The matching `sourcesContent[i]` for `node_modules/rxjs/package.json` gives you the exact installed version.

  3. 3

    Read the version directly from package.json

    Run `jq -r '. as $m | $m.sources | to_entries[] | select(.value | endswith("node_modules/rxjs/package.json")) | $m.sourcesContent[.key] | fromjson | .version' bundle.js.map`. Sourcemap Explorer automates the same query in the popup.

Major releases of rxjs

When each major version first landed. Major bumps are where breaking changes live, so this timeline is the fastest way to date the rxjs version a site actually ships against the ecosystem.

Major
First release
Date
v7
7.0.0
2021-04-29
v6
6.0.0
2018-04-24
v5
5.0.0
2016-12-13

Recent versions

Version
Released
7.8.2
2025-02-22
7.8.1
2023-04-26
7.8.0
2022-12-15
7.7.0
2022-12-15
7.6.0
2022-12-03
7.5.7
2022-09-25
7.5.6
2022-07-11
7.5.5
2022-03-08

rxjs README

Live mirror of the GitHub README, for reference. Updated whenever the repo's default branch changes.

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

PackagePurposeDocumentation
rxjsSymbol extensions and intentional RxJS primitivesPackage guide · API · RxJS 7 migration
@rxjs/observable-polyfillConditional platform Observable fallbackPackage guide
@rxjs/testImplementation-neutral virtual-time and marble testingPackage guide
@rxjs/migrateDeterministic migration engine and canonical agent SkillPackage 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

FAQ

What is rxjs used for?

Reactive Extensions for modern JavaScript

How can I tell if a website is using rxjs?

Open the page in Chrome with the Sourcemap Explorer extension installed and read the Stack tab. We catch `rxjs` from two complementary signals: `node_modules/rxjs/` paths inside the JavaScript sourcemap, and the embedded `package.json` we read for exact-version detection. Without the extension you can do the same lookup manually in DevTools — the steps are listed in the "How Sourcemap Explorer detects" section above.

How do I find out which version of rxjs a website is running?

Read it straight from the site's JavaScript sourcemap. When a build ships source maps, the bundled `rxjs/package.json` carries the exact `version` string — Sourcemap Explorer extracts it in one click on the Stack tab, and you can do it by hand in DevTools by opening the `.map` file and searching for `node_modules/rxjs/package.json`. That is far more reliable than inferring the version from an asset-hash or a `?ver=` query string, which is all surface-level detectors have to go on. The current npm release is 7.8.2, but real deployments frequently run an older pinned version — which is exactly why reading the bundled number matters.

What is the latest version of rxjs?

7.8.2, as published on the npm registry. The "Recent versions" table on this page lists the most recent 8 releases with their release dates. Sourcemap Explorer reports the version actually bundled into a site, which can lag the latest release by months on real-world deployments.

Is rxjs actively maintained?

Maintained but slow-moving — releases come every several months rather than weekly. The last published release was 2025-02-22. Source code: https://github.com/reactivex/rxjs.

Where can I read more?

Project homepage: https://rxjs.dev. Source code: https://github.com/reactivex/rxjs. Published on npm: https://www.npmjs.com/package/rxjs. Licensed as Apache-2.0.

Detected by Sourcemap Explorer

When a bundle ships sourcemaps, we read the embedded package.json for rxjs and report the precise version (the registry's latest is v7.8.2, published 2025-02-22; the bundled copy is often older). Without sourcemaps, an import / require in the page's scripts is enough to flag it.

Install free on Chrome