Skip to content

refactor(client): remove now-unused data-object-base package - #28024

Merged
WillieHabi merged 6 commits into
mainfrom
test/client/3.0/prepare-oldest-supported-client-plumbing
Aug 21, 2026
Merged

refactor(client): remove now-unused data-object-base package#28024
WillieHabi merged 6 commits into
mainfrom
test/client/3.0/prepare-oldest-supported-client-plumbing

Conversation

@WillieHabi

@WillieHabi WillieHabi commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Description

Removes the now-unused @fluid-experimental/data-object-base package. Its sole implementation was an internal runtime factory with no repository consumers. Removing that dead factory left the package with no implementation or supported public, beta, or alpha API surface, so this PR also removes the remaining package shell.

The change removes the package from release feeds, the package-layer listing, formatter ignores, the lockfile, and the existing ES2022 changeset. Consumers should use the data object and runtime factory APIs from @fluidframework/aqueduct.

This is preparatory cleanup for PR #27971. AB#42061

Fixes #28043.

Breaking Changes

@fluid-experimental/data-object-base will no longer be published with Client 3.0. Before removal, the package had no supported public, beta, or alpha API surface and no repository consumers. Applications should use @fluidframework/aqueduct instead.

See Breaking vs. non-breaking changes.

Reviewer Guidance

The review process is outlined in the pull request guidelines.

Please verify that no active package or source dependency remains and that the feed/package-list cleanup is complete.

Copilot AI lite review requested due to automatic review settings August 20, 2026 03:44
@github-actions github-actions Bot added area: framework Framework is a tag for issues involving the developer framework. Eg Aqueduct area: tools area: repo Repo related work area: website base: main PRs targeted against main branch labels Aug 20, 2026
@github-actions

github-actions Bot commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Hi! Thank you for opening this PR. Want me to review it?

Based on the diff (1035 lines, 31 files), I've queued these reviewers:

  • Correctness — logic errors, race conditions, lifecycle issues
  • Security — vulnerabilities, secret exposure, injection
  • API Compatibility — breaking changes, release tags, type design
  • Performance — algorithmic regressions, memory leaks
  • Testing — coverage gaps, hollow tests

How this works

  • Adjust the reviewer set by ticking/unticking boxes above. Reviewer toggles alone don't trigger anything.

  • Tick Start review below to dispatch the review fleet.

  • After review finishes, tick Start review again to request another run — it auto-resets after each dispatch.

  • This comment updates as new commits land; your reviewer selections are preserved.

  • Start review

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Prepares internal runtime wiring to support an explicit “oldest supported client” compatibility choice by threading compatibility fields through existing runtime factory and attributor plumbing, without changing external requiredness yet.

Changes:

  • Thread oldestSupportedClient through data-object-base’s RuntimeFactory into loadContainerRuntime.
  • Update mixinAttributor to forward oldestSupportedClient and deprecated minVersionForCollab while continuing to filter unrelated parameters.
  • Add a focused attributor unit test to validate forwarding behavior and parameter filtering.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

File Description
packages/framework/data-object-base/src/runtimeFactory.ts Stores and forwards oldestSupportedClient into loadContainerRuntime during pre-initialize.
packages/framework/attributor/src/mixinAttributor.ts Extends the delegated-parameter allowlist to include compatibility fields while maintaining filtering.
packages/framework/attributor/src/test/mixinAttributor.spec.ts Adds a regression test ensuring compatibility fields are forwarded and unrelated params remain filtered.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread packages/framework/attributor/src/test/mixinAttributor.spec.ts Outdated
Comment thread packages/framework/data-object-base/src/runtimeFactory.ts Outdated
Comment thread packages/framework/attributor/src/mixinAttributor.ts
@WillieHabi
WillieHabi force-pushed the test/client/3.0/prepare-oldest-supported-client-plumbing branch from 3a4b842 to 4be180a Compare August 20, 2026 14:49
@WillieHabi WillieHabi changed the title fix(client): prepare explicit compatibility plumbing refactor(client): remove unused runtime factory Aug 20, 2026
Comment thread packages/framework/data-object-base/src/index.ts Outdated
@WillieHabi
WillieHabi requested review from a team as code owners August 21, 2026 15:59
@github-actions github-actions Bot added area: server Server related issues (routerlicious) dependencies Pull requests that update a dependency file public api change Changes to a public API changeset-present labels Aug 21, 2026
@WillieHabi WillieHabi changed the title refactor(client): remove unused runtime factory refactor(client): remove empty data-object-base package Aug 21, 2026
Delete the unreferenced internal data-object-base RuntimeFactory rather than carrying dead code through the explicit compatibility migration.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 1ea3a180-8445-43b1-9fc0-78bbc399b8d3
@WillieHabi
WillieHabi force-pushed the test/client/3.0/prepare-oldest-supported-client-plumbing branch from e349f88 to 755bc3c Compare August 21, 2026 16:25
WillieHabi and others added 2 commits August 21, 2026 09:54
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 1ea3a180-8445-43b1-9fc0-78bbc399b8d3
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 1ea3a180-8445-43b1-9fc0-78bbc399b8d3
@WillieHabi WillieHabi changed the title refactor(client): remove empty data-object-base package refactor(client): remove now-unused data-object-base package Aug 21, 2026
@WillieHabi
WillieHabi force-pushed the test/client/3.0/prepare-oldest-supported-client-plumbing branch from 36c163d to 251022a Compare August 21, 2026 16:56
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 1ea3a180-8445-43b1-9fc0-78bbc399b8d3

@ChumpChief Matt Rakow (ChumpChief) left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Exciting!

