Skip to content

refactor(packages)!: adapter renaming - #2602

Merged
mihar-22 merged 2 commits into
mainfrom
pr5/adapter-naming
Sep 3, 2026
Merged

refactor(packages)!: adapter renaming#2602
mihar-22 merged 2 commits into
mainfrom
pr5/adapter-naming

Conversation

@mihar-22

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

Copy link
Copy Markdown
Member

What this does

Every playback class is now an *Adapter, and the media host vocabulary follows suit.

Renames

Before After
HlsJsMedia, MuxMedia, DashMedia, ShakaMedia, VimeoMedia, WistiaMedia, NativeHlsMedia, YouTubeMedia, CloudflareMedia, TwitchMedia, TikTokMedia, SpotifyMedia HlsJsAdapter, MuxVideoAdapter (+ MuxAudioAdapter), DashAdapter, ShakaAdapter, VimeoAdapter, WistiaAdapter, NativeHlsAdapter, YouTubeAdapter, CloudflareAdapter, TwitchAdapter, TikTokAdapter, SpotifyAdapter
*MediaProps, *MediaDefaultProps *AdapterProps, static readonly defaultProps on the class
SPF HlsVideoMedia, HlsAudioMedia, HlsBackgroundVideoMedia; @videojs/mux-video/spf MuxVideoMedia, @videojs/mux-audio/spf MuxAudioMedia *Adapter; shared Mux props are MuxAdapterProps
HTMLMediaElementHost, HTMLVideoElementHost, HTMLAudioElementHost HTMLMediaAdapter, HTMLVideoAdapter, HTMLAudioAdapter
MediaEngineHost, MediaHost (CustomMediaElement constraint) EngineAdapter extends PlaybackAdapter, PlaybackAdapter
CustomMediaElement#host #adapter
HlsJsMediaErrorsMixin, DashMediaMediaTracksMixin, NativeHlsMediaDrmMixin, ShakaMediaLiveMixin, HlsVideoMediaMixin, MuxMediaMixin, … HlsJsErrorsMixin, DashMediaTracksMixin, NativeHlsDrmMixin, ShakaLiveMixin, HlsVideoMixin, MuxMixin, … (feature mixins drop the Media/Adapter infix; shared MediaTracksMixin, MediaPlayedRangesMixin, MediaAttachMixin keep theirs)
*MediaBase *AdapterCore (inner class wrapped by feature mixins) or inlined
SPF HlsVideoMediaAPI, HlsAudioMediaAPI, HlsBackgroundVideoMediaAPI, MuxMediaAPI *AdapterAPI
NativeMediaHost NativeHlsHost (mixin constraint types keep the *Host convention)
MediaExtension#setMedia(adapter) (also GoogleCastExtension, MuxDataExtension) setAdapter(adapter); MuxDataMedia is gone, Mux Data takes any HTMLMediaAdapter and narrows to the engine with isEngineAdapter

@videojs/media/dom directories move to html-media-adapter, html-video-adapter, html-audio-adapter.

Files

Every media.ts / media.tsx is now adapter.ts / adapter.tsx, with tests to match.

Where Before After
Adapter packages src/media.ts, tests/<name>-media.test.ts src/adapter.ts, tests/adapter.test.ts
SPF adapters adapter.ts (the mixin), media.ts (the composed class) mixin.ts, adapter.ts; tests mixin.test.ts, adapter.test.ts
html façades media/<name>/media.ts media/<name>/adapter.ts
react façades media/<name>/media.tsx media/<name>/adapter.tsx
Builder fixtures media.ts(x) adapter.ts(x); the react lookup tries adapter.tsx first

Design docs, packages/spf/docs, and the SPF use-case skill point at the new paths.

Defaults

Defaults are literals on the class (static readonly defaultProps). Subclasses compose from the parent (MuxVideoAdapter.defaultProps spreads HlsJsAdapter.defaultProps), and SPF adapters declare theirs on the mixin's inner class so the composed adapter inherits them. No *DefaultProps constants remain.

Docs builder

The media reference builder reads defaults from Adapter.defaultProps, following local aliases, mixin chains, and parent classes, and uses the new adapter class names and paths. The *DefaultProps const branch is gone since nothing declares defaults that way anymore. Fixtures mirror the new shapes: the cross-package audio mixin is SpfAudioOnlyMixin with static defaultProps on its inner class, like HlsAudioMixin.

Validation

Build, typecheck, lint, workspace check, pnpm test, site tests (including the builder e2e suite), and regenerated media references with defaults present for every adapter.

🤖 Generated with Claude Code


Note

Medium Risk
Wide breaking public API and import-path changes across many packages; incorrect consumer migrations or missed re-exports could break builds, but the diff is largely mechanical renaming rather than playback logic changes.

Overview
Breaking rename across playback packages: concrete player classes become *Adapter (e.g. HlsJsMediaHlsJsAdapter, DashMediaDashAdapter, CloudflareMediaCloudflareAdapter), with props types *AdapterProps and static readonly defaultProps on the class instead of exported *DefaultProps constants.

@videojs/media contract shift: HTMLVideoElementHost / HTMLAudioElementHostHTMLVideoAdapter / HTMLAudioAdapter; engine ownership is EngineAdapter (was MediaEngineHost); CustomMediaElement holds an #adapter and extensions like Google Cast use setAdapter instead of setMedia.

File layout: package entrypoints move from media.ts / media.tsx to adapter.ts / adapter.tsx; SPF splits the canonical mixin into mixin.ts (HlsVideoMixin, HlsVideoAdapterCore) and the composed export in adapter.ts (HlsVideoAdapter extends … HTMLVideoAdapter). Feature mixins drop the Media infix (HlsJsMediaLiveMixinHlsJsLiveMixin, inner cores *AdapterCore).

Docs and tooling (SPF design docs, implement-spf-use-case skill, sandbox demos, core store feature comments) are updated to the new names and paths; behavior is intended unchanged aside from naming and default-prop placement.

Reviewed by Cursor Bugbot for commit 4a62199. 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 10:15pm UTC

Request Review

@pkg-pr-new

pkg-pr-new Bot commented Sep 2, 2026

Copy link
Copy Markdown
@videojs/cdn

pnpm add https://pkg.pr.new/videojs/v10/@videojs/cdn@2602

@videojs/cloudflare-video

pnpm add https://pkg.pr.new/videojs/v10/@videojs/cloudflare-video@2602

@videojs/core

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

@videojs/dash-video

pnpm add https://pkg.pr.new/videojs/v10/@videojs/dash-video@2602

@videojs/element

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

@videojs/google-cast

pnpm add https://pkg.pr.new/videojs/v10/@videojs/google-cast@2602

@videojs/hlsjs-video

pnpm add https://pkg.pr.new/videojs/v10/@videojs/hlsjs-video@2602

@videojs/html

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

@videojs/media

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

@videojs/mux-audio

pnpm add https://pkg.pr.new/videojs/v10/@videojs/mux-audio@2602

@videojs/mux-data

pnpm add https://pkg.pr.new/videojs/v10/@videojs/mux-data@2602

@videojs/mux-video

pnpm add https://pkg.pr.new/videojs/v10/@videojs/mux-video@2602

@videojs/native-hls-video

pnpm add https://pkg.pr.new/videojs/v10/@videojs/native-hls-video@2602

@videojs/react

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

@videojs/shaka-video

pnpm add https://pkg.pr.new/videojs/v10/@videojs/shaka-video@2602

@videojs/spf

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

@videojs/spotify-audio

pnpm add https://pkg.pr.new/videojs/v10/@videojs/spotify-audio@2602

@videojs/store

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

@videojs/tiktok-video

pnpm add https://pkg.pr.new/videojs/v10/@videojs/tiktok-video@2602

@videojs/twitch-video

pnpm add https://pkg.pr.new/videojs/v10/@videojs/twitch-video@2602

@videojs/utils

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

@videojs/vimeo-video

pnpm add https://pkg.pr.new/videojs/v10/@videojs/vimeo-video@2602

@videojs/wistia-video

pnpm add https://pkg.pr.new/videojs/v10/@videojs/wistia-video@2602

@videojs/youtube-video

pnpm add https://pkg.pr.new/videojs/v10/@videojs/youtube-video@2602

commit: 3205d78

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

📦 Bundle Size Report

🎨 @videojs/html — 49 small size changes
Path Base initial PR initial Initial diff Lazy diff
/video/player 9.70 kB 9.69 kB -6 B (-0.1%) 0 B
/audio/minimal-skin 45.76 kB 45.77 kB +19 B (+0.0%) 0 B
/audio/player 6.14 kB 6.14 kB +1 B (+0.0%) 0 B
/audio/skin 45.52 kB 45.50 kB -26 B (-0.1%) 0 B
/background/skin 9.81 kB 9.81 kB -1 B (-0.0%) 0 B
/live-video/skin 49.42 kB 49.43 kB +9 B (+0.0%) 0 B
/live-audio/minimal-skin 35.39 kB 35.43 kB +40 B (+0.1%) 0 B
/live-audio/skin 35.40 kB 35.36 kB -43 B (-0.1%) 0 B
/ui/airplay-button 11.26 kB 11.26 kB -2 B (-0.0%) 0 B
/ui/audio-track-radio-group 11.38 kB 11.38 kB -7 B (-0.1%) 0 B
/ui/buffering-indicator 8.61 kB 8.60 kB -6 B (-0.1%) 0 B
/ui/captions-radio-group 11.46 kB 11.45 kB -11 B (-0.1%) 0 B
/ui/cast-button 11.25 kB 11.25 kB -3 B (-0.0%) 0 B
/ui/container 9.47 kB 9.47 kB +3 B (+0.0%) 0 B
/ui/fullscreen-button 11.27 kB 11.26 kB -16 B (-0.1%) 0 B
/ui/gesture 9.56 kB 9.57 kB +3 B (+0.0%) 0 B
/ui/play-button 11.23 kB 11.22 kB -11 B (-0.1%) 0 B
/ui/playback-rate-radio-group 11.37 kB 11.38 kB +2 B (+0.0%) 0 B
/ui/poster 8.67 kB 8.67 kB +3 B (+0.0%) 0 B
/ui/seek-indicator 12.69 kB 12.69 kB +1 B (+0.0%) 0 B
/ui/status-announcer 10.59 kB 10.60 kB +12 B (+0.1%) 0 B
/ui/status-indicator 13.02 kB 13.01 kB -7 B (-0.1%) 0 B
/ui/time 10.79 kB 10.80 kB +9 B (+0.1%) 0 B
/ui/time-slider 12.99 kB 12.99 kB +2 B (+0.0%) 0 B
/ui/volume-indicator 13.01 kB 13.02 kB +8 B (+0.1%) 0 B
/ui/volume-slider 12.31 kB 12.31 kB -1 B (-0.0%) 0 B
/media/mux-video 3.02 kB 3.02 kB +8 B (+0.3%)
/media/mux-audio 2.69 kB 2.69 kB +4 B (+0.1%)
/media/cloudflare-video 2.89 kB 2.90 kB +4 B (+0.1%)
/media/dash-video 2.62 kB 2.63 kB +11 B (+0.4%)
/media/hls-audio 22.05 kB 22.05 kB -5 B (-0.0%)
/media/hls-background-video 16.80 kB 16.86 kB +63 B (+0.4%)
/media/hls-video 28.02 kB 28.00 kB -21 B (-0.1%)
/media/hlsjs-video 2.63 kB 2.63 kB +3 B (+0.1%)
/media/mux-background-video 16.83 kB 16.86 kB +33 B (+0.2%)
/media/native-hls-video 7.54 kB 7.57 kB +24 B (+0.3%)
/media/shaka-video 2.62 kB 2.63 kB +4 B (+0.1%)
/media/spotify-audio 3.01 kB 3.02 kB +4 B (+0.1%)
/media/tiktok-video 3.12 kB 3.13 kB +2 B (+0.1%)
/media/twitch-video 2.93 kB 2.93 kB -2 B (-0.1%)
/media/vimeo-video 2.90 kB 2.90 kB -1 B (-0.0%)
/media/wistia-video 604 B 607 B +3 B (+0.5%)
/media/youtube-video 2.90 kB 2.90 kB +3 B (+0.1%)
/video (default) 62.68 kB 62.79 kB +113 B (+0.2%) 0 B
/video (default + hls) 64.47 kB 64.52 kB +45 B (+0.1%) 0 B
/video (minimal) 63.04 kB 63.04 kB +2 B (+0.0%) 0 B
/video (minimal + hls) 64.81 kB 64.77 kB -46 B (-0.1%) 0 B
/audio (default) 47.02 kB 46.99 kB -26 B (-0.1%) 0 B
/audio (minimal) 47.23 kB 47.21 kB -28 B (-0.1%) 0 B
Presets (7)
Entry Initial Lazy
/video (default) 62.79 kB 56.87 kB
/video (default + hls) 64.52 kB 56.87 kB
/video (minimal) 63.04 kB 56.87 kB
/video (minimal + hls) 64.77 kB 56.87 kB
/audio (default) 46.99 kB 56.87 kB
/audio (minimal) 47.21 kB 56.87 kB
/background 11.57 kB 56.87 kB
Media (18)
Entry Initial
/media/mux-video 3.02 kB
/media/mux-audio 2.69 kB
/media/background-video 1.16 kB
/media/cloudflare-video 2.90 kB
/media/dash-video 2.63 kB
/media/hls-audio 22.05 kB
/media/hls-background-video 16.86 kB
/media/hls-video 28.00 kB
/media/hlsjs-video 2.63 kB
/media/mux-background-video 16.86 kB
/media/native-hls-video 7.57 kB
/media/shaka-video 2.63 kB
/media/spotify-audio 3.02 kB
/media/tiktok-video 3.13 kB
/media/twitch-video 2.93 kB
/media/vimeo-video 2.90 kB
/media/wistia-video 607 B
/media/youtube-video 2.90 kB
Players (5)
Entry Initial Lazy
/video/player 9.69 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.65 kB
/video/skin.css css 7.46 kB
/video/minimal-skin js 61.46 kB 56.87 kB
/video/minimal-skin2 js 8.09 kB
/video/skin js 61.34 kB 56.87 kB
/video/skin2 js 7.95 kB
/audio/minimal-skin.css css 5.53 kB
/audio/skin.css css 5.34 kB
/audio/minimal-skin js 45.77 kB 56.87 kB
/audio/minimal-skin2 js 5.83 kB
/audio/skin js 45.50 kB 56.87 kB
/audio/skin2 js 5.65 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.21 kB
/live-video/skin.css css 6.18 kB
/live-video/minimal-skin js 49.42 kB 56.87 kB
/live-video/minimal-skin2 js 6.55 kB
/live-video/skin js 49.43 kB 56.87 kB
/live-video/skin2 js 6.58 kB
/live-audio/minimal-skin.css css 4.39 kB
/live-audio/skin.css css 4.37 kB
/live-audio/minimal-skin js 35.43 kB 56.87 kB
/live-audio/minimal-skin2 js 4.64 kB
/live-audio/skin js 35.36 kB 56.87 kB
/live-audio/skin2 js 4.63 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.60 kB 56.87 kB
/ui/captions-button 11.51 kB 56.87 kB
/ui/captions-radio-group 11.45 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.26 kB 56.87 kB
/ui/gesture 9.57 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.22 kB 56.87 kB
/ui/playback-rate-button 11.32 kB 56.87 kB
/ui/playback-rate-radio-group 11.38 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.60 kB 56.87 kB
/ui/status-indicator 13.01 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 12.99 kB 56.87 kB
/ui/time-slider-chapter-title 8.79 kB 56.87 kB
/ui/time-slider-chapters 9.63 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.02 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

Path Base initial PR initial Initial diff Lazy diff
/media/mux-video/spf 23.03 kB 961 B -22.09 kB (-95.9%)
/media/mux-audio/spf 19.49 kB 703 B -18.81 kB (-96.5%)
Small changes (59, ≤ 300 B)
Path Base initial PR initial Initial diff Lazy diff
/extensions/google-cast 1.59 kB 1.59 kB +4 B (+0.2%)
/extensions/mux-data 1.63 kB 1.64 kB +5 B (+0.3%)
/media/mux-video/hls-js 986 B 958 B -28 B (-2.8%)
/media/mux-audio/hls-js 733 B 699 B -34 B (-4.6%)
/media/cloudflare-video 914 B 911 B -3 B (-0.3%)
/media/dash-video 710 B 693 B -17 B (-2.4%)
/media/hls-audio 20.38 kB 20.36 kB -16 B (-0.1%)
/media/hls-background-video 16.46 kB 16.40 kB -58 B (-0.3%)
/media/hls-video 26.36 kB 26.35 kB -14 B (-0.1%)
/media/hlsjs-video 711 B 695 B -16 B (-2.3%)
/media/mux-audio 726 B 693 B -33 B (-4.5%)
/media/mux-background-video 16.45 kB 16.47 kB +24 B (+0.1%)
/media/mux-video 980 B 950 B -30 B (-3.1%)
/media/native-hls-video 5.76 kB 5.77 kB +14 B (+0.2%)
/media/shaka-video 711 B 704 B -7 B (-1.0%)
/media/spotify-audio 902 B 901 B -1 B (-0.1%)
/media/tiktok-video 908 B 906 B -2 B (-0.2%)
/media/vimeo-video 887 B 888 B +1 B (+0.1%)
/media/youtube-video 891 B 897 B +6 B (+0.7%)
/video/minimal-skin 50.59 kB 50.63 kB +41 B (+0.1%) 0 B
/video/player 7.56 kB 7.56 kB +5 B (+0.1%) 0 B
/video/skin 50.49 kB 50.50 kB +19 B (+0.0%) 0 B
/audio/minimal-skin 39.47 kB 39.46 kB -7 B (-0.0%) 0 B
/audio/player 4.00 kB 4.00 kB -2 B (-0.0%) 0 B
/audio/skin 39.41 kB 39.40 kB -13 B (-0.0%) 0 B
/live-video/minimal-skin 42.56 kB 42.57 kB +9 B (+0.0%) 0 B
/live-video/skin 42.52 kB 42.52 kB -4 B (-0.0%) 0 B
/live-audio/minimal-skin 30.37 kB 30.35 kB -22 B (-0.1%) 0 B
/live-audio/skin 30.35 kB 30.36 kB +7 B (+0.0%) 0 B
/ui/audio-track 7.94 kB 7.92 kB -19 B (-0.2%) 0 B
/ui/audio-track-radio-group 9.48 kB 9.48 kB -5 B (-0.1%) 0 B
/ui/buffering-indicator 7.80 kB 7.79 kB -6 B (-0.1%) 0 B
/ui/captions-button 10.44 kB 10.43 kB -8 B (-0.1%) 0 B
/ui/captions-radio-group 9.59 kB 9.59 kB -1 B (-0.0%) 0 B
/ui/cast-button 10.44 kB 10.43 kB -10 B (-0.1%) 0 B
/ui/error-dialog 11.80 kB 11.80 kB +2 B (+0.0%) 0 B
/ui/fullscreen-button 10.40 kB 10.39 kB -1 B (-0.0%) 0 B
/ui/gesture 7.99 kB 7.98 kB -4 B (-0.0%) 0 B
/ui/hotkey 8.38 kB 8.38 kB -1 B (-0.0%) 0 B
/ui/mute-button 10.44 kB 10.44 kB -1 B (-0.0%) 0 B
/ui/pip-button 10.39 kB 10.39 kB +1 B (+0.0%) 0 B
/ui/playback-rate 7.99 kB 7.99 kB +3 B (+0.0%) 0 B
/ui/playback-rate-button 10.37 kB 10.37 kB -2 B (-0.0%) 0 B
/ui/quality 8.42 kB 8.42 kB +3 B (+0.0%) 0 B
/ui/quality-radio-group 9.95 kB 9.96 kB +1 B (+0.0%) 0 B
/ui/seek-button 10.41 kB 10.41 kB +1 B (+0.0%) 0 B
/ui/seek-indicator 11.98 kB 11.98 kB -1 B (-0.0%) 0 B
/ui/slider 12.76 kB 12.74 kB -18 B (-0.1%) 0 B
/ui/status-indicator 12.29 kB 12.29 kB -2 B (-0.0%) 0 B
/ui/time-slider 14.17 kB 14.17 kB +1 B (+0.0%) 0 B
/ui/volume-indicator 12.33 kB 12.34 kB +2 B (+0.0%) 0 B
/ui/volume-popover 14.20 kB 14.20 kB -1 B (-0.0%) 0 B
/ui/volume-slider 12.14 kB 12.13 kB -4 B (-0.0%) 0 B
/video (default) 50.60 kB 50.61 kB +4 B (+0.0%) 0 B
/video (default + hls) 50.85 kB 50.83 kB -17 B (-0.0%) 0 B
/video (minimal) 50.74 kB 50.66 kB -79 B (-0.2%) 0 B
/video (minimal + hls) 50.94 kB 51.06 kB +123 B (+0.2%) 0 B
/audio (default) 39.53 kB 39.50 kB -28 B (-0.1%) 0 B
/audio (minimal) 39.57 kB 39.56 kB -6 B (-0.0%) 0 B
Presets (7)
Entry Initial Lazy
/video (default) 50.61 kB 56.87 kB
/video (default + hls) 50.83 kB 56.87 kB
/video (minimal) 50.66 kB 56.87 kB
/video (minimal + hls) 51.06 kB 56.87 kB
/audio (default) 39.50 kB 56.87 kB
/audio (minimal) 39.56 kB 56.87 kB
/background 581 B 56.87 kB
Media (22)
Entry Initial
/media/mux-video/hls-js 958 B
/media/mux-video/spf 961 B
/media/mux-audio/hls-js 699 B
/media/mux-audio/spf 703 B
/media/background-video 402 B
/media/cloudflare-video 911 B
/media/dash-video 693 B
/media/hls-audio 20.36 kB
/media/hls-background-video 16.40 kB
/media/hls-video 26.35 kB
/media/hlsjs-video 695 B
/media/mux-audio 693 B
/media/mux-background-video 16.47 kB
/media/mux-video 950 B
/media/native-hls-video 5.77 kB
/media/shaka-video 704 B
/media/spotify-audio 901 B
/media/tiktok-video 906 B
/media/twitch-video 929 B
/media/vimeo-video 888 B
/media/wistia-video 619 B
/media/youtube-video 897 B
Extensions (2)
Entry Initial
/extensions/google-cast 1.59 kB
/extensions/mux-data 1.64 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.95 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.52 kB
/video/skin.css css 7.34 kB
/video/minimal-skin js 50.63 kB 56.87 kB
/video/skin js 50.50 kB 56.87 kB
/audio/minimal-skin.css css 5.37 kB
/audio/skin.css css 5.18 kB
/audio/minimal-skin js 39.46 kB 56.87 kB
/audio/skin js 39.40 kB 56.87 kB
/background/skin.css css 90 B
/background/skin js 277 B
/live-video/minimal-skin.css css 6.07 kB
/live-video/skin.css css 6.05 kB
/live-video/minimal-skin js 42.57 kB 56.87 kB
/live-video/skin js 42.52 kB 56.87 kB
/live-audio/minimal-skin.css css 4.24 kB
/live-audio/skin.css css 4.21 kB
/live-audio/minimal-skin js 30.35 kB 56.87 kB
/live-audio/skin js 30.36 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.92 kB 56.87 kB
/ui/audio-track-radio-group 9.48 kB 56.87 kB
/ui/buffering-indicator 7.79 kB 56.87 kB
/ui/captions-button 10.43 kB 56.87 kB
/ui/captions-radio-group 9.59 kB 56.87 kB
/ui/cast-button 10.43 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.39 kB 56.87 kB
/ui/gesture 7.98 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.96 kB 56.87 kB
/ui/seek-button 10.41 kB 56.87 kB
/ui/seek-indicator 11.98 kB 56.87 kB
/ui/slider 12.74 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.34 kB 56.87 kB
/ui/volume-popover 14.20 kB 56.87 kB
/ui/volume-slider 12.13 kB 56.87 kB
🧩 @videojs/core — 1 small size change
Path Base initial PR initial Initial diff Lazy diff
/dom 22.53 kB 22.53 kB +8 B (+0.0%) 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/cdn — no changes
📦 @videojs/cloudflare-video — 1 small size change
Path Base initial PR initial Initial diff Lazy diff
. 3.70 kB 3.70 kB +4 B (+0.1%)
📦 @videojs/dash-video — 1 small size change
Path Base initial PR initial Initial diff Lazy diff
. 3.29 kB 3.29 kB +3 B (+0.1%)
📦 @videojs/google-cast — 1 small size change
Path Base initial PR initial Initial diff Lazy diff
. 4.07 kB 4.08 kB +4 B (+0.1%)
📦 @videojs/hlsjs-video — 1 small size change
Path Base initial PR initial Initial diff Lazy diff
. 134.64 kB 134.63 kB -7 B (-0.0%)
📦 @videojs/media — 2 small size changes
Path Base initial PR initial Initial diff Lazy diff
. 1.12 kB 1.14 kB +27 B (+2.4%)
/dom 4.11 kB 4.12 kB +9 B (+0.2%)
Entries (3)
Entry Initial
. 1.14 kB
/dom 4.12 kB
/media-tracks 2.05 kB
📦 @videojs/mux — no changes
📦 @videojs/mux-audio — 2 small size changes
Path Base initial PR initial Initial diff Lazy diff
. 135.55 kB 135.58 kB +31 B (+0.0%)
/spf 20.78 kB 20.84 kB +56 B (+0.3%)
Entries (2)
Entry Initial
. 135.58 kB
/spf 20.84 kB
📦 @videojs/mux-data — 1 small size change
Path Base initial PR initial Initial diff Lazy diff
. 24.28 kB 24.33 kB +55 B (+0.2%)
📦 @videojs/mux-video — 2 small size changes
Path Base initial PR initial Initial diff Lazy diff
. 135.59 kB 135.56 kB -33 B (-0.0%)
/spf 26.70 kB 26.75 kB +58 B (+0.2%)
Entries (2)
Entry Initial
. 135.56 kB
/spf 26.75 kB
📦 @videojs/native-hls-video — no changes
📦 @videojs/shaka-video — 1 small size change
Path Base initial PR initial Initial diff Lazy diff
. 196.80 kB 196.83 kB +33 B (+0.0%)
📦 @videojs/spf — 3 small size changes
Path Base initial PR initial Initial diff Lazy diff
/hls-background-video 15.89 kB 15.84 kB -44 B (-0.3%)
/hls-audio 19.88 kB 19.84 kB -43 B (-0.2%)
/hls-video 25.83 kB 25.89 kB +61 B (+0.2%)
Entries (7)
Entry Initial
. 4.55 kB
/dom 6.60 kB
/hls 22.06 kB
/media-tracks 504 B
/hls-background-video 15.84 kB
/hls-audio 19.84 kB
/hls-video 25.89 kB
📦 @videojs/spotify-audio — 1 small size change
Path Base initial PR initial Initial diff Lazy diff
. 3.59 kB 3.58 kB -8 B (-0.2%)
📦 @videojs/tiktok-video — 1 small size change
Path Base initial PR initial Initial diff Lazy diff
. 3.56 kB 3.56 kB +4 B (+0.1%)
📦 @videojs/twitch-video — 1 small size change
Path Base initial PR initial Initial diff Lazy diff
. 3.62 kB 3.63 kB +14 B (+0.4%)
📦 @videojs/vimeo-video — 1 small size change
Path Base initial PR initial Initial diff Lazy diff
. 10.60 kB 10.59 kB -8 B (-0.1%)
📦 @videojs/wistia-video — 2 small size changes
Path Base initial PR initial Initial diff Lazy diff
. 1.91 kB 1.91 kB +3 B (+0.2%)
/helpers 1.81 kB 1.77 kB -45 B (-2.4%)
Entries (2)
Entry Initial
. 1.91 kB
/helpers 1.77 kB
📦 @videojs/youtube-video — 1 small size change
Path Base initial PR initial Initial diff Lazy diff
. 4.25 kB 4.24 kB -6 B (-0.1%)

