We’ve tested <script async> execution for entry chunks, but it turned out the performance is actually a tiny bit worse (at least in Chrome) than when using non-async script tags. Here’s the plugin I wrote to support this scenario: https://gist.github.com/niieani/ce388f9fcf668da4040b4cbec09f4351
To run this, we’d add ‘onload’ hooks for each async script to count how many we have loaded and run: ‘window.onReady()’ as soon as all chunks were ready.
We think the reason for lower performance is that Chrome gives a lower priority to async scripts, while non-async <script> still download and parse in parallel. So there seems to be no real benefit to using the ‘async’ option when blocking the execution until all entry chunks are ready.
Another weird thing we noticed with ‘async’ entry chunks is that even with HTTP/2.0 Chrome seems to download only 6 chunks simultaneously and only start downloading more after the first batch is ready.
