Open
Description
NOTE (10/28/2024): RxJS 8 is on hold while observable is being standardized for the web platform. RxJS 8 should match the web platform as much as possible and support it directly. 7.0 is stable, running well, and overall solid.
This issue is outlining what needs to be done in version 7 before we can move to version 8 in earnest.
- Once ALL items in version 7 are complete, we can consider moving the
8.x
branch tomaster, and create a
7.x` branch. - Once ALL items in version 8 are finalized and implemented, we can move from
8.x.x-alpha
to8.x.x-beta
.
In Version 7
-
groupBy
config (feat(groupBy): Support named arguments, support ObservableInputs for duration selector #5679) -
share
observable resets (feat(share): use another observable to control resets #6169) -
(Deprecate partition, add splitBy method that multicasts the source sequence #3807)splitBy
- Add all exports to top level
- More configurable
retry
(feat(retry): Add configurable delay #6421) - More configurable
repeat
(feat(repeat): now has configurable delay #6640) - Deprecate
MapTo
variants (DeprecatingMapTo
variants. #6399, PR: chore: deprecate MapTo variants #6860) - Deprecate
retryWhen
/repeatWhen
? (Deprecate retryWhen and repeatWhen #6859) - Deprecate
onErrorResumeNext
operator in favor ofonErrorResumeNextWith
(feat(onErrorResumeNextWith): renamedonErrorResumeNext
and exported from the top level #6755) - Various selectors/arguments should support
ObservableInput
-
delayWhen
'snotifier
(feat(delayWhen):delayWhen
'sdelayDurationSelector
should supportObservableInput
#7049), -
buffer
'sclosingNotifier
(feat(buffer): closingNotifier should support ObservableInput #7073), -
distinct
'sflushes
(feat(distinct):flush
supportsObservableInput
#7081), -
repeatWhen
'snotifier
(feat(repeatWhen):notifier
supportsObservableInput
#7103), -
sample
'snotifier
(feat(sample):notifier
supportsObservableInput
#7104), -
retryWhen
'snotifier
(feat(retryWhen):notifier
supportsObservableInput
#7105), -
sequenceEqual
'scompareTo
(feat(sequenceEqual): compareTo should support ObservableInput #7102), -
ShareConfig
'sresetOnError
,resetOnComplete
andresetOnRefCountZero
(feat(share): ShareConfig factory properties should support ObservableInput #7093), -
skipUntil
'snotifier
(feat(skipUntil): notifier should support ObservableInput #7091) and -
window
'swindowBoundaries
(feat(window): windowBoundaries should support ObservableInput #7088)
-
Before Version 8 is released
- Remove all deprecated APIs marked to be removed in v8 or marked deprecated ages ago.
- Remove
source
parameters from predicates. (Deprecating these via the type system effects problems - see chore: deprecate thisArg signatures #6361.) - Ensure we're publishing only ES2021 or later and CJS. Drop tslib. (ESM version is never used #6321)
- Drop all Internet Explorer support into a pit of flames! 🔥 IE 🔥 🥳
- Idempotent subscription add (feat(Subscription): idempotent add and remove of teardowns #6401)
- Replace all external uses of
any
withunknown
. (This could likely be non-breaking, FWIW.) - productize our internals for creating operators (Productize operator creation internals #6803)
- Implement
[Symbol.asyncIterator]()
onObservable
(TBD. We should try this out in an alpha, at least. Issue: Implement Symbol.asyncIterator on Observable #6857) - Convert repo to monorepo (Monorepo and Splitting Out To Different Packages #6786)
- Docs app can be a separate project under monorepo
- Operator Decision Tree can also likely be its own project under monorepo
- Keep
rxjs
as "whole package". (It's not going away, ever, really) - Publish
@rxjs/observable
with justObservable
. - Publish
@rxjs/ajax
- Publish
@rxjs/fetch
- Publish
@rxjs/testing
- Decide on how we'll do other packages: Current thoughts are that we could publish a package for each operator, even. Subjects and multicasting might be trickier, but maybe not. Maybe individual packages is right for all. Needs discussion.
- ??? TBD
During Version 8
- Create new schedulers and deprecate old schedulers.
- Implement
Symbol.asyncIterator
on observable. (Implement Symbol.asyncIterator on Observable #6779)