Support service client containers in Devtools - #28260
Craig Macomber (Microsoft) (CraigMacomber) wants to merge 2 commits into
Conversation
|
Hi! Thank you for opening this PR. Want me to review it? Based on the diff (369 lines, 16 files), I've queued these reviewers:
How this works
|
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Restore URL-hash validation before loading containers to preserve the documented error behavior and passing test.
Get a fresh assessment by requesting another Copilot review.
Review effort: Lite
Findings: 1
Open (1)
What changed in this PR
Adds alpha Devtools support for service-client containers and migrates the text-editor example to supported public APIs.
Changes:
- Adds service-container registration APIs and regression tests.
- Updates configured SharedTree typing and API reports.
- Migrates the text-editor example and documents changes.
| File | Description |
|---|---|
pnpm-lock.yaml |
Updates workspace dependencies. |
packages/tools/devtools/devtools-core/src/test/FluidDevtools.spec.ts |
Adds registration regression tests. |
packages/tools/devtools/devtools-core/src/index.ts |
Exports new APIs. |
packages/tools/devtools/devtools-core/src/IFluidDevtools.ts |
Defines alpha Devtools interfaces. |
packages/tools/devtools/devtools-core/src/FluidDevtools.ts |
Supports service-container registration. |
packages/tools/devtools/devtools-core/src/ContainerDevtools.ts |
Adds service-container properties. |
packages/tools/devtools/devtools-core/package.json |
Updates dependencies. |
packages/tools/devtools/devtools-core/api-report/devtools-core.beta.api.md |
Updates beta API report. |
packages/tools/devtools/devtools-core/api-report/devtools-core.alpha.api.md |
Updates alpha API report. |
packages/framework/fluid-framework/src/index.ts |
Updates configured SharedTree typing. |
packages/framework/fluid-framework/api-report/fluid-framework.alpha.api.md |
Updates alpha API report. |
examples/data-objects/text-editor/src/app.tsx |
Migrates Devtools and tree registration. |
examples/data-objects/text-editor/package.json |
Removes an obsolete dependency. |
.changeset/twenty-buttons-start.md |
Updates ServiceOptions documentation. |
.changeset/devtools-service-containers.md |
Documents Devtools API changes. |
.changeset/configured-tree-registry-type.md |
Documents configured tree typing. |
Files not reviewed (1)
- pnpm-lock.yaml: Generated file
💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| "Invalid container ID in URL hash. Expected 3-64 alphanumeric or '-' characters.", | ||
| ); | ||
| } | ||
| const container = await createOrLoadExampleContainer(client, TextEditorDataStore); |
Bundle size comparisonBase commit: unresolved The PR's CI build failed — fix the build and the comment will update once the next run succeeds. |
|
🔗 No broken links found! ✅ Your attention to detail is admirable. linkcheck output |
| // eslint-disable-next-line import-x/no-internal-modules | ||
| import { ServiceContainerBase } from "@fluidframework/runtime-utils/internal"; | ||
| import { TreeViewConfiguration, type ITree } from "@fluidframework/tree"; | ||
| // eslint-disable-next-line import-x/no-internal-modules -- FormattedTextDefault has no public export. |
There was a problem hiding this comment.
We should restore some sort of TODO here. Our examples shouldn't be using internal APIs.
| * after initialization. | ||
| * @alpha | ||
| */ | ||
| export function initializeDevtoolsAlpha(props?: FluidDevtoolsProps): FluidDevtoolsAlpha { |
There was a problem hiding this comment.
Any reason this function couldn't preserve support for the non-service-client-based props?

Description
Follow up on #28259 by letting the text-editor example use supported alpha APIs instead of accessing internal container implementations.
initializeDevtoolsAlpha,FluidDevtoolsAlpha, andFluidContainerDevtoolsPropsto register service client containers directly with Devtools, preserving the existing beta registration signature.SharedObjectKindAlpha<ITree>fromfluid-framework'sconfiguredSharedTreeso configured trees work with service client registries without internal imports.Validation
Reviewer Guidance
The review process is outlined in the pull request guidelines.
API Council review is needed for removing
@sealedfrom the betaContainerDevtoolsPropsinput interface. The new APIs are alpha, and no consumer migration is required.