Comment thread .changeset/remove-unused-data-object-base.md Outdated
Co-authored-by: Joshua Smithrud <54606601+Josmithr@users.noreply.github.com>
@@ -0,0 +1,10 @@
---
"@fluidframework/aqueduct": minor

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because we've specified aqueduct here, these notes will appear in its changelog. I'm not sure these notes are valuable to consumers of the aqueduct package. We may actually just want to not have a changeset for this PR.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the right way to have a release note that is related to a package that no longer exists? Can there be a changeset with no package association?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's a good question. I don't think we have a good setup for this. Maybe we just manually add a note when we go to generate the release notes?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved for docs, but please see my note here: https://github.com/microsoft/FluidFramework/pull/28024/changes#r3832462177

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 1ea3a180-8445-43b1-9fc0-78bbc399b8d3

@jason-ha Jason Hartman (jason-ha) left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should have a changeset or at least release notes for any package removal.
Otherwise, :)

@github-actions

Copy link
Copy Markdown
Contributor

🔗 No broken links found! ✅

Your attention to detail is admirable.

linkcheck output

$ start-server-and-test "npm run serve -- --host 127.0.0.1 --no-open" http://127.0.0.1:3000 check-links
1: starting server using command "npm run serve -- --host 127.0.0.1 --no-open"
and when url "[ 'http://127.0.0.1:3000' ]" is responding with HTTP status code 200
running tests using command "npm run check-links"


> fluid-framework-website@0.0.0 serve
> docusaurus serve --host 127.0.0.1 --no-open

[SUCCESS] Serving "build" directory at: http://127.0.0.1:3000/

> fluid-framework-website@0.0.0 check-links
> linkcheck http://127.0.0.1:3000 --skip-file skipped-urls.txt

Crawling...

Stats:
  338440 links
    2041 destination URLs
    2297 URLs ignored
       0 warnings
       0 errors


@WillieHabi

Copy link
Copy Markdown
Contributor Author

Ok so instead of an acqueduct changeset, I created #28043 as a sub-issue of Client 3.0 breaking change tracker and linked it to this PR. In the issue I added an explicit checklist and suggested text for manually including the removal in the release notes when they are generated for 3.0 release.

cc: Jason Hartman (@jason-ha) Joshua Smithrud (@Josmithr)

@github-actions

Copy link
Copy Markdown
Contributor

Bundle size comparison

Base commit: 1336342a572d620d9390802c82a8f6d06727087b
Head commit: 47a4ce3bf1caaf1ea4fdccc01472e7f10405a2bf

Notable changes

No bundles changed by ≥ 500 bytes parsed.

Per-bundle deltas

@fluid-example/bundle-size-tests

  • fluidFrameworkAllAlpha.js: parsed 782366 → 782422 (+56), gzip 215005 → 215072 (+67)
  • azureClient.js: parsed 632291 → 632286 (-5), gzip 169381 → 169479 (+98)
  • odspClient.js: parsed 609607 → 609704 (+97), gzip 163773 → 163899 (+126)
  • aqueduct.js: parsed 536725 → 536736 (+11), gzip 144124 → 144167 (+43)
  • fluidFramework.js: parsed 401229 → 401262 (+33), gzip 114017 → 114061 (+44)
  • sharedTree.js: parsed 390608 → 390634 (+26), gzip 111442 → 111478 (+36)
  • containerRuntime.js: parsed 313633 → 313615 (-18), gzip 86017 → 86013 (-4)
  • sharedString.js: parsed 175134 → 175141 (+7), gzip 49635 → 49640 (+5)
  • experimentalSharedTree.js: parsed 161726 → 161726 (0), gzip 46665 → 46665 (0)
  • matrix.js: parsed 159511 → 159520 (+9), gzip 45849 → 45854 (+5)
  • loader.js: parsed 146720 → 146736 (+16), gzip 39875 → 39888 (+13)
  • odspDriver.js: parsed 115403 → 115458 (+55), gzip 35585 → 35663 (+78)
  • directory.js: parsed 65559 → 65566 (+7), gzip 18444 → 18451 (+7)
  • 578.js: parsed 58686 → 58686 (0), gzip 17657 → 17657 (0)
  • odspPrefetchSnapshot.js: parsed 45838 → 45819 (-19), gzip 15321 → 15331 (+10)
  • map.js: parsed 45710 → 45717 (+7), gzip 14077 → 14085 (+8)
  • 252.js: parsed 44362 → 44362 (0), gzip 13735 → 13735 (0)
  • summarizerDelayLoadedModule.js: parsed 31287 → 31287 (0), gzip 7929 → 7929 (0)
  • socketModule.js: parsed 26992 → 26962 (-30), gzip 8019 → 8052 (+33)
  • createNewModule.js: parsed 8523 → 8517 (-6), gzip 3550 → 3561 (+11)
  • summaryModule.js: parsed 3888 → 3888 (0), gzip 1874 → 1874 (0)
  • connectionState.js: parsed 909 → 909 (0), gzip 500 → 500 (0)
  • sharedTreeAttributes.js: parsed 845 → 852 (+7), gzip 493 → 504 (+11)
  • debugAssert.js: parsed 429 → 429 (0), gzip 299 → 299 (0)
  • FluidFramework-HashFallback.js: parsed 419 → 419 (0), gzip 313 → 313 (0)

@WillieHabi
WillieHabi merged commit 42f1783 into main Aug 21, 2026
83 checks passed
@WillieHabi
WillieHabi deleted the test/client/3.0/prepare-oldest-supported-client-plumbing branch August 21, 2026 18:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: framework Framework is a tag for issues involving the developer framework. Eg Aqueduct area: repo Repo related work area: server Server related issues (routerlicious) area: tools area: website base: main PRs targeted against main branch changeset-present dependencies Pull requests that update a dependency file public api change Changes to a public API

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Removal of @fluid-experimental/data-object-base in Client 3.0

5 participants