Skip to content

docs(NODE-7396): document experimental features#4873

Open
RaschidJFR wants to merge 12 commits into
mongodb:mainfrom
RaschidJFR:NODE-7396/experimental_feature_report
Open

docs(NODE-7396): document experimental features#4873
RaschidJFR wants to merge 12 commits into
mongodb:mainfrom
RaschidJFR:NODE-7396/experimental_feature_report

Conversation

@RaschidJFR

@RaschidJFR RaschidJFR commented Feb 19, 2026

Copy link
Copy Markdown
Contributor

Description

Closes NODE-7396

Summary of Changes

Adds EXPERIMENTAL_FEATURES.md documenting all 31 experimental annotations in the driver (v7.1.0). Includes descriptions, code examples, and source links for each experimental feature.

Notes for Reviewers

Need a hand reviewing the accuracy of the content added.

Release Highlight

Release notes highlight

Added EXPERIMENTAL_FEATURES.md providing comprehensive documentation of all experimental features in the driver, including usage examples and stability notes.

Double check the following

  • Lint is passing (npm run check:lint)
  • Self-review completed using the steps outlined here
  • PR title follows the correct format: type(NODE-xxxx)[!]: description
    • Example: feat(NODE-1234)!: rewriting everything in coffeescript
  • Changes are covered by tests
  • New TODOs have a related JIRA ticket

@RaschidJFR RaschidJFR requested a review from a team as a code owner February 19, 2026 23:56
Copilot AI review requested due to automatic review settings February 19, 2026 23:56

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds comprehensive documentation for all experimental features in the MongoDB Node.js Driver v7.1.0. The documentation catalogues 31 experimental annotations across 9 major feature categories, providing developers with a single reference point for understanding which APIs may undergo breaking changes in future releases.

Changes:

  • Added EXPERIMENTAL_FEATURES.md documenting all experimental features with descriptions, code examples, source file references, and stability notes
  • Organized features into logical categories including resource management, timeouts, encryption, and strict TypeScript types
  • Included practical usage examples and warnings about production readiness for each experimental feature

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread EXPERIMENTAL_FEATURES.md Outdated
@RaschidJFR RaschidJFR marked this pull request as draft February 20, 2026 13:58
@RaschidJFR RaschidJFR force-pushed the NODE-7396/experimental_feature_report branch from 041a977 to e9ec56a Compare May 12, 2026 19:24
@RaschidJFR RaschidJFR marked this pull request as ready for review May 12, 2026 19:29
Comment thread EXPERIMENTAL_FEATURES.md Outdated
Comment on lines +26 to +28
### Explicit Resource Management

**Status**: ⚠️ Experimental (until TC39 proposal completion)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The proposal is complete for Explicit Resource Management 🎉

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copleted? I see the proposal is in Stage 3:
https://github.com/tc39/proposal-explicit-resource-management

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure where on that page I see anything saying the current stage.

But it's listed here in finished proposals!
https://github.com/tc39/proposals/blob/main/finished-proposals.md

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The proposal is finished indeed. Should we say then "Experimental until native await using is available on all supported Node.js versions."

Comment thread EXPERIMENTAL_FEATURES.md Outdated
Comment thread EXPERIMENTAL_FEATURES.md Outdated
Comment thread EXPERIMENTAL_FEATURES.md Outdated

### Timeout Management

**Status**: ⚠️ Experimental

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All statuses are experimental and things that are no longer experiment will be removed from this document right? so maybe this is redundant but I think a good replacement would be a **Path To Stable**: ... section

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That would be very useful. I don't know if we have an explicit path-to-stable for every feature tho.

Comment thread EXPERIMENTAL_FEATURES.md Outdated
Comment thread EXPERIMENTAL_FEATURES.md Outdated
Comment on lines +170 to +171
#### `StrictMatchKeysAndValues<TSchema>`
**Source**: [src/mongo_types.ts](https://github.com/mongodb/node-mongodb-native/blob/v7.2.0/src/mongo_types.ts)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this important to elevate to its own section? it's unlikely users would interact with this type directly

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They are still experimental and public. I think they should be documented under the Typescript Types section.

Comment thread EXPERIMENTAL_FEATURES.md Outdated
Comment thread EXPERIMENTAL_FEATURES.md Outdated
Comment thread EXPERIMENTAL_FEATURES.md Outdated
Comment thread README.md Outdated
Comment thread EXPERIMENTAL_FEATURES.md
Comment thread EXPERIMENTAL_FEATURES.md
| [Timeout Management](#timeout-management) | Control operation timeouts with `timeoutMS` | v6.6.0 |
| [Client-Side Encryption Key Management](#client-side-encryption-key-management) | Custom key material and rewrap APIs | v6.0.0 |
| [Strict TypeScript Types](#strict-typescript-types) | Enhanced type safety for filters and updates | v5.0.0 |
| [Encrypted Fields](#encrypted-fields) | Schema for encrypted collections | v4.6.0 |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some of these features have been experimental for a while. It would be nice to explain what's happening with some of these "older" features: will we remove the experimental label? If so, when? And how do we pick which features will be experimental vs "core"?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@RaschidJFR , can we expand a bit on the policies around the experimental label? Or link to our existing docs, if this is covered elsewhere?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree. nbbeeken@ pointed that out as well. Most of the features were there before me; Glean and I could not find any info. I'll defer to @dariakp @nbbeeken in case they have any.

Comment thread EXPERIMENTAL_FEATURES.md
Comment thread EXPERIMENTAL_FEATURES.md
Comment thread EXPERIMENTAL_FEATURES.md Outdated
@RaschidJFR RaschidJFR requested a review from dariakp May 28, 2026 22:38
@tadjik1 tadjik1 requested review from PavelSafronov and nbbeeken and removed request for dariakp May 29, 2026 14:58
@dariakp dariakp added the Team Review Needs review from team label Jun 18, 2026
@dariakp dariakp self-assigned this Jun 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Team Review Needs review from team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants