microsoft / microsoft/FluidFramework

Deprecate minVersionForCollab and MinimumVersionForCollab in favor of oldestSupportedClient

Open
#27,851 0 comments 0 reactions 1 assignee View on GitHub

@WillieHabi is already working on this.

Since Aug 13, 2026.

api deprecation triage
Dominant language
TypeScript
Stars
4.9k
Forks
586
Avg merge
1d 15h
Merged PRs (30d)
146

Description

Deprecated API

The pre-rename names for the cross-client compatibility parameter:

  • minVersionForCollab on LoadContainerRuntimeParams (@fluidframework/container-runtime) — @legacy @beta
  • minVersionForCollab on BaseContainerRuntimeFactoryProps (@fluidframework/aqueduct) — @legacy @beta
  • minVersionForCollaboration on createTreeContainerRuntimeFactory (@fluidframework/fluid-static) — @legacy @beta
  • The MinimumVersionForCollab type (@fluidframework/runtime-definitions) — @public

Context

These are replaced by oldestSupportedClient with OldestSupportedClientVersion for runtime APIs in https://github.com/microsoft/FluidFramework/pull/27806. The deprecated public and beta names remain accepted so those renames are additive. The alpha driver APIs are replaced directly by OldestSupportedServiceClientVersion and ServiceOptions.oldestSupportedClient; indexed office-bohemia code does not use the removed alpha names.

The name is layer-neutral. The value is threaded through Runtime and DataStore layers and consumed by DDSes such as SharedTree for write-format and feature selection.

Approach

Consumers move to oldestSupportedClient, typed OldestSupportedClientVersion for runtime APIs or OldestSupportedServiceClientVersion for the minor-only service-client API.

Dependencies

https://github.com/microsoft/FluidFramework/pull/27806 introduces the replacement names, deprecates the public and beta old names, removes the superseded alpha driver names, migrates in-repo type references, updates service-client signatures, and adds the preferred createTreeContainerRuntimeFactory overload.

This is distinct from https://github.com/microsoft/FluidFramework/issues/27180, which makes the parameter required but does not remove either name.

https://github.com/microsoft/FluidFramework/pull/27896 changes which internal parent-context interface ContainerRuntime implements. Phase 2 should account for that final interface shape.

Compatibility Concerns

The deprecated public and beta names need to coexist while Runtime → DataStore → DDS and service-client internals migrate across package and API layers. Partners consume the beta properties directly, so their removal needs the standard beta-break lead time.

Persisted document-schema fields and telemetry property names are unaffected. IDocumentSchemaInfo.minVersionForCollab remains the on-disk name, and telemetry keeps emitting minVersionForCollab so existing queries and dashboards continue to work.

Phases

  1. Preferred customer-facing APIs — #27806

    • Add and deprecate names on LoadContainerRuntimeParams and BaseContainerRuntimeFactoryProps.
    • Add the createTreeContainerRuntimeFactory({ oldestSupportedClient }) overload and deprecate minVersionForCollaboration.
    • Update Azure, ODSP, and Tinylicious positional parameters.
    • Deprecate MinimumVersionForCollab and migrate in-repo type references.
    • Add OldestSupportedServiceClientVersion and ServiceOptions.oldestSupportedClient, remove the superseded alpha names, and update local-driver.
  2. Cross-layer dual-property migration

    • Add optional oldestSupportedClient beside minVersionForCollab on IFluidParentContext.
    • Add a required companion on IFluidParentContextPrivate after accounting for #27896.
    • Thread both names through ContainerRuntime, FluidDataStoreContext, IFluidDataStoreRuntimeInternalConfig, and SharedKernelArgs so old and new consumers can migrate independently.
    • Update datastore/test-runtime/test-utils properties and mocks.
    • Migrate ContainerRuntimeLoaderParams and service-client internal callbacks/private helpers.
  3. Narrower service internals

    • Rename createDOProviderContainerRuntimeFactory and related internal fluid-static parameters.
    • Migrate service-client internal callbacks and private helpers that still use minVersionForCollaboration.
  4. Tree-specific write-format APIs

    • Rename CodecWriteOptions.minVersionForCollab and other Tree-local properties.
    • Regenerate codec-format snapshots.
  5. Helper and test infrastructure names

    • Rename runtime-utils helper exports and fluid-static defaults such as defaultRuntimeOptionsForMinVersion.
    • Rename test-version-utils and compatibility helper parameters.
    • Select a distinct name for lowestMinVersionForCollab, which represents the floor on allowed values rather than the oldest supported client.
  6. Remove deprecated beta properties

    • Remove minVersionForCollab and minVersionForCollaboration in the 3.10 beta-break window.
    • CompatibilityMode-specific names disappear with CompatibilityMode cleanup and are not renamed.
  7. Remove the public alias

    • Remove MinimumVersionForCollab in 4.0.

Expected Timeline

The beta properties are deprecated in 2.116.0 and removed in 3.10.0. The @public type is deprecated in 2.116.0 and removed in 4.0.0.

Open Questions

  • Final name for lowestMinVersionForCollab.
  • Whether phases 2 through 5 land as one change or several.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.