Skip to content

fix(skins): harden shadcn registry delivery - #2576

Merged
mihar-22 merged 11 commits into
refactor/vjsc-build-structurefrom
fix/shadcn-registry-delivery
Sep 3, 2026
Merged

fix(skins): harden shadcn registry delivery#2576
mihar-22 merged 11 commits into
refactor/vjsc-build-structurefrom
fix/shadcn-registry-delivery

Conversation

@mihar-22

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

Copy link
Copy Markdown
Member

Refs #1055

Stacked on #2557.

Summary

Harden VJSC skin styling and the source-owned Shadcn registry so installed skins carry their required theme, expose stable customization contracts, and are verified in clean external consumers. HTML registry delivery is now CSS-only, avoiding the oversized utility-heavy templates produced by HTML/Tailwind.

Changes

  • clarify preset theme ownership and preserve runtime font and component customization
  • import the shared theme automatically for React/Tailwind skins and individually installed components
  • publish React/Tailwind, React/CSS, and HTML/CSS catalogs, with HTML/CSS at the default /html path
  • remove the HTML/Tailwind registry target and its consumer scaffolding
  • install and exercise Default and Minimal together in each supported Next.js or Vite consumer
  • verify theme tokens, sizing, icons, media attachment, menu interaction, and browser console health
  • align generated source formatting and skin E2E contracts with the current anatomy

Testing

  • pnpm test:shadcn — 100 hosted items validated
  • pnpm exec vp run '@videojs/e2e#test:registry:full' — 3 passed
  • pnpm -F vjsc test — 104 passed
  • pnpm -F @videojs/skins test — 33 passed
  • pnpm typecheck
  • pnpm lint

Generated registry and consumer artifacts remain ignored and untracked.


Note

Medium Risk
Wide contract change (CSS selectors, registry paths, and HTML-only registry) affects embedders and e2e; core playback paths are mostly exercised via updated tests rather than logic in auth or payments.

Overview
Skins and registry move to data-theme / data-preset on .media-skin instead of preset BEM classes, with preset-specific control hooks (.video-controls, .audio-controls) and renamed dialog/popover classes. Hosted Shadcn output lives under dist/shadcn/r; catalogs are React/Tailwind, React/CSS, and HTML/CSS only (HTML/Tailwind target and consumer projects removed). Registry items mark theme: true, ship per-skin CSS for HTML, and pull Tailwind theme from shared config rather than inlined registry CSS.

Build/runtime picks icon families per skin, refines VJSC $render (HTML trigger props through shared components, self-closing hosts), and only dedupes React package modules into shared/ when identical across themes. Style variants use theme + preset (not compound skin class names). Popups/menus centralize surface styling; error dialogs no longer rely on container :has() to hide controls.

Verification updates shared Playwright selectors, registry setup to install both default and minimal skins per consumer, richer consumer.spec checks, skin-parity/sandbox/player tests for the new anatomy, a menu-context fix so nested refreshes don’t close the root menu, sandbox sync of data-theme/data-preset on Tailwind custom elements, and CDN skin scope checks aligned with the new selectors.

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

@vercel

vercel Bot commented Sep 1, 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:58pm UTC

Request Review

@netlify

netlify Bot commented Sep 1, 2026

Copy link
Copy Markdown

Deploy Preview for vjs10-site ready!

Name Link
🔨 Latest commit a1f262e
🔍 Latest deploy log https://app.netlify.com/projects/vjs10-site/deploys/6a99c2e40d48e60009d08248
😎 Deploy Preview https://deploy-preview-2576--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 1, 2026

Copy link
Copy Markdown
@videojs/core

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

@videojs/element

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

@videojs/html

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

@videojs/media

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

@videojs/react

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

@videojs/spf

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

@videojs/store

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

@videojs/utils

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

commit: 160f18d

@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

📦 Bundle Size Report

🎨 @videojs/html

Path Base initial PR initial Initial diff Lazy diff
/video/minimal-skin.css 8.51 kB 7.35 kB -1.16 kB (-13.7%)
/video/skin.css 8.55 kB 7.22 kB -1.33 kB (-15.6%)
/video/minimal-skin 12.43 kB 11.09 kB -1.34 kB (-10.8%) 0 B
/video/minimal-skin2 9.03 kB 7.86 kB -1.17 kB (-12.9%)
/video/skin 12.52 kB 11.00 kB -1.53 kB (-12.2%) 0 B
/video/skin2 9.15 kB 7.82 kB -1.33 kB (-14.6%)
/audio/minimal-skin.css 5.71 kB 5.25 kB -473 B (-8.1%)
/audio/skin.css 5.56 kB 5.05 kB -527 B (-9.3%)
/audio/minimal-skin 8.56 kB 8.03 kB -537 B (-6.1%) 0 B
/audio/minimal-skin2 6.08 kB 5.62 kB -473 B (-7.6%)
/audio/skin 8.38 kB 7.82 kB -580 B (-6.8%) 0 B
/audio/skin2 5.92 kB 5.42 kB -518 B (-8.5%)
/live-video/minimal-skin.css 6.86 kB 5.92 kB -960 B (-13.7%)
/live-video/skin.css 6.93 kB 6.01 kB -946 B (-13.3%)
/live-video/minimal-skin 10.05 kB 8.90 kB -1.15 kB (-11.5%) 0 B
/live-video/minimal-skin2 7.30 kB 6.34 kB -983 B (-13.1%)
/live-video/skin 10.17 kB 9.07 kB -1.10 kB (-10.8%) 0 B
/live-video/skin2 7.46 kB 6.55 kB -929 B (-12.2%)
/live-audio/minimal-skin 6.68 kB 6.31 kB -373 B (-5.5%) 0 B
/video (default) 21.46 kB 19.92 kB -1.54 kB (-7.2%) 0 B
/video (default + hls) 161.23 kB 159.84 kB -1.39 kB (-0.9%) 0 B
/video (minimal) 21.38 kB 20.00 kB -1.38 kB (-6.5%) 0 B
/video (minimal + hls) 161.08 kB 159.73 kB -1.35 kB (-0.8%) 0 B
/audio (default) 13.73 kB 13.15 kB -587 B (-4.2%) 0 B
/audio (minimal) 13.94 kB 13.36 kB -600 B (-4.2%) 0 B
Small changes (6, ≤ 300 B)
Path Base initial PR initial Initial diff Lazy diff
/live-audio/minimal-skin.css 4.33 kB 4.05 kB -289 B (-6.5%)
/live-audio/skin.css 4.25 kB 4.03 kB -228 B (-5.2%)
/live-audio/minimal-skin2 4.62 kB 4.33 kB -297 B (-6.3%)
/live-audio/skin 6.58 kB 6.34 kB -249 B (-3.7%) 0 B
/live-audio/skin2 4.53 kB 4.33 kB -213 B (-4.6%)
/ui/menu-content 7.50 kB 7.51 kB +7 B (+0.1%) 0 B
Presets (7)
Entry Initial Lazy
/video (default) 19.92 kB 56.87 kB
/video (default + hls) 159.84 kB 56.87 kB
/video (minimal) 20.00 kB 56.87 kB
/video (minimal + hls) 159.73 kB 56.87 kB
/audio (default) 13.15 kB 56.87 kB
/audio (minimal) 13.36 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.35 kB
/video/skin.css css 7.22 kB
/video/minimal-skin js 11.09 kB 56.87 kB
/video/minimal-skin2 js 7.86 kB
/video/skin js 11.00 kB 56.87 kB
/video/skin2 js 7.82 kB
/audio/minimal-skin.css css 5.25 kB
/audio/skin.css css 5.05 kB
/audio/minimal-skin js 8.03 kB 56.87 kB
/audio/minimal-skin2 js 5.62 kB
/audio/skin js 7.82 kB 56.87 kB
/audio/skin2 js 5.42 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 5.92 kB
/live-video/skin.css css 6.01 kB
/live-video/minimal-skin js 8.90 kB 56.87 kB
/live-video/minimal-skin2 js 6.34 kB
/live-video/skin js 9.07 kB 56.87 kB
/live-video/skin2 js 6.55 kB
/live-audio/minimal-skin.css css 4.05 kB
/live-audio/skin.css css 4.03 kB
/live-audio/minimal-skin js 6.31 kB 56.87 kB
/live-audio/minimal-skin2 js 4.33 kB
/live-audio/skin js 6.34 kB 56.87 kB
/live-audio/skin2 js 4.33 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.34 kB 56.87 kB
/ui/menu-checkbox-item 1.97 kB 56.87 kB
/ui/menu-content 7.51 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.56 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.94 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.72 kB 56.87 kB
/ui/volume-slider 12.31 kB 56.87 kB

⚛️ @videojs/react

Path Base initial PR initial Initial diff Lazy diff
/video/minimal-skin.css 8.41 kB 7.20 kB -1.21 kB (-14.3%)
/video/skin.css 8.46 kB 7.08 kB -1.38 kB (-16.3%)
/video/minimal-skin 52.58 kB 51.24 kB -1.34 kB (-2.6%) 0 B
/video/skin 52.44 kB 50.39 kB -2.05 kB (-3.9%) 0 B
/audio/minimal-skin.css 5.64 kB 5.15 kB -507 B (-8.8%)
/audio/skin.css 5.50 kB 4.94 kB -574 B (-10.2%)
/audio/minimal-skin 40.13 kB 39.54 kB -606 B (-1.5%) 0 B
/audio/skin 40.04 kB 39.41 kB -642 B (-1.6%) 0 B
/live-video/minimal-skin.css 6.75 kB 5.78 kB -996 B (-14.4%)
/live-video/skin.css 6.84 kB 5.86 kB -1005 B (-14.3%)
/live-video/minimal-skin 43.78 kB 42.98 kB -822 B (-1.8%) 0 B
/live-video/skin 43.80 kB 42.28 kB -1.52 kB (-3.5%) 0 B
/live-audio/minimal-skin.css 4.24 kB 3.94 kB -305 B (-7.0%)
/live-audio/minimal-skin 30.83 kB 30.38 kB -454 B (-1.4%) 0 B
/live-audio/skin 30.82 kB 30.36 kB -467 B (-1.5%) 0 B
/video (default) 52.57 kB 50.48 kB -2.09 kB (-4.0%) 0 B
/video (default + hls) 190.56 kB 188.35 kB -2.21 kB (-1.2%) 0 B
/video (minimal) 52.62 kB 51.27 kB -1.35 kB (-2.6%) 0 B
/video (minimal + hls) 190.49 kB 189.14 kB -1.35 kB (-0.7%) 0 B
/audio (default) 40.10 kB 39.56 kB -557 B (-1.4%) 0 B
/audio (minimal) 40.25 kB 39.64 kB -618 B (-1.5%) 0 B
Small changes (1, ≤ 300 B)
Path Base initial PR initial Initial diff Lazy diff
/live-audio/skin.css 4.15 kB 3.93 kB -232 B (-5.5%)
Presets (7)
Entry Initial Lazy
/video (default) 50.48 kB 56.87 kB
/video (default + hls) 188.35 kB 56.87 kB
/video (minimal) 51.27 kB 56.87 kB
/video (minimal + hls) 189.14 kB 56.87 kB
/audio (default) 39.56 kB 56.87 kB
/audio (minimal) 39.64 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.34 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.19 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.20 kB
/video/skin.css css 7.08 kB
/video/minimal-skin js 51.24 kB 56.87 kB
/video/skin js 50.39 kB 56.87 kB
/audio/minimal-skin.css css 5.15 kB
/audio/skin.css css 4.94 kB
/audio/minimal-skin js 39.54 kB 56.87 kB
/audio/skin js 39.41 kB 56.87 kB
/background/skin.css css 90 B
/background/skin js 277 B
/live-video/minimal-skin.css css 5.78 kB
/live-video/skin.css css 5.86 kB
/live-video/minimal-skin js 42.98 kB 56.87 kB
/live-video/skin js 42.28 kB 56.87 kB
/live-audio/minimal-skin.css css 3.94 kB
/live-audio/skin.css css 3.93 kB
/live-audio/minimal-skin js 30.38 kB 56.87 kB
/live-audio/skin js 30.36 kB 56.87 kB
UI Components (39)
Entry Initial Lazy
/ui/airplay-button 10.43 kB 56.87 kB
/ui/alert-dialog 4.71 kB 56.87 kB
/ui/audio-track 7.93 kB 56.87 kB
/ui/audio-track-radio-group 9.45 kB 56.87 kB
/ui/buffering-indicator 7.77 kB 56.87 kB
/ui/captions-button 10.40 kB 56.87 kB
/ui/captions-radio-group 9.57 kB 56.87 kB
/ui/cast-button 10.40 kB 56.87 kB
/ui/controls 7.68 kB 56.87 kB
/ui/dialog 4.73 kB 56.87 kB
/ui/error-dialog 11.77 kB 56.87 kB
/ui/fullscreen-button 10.36 kB 56.87 kB
/ui/gesture 7.99 kB 56.87 kB
/ui/hotkey 8.38 kB 56.87 kB
/ui/live-button 8.76 kB 56.87 kB
/ui/menu 19.30 kB 56.87 kB
/ui/mute-button 10.41 kB 56.87 kB
/ui/pip-button 10.36 kB 56.87 kB
/ui/play-button 10.35 kB 56.87 kB
/ui/playback-rate 7.99 kB 56.87 kB
/ui/playback-rate-button 10.35 kB 56.87 kB
/ui/playback-rate-radio-group 9.50 kB 56.87 kB
/ui/popover 8.13 kB 56.87 kB
/ui/poster 7.54 kB 56.87 kB
/ui/quality 8.42 kB 56.87 kB
/ui/quality-radio-group 9.92 kB 56.87 kB
/ui/seek-button 10.38 kB 56.87 kB
/ui/seek-indicator 11.95 kB 56.87 kB
/ui/slider 12.73 kB 56.87 kB
/ui/status-announcer 10.06 kB 56.87 kB
/ui/status-indicator 12.26 kB 56.87 kB
/ui/thumbnail 8.71 kB 56.87 kB
/ui/time 9.74 kB 56.87 kB
/ui/time-slider 14.15 kB 56.87 kB
/ui/title 7.24 kB 56.87 kB
/ui/tooltip 8.90 kB 56.87 kB
/ui/volume-indicator 12.32 kB 56.87 kB
/ui/volume-popover 14.17 kB 56.87 kB
/ui/volume-slider 12.11 kB 56.87 kB
🧩 @videojs/core — no changes
Entries (76)
Entry Initial Lazy
. 13.15 kB
/dom 22.42 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.

@mihar-22
mihar-22 force-pushed the fix/shadcn-registry-delivery branch from 56d999d to a1f262e Compare September 3, 2026 18:56
@mihar-22
mihar-22 merged commit 331cf7b into main Sep 3, 2026
12 checks passed
@mihar-22
mihar-22 deleted the fix/shadcn-registry-delivery branch September 3, 2026 18:59
@videojs-release videojs-release Bot mentioned this pull request Sep 3, 2026
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