CodeVetter
← All unpacks
CodeVetter · Repo Unpack evidence

ReactiveX/rxjs

Scanned commit 54796b38a5 dated 2026-08-05 — last upstream commit. Generated by codevetter 1.15.0 on 2026-10-02.

github.com/ReactiveX/rxjs ↗ · 1360 files · 10.6 MB

RxJS RxJS is a library for composing asynchronous and event-based programs with Observable values.

Deep analysis by cli:codex via the codex CLI on 2026-10-02 (344s) — every claim below links to its cited source files. Source inspection; upstream code and tests were not executed.

Overview

RxJS Next is the platform-based RxJS 9 prerelease foundation for developers composing asynchronous and event-driven programs. It preserves an existing realm Observable, supplies a conditional fallback, and installs reactive capabilities through imported Symbols, with explicit producer-per-subscription APIs where needed. The monorepo also contains virtual-time testing, bounded RxJS 7 migration tooling, release qualification infrastructure, and a separately maintained Angular documentation application.

System map

The runtime centers on the active realm's Observable rather than an RxJS-owned replacement constructor. Four versioned packages separate fallback acquisition, reactive extensions, testing, and migration. The documentation application remains on an older Angular/RxJS stack, while package distribution and publication follow an ESM and local-release model.

Feature catalog

The inspected public surface covers Observable conversion and cancellation, Symbol operators, mutable producers, replay, and async consumption. Testing and migration are separate developer-facing products with explicit lifecycle choices. The legacy site provides documentation rendering, search, and lazy embedded components; this catalog is bounded rather than an exhaustive API enumeration.

Data flow

Runtime values enter through producer callbacks or platform conversion and move through derived Subscribers. AbortSignals carry ownership upstream, while construction hooks preserve the selected lifecycle. Tooling transforms source into planned file outputs, and the documentation app moves generated JSON through caches, worker indexing, and DOM rendering.

Behavior traces

The source investigation followed initialization, operator execution, cancellation, and migration output end-to-end. Additional traces cover independent producers, virtual-time cleanup, document rendering, and worker search. These are source-derived execution orders, not recorded runtime executions.

Testing signals

Tests and CI were inspected, not executed; no passing result is asserted by this report. Evidence spans Vitest source tests, classified ported suites, Node package/tooling checks, browser contracts, and pinned WPT. The inspected coverage is bounded, and the legacy site's tests and native-mode fallback behavior require separate interpretation.

Risk map

These risks are source observations or explicitly labeled hypotheses, not confirmed vulnerabilities. The broadest runtime effects come from realm patching, construction policy, and unbounded buffering. Security-sensitive tooling includes file writes, npm publication, privileged rebasing, and documentation HTML ingestion; static inspection also found a stale scheduled test command.

Extension points

The central extension mechanism is an imported exact Symbol plus ambient TypeScript augmentation. A shared construction protocol supports subclasses and compatible duplicate installations, while connector factories customize stateful operators. Migration registries/adapters and the documentation element registry provide separate tooling and UI seams.

Contributor handoff

Future work should start from the project charter and accepted decisions, then follow the smallest relevant runtime or tooling boundary. Tests and CI were inspected, not executed, and this bounded inventory does not prove exhaustive coverage or current gate success. The active plan, lifecycle distinctions, and source-pinned migration evidence are essential safeguards against reintroducing legacy assumptions.

Languages

LanguageFilesShare of source
TypeScript77172%
JavaScript24923%
Markdown97docs/config
JSON77docs/config
Sass505%
HTML47docs/config
YAML18docs/config
Shell40%

Start reading here

Probable source entrypoint: packages/ — inferred from the directory tree and manifest, not the upstream docs.

Source roots

packages/ (795 files)

Source layout — packages/

PathFiles
packages/migrate/108
packages/observable-polyfill/78
packages/rxjs/46
packages/test/22

Repository structure

Top-level pathFiles
packages/795
apps/483
scripts/21
.github/17
docs/14
.agents/8
resources/5
patches/1

Docs found: AGENTS.mdCONTRIBUTING.mdREADME.mddocs/RELEASE_PROCESS.mddocs/rxjs-next/ARCHITECTURE.mddocs/rxjs-next/COMPATIBILITY.mddocs/rxjs-next/DECISIONS.mddocs/rxjs-next/MIGRATION_SKILL_GUIDE.mddocs/rxjs-next/OPEN_QUESTIONS.mddocs/rxjs-next/PROJECT_CHARTER.md

Package

package.json — , 19 declared dependencies.

@nx/eslint-plugin@nx/js@playwright/test@typescript-eslint/eslint-plugin@typescript-eslint/parsercz-conventional-changelogesbuildeslintfast-checkhuskylint-stagednx

CI & config entrypoints

Structural health signals

Average score 8/10 across 96 analyzed source files; 11 hotspots surfaced.

These are deterministic review leads — size, churn, and structural signals — not proof of a bug in this project.

Recent history