Scrolljacking
Scrolljacking happens when a page overrides native scroll semantics, pacing, direction, stopping points, or reachability so scrolling no longer behaves like the user's browser, device, or assistive technology normally promises.
It removes user control, raises cognitive load, can trigger motion sensitivity, and turns ordinary navigation into an accessibility responsibility that many custom scroll implementations do not meet.
Users lose their place, miss content, fight the scrollbar, refresh, back out, or abandon the task when the page feels stuck, slow, or broken.
Keep native scrolling as the baseline, layer optional visual enhancement on top, preserve landmarks and return points, and offer explicit continuation controls where endless loading would otherwise take over.
Examples
Clear match7 examples
The anti-pattern is the central failure: the page blocks progress before the user's expectation is satisfied.
Partial match3 examples
The pattern is present but mixed with mitigating factors such as partial preview, delayed walls, or product constraints.
Boundary case1 examples
The surface resembles the pattern, but context may change the diagnosis or mark a safer edge.
Research
Native scroll override harms control and task successNielsen Norman Group, Oslo Metropolitan University
NN/g defines scrolljacking as changing scroll speed and sometimes direction, and reports threats to user control, discoverability, efficiency, and task success. A controlled Oslo Metropolitan University study found lower accuracy and lower satisfaction for a scrolljacking prototype than for an otherwise equivalent native-scroll version.
Scrolljacking increases disorientation and abandonmentNielsen Norman Group case studies
The report summarizes cases where users became disoriented, refreshed, dragged the scrollbar, retraced steps, clicked away, or left the page when long, imprecise, direction-changing, or text-heavy scrolljacking interrupted their task.
Infinite scroll creates landmark, footer, and refinding failuresNielsen Norman Group, Baymard Institute
Infinite lists become harmful when users need boundaries, footer access, comparison, or return-to-place behavior. The report cites Nike footer lockout, BMW list-position loss, Miami FC false endings, and a Sephora mobile list exceeding 527 items.
Motion and keyboard accessibility risks compound the patternW3C, WAI APG, Deque, MDN
Scroll-linked motion can trigger vestibular discomfort and should honor reduced-motion preferences. Custom scrollers, feeds, and intercepted keys require keyboard reachability, logical focus behavior, no traps, useful announcements, and enough semantics for assistive technology.
Safer alternatives preserve native scrolling and explicit continuationNN/g, Baymard Institute, MDN, W3C
Native long pages, anchor navigation, sticky explainers, proximity snap, explicit Load More controls, reduced-motion fallbacks, and passive observation preserve control while still allowing visual enhancement. The practical rule is to enhance scrolling without turning the user into an animation scrubber or endless-feed operator.
Workflow
1Diagnostic assessmentCheck whether scrolling still behaves like native browser and device movement.
- Native scroll remains the default; no custom wheel or touch interception on ordinary reading pages
- Users can stop at arbitrary positions; no forced mandatory snap on text-heavy content
- Critical content is reachable without scrubbing animations or pinned scenes
- Footer, contact links, and support content remain reachable
- Returning from a detail page restores list position
- Every custom scroll container is keyboard reachable and has a logical focus path
- Reduced motion disables non-essential parallax, smooth travel, and scrub effects
- Mobile behavior is separately tested; desktop effects are not blindly ported
- Zoom, reflow, and increased text spacing do not break snap areas or clip content
- There is an obvious escape hatch, such as sticky nav, skip links, anchors, or a section index
2Fix planningMap scroll-control failures to native-scroll alternatives and explicit continuation patterns.
| Problem sign | Design fix | KPI movement |
|---|---|---|
| Wheel or touch input is intercepted | Restore native document scrolling and observe visibility passively | Lower rage-scroll rate and better INP |
| Story scene locks the viewport | Use normal text flow with a sticky supporting visual | Better reading control and lower early exits |
| Mandatory snap prevents stopping between sections | Use proximity snap only in bounded non-text-heavy contexts | Fewer missed sections and better keyboard behavior |
| Endless list hides footer or boundaries | Replace automatic loading with explicit Load More | Higher footer reach and clearer stopping points |
| Parallax or scrubbed motion is non-essential | Respect reduced motion and provide a visible motion toggle | Lower motion-related abandonment and support demand |
| Custom scroll container is hard to operate by keyboard | Make the region focusable and preserve standard key behavior | Fewer accessibility defects and keyboard traps |
3Experiment planningCompare task progress, control, and accessibility outcomes instead of optimizing spectacle.
| Experiment | Control | Variant | Metric |
|---|---|---|---|
| Hijacked vs native scroll | Full-page scrolljack or scrubbed sequence | Native long page with optional sticky enhancement | Early exit after first scroll and task completion |
| Endless vs Load More | Automatic infinite loading | Explicit Load More with count, status, and footer access | Footer reach rate and return-to-list success |
| Mandatory vs proximity snap | Mandatory full-screen snap sections | Proximity snap or no snap for text-heavy content | Scroll-depth drop-off and rage-scroll rate |
| Motion-heavy vs reduced-motion fallback | Parallax and scrubbed animation for all users | Reduced-motion fallback plus optional motion control | Support-contact rate and engagement quality |
| Scroll-math vs passive observer | Scroll handler drives frame-by-frame animation | IntersectionObserver updates supporting visuals | P75 INP and long-task frequency |
4Measurement planningMeasure scroll harm through responsiveness, reachability, refinding, depth, exits, and support signals.
Track first_scroll, scroll_section_enter, snap_boundary_enter, pinned_scene_enter, list_batch_loaded, load_more_click, footer_visible, detail_view, back_to_list, same_position_restored, reduced_motion_enabled, exit, refresh, and scroll_support_contact. Segment by device, input method, reduced-motion preference, keyboard usage, screen size, source, and task intent.
Knowledge Links
- Infinite-scroll trap
- Forced narrative
- Motion overload
- Keyboard trap
- Illusion of completeness
- Native long page
- Sticky explainer
- Explicit Load More
- Reduced-motion fallback
- Accessible feed semantics