Getting Started
CDN Installation Guide
Instructions to get your player up and running using the JSDelivr CDN.
1. Select Framework
Section titled 1. Select Framework2. Select Provider
Section titled 2. Select Provider3. Select Styling
Section titled 3. Select Styling4. Check Support
Section titled 4. Check SupportEnsure the following browser support table is suitable for your application. We’ve built the library for the modern web; thus, we try to avoid bloated polyfills and outdated environments as much as possible. At the moment, we only support browsers that fully implement the Custom Elements V1 spec.
We support at minimum ~94.18% of users tracked on caniuse.
5. Import Styles
Section titled 5. Import Styles6. Import Elements
Section titled 6. Import ElementsThe following import will register all custom media elements (e.g., <media-player>
) and import
global TypeScript types:
You can append .dev
to any CDN URL to load the development version:
You can also pin the CDN package version by appending @x.x.x
like so:
7. Player Markup
Section titled 7. Player MarkupYou can also construct the player using JavaScript. The target argument can be a query selector
or HTMLElement
. If the target is a <audio>
, <video>
, or <iframe>
element it will be
progressively enhanced. See the JavaScript installation page for more information.
8. Poster (Optional)
Section titled 8. Poster (Optional)See the Poster component for how to display an image while video content is loading, or until the user hits play. If this is not included, the first frame of the video will be used instead.
9. Playsinline (Optional)
Section titled 9. Playsinline (Optional)The playsinline
property will indicate that video content should be played inline (on mobile only),
rather than launching the video in fullscreen mode on play. In addition, setting this property
will also ensure custom player UI is displayed on iPhone when playing
inline (hidden in fullscreen mode as native controls are forcefully displayed by the browser).
Important to note, we normalize the playing inline behaviour across all mobile browsers. If you
do not set playsinline
, the video will launch in fullscreen on play in all mobile browsers, not
just iOS Safari where the attribute is accepted.
10. Keep Alive (Optional)
Section titled 10. Keep Alive (Optional)By default, the player and all components will destroy themselves if they’re removed from the
DOM and not reattached after an animation frame tick (i.e., requestAnimationFrame
). If you or
your router are moving player components around the DOM for unknown amounts of time, consider
keeping the player and all children alive, and manually destroying all component instances.
The keep-alive
attribute can be set on any media element, not just the player. Important to note
that it’s forwarded to all children. Any root component with keep-alive
must be destroyed
by calling the destroy()
method on the element instance as shown above.
11. Examples
Section titled 11. ExamplesYou should be all set up by this point. We recommend exploring our 👉 examples to learn how to start building and customizing your player. You can also use the examples to make sure you’ve set everything up correctly.
12. Next Steps
Section titled 12. Next StepsFrom here you’re free to explore the library.
- Scan over the remaining docs pages to get a good overview of how the library works.
- Explore the API and Components references.
- Check out the Default Layout or Plyr Layout pages if you’re using them.
- See the Tailwind Plugin if you’re using Tailwind CSS and building your own layout.
Lastly, remember you’re not alone. You can reach out for help or to talk with other developers using Vidstack: