tutorial· 17 min read

How to Build an Apple-Style Scroll Website with AI: The Complete Guide (2026)

The definitive guide to Apple-style scroll websites in 2026 — pinned heroes, scroll-scrubbed video, canvas image sequences, GSAP ScrollTrigger, 6 copy-paste prompts, and an honest comparison with hand-coding, Webflow, and Framer.

João CastroJoão Castro
How to Build an Apple-Style Scroll Website with AI: The Complete Guide (2026)

How do you build an Apple-style scroll website with AI?

Short answer: you describe the film you want the page to play — "a pinned hero where a product video scrubs frame-by-frame as I scroll, captions fading in over five beats, dark, slow, premium" — and an AI code generator writes it as a real React project: GSAP ScrollTrigger timelines, a Lenis smooth-scroll foundation, and a scroll-scrub engine that maps scroll position to media playback. On VULK (our product — disclosure below), that loop runs prompt → generated code → live preview in a Firecracker microVM → one-click deploy, and the output is source you export and own.

The demand behind this style is not aesthetic vanity. Users who arrive at VULK with immersive intent — scrollytelling, cinematic, 3D — convert to paid at 20.4%, six times the platform average, and 2,438 projects include explicit 3D/WebGL requests (VULK platform data, July 2026). Apple's product pages trained a decade of visitors to read scroll-driven storytelling as "this company is serious." This guide covers the whole craft: what makes the style work, the five techniques behind every Apple-style page, the prompt-to-site workflow, six complete copy-paste prompts (including a canvas image-sequence scrub and a pinned cinematic hero), an honest comparison with hand-coding, Webflow, and Framer, performance discipline, and deployment. Disclosure: VULK is our product — where another route is the better choice, we say so. Updated July 18, 2026.

Comparison table: four ways to build a scroll-driven website

Approach What you get Time to first working page Code ownership Best for
Prompt → code (VULK) React + GSAP ScrollTrigger + Lenis source, live preview, deployable app Minutes Full — ZIP export or GitHub push Product sites, brand films, portfolios that must keep evolving
Hand-coded GSAP Anything ScrollTrigger can do, exactly as you wrote it Days to weeks Full Teams with a creative developer and time
Webflow + interactions Visual-editor scroll animations inside Webflow hosting Hours to days Limited — exported code is not meant for hand-editing Marketing teams already on Webflow
Framer + scroll effects Designer-friendly scroll transforms and appear effects Hours None practical — Framer hosts the site Designers shipping simple marketing pages fast

The structural split: visual builders animate elements; the Apple style directs a film. Pinning a section for 3,000 pixels of scroll while a video scrubs, captions trade places, and lighting shifts across narrative beats is timeline choreography — the natural language of GSAP code, awkward to click together in a GUI. That's why the highest tier of this genre is either hand-coded by studios or, since AI generation, written by a model and refined by prompt.

Why does the Apple scroll style work so well?

Three mechanisms, all borrowed from film:

The viewer controls the projector. In a scroll-scrubbed sequence, scrolling is the timeline. Nothing autoplays at the visitor; they pull the story forward at their own pace, which turns passive viewing into interaction. Stop scrolling and the film holds its frame — that single behavior makes a page feel engineered rather than decorated.

Pinning creates scenes. When a section pins to the viewport while scroll progresses, the page stops being a stack of blocks and becomes a sequence of scenes. Each pinned scene gets room to make one point — a product angle, a feature, a stat — before releasing to the next. Apple's product pages are essentially six pinned scenes in a row.

Beats replace sections. The best scroll sites read as numbered narrative beats — each beat shifts the accent lighting, the typography scale, and the emotional tone. VULK's generator encodes this as an explicit discipline distilled from produced immersive showcases (sports legacy, luxury voyage, fragrance, automotive, real estate): slow, deliberate motion, one continuous film, never separate website blocks.

The five techniques behind every Apple-style page

Every page in this genre — Apple's own, the Awwwards winners, the luxury brand films — is built from five techniques. All five are promptable.

1. The smooth-scroll foundation (Lenis + GSAP, one loop). Native scroll fires unevenly across browsers and input devices; scrubbed animation exposes every irregularity. The proven setup is Lenis smooth scrolling with GSAP's ticker driving it — one requestAnimationFrame loop for the whole page, with ScrollTrigger synced to Lenis. The #1 cause of janky scroll sites is two competing animation loops; the fix is architectural, not a tweak. VULK generates this glue by default:

const lenis = new Lenis({ autoRaf: false });
lenis.on('scroll', ScrollTrigger.update);
const raf = (time: number) => lenis.raf(time * 1000);
gsap.ticker.add(raf);        // GSAP's ticker is the ONLY loop
gsap.ticker.lagSmoothing(0);

2. Pinned sections. ScrollTrigger with pin: true holds a section fixed while scroll progress drives a timeline — the camera stands still, the scene changes. Everything else in this list happens inside a pin.

3. Scroll-scrubbed media. The centerpiece. Two implementations, both real code:

  • Video scrub — a <video> element whose currentTime is set every frame toward a smoothed target derived from scroll progress. Done right it needs a short-GOP encode (keyframes every few frames) so seeking is instant, blob-loading so the file is fully seekable, and seek coalescing so Safari's seek queue never piles up. VULK ships this engine as a proven pattern, and on the Pro plan can generate the cinematic video itself with AI video models, encoded specifically for scrubbing.
  • Canvas image sequence — the classic Apple technique: 60–150 exported frames, preloaded as images, drawn to a <canvas> where scroll progress selects the frame index. Heavier to host, but frame-exact on every browser and the right choice when you have a rendered sequence (a 3D turntable, an exploded product) rather than a video file.

4. Text choreography. Headlines that assemble word-by-word or line-by-line as their beat arrives — GSAP SplitText, staggered reveals, masked lines. The restraint matters more than the effect: one choreographed reveal per beat reads premium; six read like a slideshow transition pack.

5. Beat direction. The layer most builders skip: each scroll beat shifts accent light, contrast, and pacing so the page feels graded like a film. This is art direction expressed as code — background gradients keyed to timeline progress, captions that fade at defined scroll fractions, a closing beat that lands on the CTA.

What does the prompt-to-scroll-site workflow look like?

1. Brief the film, not the layout. Write the prompt like a director's treatment: the subject, the mood anchors ("Netflix documentary × luxury museum"), the number of beats, what each beat shows, and where the CTA lands. Specific beats in, coherent film out.

2. Generation. The AI plans the narrative structure, then writes the project: Lenis + GSAP foundation, pinned scenes, the scrub engine, SplitText reveals, and the beat-by-beat caption schedule — as one React + Vite + TypeScript codebase.

3. Live preview. The project boots in a Firecracker microVM with hot reload. You scroll the actual page within a minute or two — across 11,355 generated apps, the median builder ships a first working project 47 seconds after signing up (VULK platform data, July 2026).

4. Iterate by prompt. "Slow beat 3 by half." "The captions should be left-aligned on even beats." "More contrast in the final scene." Each follow-up edits the affected timeline, not the whole site.

5. Drop to code whenever you want. Everything is standard source — adjust an easing curve by hand, swap the video file, or hand the project to a developer. No proprietary runtime, no embed.

6. Deploy. One click to Cloudflare's edge, or export the ZIP / push to GitHub and host anywhere a static build runs.

6 complete copy-paste prompts for Apple-style scroll websites

Complete prompts, not fragments — paste any of them into VULK (or adapt them elsewhere). Each specifies the beats, the media, the motion discipline, and the performance rules, because that specification is the difference between a directed film and a random slideshow.

1. Pinned cinematic hero (product launch):

Build a one-page launch site for a premium over-ear headphone called Aurea One. The hero is a pinned cinematic scene that holds for about 4000px of scroll: a dark studio background, the headline "Silence, engineered." assembling line-by-line with a masked reveal, then three caption beats fading in and out over the pinned scene — "40h battery", "Adaptive ANC", "Titanium drivers" — each beat subtly shifting the background gradient from near-black to deep bronze. Slow, deliberate motion only; nothing bounces. After the hero releases: a specs section in a two-column grid, a gallery row, and a final full-viewport CTA beat with a single button. Use Lenis smooth scrolling glued to GSAP ScrollTrigger on a single requestAnimationFrame loop, animate only transform and opacity, and respect prefers-reduced-motion with a static fallback.

2. Canvas image-sequence scroll scrub (the classic Apple technique):

Build a product story page for an espresso machine using a canvas image-sequence scrub as the centerpiece. Create a pinned full-viewport canvas section spanning 5000px of scroll: preload a sequence of 90 frames (frame-0001.webp through frame-0090.webp from /sequence/, with a loading progress indicator until at least the first 30 frames are ready), draw the current frame to the canvas with cover-fit scaling and devicePixelRatio-aware resolution, and map scroll progress to the frame index with a small lerp so scrubbing feels damped rather than stepped. Overlay four caption beats at 10%, 35%, 60%, and 85% progress — short kicker plus one-line claim, fading in and out. Preload frames with Promise.all on idle, decode ahead of the current frame, and never draw a frame that has not finished decoding. Below the sequence: a materials section and a buy CTA. Static poster image as the reduced-motion and slow-connection fallback.

3. Scroll-scrubbed video hero with caption beats:

Build a cinematic landing page for a Swiss watch brand where the hero is a pinned, scroll-scrubbed video: the video's currentTime is driven by scroll position across 9000px, so scrolling seeks the film frame-by-frame — it must never autoplay. Load the video as a blob so it is fully seekable, set the target time inside a single requestAnimationFrame loop with smoothing, and coalesce seeks so slow browsers never queue up. Five caption beats fade over the film at defined progress ranges — opening line centered, then alternating left and right beats with an eyebrow number (01–04), title, and one-line sub, closing with a centered CTA "Reserve yours". Serif display typography, generous letter-spacing, deep black background. Below the hero: a three-column collection grid and a quiet footer.

4. Scrollytelling product story with exploded beats:

Build a scroll-driven story page for a modular backpack. Six numbered narrative beats, each a pinned scene: 1) HERO — full-viewport product shot, headline assembles word-by-word; 2) MANIFESTO — short statement with layered parallax text; 3) THE SYSTEM — the backpack visually separates into three module cards that slide apart as scroll progresses, each with a callout label; 4) MATERIALS — close-up texture background, three spec captions fading in sequence; 5) IN THE WILD — horizontal-scrolling gallery pinned while scroll drives the x-translation; 6) CLOSE — camera-pull-back feeling via scale, reassembled product, CTA. Each beat shifts the accent color slightly along a warm gradient. GSAP ScrollTrigger with scrub: true throughout — the user's scroll position drives all animation directly, no scroll-jacking, no timed autoplay.

5. Immersive brand film (fragrance genre, 3D accent):

Build an immersive brand site for a niche fragrance called Noir Méridien. Aesthetic anchors: perfume campaign film × luxury museum exhibition. Dark by default with amber accent light. Structure it as one continuous scroll film in five beats: HERO with the bottle as an interactive 3D object (React Three Fiber — glass material, soft studio lighting, slow idle rotation that tilts a few degrees toward the cursor); NOTES — three pinned caption beats where each note (bergamot, iris, vetiver) shifts the scene's accent lighting; CRAFT — scroll-scrubbed macro sequence with two captions; MAISON — serif manifesto with a masked line-by-line reveal; FINALE — the 3D bottle returns centered, bloom postprocessing subtle, single CTA "Discover". All motion slow and deliberate — one continuous film, not separate website blocks. Lazy-load the 3D bundle, pause rendering off-screen, cap pixel ratio at 2, reduced-motion fallback throughout.

6. Portfolio with pinned horizontal work gallery:

Build a portfolio for a motion designer. Hero: name in oversized type revealed with a staggered SplitText animation, role line underneath, dark background with a faint animated grain. Then a pinned horizontal gallery: the section pins while vertical scroll drives horizontal movement through 6 project cards, each card scaling slightly toward center as it passes, with title and year. Clicking a card opens a case-study page with a scroll-scrubbed hero video placeholder and a text-plus-media layout. About and contact sections close the page with a choreographed line-by-line text reveal. Lenis + GSAP single-loop setup, transform/opacity-only animation, 60fps target on mid-range laptops.

