# Unsupported RxJS 7 surfaces

This generated catalog records RxJS 7 public imports and behavioral protocols that RxJS Next does not preserve as compatibility APIs. It is migration guidance, not an emulation commitment. The source inventory is pinned to RxJS 7 `7.x` at `e5351d02e225e275ac0e497c7b66eaa5f0c88791`.

Regenerate it with `pnpm --filter rxjs run test:unit:unsupported:generate`; the corresponding `--check` gate rejects a stale document, a source-pin mismatch, missing required categories, or unclassified scheduler-bearing capabilities.

## Summary

| Measure              | Count |
| -------------------- | ----: |
| Catalog groups       |    27 |
| Named surfaces       |   147 |
| Manual Review groups |     5 |
| Replace groups       |    17 |
| Unsupported groups   |     5 |

## Dispositions

- **Replace:** a supported Next or platform destination exists, but its imports, types, or lifecycle may differ.
- **Manual review:** no mechanical rewrite is safe without reviewing cancellation, sharing, timing, or ownership.
- **Unsupported:** no accepted Next compatibility contract exists.
- **Test only:** any adapter is limited to evidence infrastructure and must not become an application migration.
- **Removed:** the surface has no replacement and should disappear.

## Imports and package paths

| RxJS 7 surface                                                                                                | Disposition   | Migration direction                                                                                                                                       | Why                                                                                                                | Decisions           |
| ------------------------------------------------------------------------------------------------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | ------------------- |
| `rxjs/operators`<br>`root-imported operator functions`<br>`source.pipe(...)`                                  | Replace       | Import exact Symbols from rxjs/<capability> and invoke source[symbol](...). Use rxjs/pipe only for deliberate Symbol composition.                         | RxJS Next does not publish the RxJS 7 pipeable-function or string-named .pipe surface.                             | D-003, D-039, D-050 |
| `rxjs:Observable`<br>`rxjs:Subscriber`                                                                        | Replace       | Use the active realm's ambient Observable and Subscriber after @rxjs/observable-polyfill initialization when needed.                                      | The platform owns these constructors; the rxjs root does not re-export compatibility classes for them.             | D-039, D-040, D-041 |
| `rxjs/testing`<br>`TestScheduler`<br>`VirtualTimeScheduler`<br>`VirtualAction`                                | Replace       | Use @rxjs/test rxTest() and its explicit cold(), hot(), observable(), virtual host-time, and assertion helpers.                                           | The public scheduler classes and manual TestScheduler mode are not part of the Next runtime or test contract.      | D-012, D-033, D-039 |
| `rxjs/ajax`<br>`rxjs/fetch`<br>`rxjs/webSocket`<br>`ajax`<br>`fromFetch`<br>`webSocket`<br>`WebSocketSubject` | Manual Review | Use platform fetch, XMLHttpRequest, WebSocket, EventTarget.when, or an application adapter selected for the required cancellation and sharing contract.   | RxJS Next does not currently publish the RxJS 7 DOM specialty packages or their wrapper types.                     | D-039, D-040        |
| `rxjs/internal/*`<br>`rxjs/src/*`<br>`unexported package paths`                                               | Unsupported   | Replace with an accepted public Next subpath or application-owned code after semantic review.                                                             | RxJS 7 internals are not preserved as public package contracts and must not be revived to satisfy migration tests. | D-039, D-040        |
| `bindCallback`<br>`bindNodeCallback`<br>`scheduled`<br>`using`<br>`isObservable`                              | Manual Review | Wrap callback or resource ownership explicitly with Observable and AbortSignal; use platform conversion or capability-specific mappings where applicable. | No accepted public Next function preserves these RxJS 7 imports and complete overload contracts.                   | D-039, D-040, D-049 |
| `ObjectUnsubscribedError`<br>`UnsubscriptionError`                                                            | Unsupported   | Use platform error and AbortSignal reason handling or an application-owned aggregate error contract.                                                      | These errors belong to removed RxJS 7 Subscription and closed-Subject internals.                                   | D-039, D-040        |

## Types

| RxJS 7 surface                                                                                                                                                                                                                                 | Disposition | Migration direction                                                                                                                                  | Why                                                                                                                                  | Decisions           |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------- |
| `UnaryFunction`<br>`OperatorFunction`<br>`MonoTypeOperatorFunction`                                                                                                                                                                            | Replace     | Use ordinary typed functions with exact Symbol invocation or rxjs/pipe composition.                                                                  | RxJS Next does not publish the pipeable-operator type family.                                                                        | D-039, D-050        |
| `Subscription`<br>`SubscriptionLike`<br>`Unsubscribable`<br>`TeardownLogic`                                                                                                                                                                    | Replace     | Use AbortController, AbortSignal, SubscribeOptions, and Subscriber.addTeardown inside producers.                                                     | subscribe() returns undefined and cancellation is signal-owned; no Subscription facade is published.                                 | D-039, D-041, D-049 |
| `ObservableInput`<br>`ObservableLike`<br>`InteropObservable`<br>`Subscribable`<br>`SubscribableOrPromise`<br>`ReadableStreamLike`                                                                                                              | Replace     | Use the ambient ObservableValue/platform Observable.from input contract and review custom inputs manually.                                           | The platform conversion boundary deliberately excludes arbitrary subscribables and legacy observable interop.                        | D-039, D-049        |
| `NextObserver`<br>`ErrorObserver`<br>`CompletionObserver`<br>`PartialObserver`<br>`SubjectLike`<br>`Connectable`                                                                                                                               | Replace     | Use ambient Observer/Subscriber shapes or the concrete intentional Subject/connectable APIs; define application protocols locally when needed.       | These RxJS 7 helper interfaces are not a public Next import family.                                                                  | D-035, D-039, D-040 |
| `SchedulerLike`<br>`SchedulerAction`<br>`TimestampProvider`                                                                                                                                                                                    | Replace     | Use host timing APIs, Date.now-compatible narrow providers where explicitly documented, and @rxjs/test virtual host time.                            | There is no general public scheduler abstraction in RxJS Next.                                                                       | D-012, D-033, D-039 |
| `FactoryOrValue`<br>`ObservedValueOf`<br>`ObservedValueUnionFromArray`<br>`ObservedValuesFromArray`<br>`ObservedValueTupleFromArray`<br>`ObservableInputTuple`<br>`Cons`<br>`Head`<br>`Tail`<br>`ValueFromArray`<br>`Falsy`<br>`TruthyTypesOf` | Unsupported | Use inference from the accepted Next API or application-owned utility types; do not deep-import RxJS internals.                                      | These RxJS 7 implementation-facing inference helpers are not stable Next public types.                                               | D-039, D-040        |
| `GroupedObservable`<br>`Timestamp`<br>`TimeInterval`                                                                                                                                                                                           | Replace     | Use the structural keyed group view, structural timestamp result, or TimeInterval exported by the exact rxjs/time-interval capability as applicable. | The RxJS 7 root type imports are not preserved even where a capability exposes an intentional structural or subpath-specific result. | D-003, D-039, D-040 |

## Schedulers and scheduler overloads

| RxJS 7 surface                                                                                                                                                                                                                                                                                                                                                                                                                                       | Disposition   | Migration direction                                                                                                                                   | Why                                                                                                                                          | Decisions                  |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- |
| `asap`<br>`asapScheduler`<br>`async`<br>`asyncScheduler`<br>`queue`<br>`queueScheduler`<br>`animationFrame`<br>`animationFrameScheduler`<br>`Scheduler`<br>`VirtualTimeScheduler`<br>`VirtualAction`                                                                                                                                                                                                                                                 | Replace       | Use virtualizable host timing and task APIs; use @rxjs/test for deterministic tests.                                                                  | RxJS Next does not publish scheduler instances or scheduler classes.                                                                         | D-012, D-033, D-039        |
| `animationFrames`<br>`auditTime`<br>`bufferTime`<br>`concat`<br>`debounceTime`<br>`delay`<br>`empty`<br>`endWith`<br>`expand`<br>`from`<br>`generate`<br>`groupBy`<br>`interval`<br>`observeOn`<br>`pairs`<br>`publishReplay`<br>`range`<br>`sampleTime`<br>`scheduled`<br>`shareReplay`<br>`startWith`<br>`subscribeOn`<br>`throwError`<br>`throttleTime`<br>`timeInterval`<br>`timeout`<br>`timeoutWith`<br>`timer`<br>`timestamp`<br>`windowTime` | Manual Review | Remove only an explicitly classified scheduler overload and verify ordering with host-time behavior; otherwise retain the source and stop automation. | Current capabilities use host scheduling or narrow clock providers, and the port harness adapter is not a production SchedulerLike contract. | D-012, D-033, D-034, D-039 |

## Interop protocols

