MARKETPLACE
PLUGINS
PICTURE-IN-PICTURE (DESKTOP)
Picture-in-Picture (Desktop) logo

Picture-in-Picture (Desktop)

Published September 2026
   •    Updated this week

Plugin details

A desktop Picture-in-Picture toolkit for Bubble, built around one simple idea:
✦ PiP should be useful for more than just video.

Open custom HTML, Bubble pages, embeddable URLs and live app content inside an always-on-top Picture-in-Picture window - or continue existing video playback without forcing the user to restart.

───────────────────────────

DEMO APP EDITOR

View the demo app setup in the Bubble editor:
https://bubble.io/page?id=demopictureinpicture&tab=Design&name=index&type=page&elements=bTKCH

───────────────────────────

IMPORTANT: LIMITATIONS

Picture-in-Picture support is browser-controlled. Custom HTML, Custom URL and YouTube helper workflows require Document Picture-in-Picture. These workflows are intended for supported desktop browsers and are not supported on mobile browsers. On mobile, use an in-page fallback such as a floating group, modal, sticky panel or full-screen view.

───────────────────────────

MORE THAN VIDEO

Document Picture-in-Picture can display interactive HTML content inside a floating window.

That makes it useful for:

✦ timers and countdowns
✦ compact dashboards
✦ live status panels
✦ recipe or task controls
✦ small utility interfaces
✦ custom HTML
✦ Bubble pages
✦ embeddable URLs

The PiP window is designed to stay visible above the main browser content while the user continues working elsewhere.

───────────────────────────

VIDEO THAT CONTINUES

This PiP plugin supports:
✦ native HTML video
✦ Vimeo through Bubble’s Video element
✦ YouTube through Bubble’s Video element and the included helper player

Native video and Vimeo can continue through standard video Picture-in-Picture.

YouTube uses a dedicated handoff flow that preserves playback position and play/pause state when moving into PiP - and passes the updated position back to the original Bubble player when PiP closes.

───────────────────────────

BUILT FOR BUBBLE WORKFLOWS

Use one lightweight Picture in Picture Controller element and trigger PiP through normal Bubble workflows.

Available actions include:

✦ Open HTML in Picture-in-Picture
✦ Open URL in Picture-in-Picture
✦ Continue Video in Picture-in-Picture
✦ Continue YouTube in Picture-in-Picture
✦ Close Picture-in-Picture

Exposed states let you check browser support, whether PiP is currently open and the most recent error.

Workflow events are available for successful open, close and failure.

───────────────────────────

YOUTUBE WITHOUT THE WORKAROUNDS

To play YouTube videos in PiP mode, Bubble's Video element needs a different approach from native video.

The included YouTube PiP Player helper element handles that setup for you.

Create one lightweight dedicated Bubble page, place the helper element on it, and reference that page from the Continue YouTube action.

Playback position, play/pause state and reverse handoff are handled by the plugin.

───────────────────────────

BROWSER-AWARE BY DESIGN

Document Picture-in-Picture is a newer browser capability and is not supported everywhere.

The controller exposes separate support states for:

✦ Document Picture-in-Picture
✦ standard Video Picture-in-Picture

Use these states to provide your own fallback experience where needed.

───────────────────────────

NO ROSEMONT BACKEND

The plugin runs client-side in the browser.
Rosemont does not proxy, store or track the content you display through the plugin.

$49

One time  •  Or  $5/mo

stars   •   0 ratings
2 installs  
This plugin does not collect or track your personal data.

Platform

Web

Contributor details

Rosemont Studio logo
Rosemont Studio
Joined 2026   •   3 Plugins
View contributor profile

Instructions

QUICK START
Add the Picture in Picture Controller element to the page where PiP workflows will run.

The controller does not need to form part of your visible interface.

Trigger Picture-in-Picture actions from a direct user interaction such as a button click.

Document Picture-in-Picture requires browser user activation and may fail if opened automatically from page load, a delayed workflow or another non-interactive context.

Demo app editor:
https://bubble.io/page?id=demopictureinpicture&tab=Design&name=index&type=page&elements=bTKCH

Run mode:
https://demopictureinpicture.bubbleapps.io/version-test

───────────────────────────

OPEN HTML IN PICTURE-IN-PICTURE

Use Open HTML in Picture-in-Picture when you want complete control over the content shown inside the floating window.

Provide:
✦ HTML Content
✦ optional CSS
✦ optional Window Title
✦ requested Width
✦ requested Height

Dynamic Bubble expressions can be included in the HTML.

The browser controls the final PiP window dimensions and may adjust the requested size.

This action is useful for timers, live counters, status displays, lightweight controls and other compact interfaces.

───────────────────────────

OPEN URL IN PICTURE-IN-PICTURE

Use Open URL in Picture-in-Picture to display a web page inside the PiP window.

Provide:
✦ URL
✦ requested Width
✦ requested Height

