Skip to content

Deprecate IIdCompressorCore ahead of making it internal in 2.100#26865

Merged
markfields merged 6 commits intomicrosoft:mainfrom
markfields:deprecate-announce/id-compressor-core-internal
Mar 30, 2026
Merged

Deprecate IIdCompressorCore ahead of making it internal in 2.100#26865
markfields merged 6 commits intomicrosoft:mainfrom
markfields:deprecate-announce/id-compressor-core-internal

Conversation

@markfields
Copy link
Copy Markdown
Member

@markfields markfields commented Mar 27, 2026

Resolves AB#63316

Description

IIdCompressorCore was always meant to be an internal detail, not exposed in any API surface to consumers. It leaked due to free functions createIdCompressor and deserializeIdCompressor including it in their return type, as well as the utility of the serialize function on the interface.

This PR deprecates it, including a migration plan in the changeset.

To see the final state we'll release in 2.100.0, see 94bfedf

Breaking Changes

None, this is merely deprecating / announcing the upcoming change. See #26903

Copilot AI review requested due to automatic review settings March 27, 2026 19:46
@markfields markfields requested review from a team as code owners March 27, 2026 19:46
@markfields markfields added the release-blocking Must be addressed before we cut and publish the next release label Mar 27, 2026
@markfields
Copy link
Copy Markdown
Member Author

Marked as release-blocking since Monday's release is the deadline for these announcements for 2.100.0

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR deprecates IIdCompressorCore in @fluidframework/id-compressor and introduces a migration path so consumers can continue serializing compressors without depending on the core interface ahead of the planned 2.100.0 internalization.

Changes:

  • Marked IIdCompressorCore as deprecated and added migration guidance in TSDoc and a changeset.
  • Added serializeIdCompressor(compressor, withSession) as the supported serialization API for consumers.
  • Added an internal helper (toIdCompressorWithCore) to support internal runtime usage while preparing to narrow return types in a future release.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
packages/runtime/id-compressor/src/types/idCompressor.ts Adds deprecation + migration guidance on IIdCompressorCore.
packages/runtime/id-compressor/src/index.ts Exports new serialization helper and internal cast helper.
packages/runtime/id-compressor/src/idCompressor.ts Adds new free-function serialization API and internal cast helper; updates docs around return-type narrowing.
packages/runtime/id-compressor/api-report/id-compressor.legacy.beta.api.md Updates legacy beta API report to reflect deprecation + new function exports.
.changeset/deprecate-id-compressor-core.md Documents the deprecation and migration steps in release notes.

@markfields markfields enabled auto-merge (squash) March 27, 2026 23:48
Co-authored-by: Craig Macomber (Microsoft) <42876482+CraigMacomber@users.noreply.github.com>
@github-actions
Copy link
Copy Markdown
Contributor

🔗 No broken links found! ✅

Your attention to detail is admirable.

linkcheck output


> fluid-framework-docs-site@0.0.0 ci:check-links /home/runner/work/FluidFramework/FluidFramework/docs
> start-server-and-test "npm run serve -- --no-open" 3000 check-links

1: starting server using command "npm run serve -- --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-docs-site@0.0.0 serve
> docusaurus serve --no-open

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

> fluid-framework-docs-site@0.0.0 check-links
> linkcheck http://localhost:3000 --skip-file skipped-urls.txt

Crawling...

Stats:
  272202 links
    1863 destination URLs
    2108 URLs ignored
       0 warnings
       0 errors


Copy link
Copy Markdown
Contributor

@CraigMacomber CraigMacomber left a comment

Choose a reason for hiding this comment

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

Approving changeset for docs.

@markfields markfields merged commit 2e890f6 into microsoft:main Mar 30, 2026
35 checks passed
* @privateremarks To be made internal in 2.100.0
*
* @deprecated `IIdCompressorCore` will be removed from the public API in 2.100.0.
*
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.

Deprecations should reference a GitHub issue. If there is a planned time for the break, then it should be associated with breaking change issue for that version. I don't see an issue (should be linked here) and don't see anything under #26282 which covers 2.100 breaks.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Yes thanks for the reminder I'll open an issue today

brrichards pushed a commit to brrichards/FluidFramework that referenced this pull request Mar 31, 2026
…rosoft#26865)

`IIdCompressorCore` was always meant to be an internal detail, not
exposed in any API surface to consumers. It leaked due to free functions
`createIdCompressor` and `deserializeIdCompressor` including it in their
return type, as well as the utility of the `serialize` function on the
interface.

This change deprecates it, including a migration plan in the changeset.

To see the final state we'll release in `2.100.0`, see 94bfedf
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release-blocking Must be addressed before we cut and publish the next release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants