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
Copy link
Copy Markdown
Contributor

@RaschidJFR RaschidJFR commented Feb 19, 2026

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
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

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

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

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

Comment thread EXPERIMENTAL_FEATURES.md Outdated
Comment thread EXPERIMENTAL_FEATURES.md Outdated
Comment on lines +250 to +254
### Client-Side Encryption Features

**Status**: ⚠️ Experimental

**Description**: Advanced client-side encryption capabilities for enhanced data security.
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.

This makes it seem like all of CSFLE is experimental but its just the specific features listed below, maybe just lift up each feature to be a top-level section?

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

---

## Feature Descriptions
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.

IMO, these features should be ordered the same as the table above.

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"?

Comment thread EXPERIMENTAL_FEATURES.md

---

### AbortSignal Support
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.

Mention the introduced-in version somewhere in this section.

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants