Journal

Parallax Scroll Header UI: Smooth Depth on Mobile

Parallax is depth you feel, not notice: when it is smooth it elevates the screen, when it stutters it cheapens the whole app.

Parallax Scroll Header UI: Smooth Depth on Mobile: the App Store logo as a frosted glass icon on a pink and blue gradient with bubbles

TL;DR

A parallax scroll header makes a hero image move slower than the content scrolling over it, adding a sense of depth, common on profile and detail screens. Build it from a free VP0 design, drive it from the scroll offset, and keep it locked to 60fps (or 120 on ProMotion). Add a graceful collapse into a solid nav bar, keep text readable over the image, and respect Reduce Motion. Smoothness is everything.

A parallax header, where a hero image moves slower than the content scrolling over it, adds a premium sense of depth to profile and detail screens. The short answer: build it from a free VP0 design, drive the effect from the scroll offset, and keep it perfectly smooth, because the moment parallax stutters, it cheapens the whole app. Smoothness has headroom on modern devices: ProMotion displays refresh up to 120Hz, roughly 2x a standard screen, so there is no excuse for a janky header.

What makes parallax feel premium

Parallax works on subtlety. The header image should move at a fraction of the scroll speed, and often scale slightly or stay pinned while the content slides up over it. As the user scrolls past it, the header should gracefully collapse into a compact, solid navigation bar with the title, so it stays useful rather than just disappearing. Two things make or break it: performance (it must track the finger at a steady frame rate) and readability (any text over the image needs a scrim or shadow so it stays legible against varied photos). Apple’s Human Interface Guidelines favor motion that supports content, not motion for its own sake.

Build it from a free design

VP0 is a free iOS design library for AI builders. Pick a profile, detail, or hero design, copy its link, and have Cursor or Claude Code rebuild it in SwiftUI or React Native. Drive the header transform directly from the scroll offset so it is perfectly in sync, and keep the work on the main-thread-friendly path (in React Native, use the native driver for scroll-linked animation) to hold a steady frame rate. Add a scrim gradient behind any overlaid text, define the collapse into a solid nav bar at a clear threshold, and provide a reduced or static version when Reduce Motion is on. For the navigation bar it collapses into, see iOS 18 custom tab bar UI template, and for polish overall, see how to make my app look better.

Parallax header building blocks

Each detail keeps it smooth and legible.

ElementJobGet it right
Hero imageThe depth layerMoves slower than content
Scroll linkDrive the effectTied to offset, native driver
ScrimKeep text readableGradient behind overlaid text
CollapseStay usefulSolid nav bar past a threshold
Reduce MotionInclusiveStatic fallback when set

Common mistakes

The first mistake is jank: a header that lags the scroll, instantly cheapening the app. The second is unreadable text over a bright or busy photo with no scrim. The third is a header that just vanishes instead of collapsing into a usable nav bar. The fourth is heavy work on every scroll frame (large images, layout thrash) that drops frames. The fifth is ignoring Reduce Motion, which can make parallax nauseating for sensitive users. Smoothness and readability are non-negotiable.

A worked example

Say you have a profile screen. You build it from a VP0 design with a hero photo that scrolls at half speed and scales subtly. Text over it sits on a soft bottom gradient so it stays readable on any photo. As the user scrolls up, the header collapses smoothly into a solid bar with the name and a back button. The animation is driven straight from the scroll offset on the native path, so it holds frame rate even on older devices, and Reduce Motion swaps to a static header. For a refresh interaction on the same screen, see iOS pull-to-refresh Lottie animation free, and for the in-car platform next, see Apple CarPlay audio app UI template.

Key takeaways

  • A parallax header adds depth by moving the hero slower than the content.
  • Build it from a free VP0 design and drive it from the scroll offset.
  • Keep it locked to a steady frame rate; jank cheapens the whole app.
  • Add a scrim for readable text and collapse into a solid nav bar.
  • Respect Reduce Motion with a static fallback.

Frequently asked questions

How do I build a parallax scroll header? Build it from a free VP0 design, drive the header transform from the scroll offset, move the hero slower than the content, add a scrim for text, and collapse it into a solid nav bar past a threshold.

How do I keep a parallax header smooth? Tie the animation directly to the scroll offset, use the native animation driver (in React Native), avoid heavy per-frame work, and use appropriately sized images so the frame rate stays steady.

Why does my parallax feel janky? Usually too much work per scroll frame: oversized images, layout thrashing, or animation running off the native path. Optimize the image, use scroll-linked native animation, and profile the frame rate.

Should I support Reduce Motion for parallax? Yes. Parallax can cause discomfort for motion-sensitive users, so provide a static header when Reduce Motion is enabled.

Frequently asked questions

How do I build a parallax scroll header?

Build it from a free VP0 design, drive the header transform from the scroll offset, move the hero slower than the content, add a scrim for text, and collapse it into a solid nav bar past a threshold.

How do I keep a parallax header smooth?

Tie the animation directly to the scroll offset, use the native animation driver (in React Native), avoid heavy per-frame work, and use appropriately sized images so the frame rate stays steady.

Why does my parallax feel janky?

Usually too much work per scroll frame: oversized images, layout thrashing, or animation running off the native path. Optimize the image, use scroll-linked native animation, and profile the frame rate.

Should I support Reduce Motion for parallax?

Yes. Parallax can cause discomfort for motion-sensitive users, so provide a static header when Reduce Motion is enabled.

Part of the Native Apple & SwiftUI: The iOS Ecosystem hub. Browse all VP0 topics →

Keep reading

Pulsing Radar Animation for Maps: Alive, Not Annoying: a phone toggle icon surrounded by location, calendar, settings, wallet and chart app icons on a coral gradient
Guides 4 min read

Pulsing Radar Animation for Maps: Alive, Not Annoying

A pulsing radar animation signals live location and nearby search. Build a smooth radar pulse from a free VP0 design, keep it subtle, and respect the battery.

Lawrence Arya · May 31, 2026
iOS Pull-to-Refresh With a Custom Lottie Animation: a glowing iPhone home-screen icon on a purple and blue gradient
Guides 4 min read

iOS Pull-to-Refresh With a Custom Lottie Animation

Tired of the default spinner? Add a custom pull-to-refresh animation from a free VP0 design, keep the native gesture intact, and never block the content.

Lawrence Arya · May 31, 2026
Lottie Animations for Onboarding Screens, Free Start: a reflective 3D App Store icon on a blue and purple gradient
Guides 4 min read

Lottie Animations for Onboarding Screens, Free Start

Lottie brings lightweight motion to onboarding. Build animated welcome screens from a free VP0 design, use Lottie wisely, and never let motion block the value.

Lawrence Arya · May 31, 2026
Pinterest App Design Inspiration: The Masonry Feed: a vivid neon 3D App Store icon on an orange, pink and blue gradient
Guides 4 min read

Pinterest App Design Inspiration: The Masonry Feed

A Pinterest-style masonry feed makes visual browsing addictive. Build a staggered grid from a free VP0 design with smooth loading, saves, and fast images.

Lawrence Arya · May 31, 2026
Progress Ring Animation in SwiftUI: Rings That Motivate: a glass photo icon surrounded by chat, music, heart, camera and shopping app icons on a pastel gradient
Guides 4 min read

Progress Ring Animation in SwiftUI: Rings That Motivate

Apple Watch-style activity rings make progress feel rewarding. Build a smooth animated progress ring from a free VP0 design in SwiftUI, accessible and honest.

Lawrence Arya · May 31, 2026
Google Maps Custom Marker Clustering UI (Mobile): a glossy App Store icon on a blue, pink and orange gradient with bubbles
Guides 4 min read

Google Maps Custom Marker Clustering UI (Mobile)

Many map pins get unreadable fast. Cluster them into count bubbles that split as you zoom, with custom markers from a free VP0 design.

Lawrence Arya · May 30, 2026