feat(client-presence): promote to public#27001
feat(client-presence): promote to public#27001jason-ha wants to merge 1 commit intomicrosoft:mainfrom
Conversation
- 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.
There was a problem hiding this comment.
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/presenceand corresponding API-extractor lint configs/scripts. - Retag presence APIs (and supporting types in related packages) from
@betato@public, updating generated API reports accordingly. - Update internal tests, docs, and examples to use the public presence import path (keeping
getPresenceon/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 |
There was a problem hiding this comment.
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.
| 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. |
There was a problem hiding this comment.
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.
|
🔗 No broken links found! ✅ Your attention to detail is admirable. linkcheck output |
@betapresence APIs and their supporting types with@publicwith the exception ofgetPresencethat will be deprecated and relocated. See Removal ofgetPresencein v2.110 from@fluidframework/presence#26397.@fluidframework/presencepackage.The are no logic changes.