Two iteration rules that apply to all six: change one beat per follow-up prompt ("slow beat 3, keep the rest") and direct with mood anchors, not adjectives — "graded like a Netflix documentary" steers lighting and pacing better than "make it cooler."

How does this compare to hand-coding, Webflow, and Framer — honestly?

Hand-coding with GSAP is the ceiling. Studios that live in ScrollTrigger, WebGL, and shader land will out-craft any generator at the top 1% of ambition — that's who wins Awwwards Site of the Day. The cost is the cost: a creative developer at this level bills roughly €5,000–€15,000 for a comparable one-pager, and iteration rounds are days, not sentences. If you have the budget and the timeline, it remains a great route. The generated-code route gets you 90% of the genre in minutes and — crucially — produces the same kind of source a creative developer could then take further.

Webflow (from $14/mo hosting, annual) has real scroll-based interactions and a mature visual editor. For element-level effects — fade-ins, parallax, sticky sections — it's genuinely good. The genre's centerpiece techniques are where it strains: scroll-scrubbed video and canvas image sequences need custom-code embeds, and long pinned timeline choreography fights the interactions panel. Webflow's code export exists but is not meant to be hand-extended. Choose Webflow when your team already lives in it and the design is section-based rather than film-based.

Framer (from $10/mo, annual) is the fastest way for a designer to ship a clean marketing page with tasteful scroll transforms and appear effects. It is not built for scrubbed narrative: no native scroll-scrubbed video timeline, no canvas sequence, and the site lives on Framer's hosting — there is no practical code ownership. Choose Framer for speed on standard pages; choose generated code when the page IS the film.

VULK ($3.99 3-day intro → from $19.99/mo, paid-only) generates the full genre as owned code: Lenis + ScrollTrigger foundation and scroll choreography on every plan, with the premium immersive layer — AI-generated cinematic video and real-time 3D — on Pro ($39.99/mo, €9.99 3-day intro in the EU). No free tier, deliberately: this is the premium lane of web design, and the platform's data shows immersive-intent builders treat it that way — they convert to paid at 20.4%, six times the base rate (VULK platform data, July 2026). The honest trade: no visual canvas to drag things around; direction happens through language and code.

How do you keep a scroll film fast — and not annoying?

Scroll-driven sites die two deaths: jank and hijack. The complete discipline, all of it promptable:

  • One animation loop. Lenis driven by GSAP's ticker, ScrollTrigger synced to Lenis, autoRaf: false. Two loops fighting is the #1 jank source — it cannot be fixed by optimizing assets.
  • Scrub, never jack. The user's scroll position drives animation progress directly (scrub: true). Never take over the wheel, never animate the scroll position itself, never trap the user in a section that scrolls for them. Scrubbing respects the visitor; scroll-jacking loses them.
  • Transform and opacity only. Animating layout properties (width, top, margin) forces reflow every frame. Transforms and opacity stay on the compositor.
  • Encode video for seeking. A default MP4 has keyframes seconds apart — scrubbing it stutters. Use a short-GOP encode (a keyframe every few frames), load it as a blob for full seekability, and coalesce seeks for Safari.
  • Budget the image sequence. 90 frames × 200KB is 18MB — unacceptable on mobile. Export WebP at display resolution, cap sequences near 100 frames, preload progressively, and consider serving half the frames on small screens.
  • Pause everything off-screen. IntersectionObserver stops the scrub engine, the canvas drawing, and any 3D render loop when their section is not visible.
  • Respect prefers-reduced-motion. Serve a static, fully readable page with poster images. This is an accessibility requirement, and it doubles as your low-end-device fallback.
  • Keep the text in the DOM. Captions and headlines stay real HTML positioned over the media — crawlable, selectable, translatable. Never bake copy into video frames.
  • Measure on a mid-range phone. Chrome DevTools GPU profiling on a €200 Android tells the truth about your 5000px pinned scene; an M-series laptop does not.

Will an Apple-style scroll site hurt SEO and Core Web Vitals?

Not if it's built with the discipline above. The content risk is zero when headlines and captions remain DOM text — the page reads to crawlers as a normal document with media. The performance risks are specific: LCP delayed by a heavy hero video (fix: poster image first, media loads behind it), main-thread blocking during sequence preload (fix: idle-time progressive preloading), and CLS from pin containers (fix: ScrollTrigger's pinning reserves space correctly by default). A scroll film built this way scores like any well-built site with one large deferred asset. What genuinely hurts rankings is the thing you shouldn't build anyway: scroll-jacking, which inflates bounce on the exact pages you paid to make impressive.

How do you deploy it?

A generated scroll site is a standard Vite build — static assets plus media. On VULK it's one click to Cloudflare's edge with a live URL and custom-domain support on paid plans, or export the ZIP / push to GitHub and host on any static platform. Two genre-specific notes: serve video and frame sequences with long immutable cache headers (they're your largest assets and they never change per deploy), and keep the scrub video under ~15MB with the poster image doing the first paint — the film should start the moment the visitor reaches it, not after a spinner.

FAQ

Can AI really generate an Apple-style scroll website?

Yes — this genre is unusually well-suited to generation, because it's built from five named, well-documented techniques (smooth-scroll foundation, pinning, scrub engines, text choreography, beat direction) rather than free-form visual invention. VULK generates them as one coherent React + GSAP codebase, with the beat structure directed by a curated immersive-genre library distilled from produced brand showcases. The top 1% of hand-crafted ambition — bespoke shaders, art-directed 3D character work — still belongs to specialist studios, and we say so.

Do I need to know GSAP or ScrollTrigger?

No. You describe beats and mood in plain language; the generator writes the timelines, and follow-up prompts edit them. Knowing the vocabulary helps you steer — "pin this section", "scrub, don't autoplay", "stagger the line reveal" map one-to-one to what gets generated — and you'll absorb it from reading the exported code, which is standard, documented GSAP.

Scroll-scrubbed video or canvas image sequence — which should I use?

Video scrub when your source is footage (brand film, product video) — one file, easier pipeline, and VULK can generate the footage itself on Pro with a scrub-friendly encode. Canvas image sequence when your source is rendered frames (3D turntable, exploded view) or when you need frame-exact control on every browser — at the cost of asset weight and a preloading strategy. Both are supported patterns; the prompts above include one of each.

What does it cost to build one?

VULK is paid-only: a $3.99 3-day full-access intro (credited to your first month), then Builder at $19.99/mo — which includes the full scrollytelling stack (GSAP ScrollTrigger, SplitText, Lenis, pinned and scrubbed patterns). The immersive premium layer — AI-generated cinematic video and real-time 3D — is Pro at $39.99/mo (3-day intro €9.99 in the EU). For comparison: Framer from $10/mo and Webflow from $14/mo cover simpler scroll effects without code ownership, and a creative-development studio bills roughly €5,000–€15,000 for a comparable hand-built film. All pricing verified July 18, 2026.

Will it work on phones?

Yes, with the discipline baked in: touch-friendly Lenis scrolling, capped pixel ratio, lighter sequences on small screens, and reduced-motion fallbacks. The genre's biggest mobile risk is asset weight, not capability — a 25MB hero film is a desktop flex and a mobile bounce. Prompt for the budget explicitly ("mobile sequence under 6MB") and the generated code enforces it.

Can I export the code and keep building by hand?

Yes — full source export as ZIP or GitHub push. The output is a standard Vite + React + TypeScript project using public libraries (GSAP, Lenis, and Three.js where 3D is involved); a frontend-only scroll film has zero VULK dependencies and builds anywhere. That's the point of the code-generation route: the site a designer briefed in sentences is the same artifact a creative developer can take to Awwwards.

Describe the film you want your homepage to play and watch it running in a couple of minutes: vulk.dev.

Published by João Castro · 17 min read

Keep reading

All articles
VULK Support

Online

Hi! How can I help you today?

Popular topics

AI support • support.vulk.dev

How to Build an Apple-Style Scroll Website with AI: The Complete Guide (2026) — Blog | VULK