ℹ️ 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.

@netlify

netlify Bot commented Sep 3, 2026

Copy link
Copy Markdown

Deploy Preview for vjs10-site ready!

Name Link
🔨 Latest commit 4a62199
🔍 Latest deploy log https://app.netlify.com/projects/vjs10-site/deploys/6a99f12141ef06000815676c
😎 Deploy Preview https://deploy-preview-2602--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.

@mihar-22 mihar-22 changed the title refactor(packages)!: name adapters with an Adapter suffix and declare defaults on the class refactor(packages)!: Adapter renaming Sep 3, 2026
@mihar-22 mihar-22 changed the title refactor(packages)!: Adapter renaming refactor(packages)!: adapter renaming Sep 3, 2026
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

E2E triage: real regression — the Registry consumers next-react-tailwind build cannot resolve @videojs/hlsjs-video from packed @videojs/react. Filed #2627 for follow-up.

Base automatically changed from pr4/media-extension to main September 3, 2026 22:13
mihar-22 and others added 2 commits September 3, 2026 15:13
… defaults on the class

Every playback Media class is now an `*Adapter`, its props an `*AdapterProps`,
and its defaults a `static defaultProps` on the class instead of a standalone
export:

- `@videojs/hlsjs-video`: `HlsJsMedia` -> `HlsJsAdapter`, `HlsMediaProps` ->
  `HlsJsAdapterProps`
