How I Turn Product Data Into Reusable Video Demos Without Forking Templates
I used to clone a video demo every time a new product angle showed up. One version for the homepage, one for the ad, one for email, one for the in-app walkthrough. It looked efficient until the edits started drifting.
The safer pattern is to keep one VideoFlow template and feed it product data instead of forking the scene. That gives me one JSON source of truth and three ways to use it: preview, edit, and export.

The template I refuse to fork
The rule is simple: product data can change, but the scene structure stays portable.
import VideoFlow from "@videoflow/core";
const $ = new VideoFlow({
name: "My Video",
width: 1920,
height: 1080,
fps: 30,
});
$.addText(
{ text: "Hello, VideoFlow!", fontSize: 7, fontWeight: 800 },
{ transitionIn: { transition: "overshootPop", duration: "500ms" } }
);
const json = await $.compile();
const blob = await $.renderVideo();
That is the contract I care about. The product data can swap out a headline, a price, a CTA, or a thumbnail. The template itself stays reusable.
I do not care whether the final output is a browser export, a server batch job, or a live DOM preview. I care that the scene compiles once and survives the next round of edits.

Browser, server, and DOM each earn a different job
The useful part of VideoFlow is not just that it renders videos. It is that the same VideoJSON can render in three different places without me rewriting the project.
@videoflow/renderer-browser is what I use when export needs to happen client-side and I want progress callbacks, cancellation, or worker acceleration.@videoflow/renderer-server is what I use when the job is bigger than one person clicking export. Batch jobs, queues, scheduled renders, and API-driven output all fit there.@videoflow/renderer-dom is what I use when I want a live preview in an editor or dashboard with scrubbing and frame-accurate playback.
The React editor should edit, not fork
I am fine letting humans change the scene. I am not fine letting them create a second scene model.
That is where @videoflow/react-video-editor earns its keep. The editor gives me a multi-track timeline, keyframes, transitions, themes, and MP4 export, which means the person adjusting the demo does not need to understand the internals. They just need to make a deliberate change and save it back to the same JSON.

AI should draft structure, not decide the final timing
I do use AI in this workflow, but only as a first pass.
If the model can draft a structured scene, I can review it. If it can only spit out vague creative direction, I am back to hand-editing everything. So I prefer the narrow version: let AI propose a VideoJSON skeleton, then let a human check the layer order, timing, and copy before export.

What I check before I ship another demo
Before I let a new video demo go live, I run the same small checklist:
- The product data source is explicit, not hidden in a random script.
- The scene compiles once and renders in the place I expect.
- Preview, editor, and export all point to the same JSON.
- I can swap the renderer without rewriting the template.
- The git diff is understandable the next day.
- The links I rely on are still the right ones, including VideoFlow, docs, core docs, renderers docs, React video editor, examples, and the GitHub repo.
The takeaway
I want one product-driven template that can survive preview, editing, and export without turning into three separate projects.
If you are building this now, start with one product brief and one scene. Put it through @videoflow/core, preview it, edit it, and render it from the job type that fits best. Once that loop holds, the rest of the system gets easier.