Looks like mini-css-extract-plugin may be the Webpack async CSS behavior I've been dreaming of. It works by extracting CSS as (get this) actual CSS files! https://github.com/webpack-contrib/mini-css-extract-plugin
That means no more CSS-in-JS, which has already shaved ~70kB off of Pinafore's total JS size. Also there aren't dozens of inline <style> tags, meaning I might be able to eventually restrict inline CSS via CSP. https://github.com/nolanlawson/pinafore/pull/145