Skip to content

Deprecate minVersionForCollab and MinimumVersionForCollab in favor of oldestSupportedClient #27851

Description

@WillieHabi

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 #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

#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 #27180, which makes the parameter required but does not remove either name.

#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 — Rename minVersionForCollab to oldestSupportedClient #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 improvement(client-container-runtime): cleanup from internal ContainerRuntime #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.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions