← Chrome 151 reference

v151 · input · pointer events

Wheel event momentum

Limited availability

  • Chrome · 151
  • Edge · mirror (BCD)
  • Firefox · not supported (BCD)
  • Safari · not supported (BCD)

Not a separately tracked web-feature on webstatus.dev (the momentum query returns zero entries, checked 2026-07-26); the broader WheelEvent API is long-established. Support rows per BCD api/WheelEvent.json; vendor signals in the compatibility section.

After a fling, many platforms keep firing wheel events to simulate scroll inertia — long after the user's finger has left the trackpad. The momentum attribute marks exactly those synthesized events (true), so a page can finally tell platform inertia apart from the rest of the wheel stream (physical input, synthesized events on uninstrumented platforms, and script events all read false) and stop reacting to phantom scrolls.

at a glance

At a glance
Milestone listingChrome 151 — Enabled by default
Feature detailDesktop 151, Android 151; status text “Proposed” (detail updated 2026-07-06)
SurfaceOne attribute (WheelEvent.momentum) and one dictionary member (WheelEventInit.momentum)
Runtime featureWheelEventMomentum — status stable at trunk (crbug.com/40704952)
Standards bodyW3C Pointer Events (Editor's Draft) — WheelEvent
ChromeStatus6631012282007552 — Wheel event momentum
Source: chromestatus.com/feature/6631012282007552; Chromium runtime_enabled_features.json5

Member reference

The developer-facing surface is exactly two items, documented together on one stable page with all nine dimensions (syntax, inputs, outputs, errors, context, lifecycle, examples, compatibility, and security/privacy):

Source: Pointer Events — WheelEvent interface

Why it exists

Trackpads fling: the physical gesture ends, but the OS keeps the scroll gliding with synthesized wheel events. Pages that react to every wheel event — carousels, maps, custom scrollers — cannot tell these inertia events from real user input, so they keep responding after the user has let go. A boolean on the event itself ends the guessing games (velocity heuristics, timeouts): when momentum is true, the event was synthesized by the platform to simulate inertia; when false, the spec says only “otherwise” — it does not establish physical input (a script-constructed event also initializes to false, and uninstrumented platforms report false throughout).

Runtime qualification: in Chromium the value is mapped from the platform event as momentum_phase != kPhaseNone (the Blink unit test injects kPhaseBegan /kPhaseChanged /kPhaseNone to pin the mapping). The implementation CL records that manual testing on Linux did not surface the value in JS — “maybe because of platform limitations” — and landed with extra tracing to investigate other platforms in Dev/Canary builds. Real hardware/OS behavior (which platforms and devices actually emit momentum phases) therefore needs Chrome 151+ hardware evidence; this reference does not claim it.

Source: Pointer Events — WheelEvent interface; ChromeStatus API feature record

Examples

Live example from the Chrome Platform Showcase: watch wheel events arrive and see which ones are platform inertia. Source: chrome-platform-showcase
// Stop a custom scroller from reacting to inertia-only events.
scroller.addEventListener("wheel", (event) => {
  if (event.momentum) return; // platform inertia after the fling — ignore
  event.preventDefault();
  scroller.scrollBy(0, event.deltaY);
}, { passive: false });

// Feature-detect before relying on it:
const supported = "momentum" in WheelEvent.prototype;
Source: Pointer Events — WheelEvent interface; Sample (CodePen, from the ChromeStatus entry)

Browser compatibility

WheelEvent.momentum — from BCD api/WheelEvent.json (checked 2026-07-26)
Engine / runtimeSupportNotes
Chrome151Matches the Chrome 151 milestone listing (Enabled by default); detail desktop + Android 151; Chrome for Android and WebView (Android + iOS) are BCD mirrors
EdgemirrorBCD mirrors Chrome's data
FirefoxNot supportedBCD version_added: false (Firefox for Android mirrors); the ChromeStatus entry records a Positive signal
SafariNot supportedBCD version_added: false (Safari on iOS mirrors); the ChromeStatus entry records No signal
Deno / Node.jsUnknownNo BCD entries as of 2026-07-26 (DOM event API; not a server-side surface)

Support rows are from BCD only. Separately, vendor signals come from the ChromeStatus API feature record (checked 2026-07-26): Firefox “Positive”, Safari “No signal”, web developers “Positive” (as labelled on the ChromeStatus feature entry). There is no behavioral WPT test for momentum as of 2026-07-26: the pinned tree at commit 1985b47 contains exactly two momentum declarations — the WebIDL surface itself in interfaces/pointerevents.idl (lines 90 and 98) — and no behavioral .html/.js test was found.

Source: BCD api/WheelEvent.json; ChromeStatus API feature record

Specifications

Specifications
SpecificationStatus
W3C Pointer Events — WheelEvent interfaceEditor's Draft (normative attribute + dictionary member text); landed via w3c/pointerevents PR #643 (merged)

Note: the ChromeStatus entry's spec link anchors to #dom-wheelevent-momentum and BCD's spec link anchors to #dom-wheeleventinit-momentumneither resolves in the current draft (the attribute has no dedicated anchors); the resolvable section is #interface-wheelevent (linked above and throughout this reference).

Source: w3c.github.io/pointerevents; chromestatus.com/feature/6631012282007552

See also