| RxJS 7 surface                                                                                                                  | Disposition   | Migration direction                                                                                                                | Why                                                                                                  | Decisions           |
| ------------------------------------------------------------------------------------------------------------------------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------- |
| `observable`<br>`Symbol.observable`<br>`@@observable`<br>`InteropObservable`                                                    | Unsupported   | Expose a platform-supported ObservableValue category or wrap the source explicitly in the active realm.                            | Legacy observable interop is outside the accepted platform Observable.from contract.                 | D-039, D-049        |
| `objects with subscribe()`<br>`lowerCaseO`<br>`asInteropObservable`<br>`custom Subscribable`                                    | Manual Review | Write an explicit application adapter that owns cancellation and terminal behavior, or choose a supported platform input category. | The 15 executable compatibility-only failures deliberately preserve this unsupported input boundary. | D-039, D-049        |
| `foreign-realm Observable`<br>`cross-window Observable`<br>`cross-worker Observable`<br>`borrowed symbols on unrelated objects` | Unsupported   | Initialize each realm independently and bridge values through an explicit application protocol.                                    | RxJS does not traverse realms or promise generic Symbol borrowing onto unrelated receivers.          | D-041, D-048, D-049 |
| `Observable.lift`<br>`source/operator fields`<br>`custom Operator`                                                              | Replace       | Use exact Symbol composition and the versioned derived-construction protocol through supported public capabilities.                | The RxJS 7 lift/source/operator protocol is removed and is not a public Next subclass hook.          | D-037, D-039, D-049 |

## Deprecated and removed aliases

| RxJS 7 surface                                                                                                                    | Disposition   | Migration direction                                                                                                                                                              | Why                                                                                                                         | Decisions           |
| --------------------------------------------------------------------------------------------------------------------------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------- |
| `combineAll`<br>`exhaust`<br>`flatMap`<br>`pipeable partition`                                                                    | Replace       | Use combineLatestAll, exhaustMap(identity), mergeMap, or Observable[partition] respectively.                                                                                     | The deprecated RxJS 7 names are not public Next Symbol identities; migration uses their canonical accepted mappings.        | D-003, D-039, D-049 |
| `empty()`<br>`never()`                                                                                                            | Replace       | Use EMPTY and NEVER.                                                                                                                                                             | The deprecated creation functions are not retained as callable Next aliases.                                                | D-039, D-040        |
| `mapTo`<br>`concatMapTo`<br>`mergeMapTo`<br>`switchMapTo`<br>`pluck`                                                              | Replace       | Use map with a constant or property projection, or the corresponding canonical flattening Symbol with an explicit projection.                                                    | Migration may preserve behavior through exact mappings, but the deprecated pipeable function/import shape is not supported. | D-003, D-039        |
| `pipeable combineLatest`<br>`pipeable concat`<br>`pipeable merge`<br>`pipeable race`<br>`pipeable zip`<br>`onErrorResumeNextWith` | Replace       | Use the accepted unified or With-form exact Symbol and its documented source-array/result-selector mapping.                                                                      | Legacy pipeable aliases are migration inputs, not preserved function exports.                                               | D-003, D-039, D-049 |
| `multicast`<br>`publish`<br>`publishBehavior`<br>`publishLast`<br>`publishReplay`<br>`refCount`                                   | Manual Review | Prefer share, shareReplay, connect, or connectable with an explicit connector/reset contract; exact legacy-named Symbols remain migration evidence, not a compatibility promise. | Producer sharing, replay, reset, and ref-count semantics require explicit lifecycle review.                                 | D-035, D-039, D-049 |
| `new BehaviorSubject(value)`<br>`new ReplaySubject(size, windowTime, scheduler)`<br>`ColdSubject`                                 | Replace       | Use behaviorSubject(value), replaySubject({ size, maxAge }), or the advanced PerSubscriptionSubjectBase only for a justified custom hot Subject.                                 | D-050 stabilizes lowercase factories and removes the misleading ColdSubject name without aliases.                           | D-035, D-036, D-050 |
| `eachValueFrom`<br>`bufferedValuesFrom`                                                                                           | Replace       | Use one of iterateEachValue, iterateBufferedValues, iterateLatestValue, or iterateNextValue from its exact Symbol subpath.                                                       | The exploratory standalone helpers were removed so buffering and dropping policy stays explicit.                            | D-038, D-039        |

## Review rule

A migration tool may automate only a cataloged **replace** mapping whose target capability and contract are also present in the migration evidence ledger. It must stop with a structured diagnostic for **manual review**, **unsupported**, **test only**, or **removed** entries. Adding a compatibility runtime, scheduler abstraction, import alias, interop protocol, or deep-import bridge requires a new accepted architecture decision.
