microsoft/FluidFramework client_v2.90.0
microsoft/FluidFramework
Captured source
source ↗Fluid Framework v2.90.0 (minor)
Repository: microsoft/FluidFramework
Tag: client_v2.90.0
Published: 2026-03-03T04:02:57Z
Prerelease: no
Release notes:
Contents
- [🚨 Breaking Changes](#user-content--breaking-changes)
- [@fluidframework/react no longer supports CommonJS (#26575)](#user-content-fluidframeworkreact-no-longer-supports-commonjs-26575)
- [🌳 SharedTree DDS Changes](#user-content--sharedtree-dds-changes)
- [Promote checkSchemaCompatibilitySnapshots to beta (#26346)](#user-content-promote-checkschemacompatibilitysnapshots-to-beta-26346)
- [Added new TreeAlpha.context(node) API (#26432)](#user-content-added-new-treealphacontextnode-api-26432)
- [Add alpha TextAsTree domain for collaboratively editable text (#26568)](#user-content-add-alpha-textastree-domain-for-collaboratively-editable-text-26568)
- [⚠️ Deprecations](#user-content-️-deprecations)
- [Deprecated DDS implementation classes (#26501)](#user-content-deprecated-dds-implementation-classes-26501)
🚨 Breaking Changes
@fluidframework/react no longer supports CommonJS (#26575)
CommonJS support has been removed from @fluidframework/react. This package currently only has alpha APIs, so this opportunity was taken to simplify and modernize it while we still can.
Change details
Commit: `995c1e4`
Affected packages:
- @fluidframework/react
[⬆️ Table of contents](#user-content-contents)
🌳 SharedTree DDS Changes
Promote checkSchemaCompatibilitySnapshots to beta (#26346)
`checkSchemaCompatibilitySnapshots` has been promoted to @beta. It is recommended that all SharedTree applications use this API to write schema compatibility tests.
Usage should look something like:
import fs from "node:fs";
import path from "node:path";
import { snapshotSchemaCompatibility } from "@fluidframework/tree/beta";
// The TreeViewConfiguration the application uses, which contains the application's schema.
import { treeViewConfiguration } from "./schema.js";
// The next version of the application which will be released.
import { packageVersion } from "./version.js";
// Provide some way to run the check in "update" mode when updating snapshots is intended.
const regenerateSnapshots = process.argv.includes("--snapshot");
// Setup the actual test. In this case using Mocha syntax.
describe("schema", () => {
it("schema compatibility", () => {
// Select a path to save the snapshots in.
// This will depend on how your application organizes its test data.
const snapshotDirectory = path.join(
import.meta.dirname,
"../../../src/test/snapshotCompatibilityCheckerExample/schema-snapshots",
);
snapshotSchemaCompatibility({
snapshotDirectory,
fileSystem: { ...fs, ...path },
version: packageVersion,
minVersionForCollaboration: "2.0.0",
schema: treeViewConfiguration,
mode: regenerateSnapshots ? "update" : "assert",
});
});
});Change details
Commit: `cb22046`
Affected packages:
- fluid-framework
- @fluidframework/tree
[⬆️ Table of contents](#user-content-contents)
Added new TreeAlpha.context(node) API (#26432)
This release introduces a node-scoped context that works for both hydrated and unhydrated TreeNodes. The new TreeContextAlpha interface exposes runTransaction / runTransactionAsync methods and an isBranch() type guard. TreeBranchAlpha now extends TreeContextAlpha, so you can keep using branch APIs when available.
Migration
If you previously used TreeAlpha.branch(node) to discover a branch, switch to TreeAlpha.context(node) and check isBranch():
import { TreeAlpha } from "@fluidframework/tree/alpha";
const context = TreeAlpha.context(node);
if (context.isBranch()) {
// Same branch APIs as before
context.fork();
}TreeAlpha.branch(node) is now deprecated. Prefer the context API above.
New transaction entry point
You can now run transactions from a node context, regardless of whether the node is hydrated:
// A synchronous transaction without a return value
const context = TreeAlpha.context(node);
context.runTransaction(() => {
node.count += 1;
});// An asynchronous transaction with a return value
const context = TreeAlpha.context(node);
const result = await context.runTransactionAsync(async () => {
await doWork(node);
return { value: node.foo };
});Change details
Commit: `ffa62f4`
Affected packages:
- @fluidframework/tree
- fluid-framework
[⬆️ Table of contents](#user-content-contents)
Add alpha TextAsTree domain for collaboratively editable text (#26568)
A newly exported TextAsTree alpha namespace has been added with an initial version of collaboratively editable text. Users of SharedTree can add TextAsTree.Tree nodes to their tree to experiment with it.
Change details
Commit: `06736bd`
Affected packages:
- fluid-framework
- @fluidframework/tree
[⬆️ Table of contents](#user-content-contents)
⚠️ Deprecations
Deprecated DDS implementation classes (#26501)
The following DDS implementation classes are now deprecated and will be removed in a future release:
ConsensusRegisterCollectionClass— useConsensusRegisterCollectionFactoryto create instances andIConsensusRegisterCollectionfor typingConsensusOrderedCollection— useIConsensusOrderedCollectionfor typingConsensusQueueClass— use theConsensusQueuesingleton to create instances andIConsensusOrderedCollectionfor typing
Change details
Commit: `583a96c`
Affected packages:
-...
Excerpt shown — open the source for the full document.