github microsoft/FluidFramework client_v2.22.0
Fluid Framework v2.22.0 (minor)

latest release: build-tools_v0.54.0
2 days ago

Contents

  • 🌳 SharedTree DDS Changes
    • Add leaves and statics to SchemaFactory. (#23787)
  • ⚠️ Deprecations
    • Deprecate processCore on SharedObject and SharedObjectCore in favor of processMessagesCore (#23836)
  • Other Changes
    • Target ES2021 (#23307)
    • odsp-driver no longer depends on node-fetch (#23796)
    • Change when the pre-op and op events on ISharedObjectEvents are emitted (#23836)

🌳 SharedTree DDS Changes

Add leaves and statics to SchemaFactory. (#23787)

SchemaFactory now has a leaves member that is an array of all leaf schema.

SchemaFactory now has static members to access leaf schema and create field schema.

Change details

Commit: efa90f6

Affected packages:

  • fluid-framework
  • @fluidframework/tree

⬆️ Table of contents

⚠️ Deprecations

Deprecate processCore on SharedObject and SharedObjectCore in favor of processMessagesCore (#23836)

A new function processMessagesCore has been added in place of processCore, which will be called to process multiple messages instead of a single one on the channel. This is part of a feature called "Op bunching" where contiguous ops in a grouped batch are bunched and processed together by the shared object.

Implementations of SharedObject and SharedObjectCore must now also implement processMessagesCore. A basic implementation could be to iterate over the messages' content and process them one by one as it happens now. Note that some DDS may be able to optimize processing by processing the messages together.

Change details

Commit: 5eb19a0

Affected packages:

  • @fluidframework/shared-object-base

⬆️ Table of contents

Other Changes

Target ES2021 (#23307)

The TypeScript build for Fluid Framework packages has been updated to target ES2021 instead of ES2020. This may result in newer JavaScript language features being used. This does not change TypeScript types, nor the JavaScript libraries being used. We only support users which support ES2022, so updating to target ES2021 should not break any supported use-case. Any users which do not have at least ES2021 language feature support may need to transpile out some additional cases after this change.

This should result in slightly reduced bundle size and slightly improved performance for users not transpiling these features out. No major impact is expected.

Change details

Commit: 091b2df

Affected packages:

  • fluid-framework

⬆️ Table of contents

odsp-driver no longer depends on node-fetch (#23796)

The @fluidframework/odsp-driver package had a dependency on node-fetch to provide consistent behavior of the Fetch API across Node.js and browsers. Since v18 of Node.js, the Node-native Fetch API implementation no longer requires extra flags to be enabled, so the Fetch API is effectively now natively available on all browsers and Node.js. This dependency removal should reduce Fluid Framework's contribution to application bundle sizes.

We expect this change to have no impact for Fluid Framework consumers. However, if you are running Fluid in a Node.js environment with the --no-experimental-fetch flag, this is no longer supported.

Change details

Commit: b17276c

Affected packages:

  • @fluidframework/odsp-driver

⬆️ Table of contents

Change when the pre-op and op events on ISharedObjectEvents are emitted (#23836)

Previous behavior - pre-op was emitted immediately before an op was processed. Then the op was processed and op was emitted immediately after that.

New behavior - pre-op will still be emitted before an op is processed and op will still be emitted after an op is processed. However, these won't be immediate and other ops in a batch for the shared object may be processed in between.

Note that these events are for internal use only as mentioned in the @remarks section of their definition.

Change details

Commit: 5eb19a0

Affected packages:

  • @fluidframework/shared-object-base

⬆️ Table of contents

🛠️ Start Building Today!

Please continue to engage with us on GitHub Discussion and Issue pages as you adopt Fluid Framework!

Don't miss a new FluidFramework release

NewReleases is sending notifications on new releases.