Code Demo Narrator

Explain software with scroll-synced code, visual previews, line highlights, annotations and diffs.

v1.0Framer Code ComponentAvailableChangelog →

Quick Start

  1. Add Code Demo Narrator to a Framer page, set a flexible width and let the height fit its content.
  2. Choose Content: Code → UI (SwiftUI), Code → API (TypeScript), Diff Story, or Custom Chapters.
  3. For your own story, select Custom Chapters and edit Chapters. Add a title, explanation, code and preview for each step.
  4. Set Highlighted to line numbers such as 2, 4-6. Choose an image, video or built-in scene under the chapter's Preview.
  5. Adjust Layout, Appearance, Focus and Motion. Enable Output → Show to display each chapter's output text.
  6. Test in Framer Preview on desktop and mobile. Scroll both ways and check your media, line highlights and annotations before publishing.

Content and Chapters

The included SwiftUI story has five chapters, the TypeScript story has four, and Diff Story has two. Selecting a preset uses that story instead of the editable Chapters array. Select Custom Chapters to use your own content; one to eight chapters are supported. Removing every custom chapter shows Empty Text.

ControlPurpose
Eyebrow, Title, DescriptionThe label, heading and explanation of a chapter.
AccentChapter accent for progress, emphasis, preview details and ambient light.
FilenameActive filename shown in the editor header.
TabsComma-separated display-only filenames. These are not editable or clickable file tabs.
LanguageSwift, TypeScript, JavaScript, JSX / TSX, Python, HTML, CSS, JSON, Shell or Plain Text syntax colouring.
CodeThe code snippet to display. It is never executed.
HighlightedLine numbers or inclusive ranges, for example 2, 4-6.
Added, RemovedLine numbers with addition/removal styling when Diff Mode is enabled. Include both removed and added lines in the snippet.
PreviewBuilt-in Scene, Image or Video.
SceneOne of eleven illustrative scenes from the three included stories.
Image, VideoYour uploaded preview media. Video accepts mp4, webm and mov; browser playback depends on codec support.
Alt TextAn accessible description for your preview.
AnnotationsUp to four callouts using the format below.
OutputPlain-text rows for the optional output strip.

Focus, Diffs and Annotations

Focus → Dim Code dims lines outside Highlighted. Preview Ring points at a predefined element of a built-in scene when that chapter has highlighted lines. It does not locate elements inside your uploaded media or interpret the code.

Enable Code → Diff Mode for custom additions and removals. The Diff Story preset enables diff styling automatically. Diff Story presents the original version and a changed version with additions/removals; it is not an automatic comparison engine.

Enable Focus → Annotations and enter callouts like this:

Reusable card@70,46 | Updated action@62,78

Separate callouts with |. Coordinates are percentages from 0 to 100 over the preview container. Adjust them for your media and frame; they do not track objects in a video. Callouts are visual overlays and do not block pointer input to the video controls.

Layout and Responsive Behavior

On a wide component, chapter text scrolls beside a sticky code editor and preview. The active chapter changes at Activation Line. Scrolling backwards rewinds the story; each component instance tracks itself independently.

Below Mobile Below, the component becomes stacked cards with their own code and preview. The breakpoint uses the component's width, so a narrow desktop column can also show cards. Short viewports can trigger cards to keep the composition usable.

ControlDefaultEffect
Preview SideRightPlaces the preview on the left or right of the desktop composition.
FrameBrowserFreeform, Browser, Phone, Tablet or Desktop preview chrome.
Content Width1220 pxMaximum width of the story.
Preview Width50%Preview's share of the code/preview area.
Gap56 pxSpace between desktop columns.
Chapter Height85 vhMinimum scroll height per desktop chapter.
Sticky Offset80 pxDistance from the viewport top for pinned panels.
Mobile Below980 pxComponent width below which cards appear.
Text AlignLeftLeft or Center chapter text.
Padding112px 24pxOuter spacing. The public demo uses its own section spacing and can override this.

Use the normal page flow and avoid clipping ancestors with Hidden or Clip overflow around the sticky section. Leave content above and below the story so it can enter and exit naturally.

Appearance and Code

ControlDefaultEffect
Appearance → ThemeCarbonCarbon, Graphite, Paper or Xcode-inspired.
Accent OverrideEmptyReplaces chapter accents when a colour is provided.
Editor Radius16 pxRounds the code editor separately from the preview.
ShadowOnAdds a shadow to the preview frame.
Ambient GlowOnAdds a soft accent glow around the preview.
Glow0.5Ambient light intensity.
Code → Font Size13 pxCode font size, from 11 to 18 px.
Line NumbersOnShows numbered code rows.
Diff ModeOffEnables Added/Removed styling for custom chapters.
Preview → FitContainContain preserves the full media; Cover fills the frame and crops edges.
Preview → Radius14 pxPreview corner radius.

