Open source platforms only flourish when software giants like Microsoft actively contribute to them. This is exactly what’s happening in the Chromium world.

Now that Microsoft Edge is also a beneficiary of the open source platform Chromium, Microsoft is working on a new feature that would make scrolling in Chromium browsers as good as the classic Edge browser.

To make scrolling experience a lot Edge(classic)-like, Microsoft is planning to move the composite scrollbar to the impl thread. This will let users continue to interact with and scroll using scrollbars even when the main thread is busy.

Microsoft explains, “Scrollbar scrolling using the mouse happens on the main thread in Chromium. If the main thread is busy (due to reasons like long running JS, etc), scrolling by clicking on the scrollbar will appear to be janky as the events keep getting queued up on the MainThreadEventQueue, waiting for the main thread to free up.”

“We observe on average scrollbar drags have ~2-4x higher latency in Chromium as compared to EdgeHTML today, worse on particularly busy sites. We attribute this gap primarily to EdgeHTML’s feature for off-thread scrollbar drags. By avoiding the main thread in Chromium as well, we believe we can bring the performance of scrollbar drags more in line with what we observe in EdgeHTML.”

Proposal accepted

The good news is the contribution from Microsoft was reviewed and approved by the open source community. That’s not all, Microsoft’s code has been merged into Chromium and Canary builds( via WindowsLatest).

If you are using Chrome Canary you notice a flag named “Enable Compositor threaded scrollbar scrolling.” Microsoft said that all the followup changelists with regard to scrolling issues will be stagged under the flag.

Since the flag is available, you can enable it but remember we are talking about something that is in under development and therefore things might not work as expected.

About the compositor threaded scrollbar scrolling, Microsoft said, “When a mousedown arrives at the renderer, it gets hit tested. If a composited scrollbar was hit, the MouseEvent gets dropped and a GestureScrollBegin and a GestureScrollUpdate get added to the CompositorThreadEventQueue. These gesture scroll events contain scroll deltas based on which scrollbar part was hit (arrows for now). On a mouseup, a GestureScrollEnd is added to the queue. They are then dispatched (as Gesture events) in a VSync aligned manner.”