Contents
- 🚨 Breaking Changes
- minVersionForCollab is now non-optional (#25331)
- ✨ New Features
- Add Fluid-controlled map and iterator interfaces (#26788)
- presence API set now at public support level (#27001)
- Add SchemaFactoryAlpha.stagedOptional for incremental required-to-optional field migrations (#26918)
- 🌳 SharedTree DDS Changes
- Promote tree index APIs from alpha to beta (#26993)
- ⚠️ Deprecations
getPresencefrom@fluidframework/presenceis 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.minVersionForCollabin@fluidframework/runtime-definitions.IFluidDataStoreContext.minVersionForCollabin@fluidframework/runtime-definitions.IFluidDataStoreContextDetached.minVersionForCollabin@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.minVersionForCollabin@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.minVersionForCollabin@fluidframework/aqueduct.ITestFluidObject.context.minVersionForCollabin@fluidframework/test-utilsIProvideTestFluidObject.ITestFluidObject.context.minVersionForCollabin@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
✨ 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
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
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:
- Start with
sf.required(T)- all clients require the field. - 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. Writingundefinedis blocked at runtime during this phase. - 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
🌳 SharedTree DDS Changes
Promote tree index APIs from alpha to beta (#26993)
The following APIs have been promoted from @alpha to @beta:
TreeIndexTreeIndexKeyTreeIndexNodescreateTreeIndexIdentifierIndexcreateIdentifierIndex
Additionally, the following @fluidframework/core-interfaces types have been promoted from @alpha to @beta:
FluidReadonlyMapFluidIterableFluidIterableIteratorFluidMap
Change details
Commit: 37f2f17
Affected packages:
- @fluidframework/core-interfaces
- @fluidframework/tree
- fluid-framework
⬆️ Table of contents
⚠️ Deprecations
getPresence from @fluidframework/presence is deprecated and will be removed in a future release. (#26399)
Now getPresence is available for import from the fluid-framework package.
To prepare, make changes following this pattern:
-import { getPresence } from "@fluidframework/presence/beta";
+import { getPresence } from "fluid-framework";See issue #26397 for more details.
Change details
Commit: d533c19
Affected packages:
- fluid-framework
- @fluidframework/presence
⬆️ Table of contents
🛠️ Start Building Today!
Please continue to engage with us on GitHub Discussion and Issue pages as you adopt Fluid Framework!