# Extension points — ReactiveX/rxjs

> Canonical page: https://codevetter.com/unpack/rxjs/extension-points

# Extension points — ReactiveX/rxjs

Scanned commit 54796b38a57e6309f9861e174737479bb3f63f61 (2026-08-05). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

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.
- A capability module exports a unique Symbol, augments Observable<T>, implements the operator, and assigns its function to Observable.prototype under that Symbol. — [packages/rxjs/src/map.ts#L4-L26](https://github.com/ReactiveX/rxjs/blob/54796b38a57e6309f9861e174737479bb3f63f61/packages/rxjs/src/map.ts#L4-L26)
- The create protocol is registered as rxjs.kernel.create.v1, installed on constructor and prototype, accepts an existing callable slot, and rejects an occupied noncallable slot. — [packages/rxjs/src/create.ts#L4-L26](https://github.com/ReactiveX/rxjs/blob/54796b38a57e6309f9861e174737479bb3f63f61/packages/rxjs/src/create.ts#L4-L26) [packages/rxjs/src/create.ts#L45-L58](https://github.com/ReactiveX/rxjs/blob/54796b38a57e6309f9861e174737479bb3f63f61/packages/rxjs/src/create.ts#L45-L58)
- Subclass construction is customized through an instance [create] override: ColdObservable returns ColdObservable, while Subject intentionally returns the selected platform base. — [packages/rxjs/src/cold-observable.ts#L114-L114](https://github.com/ReactiveX/rxjs/blob/54796b38a57e6309f9861e174737479bb3f63f61/packages/rxjs/src/cold-observable.ts#L114-L114) [packages/rxjs/src/subject.ts#L71-L76](https://github.com/ReactiveX/rxjs/blob/54796b38a57e6309f9861e174737479bb3f63f61/packages/rxjs/src/subject.ts#L71-L76)
- share accepts a connector factory and independent error, completion, and zero-refcount reset rules, including Observable-valued reset notifiers. — [packages/rxjs/src/share.ts#L7-L26](https://github.com/ReactiveX/rxjs/blob/54796b38a57e6309f9861e174737479bb3f63f61/packages/rxjs/src/share.ts#L7-L26) [packages/rxjs/src/share.ts#L55-L85](https://github.com/ReactiveX/rxjs/blob/54796b38a57e6309f9861e174737479bb3f63f61/packages/rxjs/src/share.ts#L55-L85)
- groupBy exposes key selection, element projection, duration Observables, and SubjectLike connector factories, with immutable key properties on group views. — [packages/rxjs/src/group-by.ts#L5-L13](https://github.com/ReactiveX/rxjs/blob/54796b38a57e6309f9861e174737479bb3f63f61/packages/rxjs/src/group-by.ts#L5-L13) [packages/rxjs/src/group-by.ts#L146-L152](https://github.com/ReactiveX/rxjs/blob/54796b38a57e6309f9861e174737479bb3f63f61/packages/rxjs/src/group-by.ts#L146-L152)
- Migration capability mappings encode legacy/Symbol names, modules, argument adapters, arity, preconditions, status, and fixture evidence; semantic rewriting schema-checks the registry and engine version. — [packages/migrate/src/capabilities.ts#L18-L29](https://github.com/ReactiveX/rxjs/blob/54796b38a57e6309f9861e174737479bb3f63f61/packages/migrate/src/capabilities.ts#L18-L29) [packages/migrate/src/capabilities.ts#L32-L54](https://github.com/ReactiveX/rxjs/blob/54796b38a57e6309f9861e174737479bb3f63f61/packages/migrate/src/capabilities.ts#L32-L54) [packages/migrate/src/semantics.ts#L24-L50](https://github.com/ReactiveX/rxjs/blob/54796b38a57e6309f9861e174737479bb3f63f61/packages/migrate/src/semantics.ts#L24-L50)
- Migration supports an optional frameworkAdapter after semantic rewriting and an OutputNamePolicy for planned filenames; these customize transformation and output without replacing batch planning. — [packages/migrate/src/index.ts#L64-L71](https://github.com/ReactiveX/rxjs/blob/54796b38a57e6309f9861e174737479bb3f63f61/packages/migrate/src/index.ts#L64-L71) [packages/migrate/src/node.ts#L6-L22](https://github.com/ReactiveX/rxjs/blob/54796b38a57e6309f9861e174737479bb3f63f61/packages/migrate/src/node.ts#L6-L22) [packages/migrate/src/node.ts#L94-L98](https://github.com/ReactiveX/rxjs/blob/54796b38a57e6309f9861e174737479bb3f63f61/packages/migrate/src/node.ts#L94-L98)
- The documentation site registers lazy embedded components through selector/loadChildren entries, materializes a callback Map, and exposes it through an Angular InjectionToken. — [apps/rxjs.dev/src/app/custom-elements/element-registry.ts#L7-L55](https://github.com/ReactiveX/rxjs/blob/54796b38a57e6309f9861e174737479bb3f63f61/apps/rxjs.dev/src/app/custom-elements/element-registry.ts#L7-L55) [apps/rxjs.dev/src/app/custom-elements/element-registry.ts#L75-L82](https://github.com/ReactiveX/rxjs/blob/54796b38a57e6309f9861e174737479bb3f63f61/apps/rxjs.dev/src/app/custom-elements/element-registry.ts#L75-L82)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
