ReleaseMicrosoftMicrosoftpublished Apr 16, 2026seen Jun 26

microsoft/FluidFramework client_v2.93.0

microsoft/FluidFramework

Open original ↗

Captured source

source ↗
published Apr 16, 2026seen Jun 26captured 6dhttp 200method plain

Fluid Framework v2.93.0 (minor)

Repository: microsoft/FluidFramework

Tag: client_v2.93.0

Published: 2026-04-16T00:14:36Z

Prerelease: no

Release notes:

Contents

  • [🚨 Breaking Changes](#user-content--breaking-changes)
  • [minVersionForCollab is now non-optional (#25331)](#user-content-minversionforcollab-is-now-non-optional-25331)
  • [✨ New Features](#user-content--new-features)
  • [Add Fluid-controlled map and iterator interfaces (#26788)](#user-content-add-fluid-controlled-map-and-iterator-interfaces-26788)
  • [presence API set now at public support level (#27001)](#user-content-presence-api-set-now-at-public-support-level-27001)
  • [Add SchemaFactoryAlpha.stagedOptional for incremental required-to-optional field migrations (#26918)](#user-content-add-schemafactoryalphastagedoptional-for-incremental-required-to-optional-field-migrations-26918)
  • [🌳 SharedTree DDS Changes](#user-content--sharedtree-dds-changes)
  • [Promote tree index APIs from alpha to beta (#26993)](#user-content-promote-tree-index-apis-from-alpha-to-beta-26993)
  • [⚠️ Deprecations](#user-content-️-deprecations)
  • [getPresence from @fluidframework/presence is deprecated and will be removed in a future release. (#26399)](#user-content-getpresence-from-fluidframeworkpresence-is-deprecated-and-will-be-removed-in-a-future-release-26399)

🚨 Breaking Changes

minVersionForCollab is now non-optional (#25331)

This change is a follow-up for pull request 25130 which was released as part of 2.61.0.

The minVersionForCollab property has been made non-optional in the following @beta @legacy interfaces in the Runtime layer:

  • IFluidParentContext.minVersionForCollab in @fluidframework/runtime-definitions.
  • IFluidDataStoreContext.minVersionForCollab in @fluidframework/runtime-definitions.
  • IFluidDataStoreContextDetached.minVersionForCollab in @fluidframework/runtime-definitions.

Consumers of Fluid aren't expected to implement these interfaces directly, so no impact is expected.

Additionally the following properties now always return a value, rather than possibly returning undefined:

  • FluidDataStoreRuntime.minVersionForCollab in @fluidframework/datastore. Note that API Extractor shows this as a breaking change since FluidDataStoreRuntime is beta + legacy and non-sealed. However, FluidDataStoreRuntime is not intended to be extended directly outside of a known legacy use-case.
  • IDataObjectProps.context.minVersionForCollab in @fluidframework/aqueduct.
  • ITestFluidObject.context.minVersionForCollab in @fluidframework/test-utils
  • IProvideTestFluidObject.ITestFluidObject.context.minVersionForCollab in @fluidframework/test-utils

Change details

Commit: `9a0d027`

Affected packages:

  • @fluidframework/aqueduct
  • @fluidframework/datastore
  • @fluidframework/runtime-definitions
  • @fluidframework/shared-object-base
  • @fluidframework/test-utils

[⬆️ Table of contents](#user-content-contents)

✨ New Features

Add Fluid-controlled map and iterator interfaces (#26788)

TreeIndex now extends FluidReadonlyMap instead of the built-in ReadonlyMap, and TreeMapNodeAlpha which extends FluidReadonlyMap instead of the built-in ReadonlyMap has been added. This works to uncouple Fluid's public API surface to the TypeScript standard library's map types, preventing future breakage when those types change.

Change details

Commit: `78e06f7`

Affected packages:

  • @fluidframework/core-interfaces
  • fluid-framework
  • @fluidframework/tree

[⬆️ Table of contents](#user-content-contents)

presence API set now at public support level (#27001)

All @fluidframework/presence APIs that had been @beta have been promoted to @public support with the exception of getPresence which has been relocated to fluid-framework. (See issue #26397 for more getPresence details.)

See Presence API overview and Presence package API details with getPresence API to get started.

Change details

Commit: `97d14a7`

Affected packages:

  • @fluidframework/presence

[⬆️ Table of contents](#user-content-contents)

Add SchemaFactoryAlpha.stagedOptional for incremental required-to-optional field migrations (#26918)

SchemaFactoryAlpha.stagedOptional(T) enables incremental migration of a field from required to optional. It creates a field that is optional in the view schema but stored as required in the stored schema until all clients have been upgraded, avoiding the need for a coordinated simultaneous deployment.

Migration path:

1. Start with sf.required(T) - all clients require the field. 2. Deploy sf.stagedOptional(T) - new clients see the field as optional and can read documents whether the field is present or absent, but the stored schema stays required so old clients are not broken. Writing undefined is blocked at runtime during this phase. 3. Deploy sf.optional(T) once all clients have been updated - the stored schema becomes optional and the field can be cleared.

Change details

Commit: `fb808eb`

Affected packages:

  • @fluidframework/tree

[⬆️ Table of contents](#user-content-contents)

🌳 SharedTree DDS Changes

Promote tree index APIs from alpha to beta (#26993)

The following APIs have been promoted from @alpha to @beta:

  • TreeIndex
  • TreeIndexKey
  • TreeIndexNodes
  • createTreeIndex
  • IdentifierIndex
  • createIdentifierIndex

Additionally, the following @fluidframework/core-interfaces types have been...

Excerpt shown — open the source for the full document.