Critical CSS in Shopify: render-blocking CSS elimineren

Arjen Karel Core Web Vitals Consultant
Arjen Karel
linkedin

Critical CSS in Shopify in het kort

Critical CSS is een verzameling CSS-regels die nodig zijn voor de eerste rendering. Deze regels worden inline in de head van de pagina geplaatst, zodat de browser kan beginnen met renderen zonder te wachten tot externe CSS-bestanden zijn gedownload.

Shopify ondersteunt geen geautomatiseerde critical CSS. Het heeft een uitstekende infrastructuur (data uit de 2025 Web Almanac toont aan dat Shopify alle e-commerceplatforms leidt met 95% goede TTFB en 92% goede LCP op desktop), maar slechts 48% van de Shopify-winkels haalt alle Core Web Vitals op mobiel. Render-blocking CSS is een van de belangrijkste redenen. De 2025 Web Almanac ontdekte dat 85% van de mobiele pagina's nog steeds faalt voor de render-blocking resources audit.

Laatst beoordeeld door Arjen Karel in maart 2026

Shopify Critical CSS

Wat is critical CSS?

Alle moderne browsers blokkeren de rendering totdat externe CSS-bestanden zijn gedownload en geparsed. Wanneer een pagina één of meer CSS-bestanden laadt, kan de rendering gemakkelijk 100ms of langer worden geblokkeerd.

Critical CSS lost dit op door alleen de CSS-regels te extraheren die nodig zijn om het zichtbare deel van de pagina (above the fold) te renderen en deze inline in de <head> te plaatsen. De browser kan direct beginnen met renderen, terwijl de volledige stylesheets op de achtergrond worden gedownload. Dit verbetert direct de First Contentful Paint (FCP) en Largest Contentful Paint (LCP).

De moderne aanpak: inline_asset_content

Als je thema aparte CSS-bestanden per sectie of component gebruikt (zoals het Dawn-thema van Shopify en de meeste Online Store 2.0-thema's), kun je het inline_asset_content Liquid-filter gebruiken om CSS direct vanuit je asset-bestanden inline te plaatsen:

<style>
  {{ 'section-hero.css' | inline_asset_content }}
</style>

Dit plaatst de inhoud van het CSS-bestand inline als een <style>-blok, waardoor het render-blocking verzoek volledig wordt geëlimineerd. Je kunt CSS ook voorwaardelijk inline plaatsen, uitsluitend voor secties above the fold:

{%- if section.index0 < 2 -%}
  <style>
    {{ 'section-hero.css' | inline_asset_content }}
  </style>
{%- else -%}
  {{ 'section-hero.css' | asset_url | stylesheet_tag }}
{%- endif -%}

Secties met een index onder de 2 (de eerste twee secties op de pagina, die bijna altijd above the fold staan) krijgen hun CSS inline. Al het andere wordt geladen als een reguliere stylesheet. Dit is de aanpak die ik aanbeveel voor moderne Shopify-thema's.

De klassieke aanpak: critical CSS genereren en inline plaatsen

Als je thema één grote stylesheet gebruikt (gebruikelijk in oudere thema's en zwaar aangepaste winkels), moet je de critical CSS zelf extraheren. Dit is een proces van zes stappen.

1. Dupliceer je thema

Wanneer je het kerngedrag van een template in Shopify bewerkt, werk dan altijd eerst in een kopie. Navigeer naar je huidige thema via 'Online Store' > 'Themes' en dupliceer het door op 'Actions' > 'Duplicate' te klikken.

duplicate shopify theme for critical CSS

2. Genereer critical CSS

Ik gebruik de Critical Node.js-module in combinatie met handmatige aanpassingen. Dat kost wat moeite, maar het levert de beste resultaten op.

Als dat te technisch voor je is, gebruik dan een online generator. Onze eigen Critical CSS Generator doet dit voor je. Voer je URL in, kopieer de gegenereerde critical CSS en ga door naar de volgende stap.

generate critical CSS for Shopify

3. Upload critical CSS

Navigeer in je gedupliceerde thema naar de snippets-map en maak een nieuw bestand aan genaamd critical-css.liquid. Wikkel de gegenereerde CSS in <style>-tags en plak het in je nieuwe bestand.

upload critical CSS in Shopify

4. Bewerk het lay-outbestand

Open theme.liquid in de Layout-map. Er zijn twee wijzigingen nodig.

Render ten eerste de critical CSS-snippet in de <head>:

<head>
  {% render 'critical-css' %}

Let op: Shopify heeft {% include %} verouderd verklaard ten gunste van {% render %}. Als je thema nog steeds include gebruikt, werkt het wel, maar je zou moeten migreren.

Verander vervolgens de bestaande CSS-referenties zodat ze op de achtergrond laden. Het schoonste patroon (gebruikt door Shopify's eigen Dawn-thema) is de media="print"-truc:

<link
    rel="stylesheet"
    href="{{ 'theme.scss.css' | asset_url }}"
    media="print"
    onload="this.media='all'; this.onload=null;" />

Dit vertelt de browser om de stylesheet te behandelen als een print-stylesheet (non-render-blocking) tijdens de initiële lading, en deze om te zetten naar media="all" zodra deze is gedownload. Je critical CSS rendert de pagina onmiddellijk terwijl de volledige stylesheet op de achtergrond wordt geladen. Deze media="print"-aanpak heeft het oudere rel="preload"-patroon vervangen omdat het eenvoudiger is en geen <noscript>-fallback nodig heeft.

5. Test het nieuwe thema

Klik op de themapagina op 'Actions' > 'Preview' om het gekopieerde thema te testen. Let in het bijzonder op de Cumulative Layout Shift (CLS). Incomplete of incorrecte critical CSS veroorzaakt een flash of unstyled content waarbij elementen renderen zonder hun uiteindelijke stijlen, waarna ze op hun plek springen zodra de volledige CSS is geladen. Dat is layout shift.

Draai PageSpeed Insights op de preview-URL en vergelijk FCP en LCP voor en na. Je zou bij beide een duidelijke verbetering moeten zien. Voor doorlopende monitoring nadat je live bent gegaan, kun je je velddata volgen met Real User Monitoring om te verifiëren dat de verbetering standhoudt voor echte bezoekers.

critical CSS in Shopify testing

6. Publiceer het nieuwe thema

Navigeer naar Themes in het linkermenu onder 'Online Store' en selecteer onder 'Actions' 'Publish' voor je nieuwe thema.

Beperkingen waar je geen controle over hebt

Shopify dwingt content_for_header af in de <head> van elke pagina. Dit injecteert analytics-scripts, app-scripts en andere platformcode die je niet kunt uitstellen (defer) of wijzigen. Elke geïnstalleerde Shopify-app kan scripts toevoegen via dit mechanisme. Dit is een onvermijdelijke render-blocking kostenpost, wat het optimaliseren van alles waar je wél controle over hebt (je CSS, je fonts, je eigen scripts) nog belangrijker maakt. Het verwijderen van ongebruikte apps is een van de meest effectieve dingen die je kunt doen.

Een andere beperking: Shopify staat het lezen of verzenden van cookies in de Liquid-editor niet toe. Idealiter zou je critical CSS alleen aanbieden aan nieuwe bezoekers en de gecachte volledige stylesheet aan terugkerende bezoekers serveren. Dat is niet mogelijk op Shopify. Toch maakt de snelheidswinst van critical CSS het de moeite waard. De mediane Shopify-winkel op mobiel heeft een LCP van 2,26 seconden volgens de Shero Commerce benchmark van 2025, precies op het randje van de grens van 2,5 seconden. Hier ook maar 200ms van afsnoepen door render-blocking CSS te elimineren, kan het verschil betekenen tussen het wel of niet halen van de Core Web Vitals.

Wat kun je nog meer doen?

Critical CSS is één stukje van de puzzel. Voor een complete Shopify optimalisatiestrategie, bekijk onze Core Web Vitals-gids voor Shopify. Andere aanpassingen met een hoge impact zijn het preloaden van je LCP-afbeelding, het lokaal hosten van je Google Fonts, en het begrijpen van resource-prioritering. Shopify ondersteunt ook Speculation Rules voor directe paginanavigaties en 103 Early Hints voor het preloaden van resources nog voordat de HTML überhaupt aankomt.

Als je nog steeds vecht tegen unused CSS waarschuwingen, pak dat dan eerst aan. Het verwijderen van CSS die je niet nodig hebt, is altijd beter dan het inline plaatsen van CSS die je wél gebruikt.

About the author

Arjen Karel is a web performance consultant and the creator of CoreDash, a Real User Monitoring platform that tracks Core Web Vitals data across hundreds of sites. He also built the Core Web Vitals Visualizer Chrome extension. He has helped clients achieve passing Core Web Vitals scores on over 925,000 mobile URLs.

Search Console flagged your site?

When Google flags your Core Web Vitals you need a clear diagnosis fast. I deliver a prioritized fix list within 48 hours.

Request Urgent Audit
Shopify Critical CSS: Render-Blocking CSS Elimineren Stap voor StapCore Web Vitals Shopify Critical CSS: Render-Blocking CSS Elimineren Stap voor Stap