Fluid Framework pre-v1.0

0.59

The 0.59 release contains internal changes to the Framework.

Breaking changes

No breaking changes.

Other notable changes

No notable changes.

0.58

The 0.58 release contains internal changes to the Framework.

Breaking changes

No breaking changes.

Other notable changes

No notable changes.

0.57

Breaking changes

No breaking changes.

Other notable changes

The behavior of containers’ isDirty flag has changed

Container is now considered dirty if it’s not attached or it is attached but has pending ops. Check https://fluidframework.com/docs/build/containers/#isdirty for further details.

0.56

Breaking changes

wait() methods removed from map and directory

The wait() methods on ISharedMap and IDirectory have been deprecated and will be removed in an upcoming release. To wait for a change to a key, you can replicate this functionality with a helper function that listens to the change events.

const directoryWait = async <T = any>(directory: IDirectory, key: string): Promise<T> => {
    const maybeValue = directory.get<T>(key);
    if (maybeValue !== undefined) {
        return maybeValue;
    }

    return new Promise((resolve) => {
        const handler = (changed: IValueChanged) => {
            if (changed.key === key) {
                directory.off("containedValueChanged", handler);
                const value = directory.get<T>(changed.key);
                if (value === undefined) {
                    throw new Error("Unexpected containedValueChanged result");
                }
                resolve(value);
            }
        };
        directory.on("containedValueChanged", handler);
    });
};

const foo = await directoryWait<Foo>(this.root, fooKey);

const mapWait = async <T = any>(map: ISharedMap, key: string): Promise<T> => {
    const maybeValue = map.get<T>(key);
    if (maybeValue !== undefined) {
        return maybeValue;
    }

    return new Promise((resolve) => {
        const handler = (changed: IValueChanged) => {
            if (changed.key === key) {
                map.off("valueChanged", handler);
                const value = map.get<T>(changed.key);
                if (value === undefined) {
                    throw new Error("Unexpected valueChanged result");
                }
                resolve(value);
            }
        };
        map.on("valueChanged", handler);
    });
};

const bar = await mapWait<Bar>(someSharedMap, barKey);

As-written above, these promises will silently remain pending forever if the key is never set (similar to current wait() functionality). For production use, consider adding timeouts, telemetry, or other failure flow support to detect and handle failure cases appropriately.

Other notable changes

No notable changes.

0.55

The 0.55 release contains internal changes to the Framework.

Breaking changes

No breaking changes.

Other notable changes

No notable changes.

0.54

Breaking changes

SharedNumberSequence and SharedObjectSequence deprecated

The SharedNumberSequence and SharedObjectSequence have been deprecated and are not recommended for use. To discuss future plans to support scenarios involving sequences of objects, please see Github issue 8526.

Additionally, useSyncedArray() from @fluid-experimental/react has been removed, as it depended on the SharedObjectArray.

Other notable changes

No notable changes.

0.53

The 0.53 release contains internal changes to the Framework.

Breaking changes

No breaking changes.

Other notable changes

No notable changes.

0.52

The 0.52 release contains internal changes to the Framework.

Breaking changes

No breaking changes.

Other notable changes

No notable changes.

0.51

The 0.51 release removes registers from the sequence DDSes.

Update 0.51.1: The update addresses this issue: #8239 – fix(r11s-driver): don’t return latest for cached snapshot id

Update 0.51.2: The update addresses this issue: #8329 – Revert #7917 - Used attachGraph instead of bindToContext to bind and attach data store runtime


The 0.51 release removes registers from the sequence DDSes. The sequence DDSes provided cut/copy/paste functionality that built on a register concept. These features were never fully implemented and have been removed.

Breaking changes

  • #7647 – Remove register functionality from merge-tree and sequence.

Other notable changes

No notable changes.

0.50

The 0.50 release contains internal changes to the Framework.

Breaking changes

No breaking changes.

Other notable changes

0.49

The 0.49 release contains internal changes to the Framework. There are no changes to the public API or behavior.

Breaking changes

No breaking changes.

Other notable changes

No notable changes.

0.48

The 0.48 release is focused on clarifying the primary Fluid Framework public API, which is primarily exposed through the fluid-framework library.

Update 0.48.1: The update addresses this issue: #7570AzureClient fails when running in local mode.

Update 0.48.2: The update addresses this issue: #7596 – Add sequence number telemetry to deltamanager.

Update 0.48.3: The update addresses these issues:

  • #7647 – Remove nav param from sharelink set in resolved url.
  • #7646 – Add loadMode options in container load end telemetry.

Update 0.48.4: The update addresses this issue: #7661 – Restore forward compatibility for container rehydration.

Update 0.48.5: The update addresses this issue: #7693 – Properly log websocket errors.


The 0.48 release is focused on clarifying the primary Fluid Framework public API, which is primarily exposed through the fluid-framework library. For more information Fluid’s public API see Packages.

Breaking changes

SignalManager and Signaler classes moved

The SignalManager and Signaler classes have been moved to the @fluid-experimental/data-objects package to better reflect their experimental state. If you use these classes, you can add a dependency on the @fluid-experimental/data-objects package and import the classes from there.

Other notable changes