The destination must allow iframe embedding.

Some websites prevent themselves from being embedded through browser security headers. The plugin cannot override those restrictions.

Bubble pages under your control are ideal for this use case.

For Bubble pages, check Settings > General > Allow to render the app in a frame/iframe.
For pages inside the same Bubble app, “Allow when same origin” is usually the right setting.

───────────────────────────

CONTINUE VIDEO IN PICTURE-IN-PICTURE

Use Continue Video in Picture-in-Picture for:
✦ native HTML video
✦ Vimeo

First give the existing video element an Element ID in Bubble.

Pass that value into Target Element ID.

For Vimeo, the player may need to have been started once before the plugin can continue the existing session through native PiP.

An untouched Vimeo player can also use Vimeo's own built-in Picture-in-Picture control to enter PiP from the beginning.

YouTube should use the dedicated Continue YouTube action instead.

───────────────────────────

CONTINUE YOUTUBE IN PICTURE-IN-PICTURE

YouTube requires one additional helper page.

1. Create a separate Bubble page for YouTube PiP.
2. Place the YouTube PiP Player element on that page.
3. Stretch the element to fill the available page.
4. Keep the page responsive.
5. Keep page padding and unnecessary gaps at 0 where possible.
6. Ensure the page minimum width and height are smaller than the PiP window dimensions you intend to request.
7. Copy the run-mode URL of that page.

On the page containing the original Bubble YouTube video:

1. Give the Bubble Video element an Element ID.
2. Trigger Continue YouTube in Picture-in-Picture.
3. Pass the Video element ID into Target Element ID.
4. Pass the dedicated helper-page URL into PiP Page URL.
5. Choose the requested PiP Width and Height.

The default YouTube PiP size is 480 × 270.

The plugin will:
✦ identify the current YouTube video
✦ preserve the current timestamp
✦ preserve whether playback was active or paused
✦ continue active playback muted where browser autoplay rules require it
✦ optionally show a Turn sound on button
✦ pass the final playback position back to the original Bubble player when PiP closes

The YouTube PiP Player element does not require a Video ID field. The controller passes the relevant video information automatically.

───────────────────────────

YOUTUBE SOUND

Browsers commonly restrict autoplay with sound.

When an actively playing YouTube video is continued into PiP, the helper player may initially continue muted.

The YouTube PiP Player includes:
✦ Show Sound Button
✦ Sound Button Text

Use these fields to control the optional sound-enabling overlay.

───────────────────────────

CLOSING PICTURE-IN-PICTURE

Use Close Picture-in-Picture when your Bubble workflow needs to close the PiP window programmatically.

Users can also close the window through the browser's own PiP controls.

The controller's Picture-in-Picture closes event can be used to react when a managed PiP session ends.

───────────────────────────

SUPPORT STATES

The Picture in Picture Controller exposes:

Document PiP supported
Whether the browser supports arbitrary HTML/document Picture-in-Picture.

Video PiP supported
Whether the browser supports standard video Picture-in-Picture.

PiP is open
Whether a Picture-in-Picture window managed by this controller is currently open.

Last error
The most recent error reported by a PiP action.

Use the support states to build your own browser fallback experience.

───────────────────────────

WORKFLOW EVENTS

The controller provides:
✦ Picture-in-Picture opens
✦ Picture-in-Picture closes
✦ Picture-in-Picture fails to open

When an action fails, check Last error for additional detail.

The YouTube PiP Player also exposes:
✦ YouTube player is ready
✦ YouTube player fails

Its Player Error state contains the most recent YouTube helper error.

───────────────────────────

BROWSER SUPPORT

Document Picture-in-Picture is a newer browser API and is not available in every browser.

The feature requires HTTPS in supporting browsers and opening the window requires a user interaction.

Always use the controller's support states when PiP is an important part of your app's UX.

Standard video Picture-in-Picture has separate browser support, which is why the plugin exposes Document PiP supported and Video PiP supported independently.

───────────────────────────

A GOOD DEFAULT BUILD

For most apps:
✦ place one Picture in Picture Controller on the relevant page
✦ trigger PiP from a user click
✦ use Open HTML for lightweight custom interfaces
✦ use Open URL for Bubble pages or embeddable content
✦ use Continue Video for native video and Vimeo
✦ use Continue YouTube plus the helper element for Bubble YouTube playback
✦ check support states before showing PiP controls
✦ use the failure event and Last error when you need custom fallback messaging

The plugin handles the browser PiP plumbing. Your Bubble app keeps control of the interface and workflows.

Types

This plugin can be found under the following types:
Background Services   •   Element   •   Event   •   Action

Categories

This plugin can be found under the following categories:
Video   •   Media   •   Productivity   •   Technical   •   Containers   •   Visual Elements

Resources

Support contact
Tutorial

Rating and reviews

No reviews yet

This plugin has not received any reviews.
Bubble