Displaying videos

Pro tip: Start with our how-to guides first

If you're new to hosting videos on DatoCMS, we recommend first starting with our tutorials:

Then, this page provides framework-specific playback advice using our helper components. Read on when you're ready!

One of the advantages of using DatoCMS instead of other content management systems is its video query, which will return pre-computed video attributes that will help you display videos in your frontend without any additional manipulation.

To make it easy to offer optimized, progressive videos on your projects, we offer a package called react-datocms that exposes a <VideoPlayer /> component and pairs perfectly with the video query.

To take advantage of it, install the react-datocms package:

Terminal window
npm install react-datocms

Then, inside your page, feed content coming from a video query directly into the <VideoPlayer /> component:

import { load } from "~/lib/datocms";
import { VideoPlayer } from "react-datocms";
import { useLoaderData } from "remix";
const HOMEPAGE_QUERY = `query HomePage($limit: IntType) {
posts: allBlogPosts(first: $limit) {
id
title
coverVideo {
video {
muxPlaybackId
title
width
height
blurUpThumb
}
}
}
}`;
export async function loader() {
return load(HOMEPAGE_QUERY, {
variables: { limit: 10 }
});
}
export default function Home() {
const { posts } = useLoaderData();
return (
<div>
{posts.map(blogPost => (
<article key={blogPost.id}>
<VideoPlayer data={blogPost.coverVideo.video} />
<h6>{blogPost.title}</h6>
</article>
))}
</div>
);
}

Last updated: November 5th, 2025