Syntax colouring is lightweight and intended for presentation. Choose Plain Text when coloured tokens are not useful. Long code lines can scroll inside the editor.

Output and Progress

Output → Show is off by default. When enabled, the strip uses the chapter's Output text and the label selected in Mode: Terminal, Output, Console, Request or Response. These are presentation labels; no commands or requests are run.

Progress → Show, Line and Markers are on by default. Thickness defaults to 2 px and Track sets the unfilled colour. The progress indicator is vertical on desktop and horizontal above the cards.

Motion and Video

ControlDefaultEffect
TransitionSlide + FadeSlide + Fade, Fade or None between chapters.
Duration300 msTransition duration.
Preview Shift10 pxPreview movement for Slide + Fade.
Code Shift10 pxCode movement for Slide + Fade.
Activation Line50%Viewport position that selects the active chapter.
Autoplay, Loop, MutedOnVideo playback preferences.
ControlsOffShows native browser video controls when enabled.
Play Label, Pause LabelPlay, PauseLabels for the component's accessible playback controls.

Videos pause when inactive, outside the visible area or in a hidden browser tab. A manual pause is respected. If autoplay is disabled or blocked, the component offers a play button when native controls are hidden. Muted video is the most reliable autoplay configuration.

The visitor's reduced-motion preference disables automatic video playback and simplifies chapter transitions. Use Transition → None for immediate chapter changes regardless of that preference.

Canvas

Framer Canvas shows a static chapter list, code and preview. Canvas → Preview Chapter selects the editing preview only. Canvas does not autoplay videos or show the full scrolling experience; test those in Preview.

Accessibility

Chapter headings, code and progress remain accessible. Outgoing transition layers do not take keyboard focus. Playback buttons have visible focus states. Set Alt Text, ARIA Label, Empty Text, Play Label and Pause Label for your audience; defaults are English. Check contrast again after changing your palette.

Troubleshooting

My chapter edits are not visible

Choose Content → Custom Chapters. The other three Content options use their built-in stories.

The editor and preview do not stick

Check in Preview. Use content-driven height and normal page scrolling; remove Hidden or Clip overflow from ancestors of the story. A narrow component or short viewport intentionally uses cards.

Output or added lines are missing

Enable Output → Show for output text and Code → Diff Mode for custom Added/Removed lines. Number rows from 1 and include the relevant rows in Code.

Video does not autoplay

Upload a web-playable video, enable Autoplay and Muted, and test in Preview. Reduced motion disables autoplay. Use the play button or enable Controls if the browser restricts playback.

An annotation points at the wrong place

Adjust its percentage coordinates after choosing the preview frame and Fit. Uploaded media uses manually positioned callouts; Preview Ring is only for built-in scenes.

FAQ

Does the component compile code or connect to an API?

No. It synchronizes prepared text, code snippets and visual previews. The built-in API and app examples are illustrative.

Can I use my own screenshots and videos?

Yes. Choose Image or Video per custom chapter and provide your own media. Different chapter media types can be mixed.

Is this a complete website template?

No. It is one Framer Code Component. The marketing page layout is not included.

What do I receive?

A private Framer installation link and an access/setup guide through checkout delivery, plus this English and Spanish documentation. No additional package installation is needed inside Framer.

Limitations

  • Up to eight custom chapters, four annotations per chapter, and five predefined preview frames.
  • Display-only code and file tabs; no compiler, code editor, automatic diff generator, API client or live embedded website.
  • Built-in scenes have predefined layouts and copy. Use your own media for a specific product interface.
  • Sticky behavior depends on the containing page. Media codecs and autoplay depend on the browser.
  • Image and video content scales or crops; it does not reflow like the built-in scenes.
  • Xcode-inspired is a visual theme name; this product is independent of Apple.

Need help? Visit support or email ARForge Labs.

Changelog

v1.0

Initial release of Code Demo Narrator.

  • Three included stories and up to eight custom chapters.
  • Synchronized code, previews, highlighted lines, annotations and diff styling.
  • Five preview frames, four themes and a responsive card layout.
  • Reduced-motion support and accessible video playback controls.
  • English and Spanish documentation and a private Framer installation link delivered after purchase.

Create a free website with Framer, the website builder loved by startups, designers and agencies.