Video and Audio Are First-Class Now
1 min read
- meta
- authoring

This post is itself the demo: it’s an .mdx file, which means it can import and use real components instead of raw HTML.
Self-hosted video
For a short, self-hosted clip, pass src directly:
YouTube or Vimeo
For a hosted platform, use provider and id instead — it renders a privacy-respecting youtube-nocookie.com (or Vimeo player) embed, lazy-loaded:
<VideoEmbed provider="youtube" id="VIDEO_ID" title="A descriptive title" />
Audio
AudioPlayer wraps a native <audio> element in a themed card with a title:
A short, self-hosted MP3 rendered through AudioPlayer.
Where files live
Self-hosted clips go in public/media/ and are served as-is — fine for short clips. For anything longer or higher-bitrate, don’t commit it to the repo; that’s a job for a real video host (Cloudflare Stream, YouTube, Vimeo) with VideoEmbed’s provider mode.