Skip to content

fix(skins): improve generated skin parity - #2580

Merged
mihar-22 merged 3 commits into
fix/shadcn-registry-deliveryfrom
fix/generated-skin-parity
Sep 3, 2026
Merged

fix(skins): improve generated skin parity#2580
mihar-22 merged 3 commits into
fix/shadcn-registry-deliveryfrom
fix/generated-skin-parity

Conversation

@mihar-22

@mihar-22 mihar-22 commented Sep 2, 2026

Copy link
Copy Markdown
Member

Refs #1055

Stacked on #2576.

Summary

Restore generated skin behavior and visual parity discovered while exercising the new Shadcn consumers and skin preview across React, HTML, Tailwind, and CSS. The supporting runtime changes preserve authored component props and make popup interactions stable.

Changes

  • preserve authored host props through VJSC React and HTML render targets
  • expose popup boundaries through the shared component contracts without leaking DOM types into core
  • prevent deferred popovers, menu sizing, and composed refs from causing broken opens or render loops
  • align audio and video controls, sliders, menus, tooltips, dialogs, posters, and playback feedback with legacy skins
  • improve the skin preview with color-scheme controls and clearer audio layout spacing

Testing

  • pnpm -F @videojs/core test — 1498 passed
  • pnpm -F @videojs/react test — 543 passed
  • pnpm -F vjsc test — 105 passed
  • pnpm -F @videojs/skins test — 34 passed
  • pnpm typecheck
  • manual React/CSS and React/Tailwind error-dialog verification in the skin preview

Note

Medium Risk
Touches popover open timing, menu measurement, ref composition, and broad skin/control markup—user-visible UI with moderate regression surface but well-covered by tests.

Overview
Restores generated skin behavior and visuals across React, HTML, CSS, and Tailwind while tightening popup/menu runtime behavior discovered in preview and Shadcn-style consumers.

Runtime & contracts: Adds shared PopoverBoundary on menu, popover, and tooltip public props (kept out of core state machines). Deferred popover opens now call showPopover on commit when the popup is already mounted. Menu popup sizing accounts for vertical scrollbar width. use-render merges refs so a single callback ref is not re-invoked every render (avoids loops). VJSC forwards React className on component children in HTML targets and merges classes on Host.

Skins & UX: Moves tooltips to control layouts (ButtonTooltip) instead of wrapping every primitive button; captions menu uses CaptionsButton as the menu trigger (no nested tooltip). Video presets use renderPoster instead of a poster string prop; generated React skin wrappers pass {...props} only. Settings menus get resizable popup transition classes; popup safe-area and theme/surface tweaks (hairline via shadow-media-sm, primary dialog buttons, slider thumb sizing). Skin preview adds light/dark scheme and layout polish. Hotkeys/gestures drop redundant step value props where defaults apply.

Tests cover scrollbar menu width, deferred popover show, ref stability, and async submenu assertions.

Reviewed by Cursor Bugbot for commit 0dfdc2d. Bugbot is set up for automated code reviews on this repo. Configure here.

@vercel

vercel Bot commented Sep 2, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
v10-sandbox Ready Ready Preview Sep 3, 2026 6:57pm UTC

Request Review

@netlify

netlify Bot commented Sep 2, 2026

Copy link
Copy Markdown

Deploy Preview for vjs10-site ready!

Name Link
🔨 Latest commit 0dfdc2d
🔍 Latest deploy log https://app.netlify.com/projects/vjs10-site/deploys/6a99c2e51a4f6b0008015d49
😎 Deploy Preview https://deploy-preview-2580--vjs10-site.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@pkg-pr-new

pkg-pr-new Bot commented Sep 2, 2026

Copy link
Copy Markdown
@videojs/core

pnpm add https://pkg.pr.new/@videojs/core@2580

@videojs/element

pnpm add https://pkg.pr.new/@videojs/element@2580

@videojs/html

pnpm add https://pkg.pr.new/@videojs/html@2580

@videojs/media

pnpm add https://pkg.pr.new/@videojs/media@2580

@videojs/react

pnpm add https://pkg.pr.new/@videojs/react@2580

@videojs/spf

pnpm add https://pkg.pr.new/@videojs/spf@2580

@videojs/store

pnpm add https://pkg.pr.new/@videojs/store@2580

@videojs/utils

pnpm add https://pkg.pr.new/@videojs/utils@2580

commit: 6102df0

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

📦 Bundle Size Report

🎨 @videojs/html — 35 small size changes
Path Base initial PR initial Initial diff Lazy diff
/video/minimal-skin.css 7.35 kB 7.45 kB +97 B (+1.3%)
/video/skin.css 7.22 kB 7.28 kB +56 B (+0.8%)
/video/minimal-skin 11.09 kB 11.15 kB +62 B (+0.5%) 0 B
/video/minimal-skin2 7.86 kB 7.95 kB +91 B (+1.1%)
/video/skin 11.00 kB 11.04 kB +40 B (+0.4%) 0 B
/video/skin2 7.82 kB 7.87 kB +52 B (+0.6%)
/audio/minimal-skin.css 5.25 kB 5.30 kB +47 B (+0.9%)
/audio/skin.css 5.05 kB 5.08 kB +31 B (+0.6%)
/audio/minimal-skin 8.03 kB 8.06 kB +31 B (+0.4%) 0 B
/audio/minimal-skin2 5.62 kB 5.66 kB +41 B (+0.7%)
/audio/skin 7.82 kB 7.83 kB +11 B (+0.1%) 0 B
/audio/skin2 5.42 kB 5.43 kB +7 B (+0.1%)
/live-video/minimal-skin.css 5.92 kB 6.00 kB +76 B (+1.3%)
/live-video/skin.css 6.01 kB 6.02 kB +7 B (+0.1%)
/live-video/minimal-skin 8.90 kB 8.95 kB +55 B (+0.6%) 0 B
/live-video/minimal-skin2 6.34 kB 6.41 kB +68 B (+1.0%)
/live-video/skin 9.07 kB 9.08 kB +4 B (+0.0%) 0 B
/live-video/skin2 6.55 kB 6.54 kB -13 B (-0.2%)
/live-audio/minimal-skin.css 4.05 kB 4.13 kB +84 B (+2.0%)
/live-audio/skin.css 4.03 kB 4.08 kB +49 B (+1.2%)
/live-audio/minimal-skin 6.31 kB 6.42 kB +106 B (+1.6%) 0 B
/live-audio/minimal-skin2 4.33 kB 4.40 kB +75 B (+1.7%)
/live-audio/skin 6.34 kB 6.38 kB +41 B (+0.6%) 0 B
/live-audio/skin2 4.33 kB 4.36 kB +36 B (+0.8%)
/ui/menu 18.34 kB 18.45 kB +112 B (+0.6%) 0 B
/ui/menu-content 7.51 kB 7.52 kB +12 B (+0.2%) 0 B
/ui/popover 8.56 kB 8.57 kB +8 B (+0.1%) 0 B
/ui/tooltip 9.94 kB 9.95 kB +13 B (+0.1%) 0 B
/ui/volume-popover 14.72 kB 14.74 kB +20 B (+0.1%) 0 B
/video (default) 19.92 kB 19.94 kB +23 B (+0.1%) 0 B
/video (default + hls) 159.84 kB 159.71 kB -134 B (-0.1%) 0 B
/video (minimal) 20.00 kB 20.06 kB +65 B (+0.3%) 0 B
/video (minimal + hls) 159.73 kB 159.81 kB +80 B (+0.0%) 0 B
/audio (default) 13.15 kB 13.16 kB +7 B (+0.1%) 0 B
/audio (minimal) 13.36 kB 13.40 kB +46 B (+0.3%) 0 B
Presets (7)
Entry Initial Lazy
/video (default) 19.94 kB 56.87 kB
/video (default + hls) 159.71 kB 56.87 kB
/video (minimal) 20.06 kB 56.87 kB
/video (minimal + hls) 159.81 kB 56.87 kB
/audio (default) 13.16 kB 56.87 kB
/audio (minimal) 13.40 kB 56.87 kB
/background 11.57 kB 56.87 kB
Media (18)
Entry Initial
/media/mux-video 142.40 kB
/media/mux-audio 142.23 kB
/media/background-video 1.16 kB
/media/cloudflare-video 6.28 kB
/media/dash-video 211.61 kB
/media/hls-audio 22.09 kB
/media/hls-background-video 16.80 kB
/media/hls-video 28.04 kB
/media/hlsjs-video 141.22 kB
/media/mux-background-video 16.83 kB
/media/native-hls-video 7.57 kB
/media/shaka-video 199.18 kB
/media/spotify-audio 6.27 kB
/media/tiktok-video 6.33 kB
/media/twitch-video 6.22 kB
/media/vimeo-video 13.05 kB
/media/wistia-video 60.23 kB
/media/youtube-video 6.81 kB
Extensions (2)
Entry Initial
/extensions/google-cast 6.52 kB
/extensions/mux-data 26.94 kB
Players (5)
Entry Initial Lazy
/video/player 9.70 kB 56.87 kB
/audio/player 6.14 kB 56.87 kB
/background/player 4.46 kB 56.87 kB
/live-video/player 9.06 kB 56.87 kB
/live-audio/player 6.15 kB 56.87 kB
Skins (29)
Entry Type Initial Lazy
/video/minimal-skin.css css 7.45 kB
/video/skin.css css 7.28 kB
/video/minimal-skin js 11.15 kB 56.87 kB
/video/minimal-skin2 js 7.95 kB
/video/skin js 11.04 kB 56.87 kB
/video/skin2 js 7.87 kB
/audio/minimal-skin.css css 5.30 kB
/audio/skin.css css 5.08 kB
/audio/minimal-skin js 8.06 kB 56.87 kB
/audio/minimal-skin2 js 5.66 kB
/audio/skin js 7.83 kB 56.87 kB
/audio/skin2 js 5.43 kB
/background/skin.css css 139 B
/background/skin js 9.81 kB 56.87 kB
/background/skin2 js 187 B
/live-video/minimal-skin.css css 6.00 kB
/live-video/skin.css css 6.02 kB
/live-video/minimal-skin js 8.95 kB 56.87 kB
/live-video/minimal-skin2 js 6.41 kB
/live-video/skin js 9.08 kB 56.87 kB
/live-video/skin2 js 6.54 kB
/live-audio/minimal-skin.css css 4.13 kB
/live-audio/skin.css css 4.08 kB
/live-audio/minimal-skin js 6.42 kB 56.87 kB
/live-audio/minimal-skin2 js 4.40 kB
/live-audio/skin js 6.38 kB 56.87 kB
/live-audio/skin2 js 4.36 kB
/global.css css 190 B
/shared.css css 118 B
UI Components (62)
Entry Initial Lazy
/ui/airplay-button 11.26 kB 56.87 kB
/ui/alert-dialog 8.79 kB 56.87 kB
/ui/audio-track-radio-group 11.38 kB 56.87 kB
/ui/buffering-indicator 8.61 kB 56.87 kB
/ui/captions-button 11.51 kB 56.87 kB
/ui/captions-radio-group 11.46 kB 56.87 kB
/ui/cast-button 11.25 kB 56.87 kB
/ui/container 9.47 kB 56.87 kB
/ui/controls 8.77 kB 56.87 kB
/ui/controls-backdrop 1.69 kB 56.87 kB
/ui/controls-content 1.67 kB 56.87 kB
/ui/dialog 8.73 kB 56.87 kB
/ui/dialog-backdrop 1.70 kB 56.87 kB
/ui/dialog-close 2.06 kB 56.87 kB
/ui/dialog-description 1.69 kB 56.87 kB
/ui/dialog-popup 1.90 kB 56.87 kB
/ui/dialog-title 1.70 kB 56.87 kB
/ui/error-dialog 12.38 kB 56.87 kB
/ui/fullscreen-button 11.27 kB 56.87 kB
/ui/gesture 9.56 kB 56.87 kB
/ui/hotkey 9.97 kB 56.87 kB
/ui/live-button 9.74 kB 56.87 kB
/ui/menu 18.45 kB 56.87 kB
/ui/menu-checkbox-item 1.97 kB 56.87 kB
/ui/menu-content 7.52 kB 56.87 kB
/ui/menu-group 2.09 kB 56.87 kB
/ui/menu-group-label 1.64 kB
/ui/menu-item 2.29 kB 56.87 kB
/ui/menu-item-indicator 1.37 kB 56.87 kB
/ui/menu-radio-group 3.01 kB 56.87 kB
/ui/menu-radio-item 2.13 kB 56.87 kB
/ui/menu-separator 1.30 kB 56.87 kB
/ui/mute-button 11.28 kB 56.87 kB
/ui/pip-button 11.22 kB 56.87 kB
/ui/play-button 11.23 kB 56.87 kB
/ui/playback-rate-button 11.32 kB 56.87 kB
/ui/playback-rate-radio-group 11.37 kB 56.87 kB
/ui/popover 8.57 kB 56.87 kB
/ui/poster 8.67 kB 56.87 kB
/ui/quality-radio-group 11.97 kB 56.87 kB
/ui/seek-button 11.27 kB 56.87 kB
/ui/seek-indicator 12.69 kB 56.87 kB
/ui/seek-indicator-value 1.10 kB
/ui/slider 11.65 kB 56.87 kB
/ui/slider-preview 2.01 kB 56.87 kB
/ui/status-announcer 10.59 kB 56.87 kB
/ui/status-indicator 13.02 kB 56.87 kB
/ui/status-indicator-value 1.10 kB
/ui/thumbnail 9.84 kB 56.87 kB
/ui/time 10.80 kB 56.87 kB
/ui/time-slider 13.02 kB 56.87 kB
/ui/time-slider-chapter-title 8.79 kB 56.87 kB
/ui/time-slider-chapters 9.64 kB 56.87 kB
/ui/title 8.17 kB 56.87 kB
/ui/tooltip 9.95 kB 56.87 kB
/ui/tooltip-label 1.21 kB
/ui/tooltip-shortcut 1.18 kB
/ui/volume-indicator 13.01 kB 56.87 kB
/ui/volume-indicator-fill 1.11 kB
/ui/volume-indicator-value 1.10 kB
/ui/volume-popover 14.74 kB 56.87 kB
/ui/volume-slider 12.31 kB 56.87 kB
⚛️ @videojs/react — 60 small size changes
Path Base initial PR initial Initial diff Lazy diff
/media/cloudflare-video 4.34 kB 4.35 kB +2 B (+0.0%)
/media/twitch-video 4.30 kB 4.30 kB +2 B (+0.0%)
/media/vimeo-video 11.19 kB 11.21 kB +19 B (+0.2%)
/media/youtube-video 4.86 kB 4.86 kB -1 B (-0.0%)
/video/minimal-skin.css 7.20 kB 7.30 kB +97 B (+1.3%)
/video/skin.css 7.08 kB 7.14 kB +67 B (+0.9%)
/video/minimal-skin 51.24 kB 51.25 kB +4 B (+0.0%) 0 B
/video/skin 50.39 kB 50.53 kB +143 B (+0.3%) 0 B
/audio/minimal-skin.css 5.15 kB 5.20 kB +47 B (+0.9%)
/audio/skin.css 4.94 kB 4.98 kB +41 B (+0.8%)
/audio/minimal-skin 39.54 kB 39.59 kB +51 B (+0.1%) 0 B
/audio/skin 39.41 kB 39.49 kB +81 B (+0.2%) 0 B
/live-video/minimal-skin.css 5.78 kB 5.85 kB +66 B (+1.1%)
/live-video/skin.css 5.86 kB 5.88 kB +19 B (+0.3%)
/live-video/minimal-skin 42.98 kB 43.13 kB +155 B (+0.4%) 0 B
/live-video/skin 42.28 kB 42.50 kB +228 B (+0.5%) 0 B
/live-audio/minimal-skin.css 3.94 kB 4.03 kB +92 B (+2.3%)
/live-audio/skin.css 3.93 kB 3.96 kB +30 B (+0.7%)
/live-audio/minimal-skin 30.38 kB 30.38 kB -8 B (-0.0%) 0 B
/live-audio/skin 30.36 kB 30.38 kB +14 B (+0.0%) 0 B
/ui/airplay-button 10.43 kB 10.45 kB +22 B (+0.2%) 0 B
/ui/alert-dialog 4.71 kB 4.73 kB +27 B (+0.6%) 0 B
/ui/audio-track-radio-group 9.45 kB 9.48 kB +30 B (+0.3%) 0 B
/ui/buffering-indicator 7.77 kB 7.80 kB +31 B (+0.4%) 0 B
/ui/captions-button 10.40 kB 10.44 kB +40 B (+0.4%) 0 B
/ui/captions-radio-group 9.57 kB 9.59 kB +24 B (+0.2%) 0 B
/ui/cast-button 10.40 kB 10.44 kB +43 B (+0.4%) 0 B
/ui/controls 7.68 kB 7.71 kB +33 B (+0.4%) 0 B
/ui/dialog 4.73 kB 4.75 kB +19 B (+0.4%) 0 B
/ui/error-dialog 11.77 kB 11.80 kB +33 B (+0.3%) 0 B
/ui/fullscreen-button 10.36 kB 10.40 kB +36 B (+0.3%) 0 B
/ui/live-button 8.76 kB 8.80 kB +42 B (+0.5%) 0 B
/ui/menu 19.30 kB 19.45 kB +154 B (+0.8%) 0 B
/ui/mute-button 10.41 kB 10.44 kB +27 B (+0.3%) 0 B
/ui/pip-button 10.36 kB 10.39 kB +30 B (+0.3%) 0 B
/ui/play-button 10.35 kB 10.37 kB +14 B (+0.1%) 0 B
/ui/playback-rate-button 10.35 kB 10.37 kB +22 B (+0.2%) 0 B
/ui/playback-rate-radio-group 9.50 kB 9.53 kB +31 B (+0.3%) 0 B
/ui/popover 8.13 kB 8.16 kB +30 B (+0.4%) 0 B
/ui/poster 7.54 kB 7.57 kB +29 B (+0.4%) 0 B
/ui/quality-radio-group 9.92 kB 9.95 kB +32 B (+0.3%) 0 B
/ui/seek-button 10.38 kB 10.41 kB +36 B (+0.3%) 0 B
/ui/seek-indicator 11.95 kB 11.97 kB +20 B (+0.2%) 0 B
/ui/slider 12.73 kB 12.76 kB +34 B (+0.3%) 0 B
/ui/status-announcer 10.06 kB 10.10 kB +41 B (+0.4%) 0 B
/ui/status-indicator 12.26 kB 12.29 kB +38 B (+0.3%) 0 B
/ui/thumbnail 8.71 kB 8.73 kB +21 B (+0.2%) 0 B
/ui/time 9.74 kB 9.77 kB +28 B (+0.3%) 0 B
/ui/time-slider 14.15 kB 14.17 kB +19 B (+0.1%) 0 B
/ui/title 7.24 kB 7.28 kB +37 B (+0.5%) 0 B
/ui/tooltip 8.90 kB 8.93 kB +36 B (+0.4%) 0 B
/ui/volume-indicator 12.32 kB 12.33 kB +18 B (+0.1%) 0 B
/ui/volume-popover 14.17 kB 14.20 kB +28 B (+0.2%) 0 B
/ui/volume-slider 12.11 kB 12.14 kB +33 B (+0.3%) 0 B
/video (default) 50.48 kB 50.58 kB +100 B (+0.2%) 0 B
/video (default + hls) 188.35 kB 188.34 kB -5 B (-0.0%) 0 B
/video (minimal) 51.27 kB 51.36 kB +92 B (+0.2%) 0 B
/video (minimal + hls) 189.14 kB 189.19 kB +55 B (+0.0%) 0 B
/audio (default) 39.56 kB 39.59 kB +33 B (+0.1%) 0 B
/audio (minimal) 39.64 kB 39.62 kB -28 B (-0.1%) 0 B
Presets (7)
Entry Initial Lazy
/video (default) 50.58 kB 56.87 kB
/video (default + hls) 188.34 kB 56.87 kB
/video (minimal) 51.36 kB 56.87 kB
/video (minimal + hls) 189.19 kB 56.87 kB
/audio (default) 39.59 kB 56.87 kB
/audio (minimal) 39.62 kB 56.87 kB
/background 581 B 56.87 kB
Media (22)
Entry Initial
/media/mux-video/hls-js 140.61 kB
/media/mux-video/spf 27.39 kB
/media/mux-audio/hls-js 140.55 kB
/media/mux-audio/spf 21.32 kB
/media/background-video 402 B
/media/cloudflare-video 4.35 kB
/media/dash-video 210.29 kB
/media/hls-audio 20.33 kB
/media/hls-background-video 16.46 kB
/media/hls-video 26.34 kB
/media/hlsjs-video 139.44 kB
/media/mux-audio 140.56 kB
/media/mux-background-video 16.45 kB
/media/mux-video 140.54 kB
/media/native-hls-video 5.76 kB
/media/shaka-video 197.52 kB
/media/spotify-audio 4.22 kB
/media/tiktok-video 4.18 kB
/media/twitch-video 4.30 kB
/media/vimeo-video 11.21 kB
/media/wistia-video 60.05 kB
/media/youtube-video 4.86 kB
Extensions (2)
Entry Initial
/extensions/google-cast 5.34 kB
/extensions/mux-data 25.70 kB
Players (5)
Entry Initial Lazy
/video/player 7.56 kB 56.87 kB
/audio/player 4.00 kB 56.87 kB
/background/player 2.27 kB 56.87 kB
/live-video/player 6.96 kB 56.87 kB
/live-audio/player 3.99 kB 56.87 kB
Skins (18)
Entry Type Initial Lazy
/video/minimal-skin.css css 7.30 kB
/video/skin.css css 7.14 kB
/video/minimal-skin js 51.25 kB 56.87 kB
/video/skin js 50.53 kB 56.87 kB
/audio/minimal-skin.css css 5.20 kB
/audio/skin.css css 4.98 kB
/audio/minimal-skin js 39.59 kB 56.87 kB
/audio/skin js 39.49 kB 56.87 kB
/background/skin.css css 90 B
/background/skin js 277 B
/live-video/minimal-skin.css css 5.85 kB
/live-video/skin.css css 5.88 kB
/live-video/minimal-skin js 43.13 kB 56.87 kB
/live-video/skin js 42.50 kB 56.87 kB
/live-audio/minimal-skin.css css 4.03 kB
/live-audio/skin.css css 3.96 kB
/live-audio/minimal-skin js 30.38 kB 56.87 kB
/live-audio/skin js 30.38 kB 56.87 kB
UI Components (39)
Entry Initial Lazy
/ui/airplay-button 10.45 kB 56.87 kB
/ui/alert-dialog 4.73 kB 56.87 kB
/ui/audio-track 7.93 kB 56.87 kB
/ui/audio-track-radio-group 9.48 kB 56.87 kB
/ui/buffering-indicator 7.80 kB 56.87 kB
/ui/captions-button 10.44 kB 56.87 kB
/ui/captions-radio-group 9.59 kB 56.87 kB
/ui/cast-button 10.44 kB 56.87 kB
/ui/controls 7.71 kB 56.87 kB
/ui/dialog 4.75 kB 56.87 kB
/ui/error-dialog 11.80 kB 56.87 kB
/ui/fullscreen-button 10.40 kB 56.87 kB
/ui/gesture 7.99 kB 56.87 kB
/ui/hotkey 8.38 kB 56.87 kB
/ui/live-button 8.80 kB 56.87 kB
/ui/menu 19.45 kB 56.87 kB
/ui/mute-button 10.44 kB 56.87 kB
/ui/pip-button 10.39 kB 56.87 kB
/ui/play-button 10.37 kB 56.87 kB
/ui/playback-rate 7.99 kB 56.87 kB
/ui/playback-rate-button 10.37 kB 56.87 kB
/ui/playback-rate-radio-group 9.53 kB 56.87 kB
/ui/popover 8.16 kB 56.87 kB
/ui/poster 7.57 kB 56.87 kB
/ui/quality 8.42 kB 56.87 kB
/ui/quality-radio-group 9.95 kB 56.87 kB
/ui/seek-button 10.41 kB 56.87 kB
/ui/seek-indicator 11.97 kB 56.87 kB
/ui/slider 12.76 kB 56.87 kB
/ui/status-announcer 10.10 kB 56.87 kB
/ui/status-indicator 12.29 kB 56.87 kB
/ui/thumbnail 8.73 kB 56.87 kB
/ui/time 9.77 kB 56.87 kB
/ui/time-slider 14.17 kB 56.87 kB
/ui/title 7.28 kB 56.87 kB
/ui/tooltip 8.93 kB 56.87 kB
/ui/volume-indicator 12.33 kB 56.87 kB
/ui/volume-popover 14.20 kB 56.87 kB
/ui/volume-slider 12.14 kB 56.87 kB
🧩 @videojs/core — 1 small size change
Path Base initial PR initial Initial diff Lazy diff
/dom 22.42 kB 22.53 kB +112 B (+0.5%) 0 B
Entries (76)
Entry Initial Lazy
. 13.15 kB
/dom 22.53 kB 56.87 kB
/vjsc 1.82 kB
/i18n 3.23 kB 56.87 kB
/i18n/locales/all 34.97 kB
/i18n/locales/ar 1.22 kB
/i18n/locales/az 1.09 kB
/i18n/locales/bg 1.29 kB
/i18n/locales/bn 1.23 kB
/i18n/locales/bs 1.00 kB
/i18n/locales/ca 1.07 kB
/i18n/locales/cs 1.07 kB
/i18n/locales/cy 1.02 kB
/i18n/locales/da 1006 B
/i18n/locales/de 1.09 kB
/i18n/locales/el 1.49 kB
/i18n/locales/en 785 B
/i18n/locales/es 1018 B
/i18n/locales/et 1.05 kB
/i18n/locales/eu 1.03 kB
/i18n/locales/fa 1.22 kB
/i18n/locales/fi 1.04 kB
/i18n/locales/fr 1.07 kB
/i18n/locales/gd 1.10 kB
/i18n/locales/gl 1022 B
/i18n/locales/he 1.14 kB
/i18n/locales/hi 1.30 kB
/i18n/locales/hr 1.02 kB
/i18n/locales/hu 1.10 kB
/i18n/locales/id 919 B
/i18n/locales/it 1.01 kB
/i18n/locales/ja 1.18 kB
/i18n/locales/ko 1.14 kB
/i18n/locales/lt 1.02 kB
/i18n/locales/lv 1.09 kB
/i18n/locales/mr 1.30 kB
/i18n/locales/nb 987 B
/i18n/locales/ne 1.29 kB
/i18n/locales/nl 1.00 kB
/i18n/locales/nn 987 B
/i18n/locales/oc 1.08 kB
/i18n/locales/pl 1.14 kB
/i18n/locales/pt 1.03 kB
/i18n/locales/pt-BR 1.03 kB
/i18n/locales/pt-PT 1.01 kB
/i18n/locales/ro 1.07 kB
/i18n/locales/ru 1.40 kB
/i18n/locales/sk 1.10 kB
/i18n/locales/sl 1.04 kB
/i18n/locales/sr 1.07 kB
/i18n/locales/sv 1.01 kB
/i18n/locales/te 1.32 kB
/i18n/locales/th 1.29 kB
/i18n/locales/tr 1.08 kB
/i18n/locales/uk 1.41 kB
/i18n/locales/vi 1.11 kB
/i18n/locales/zh 1.02 kB
/i18n/locales/zh-CN 1.02 kB
/i18n/locales/zh-TW 1.02 kB
/i18n/text/airplay 101 B
/i18n/text/buttons 137 B
/i18n/text/captions 93 B
/i18n/text/cast 114 B
/i18n/text/common 90 B
/i18n/text/container 75 B
/i18n/text/errors 285 B
/i18n/text/fullscreen 98 B
/i18n/text/live 126 B
/i18n/text/menu 249 B
/i18n/text/pip 101 B
/i18n/text/playback 80 B
/i18n/text/seek 105 B
/i18n/text/slider 65 B
/i18n/text/status 222 B
/i18n/text/time 280 B
/i18n/text/volume 133 B
🏷️ @videojs/element — no changes
Entries (2)
Entry Initial
. 1.05 kB
/context 943 B
📦 @videojs/store — no changes
Entries (3)
Entry Initial
. 1.72 kB
/html 703 B
/react 365 B
🔧 @videojs/utils — no changes
Entries (13)
Entry Initial
/array 271 B
/dom 5.02 kB
/events 320 B
/function 386 B
/i18n 249 B
/jwt 176 B
/object 535 B
/predicate 297 B
/percent 281 B
/string 239 B
/style 212 B
/time 976 B
/number 199 B

📦 @videojs/media

Path Base initial PR initial Initial diff Lazy diff
/dom/dash 209.83 kB 3.28 kB -206.54 kB (-98.4%)
/dom/wistia 60.09 kB 1.89 kB -58.20 kB (-96.9%)
Entries (23)
Entry Initial
. 1.07 kB
/dom 121 B
/dom/dash 3.28 kB
/dom/wistia 1.89 kB
/dom/audio-host 1.10 kB
/dom/cloudflare 3.69 kB
/dom/custom-media-element 2.13 kB
/dom/dash 209.83 kB
/dom/google-cast 4.06 kB
/dom/hls-js 139.16 kB
/dom/media-host 1.20 kB
/dom/media-played-ranges 576 B
/dom/mux 162.88 kB
/dom/native-hls 5.25 kB
/dom/shaka 197.02 kB
/dom/spotify 3.58 kB
/dom/tiktok 3.57 kB
/dom/twitch 3.62 kB
/dom/video-host 1.39 kB
/dom/vimeo 10.62 kB
/dom/wistia 60.09 kB
/dom/youtube 4.25 kB
/media-tracks 2.05 kB
📦 @videojs/spf — no changes
Entries (10)
Entry Initial
. 4.55 kB
/dom 6.60 kB
/hls 22.06 kB
/media-tracks 504 B
/hls-background-video 15.89 kB
/hls-audio 19.82 kB
/hls-video 25.85 kB
/mux-audio 20.76 kB
/mux-background-video 15.89 kB
/mux-video 26.67 kB

ℹ️ How to interpret

Each entry is independently bundled, minified, and brotli-compressed. Initial size includes its static import graph; lazy dynamic chunks are reported separately.

Entries are not additive because their dependency graphs overlap. Preset rows represent realistic combined bundles.

Changes of 300 B or less across initial, lazy, and total size are collapsed, not discarded.

Run pnpm size locally to check current initial sizes.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 6102df0. Configure here.

Comment thread packages/skins/build/target/html.tsx
@mihar-22
mihar-22 force-pushed the fix/generated-skin-parity branch from 51058d6 to 0dfdc2d Compare September 3, 2026 18:56
@mihar-22
mihar-22 merged commit c8b7006 into main Sep 3, 2026
15 of 25 checks passed
@mihar-22
mihar-22 deleted the fix/generated-skin-parity branch September 3, 2026 18:59
@videojs-release videojs-release Bot mentioned this pull request Sep 3, 2026
@github-actions github-actions Bot mentioned this pull request Sep 3, 2026
9 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants