VideoFlowcodeGitHubTry itCoreRenderersReact Video EditorPlaygroundExamplesDocscodeGitHubTry it
← Back to Blog

How to Build a 'Spotify Wrapped' Style Video Recap for Your SaaS

May 21, 2026 · By VideoFlowLearn how to build a programmatic SaaS video recap. Use VideoFlow to transform user data into cinematic 'Year in Review' MP4s with TypeScript and JSON.How to Build a 'Spotify Wrapped' Style Video Recap for Your SaaS

How to Build a 'Spotify Wrapped' Style Video Recap for Your SaaS

Personalization is the ultimate retention engine, and nothing captures a user's attention quite like a cinematic summary of their own achievements. In this SaaS video recap tutorial, we'll show you how to build a high-production "Spotify Wrapped" style summary using VideoFlow and a few lines of TypeScript.

Why Automated Video Personalization Matters

For SaaS companies, the "Year in Review" or "Monthly Digest" is a critical touchpoint. Static emails are easily ignored, but a personalized video recap that visualizes user data—lines of code written, tasks completed, or revenue generated—is inherently shareable.

Traditionally, generating thousands of unique MP4s required complex FFmpeg clusters or expensive proprietary APIs. With VideoFlow, you can transform raw JSON data into professional-grade video content with the same ease as rendering a web page. By treating video as code, you gain the ability to iterate on your motion design without the overhead of traditional video production.

SaaS Video Recap Architecture

Step 1: The Architecture of a Data-Driven Video

The core strength of VideoFlow is its resolution-agnostic builder API. Because it uses em units (where 1em = 1% of project width), you can design a layout once and render it at 1080p for social sharing or 4K for high-fidelity displays without changing a single line of code.

To start, we construct our project and define the canvas:

import VideoFlow from '@videoflow/core';

const $ = new VideoFlow({
  width: 1080,
  height: 1920, // Vertical format for mobile sharing
  fps: 30,
  backgroundColor: '#0a0a0a',
});

Step 2: Building the Scene with Layers and Transitions

A great recap needs cinematic flair. VideoFlow ships with 27 transition presets and 42 GLSL effects out of the box. For a "Wrapped" style feel, we'll use blurResolve for text entries and zoom for data highlights.

// Add a background image with a subtle blur effect
const bg = $.addImage(
  { fit: 'cover', opacity: 0.4, filterBlur: 0.2 },
  { source: 'https://assets.yoursaas.com/recap-bg.jpg' }
);

// Animate the background blur over time
bg.animate(
  { filterBlur: 0.2 },
  { filterBlur: 0 },
  { duration: '5s', wait: false }
);

// Create a hero title with a cinematic transition
const title = $.addText({
  text: "Your Year in Code",
  fontSize: 8,
  color: '#FF5A1F',
  fontWeight: 800,
  position: [0.5, 0.4],
}, {
  transitionIn: { transition: 'blurResolve', duration: '800ms' }
});

$.wait('2s');
title.fadeOut('500ms');

Step 3: Dynamic Data Injection

This is where the programmatic video magic happens. Instead of hardcoding values, we loop through the user's data to generate layers dynamically. This pattern is much more robust than the animated dashboards approach used in simpler visualizations.

const userData = { commits: 1240, languages: ['TypeScript', 'Rust', 'Go'] };

const stats = $.addText({
  text: `${userData.commits} Commits`,
  fontSize: 12,
  color: '#ffffff',
  position: [0.5, 0.5],
}, {
  transitionIn: { transition: 'overshootPop', duration: '600ms' }
});

$.wait('3s');
stats.remove();

Video Timeline Layout

Step 4: Rendering at Scale

Once your template is ready, you need to decide where to render. VideoFlow offers three official renderers to fit any pipeline:

  1. @videoflow/renderer-browser: Perfect for "Save to Device" buttons. It exports MP4s directly in the user's browser using WebCodecs, costing you zero server dollars.
  2. @videoflow/renderer-server: Ideal for batch processing. This Node.js renderer uses headless Chromium to generate videos in the background.
  3. @videoflow/renderer-dom: Provides a frame-accurate 60fps live preview, allowing users to scrub through their recap before exporting.

For a massive year-end campaign, you might use the server renderer to pre-generate videos or the browser renderer to let users generate them on-demand. You can test these different rendering paths in the VideoFlow Playground.

How VideoFlow Handles SaaS Personalization

VideoFlow is uniquely suited for automated video generation because it decouples the scene description (JSON) from the rendering engine. This means your backend can emit a VideoJSON document, and you can render it anywhere—from a serverless function to a mobile browser.

Unlike alternatives that require a proprietary React runtime or complex FFmpeg scripting, VideoFlow is an Apache-2.0 open-source toolkit. It gives you the cinematic primitives (like bloom, chromaticAberration, and glitchResolve) you need to make data look beautiful without the math-heavy lifting.

Build Your Own Recap Factory

Ready to turn your user data into cinematic stories? You can start building today by exploring our examples gallery or diving into the documentation.

If you're building a commercial product and need a drop-in editor for your users, check out the React Video Editor—it's free for individuals and small teams.

Join the community and help us build the future of video-as-code on GitHub.

VideoFlow

Open-source toolkit for composing videos from code.

Product

CoreRenderersReact Video EditorPlayground

Learn

DocsAPI referenceExamplesvs. Remotionvs. FFmpeg

Project

GitHubLicenseContactTermsPrivacy

From the blog

All posts →How to Build a 'Spotify Wrapped' Style Video Recap for Your SaaSVersion-Controlled Video: How to Diff and Branch Your Motion GraphicsData in Motion: How to Build Animated Dashboards with VideoFlowAutomating E-commerce: Generating Product Videos from a JSON FeedZero-Cost Browser-Side Video Rendering with WebCodecsThe Art of the Reveal: 5 Cinematic Text Animations in VideoFlowHow to Build a High-Impact Caption Engine for Short-Form VideoHow to Build a Serverless Video Rendering Pipeline with AWS Lambda
© 2026 VideoFlow. Apache-2.0 core.