Skip to content

feat(client-presence): promote to public#27001

Open
jason-ha wants to merge 1 commit intomicrosoft:mainfrom
jason-ha:presence/promote-api-to-public
Open

feat(client-presence): promote to public#27001
jason-ha wants to merge 1 commit intomicrosoft:mainfrom
jason-ha:presence/promote-api-to-public

Conversation

@jason-ha
Copy link
Copy Markdown
Contributor

  • Retag all @beta presence APIs and their supporting types with @public with the exception of getPresence that will be deprecated and relocated. See Removal of getPresence in v2.110 from @fluidframework/presence #26397.
  • Add public entrypoint to @fluidframework/presence package.
  • Update documentation to note public support (no /beta import spec).
  • Update internal presence/beta imports to public.

The are no logic changes.

- Retag all `@beta` presence APIs and their supporting types with `@public` with the exception of `getPresence` that will be be deprecated and relocated.
- Add public entrypoint to `@fluidframework/presence` package
- Update documentation to note public support (no /beta import spec)
- Update internal presence/beta imports to public.
@jason-ha jason-ha added the public api change Changes to a public API label Apr 11, 2026
@jason-ha jason-ha requested review from a team as code owners April 11, 2026 19:25
@jason-ha jason-ha added the release-blocking Must be addressed before we cut and publish the next release label Apr 11, 2026
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 promotes the @fluidframework/presence API surface from @beta to @public (except getPresence, which remains on the /beta entrypoint), adds a public root entrypoint export for the package, and updates repo usage/docs/examples to import presence types from @fluidframework/presence instead of @fluidframework/presence/beta.

Changes:

  • Add a public (".") export entrypoint for @fluidframework/presence and corresponding API-extractor lint configs/scripts.
  • Retag presence APIs (and supporting types in related packages) from @beta to @public, updating generated API reports accordingly.
  • Update internal tests, docs, and examples to use the public presence import path (keeping getPresence on /beta).

Reviewed changes

Copilot reviewed 45 out of 45 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
packages/service-clients/end-to-end-tests/azure-client/src/test/multiprocess/presenceTest.spec.ts Switch AttendeeId type import from /beta to public presence entrypoint.
packages/service-clients/end-to-end-tests/azure-client/src/test/multiprocess/orchestratorUtils.ts Switch AttendeeId type import from /beta to public presence entrypoint.
packages/service-clients/end-to-end-tests/azure-client/src/test/multiprocess/messageTypes.ts Switch AttendeeId type import from /beta to public presence entrypoint.
packages/service-clients/end-to-end-tests/azure-client/src/test/multiprocess/childClient.tool.ts Import most presence APIs from public entrypoint; keep getPresence from /beta.
packages/framework/presence/README.md Update documentation examples to import schema/types from public presence entrypoint.
packages/framework/presence/package.json Add . exports entrypoint (public types) and add public export lint scripts.
packages/framework/presence/api-report/presence.public.api.md Populate public API report after retagging APIs to @public.
packages/framework/presence/api-report/presence.legacy.alpha.api.md Update release tags in legacy-alpha API report to reflect promotion to @public.
packages/framework/presence/api-report/presence.beta.api.md Update release tags in beta API report to reflect promotion to @public (except getPresence).
packages/framework/presence/api-report/presence.alpha.api.md Update release tags in alpha API report to reflect promotion to @public.
packages/framework/presence/api-extractor/api-extractor-lint-public.esm.json Add API-extractor lint config for public ESM entrypoint.
packages/framework/presence/api-extractor/api-extractor-lint-public.cjs.json Add API-extractor lint config for public CJS entrypoint.
packages/framework/presence-runtime/src/states/stateFactory.ts Promote StateFactory doc tag to @public.
packages/framework/presence-definitions/src/types.ts Promote shared presence workspace/type definitions to @public.
packages/framework/presence-definitions/src/presence.ts Promote attendee/presence types and events to @public.
packages/framework/presence-definitions/src/latestValueTypes.ts Promote latest-value supporting types to @public.
packages/framework/presence-definitions/src/latestTypes.ts Promote Latest/LatestRaw types and factories to @public.
packages/framework/presence-definitions/src/latestMapTypes.ts Promote LatestMap/StateMap types and factories to @public.
packages/framework/presence-definitions/src/exposedInternalTypes.ts Promote internal presence “system” types to @public @system.
packages/framework/presence-definitions/src/broadcastControlsTypes.ts Promote broadcast control types to @public.
packages/framework/presence-definitions/src/baseTypes.ts Promote ClientConnectionId type to @public.
packages/framework/presence-definitions/api-report/presence-definitions.public.api.md Add/update public API report for presence-definitions.
packages/framework/presence-definitions/api-report/presence-definitions.beta.api.md Update beta API report tags to match promotion to @public.
packages/framework/presence-definitions/api-report/presence-definitions.alpha.api.md Update alpha API report tags to match promotion to @public.
packages/common/core-interfaces/src/test/brandedType.spec.ts Update test import to use public @fluidframework/core-interfaces entrypoint.
packages/common/core-interfaces/src/opaqueJson.ts Promote opaque JSON wrapper types to @public.
packages/common/core-interfaces/src/jsonType.ts Promote JSON utility types to @public.
packages/common/core-interfaces/src/jsonSerializationErrors.ts Promote serialization error helper types to @public @system.
packages/common/core-interfaces/src/jsonSerializable.ts Promote JsonSerializable and options to @public.
packages/common/core-interfaces/src/jsonDeserialized.ts Promote JsonDeserialized and options to @public.
packages/common/core-interfaces/src/exposedInternalUtilityTypes.ts Promote deep readonly/internal utility types to @public (some @system).
packages/common/core-interfaces/src/deepReadonly.ts Promote DeepReadonly types/options to @public.
packages/common/core-interfaces/src/brandedType.ts Promote BrandedType to @public.
packages/common/core-interfaces/api-report/core-interfaces.public.api.md Update public API report to include newly-public types (e.g. BrandedType).
packages/common/core-interfaces/api-report/core-interfaces.legacy.public.api.md Update legacy-public API report to include newly-public types.
packages/common/core-interfaces/api-report/core-interfaces.legacy.beta.api.md Update legacy-beta API report tags for promotion to @public.
packages/common/core-interfaces/api-report/core-interfaces.legacy.alpha.api.md Update legacy-alpha API report tags for promotion to @public.
packages/common/core-interfaces/api-report/core-interfaces.beta.api.md Update beta API report to include newly-public types.
examples/service-clients/azure-client/external-controller/src/view.ts Switch presence type imports to public presence entrypoint.
examples/service-clients/azure-client/external-controller/src/presence.ts Switch presence imports to public presence entrypoint.
examples/apps/presence-tracker/src/MouseTracker.ts Switch presence imports to public presence entrypoint.
examples/apps/presence-tracker/src/FocusTracker.ts Switch presence imports to public presence entrypoint.
examples/apps/presence-tracker/src/app.ts Switch most imports to public presence; keep getPresence from /beta.
docs/docs/build/presence.mdx Update docs snippets to import presence types/factories from public entrypoint.
.changeset/humble-pants-love.md Add changeset for presence public promotion.

---
presence API set now at public support level

All `@fluidframework/presence` APIs that had been `@beta` have been promoted to `@public` support with the exception of `getPresence` which is being relocated. No newline at end of file
Copy link

Copilot AI Apr 11, 2026

Choose a reason for hiding this comment

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

The changeset text says getPresence "is being relocated", but in this PR it’s still imported from @fluidframework/presence/beta in multiple places. Consider clarifying the wording (e.g. that getPresence remains on the /beta entrypoint for now and will move in a follow-up) to avoid implying the relocation is already complete.

Suggested change
All `@fluidframework/presence` APIs that had been `@beta` have been promoted to `@public` support with the exception of `getPresence` which is being relocated.
All `@fluidframework/presence` APIs that had been `@beta` have been promoted to `@public` support with the exception of `getPresence`, which remains on the `/beta` entrypoint for now and will be relocated in a follow-up.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Will leave as is for now - it depends on what order PRs are completed in. #26399 does the relocation. Ideally both happen in the same release.

@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:
  279037 links
    1880 destination URLs
    2126 URLs ignored
       0 warnings
       0 errors


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

public api change Changes to a public API 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.

2 participants