common: Add room integrations - #1077
Open
thyal wants to merge 1 commit into
Open
Conversation
🦋 Changeset detectedLatest commit: 22b37e4 The changes in this PR will be included in the next version bump. This PR includes changesets to release 6 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
thyal
marked this pull request as ready for review
August 14, 2026 14:47
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adds support for room integrations (YouTube, Miro) to the SDK, the catalog, running
sessions, starting and stopping them, and a component to render them.
The SDK renders an integration by embedding the integration's own hosted page and syncing
state with it, rather than loading integration code into the consumer's application. This
keeps third-party integration code out of the host page entirely.
This depends on a corresponding update to those hosted pages, which has to be deployed
before any of this does anything.
Rendering
roomIntegrations.runningholds whatever is shared in the room, started from the SDK orfrom the pwa.
RoomIntegrationViewembeds it and keeps it in sync.Starting: the integration's own picker
Opens the integration's real picker (Miro's board picker, YouTube's form and watch history)
in a popup, and starts the session with whatever comes back. Resolves false if the user
cancels.
Starting: bring your own UI
For consumers who want their own styling and flow. The builders produce exactly what each
integration's own bootstrap submits, so a session started this way is indistinguishable from
one started in the pwa.
Accepts every YouTube url shape plus a bare video id, and reads ?t= out of the url.
Optionally takes metadata:
roomIntegrationContent.youtube({ url, metadata: { aspectRatio: 4 / 3, isLive: true } });roomIntegrationContent.miro({ accessLink });Two caveats,
so the SDK can't fetch them. Without metadata it assumes a non-live 16:9 video, which is
wrong for live streams and other aspect ratios. The picker fetches them for you.
An ordinary miro.com/app/board/... url returns null. Board discovery needs the picker.
What consumers get
roomIntegrationsonuseRoomConnection: the catalog, running sessions,and who may stop them
<RoomIntegrationView>: renders a running integration and keeps it in syncstartRoomIntegrationWithPicker(): opens the integration's own picker in a popuproomIntegrationContent.youtube(...)/.miro(...)— build the content yourself andbring your own UI
startRoomIntegration(): raw escape hatchScope: YouTube and Miro only
Trello and Google Drive can't work in the SDK, and both are already flagged
isEmbeddable: false:frame-ancestorspolicy is an origin allowlist, and it's checked againstthe whole ancestor chain, which includes the customer's own domain
just to pick one
Summary:
Related Issue:
Testing
pnpm build && pnpm devScreenshots/GIFs (if applicable)
Checklist
under the terms of the MIT license.
Additional Information