Chrome's "White Flash" Problem


update (june 1, 2021): this bug certainly must still be a thing because I recently noticed this page has been getting a lot of activity in my http server logs. I searched for the issue on twitter and found people are still experiencing this phenomenon. it's been about 5 years since I put together that autohotkey script, and I'm not really sure it works any more in the latest version of chromium, ymmv :/

the solution to me, at the chromium source level, would be to just have an option to 'wait' until the DOMContentLoaded event is triggered on the subsequent page, then revealing that page, eliminating the gap between the current page and the next page. the bug has been going on for 13 years now..

if you know of a solution, email me at aehtyb@gmail.com and i will share it on this page.
update (march 15, 2017): the white flash bug (issue 470669) has been marked fixed..
quote: FYI this bug will be fixed in the stable channel with Chrome 59, which will be released in about 12 weeks. In the meantime you will be able to see it in Canary within a day, or Dev within a week.
Chrome (Chromium) briefly flashes an empty white page every time you navigate to a page on a different domain. It also sometimes happens when toggling between tabs and when opening a new tab. This is especially irritating at night; navigating through webpages with dark background colors results in intermittent, strobe-like white flashes. The issue became much more noticible after I installed a global dark-themed stylesheet for using the web at night. When I looked on google to see if this was a known bug.. I was surprised to find that this has been an issue since 2008 and remains to be fixed.

Among the search results for chrome white flash is a solution that fixed the problem in 2013 but doesn't work any more. It seems like at one point you were able to control that empty white space with javascript+css.. but something changed so using an extension to fix it won't work from what I can tell.

The most reasonable seeming 'fix' would be to simply remain on the current page and not make visible the destination page until at least the background of the destination page has been loaded.. as to not rely on some default color serving in the in-between state.

It would be nice if this issue could be fixed at the source level without some kind of band-aid fix. I'm not familiar with the Chromium source code and assume if this was a trivial enough issue it would have been fixed by now by someone who knows what theyre doing.. but who knows. I decided to just do something to rectify it on my computer in the mean time. This might be helpful for anyone who  is looking for simply anything to get rid of the white-flashing.


update december 30, 2016 : I was e-mailed a link to a forked version of Chromium which has a hard-coded fix, the static white background page replaced with a black page. This might be a better alternative for some users not wanting to use autohotkey. See https://github.com/hbtlabs/chromium-white-flash-fix.
Unfortunately this extremely hackish workaround only works on Chrome on Windows as it uses Autohotkey. If something like Autohotkey exists on Apple then I imagine this same technique could be ported elsewhere.

You will need Autohotkey and these two images:


.. saved to the desktop. (Important that they are saved to the desktop)
For x86 systems, you will need a copy of Gdip.ahk also saved to the desktop.
For x64 systems, you will need the x64 version of Gdip_All.ahk -- save this file to the desktop as Gdip.ahk.
Save this script: noflashing.ahk to the desktop.
After you have installed autohotkey and saved everything to the desktop.. right click the noflashing.ahk file and click 'Run script' .

Note: If you are using a custom theme for chrome - or running chrome in Incognito mode - autohotkey won't be able to find the 'reload' and 'stop' buttons because they are styled differently. Try running the script without any theme activated and see if you are still having troubles

Any time you press enter, click, or navigate between tabs, the script will immediately look to see if the page has entered a 'loading' state (when the 'reload' icon turns into 'stop') and if it does, it will paint the contents of the window in-place, until the 'reload' symbol appears, indicating the new page has been loaded (or 3 seconds have passed, whichever comes first.) . then the painted window will hide and it shouldn't have even been noticible that anything happened at all. It generally works pretty seamless, although it isnt 100% perfect if the target page doesnt load quickly enough, but that can be fixed in the script if desired.

Here is a comparison of navigating between tabs before and after using the noflashing.ahk script.


Here are some additional useful tools that can be of great benefit when using Chrome at night, in tandem with the noflashing.ahk script..
by fanfare - last updated june 1, 2021