- `@videojs/mux-video`: `MuxMedia` -> `MuxVideoAdapter`; `@videojs/mux-audio`
  exports it as `MuxAudioAdapter`
- `@videojs/dash-video`, `shaka-video`, `vimeo-video`, `wistia-video`:
  `DashAdapter`, `ShakaAdapter`, `VimeoAdapter`, `WistiaAdapter`
- `@videojs/media`: `NativeHlsAdapter`, `CloudflareAdapter`, `SpotifyAdapter`,
  `TikTokAdapter`, `TwitchAdapter`, `YouTubeAdapter`
- `@videojs/spf`: `HlsVideoAdapter`, `HlsAudioAdapter`,
  `HlsBackgroundVideoAdapter`, `MuxVideoAdapter`, `MuxAudioAdapter`,
  `MuxBackgroundVideoAdapter`; the shared Mux identity props are
  `MuxAdapterProps`

Subclass adapters compose their defaults from the parent's static, so the
framework façades read one `Adapter.defaultProps` instead of merging two
constants. The `*DefaultProps` exports are gone.

BREAKING CHANGE: the exports listed above are renamed and the standalone
`*MediaDefaultProps` constants are replaced by `Adapter.defaultProps`.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ia reference builder

The media reference builder resolved React prop defaults from a `*DefaultProps`
const passed to `useSyncProps`. Adapters now expose their defaults as
`static defaultProps`, optionally spreading a parent adapter's static, so the
builder follows `Adapter.defaultProps` to the class (and up its `extends`
chain) and resolves spreads of those members the same way.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@mihar-22
mihar-22 merged commit b964889 into main Sep 3, 2026
50 of 51 checks passed
@mihar-22
mihar-22 deleted the pr5/adapter-naming branch September 3, 2026 22:29
@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