Smoother scrolling: How we halved scroll jank in Chrome on Android

In the intricate web of Chrome’s multi-process pipeline, even the slightest delay can trigger a cascade of issues that disrupt the visual fluidity users expect. When an input event occurs while the browser’s main thread is occupied with other tasks, or if cross-process communication experiences a minor lag, the result is often missed deadlines and stuttering scrolls. This complexity reveals a crucial insight: while raw speed is important, it is the consistency of performance that truly enhances the user experience.

The hunt for jank causes

Delving into the complexities of Chrome’s input-rendering pipeline presents a significant challenge: pinpointing the origins of scroll jank. To tackle this, we have implemented comprehensive instrumentation across all facets of the pipeline. This spans from the initial input generation at the hardware level to the final presentation of GPU buffers on the screen. By utilizing Perfetto trace events, we can visually analyze each stage of the pipeline during scroll updates, allowing us to identify the irregularities that contribute to scroll jank.

Through this meticulous examination, we aim to enhance the overall performance and reliability of the browsing experience, ensuring that users enjoy seamless interactions without the frustration of unexpected interruptions.

AppWizard
Smoother scrolling: How we halved scroll jank in Chrome on Android