# What changed in react-rx

> 13 changes in react-rx 7 from its official release notes, upgrade guides and advisories: 7 breaking, 2 new APIs and options. Each one cited. Sources checked 2026-10-21. HTML: https://unstale.sh/npm/react-rx/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## react-rx 7

### Breaking changes

- A request that emits no value fails with EmptyError, and failures are never cached. (7.1.0) — [release notes](https://github.com/sanity-io/react-rx/releases/tag/react-rx%407.1.0)
- ObservablePromise no longer subclasses Promise; it wraps a plain promise, avoiding Hermes recursion and making derived promises plain Promise instances. instanceof Promise is now false. (7.0.1) — [release notes](https://github.com/sanity-io/react-rx/releases/tag/react-rx%407.0.1)
- useObservable and useSyncObservable no longer subscribe during render; subscriptions start when the component commits, and the resolved initialValue renders first. (7.0.0) — [release notes](https://github.com/sanity-io/react-rx/releases/tag/react-rx%407.0.0)
- The initialValue argument is now required; omitting it is a type error and throws a TypeError during render. (7.0.0) — [release notes](https://github.com/sanity-io/react-rx/releases/tag/react-rx%407.0.0)
- The hook is removed. Replace it with useObservableSubject and move its pipeline to where its output is consumed. (7.0.0) — [release notes](https://github.com/sanity-io/react-rx/releases/tag/react-rx%407.0.0)
- The hook no longer subscribes during a mounting render. Fetches start when a non-disabled consumer commits, when a live consumer swaps observable identity, or when preloadObservablePromise is called. (7.0.0) — [release notes](https://github.com/sanity-io/react-rx/releases/tag/react-rx%407.0.0)
- The initialValue argument is now required; omitting it is a type error and throws a TypeError during render. (7.0.0) — [release notes](https://github.com/sanity-io/react-rx/releases/tag/react-rx%407.0.0)

### New APIs and options

- Adds a method to forget every key in the observable cache at once. (7.1.0) — [release notes](https://github.com/sanity-io/react-rx/releases/tag/react-rx%407.1.0)
- Adds a keyed cache of shared observables for request-like sources, letting callers of a key share one request and its settled promise. (7.1.0) — [release notes](https://github.com/sanity-io/react-rx/releases/tag/react-rx%407.1.0)

### Behavior and default changes

- Releases a key ttl after its last subscriber leaves; the same ttl applies to abandoned requests and entries that were never subscribed to. (7.1.0) — [release notes](https://github.com/sanity-io/react-rx/releases/tag/react-rx%407.1.0)
- The cached observable ends at its first value, stays open, and truncates later emissions or errors; use first() or firstValueFrom rather than waiting for completion. (7.1.0) — [release notes](https://github.com/sanity-io/react-rx/releases/tag/react-rx%407.1.0)
- Setting disabled to true now guarantees zero subscriptions. (7.0.0) — [release notes](https://github.com/sanity-io/react-rx/releases/tag/react-rx%407.0.0)
- On the server, this function is a no-op that returns an inert pending promise and neither subscribes nor touches the cache. (7.0.0) — [release notes](https://github.com/sanity-io/react-rx/releases/tag/react-rx%407.0.0)
