Skip to content

Conversation

@KyleAMathews
Copy link
Contributor

@KyleAMathews KyleAMathews commented Dec 3, 2020

To avoid FOUC when a site uses regular CSS. CSS-in-JS already adds its css during dev ssr.

We remove style-loader and just use mini-css-extract-plugin with hmr enabled. Beyond making dev-ssr work as expected — it also solves a persistent problem people have with their styles behaving different in production vs development. The current dev styles setup often loads css in a different order depending on what page you visit or the order that you edit files, etc. Moving to mini-css-extract-plugin means that styles are extracted and loaded the same way in dev & production.

The main downside I could see to this approach is the mini-css-extract-plugin says style-loader is faster at HMR. This is true but the times seem comparable & acceptable still.

I added tailwind to the ssr integration test as it adds ~210kb of css so to simulate a larger amount of css. With this setup, HMR times increase from ~250ms w/ style-loader to ~330ms w/ mini-css-extract-plugin or a ~35% increase.

I copied in as well a large chunk of css off a site found on the interwebs and compilation jumped to 2050ms for style-loader and 2500ms for mini-css-extract-plugin for a 22.5% increase.

The compilation decrease seems ok given it's still fast & it unblocks dev-ssr & we're removing confusing differences between prod & dev environments.

@gatsbot gatsbot bot added the status: triage needed Issue or pull request that need to be triaged and assigned to a reviewer label Dec 3, 2020
@KyleAMathews KyleAMathews added type: feature or enhancement Issue that is not a bug and requests the addition of a new feature or enhancement. and removed status: triage needed Issue or pull request that need to be triaged and assigned to a reviewer labels Dec 3, 2020
@KyleAMathews KyleAMathews marked this pull request as draft December 4, 2020 01:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

topic: DX Developer Experience (e.g. Fast Refresh, i18n, SSR, page creation, starters) type: feature or enhancement Issue that is not a bug and requests the addition of a new feature or enhancement.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants