ReactiveX / ReactiveX/rxjs

Version 7 -> 8 Roadmap

Open
#6,367 20 comments 295 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

7.x 8.x AGENDA ITEM
Dominant language
TypeScript
Stars
31.7k
Forks
3k
PR merge metrics
No merged PRs in 30d

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.

  1. Once ALL items in version 7 are complete, we can consider moving the 8.x branch to master, and create a 7.x` branch.
  2. Once ALL items in version 8 are finalized and implemented, we can move from 8.x.x-alpha to 8.x.x-beta.
In Version 7
  • groupBy config (#5679)
  • share observable resets (#6169)
  • splitBy (#3807)
  • Add all exports to top level
  • More configurable retry (#6421)
  • More configurable repeat (#6640)
  • Deprecate MapTo variants (#6399, PR: #6860)
  • Deprecate retryWhen/repeatWhen? (#6859)
  • Deprecate onErrorResumeNext operator in favor of onErrorResumeNextWith (#6755)
  • Various selectors/arguments should support ObservableInput
    • delayWhen's notifier (#7049),
    • buffer's closingNotifier (#7073),
    • distinct's flushes (#7081),
    • repeatWhen's notifier (#7103),
    • sample's notifier (#7104),
    • retryWhen's notifier (#7105),
    • sequenceEqual's compareTo (#7102),
    • ShareConfig's resetOnError, resetOnComplete and resetOnRefCountZero (#7093),
    • skipUntil's notifier (#7091) and
    • window's windowBoundaries (#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 #6361.)
  • Ensure we're publishing only ES2021 or later and CJS. Drop tslib. (#6321)
  • Drop all Internet Explorer support into a pit of flames! 🔥 IE 🔥 🥳
  • Idempotent subscription add (#6401)
  • Replace all external uses of any with unknown. (This could likely be non-breaking, FWIW.)
  • productize our internals for creating operators (#6803)
  • Implement [Symbol.asyncIterator]() on Observable (TBD. We should try this out in an alpha, at least. Issue: #6857)
  • Convert repo to monorepo (#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 just Observable.
    • 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

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Begin with the unchecked items in this issue and the referenced issues, including #6361, #6857, and #6786; no source files or tests are named. Clarify which Version 8 milestone and checklist item to take on, then use completion of that item as the definition of done.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
release
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.