Contents
- 🌳 SharedTree DDS Changes
- Add
leaves
and statics toSchemaFactory
. (#23787)
- Add
- ⚠️ Deprecations
- Deprecate
processCore
onSharedObject
andSharedObjectCore
in favor ofprocessMessagesCore
(#23836)
- Deprecate
- Other Changes
- Target ES2021 (#23307)
- odsp-driver no longer depends on node-fetch (#23796)
- Change when the
pre-op
andop
events onISharedObjectEvents
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!