August 19, 2026

Embedding a demo in Vue or Nuxt is an iframe in a template, and the useful work is wrapping it once so the whole site stays consistent.
Nuxt adds one wrinkle worth knowing about, which is server-side rendering.
Create a `ProductDemo.vue` taking the demo id as a prop, rendering an iframe with `width: 100%`, an explicit `aspect-ratio`, `border: 0`, `loading="lazy"` and a meaningful `title` attribute for assistive technology.
That last one is easy to skip and is the difference between a screen reader announcing "product demo: contract signing" and announcing nothing useful at all.
An iframe renders fine on the server -- it is inert markup and Nuxt will emit it without trouble.
What does not work on the server is anything reading `window` to build the URL. If you are appending personalisation parameters from client state, guard it or do it in `onMounted`, or the build will fail with a rendering error.
Do not wrap the iframe in a transition that changes its size. Resizing an iframe forces its content to relayout, which on a demo means the whole captured page reflows -- visibly, and for no benefit.
Fade if you want an effect. Do not animate width or height.
Click through it — the same kind of demo you can record of your own product.
Record your first interactive demo free.
Five demos on the free plan, forever. No credit card, no trial countdown, no sales call. Install the Chrome extension, click through your product once, and you have a shareable link in about ten minutes.
Start free →