Google Cuts Chrome for Android Scroll Jank by 48%

Google has announced a significant improvement in the scrolling performance of Chrome for Android, achieving a 48% reduction in scroll jank between 2023 and 2026. Scroll jank refers to the abrupt stutters or jumps that occur when a device fails to update the scroll position in time, leading to a disrupted user experience.

Understanding Scroll Jank

Scroll jank happens when the device cannot present a frame with the updated scroll offset promptly. Chrome operates under strict deadlines to deliver each frame before the screen refreshes. If processing delays push a frame past this deadline, the screen displays an outdated scroll position for an entire refresh cycle—approximately 16.7 milliseconds on a 60 Hz display. This missed frame results in a noticeable stutter to the user.

Challenges in Chrome’s Architecture

Unlike standard Android applications, Chrome’s architecture includes separate processes for the browser, renderer, and GPU. While this design enhances stability, security, and performance, it also introduces complexities that can exacerbate scroll jank. When a user interacts with the screen, the input event traverses multiple processes: it starts in the browser process for hit testing, moves to the renderer process to calculate the new scroll offset, and involves the GPU process for rendering. Additionally, Chrome processes unbuffered input directly from the hardware, leading to input events arriving at irregular intervals, sometimes multiple times per refresh cycle.

Strategies to Reduce Scroll Jank

To address these challenges, Google initiated several projects focusing on automated heuristics, targeted optimizations, and architectural changes:

  • Input Prediction: To mitigate delays in receiving input events from the operating system, Chrome generates synthetic scroll updates by predicting future scroll positions based on observed scroll patterns. This approach ensures timely frame delivery without extending processing deadlines.
  • Browser Controls in Viz: Previously, synchronizing the movement of browser controls with webpage scrolling involved the browser’s main thread in every frame, increasing the potential for visual inconsistencies. By shifting this responsibility to the GPU process, Chrome now applies each frame’s scroll offset to the browser controls’ screenshot without involving the main thread, resulting in smoother animations.
  • Prioritizing Android Input Threads: Google collaborated with the Android team to ensure that all threads responsible for delivering hardware input to Chrome have sufficiently high priority. This adjustment prevents input events from being delayed due to lower-priority tasks preempting the relevant operating system threads.

These concerted efforts have led to a substantial reduction in scroll jank, enhancing the overall browsing experience on Chrome for Android. This improvement underscores Google’s commitment to refining user interactions and addressing performance bottlenecks in its products.

As mobile web usage continues to grow, such optimizations are crucial for maintaining user satisfaction and engagement. Users can look forward to even more responsive and fluid interactions as Google continues to refine Chrome’s performance.