Gemiddeld
6-item breadcrumb maakt positiebepaling onduidelijk
Een 6-item breadcrumb (Home > Olie > Motorolie obv kenteken > Motorolie > 5W30 > product) communiceert geen duidelijke hierarchie maar een mixed-set collecties. Gevolg van product in meerdere collecties, geen bewuste UX-keuze.
Aanbeveling Kies een primaire navigatie-collectie via custom.primary_collection-metafield of bepaal de route via de assortiment-linklist. Beperk tot max 3 stappen: Home > [categorie] > product.
ux
UX + Accessibility
sonnet
bevestigd
Gemiddeld
Vehicle-compatibility JSON-embed ~165KB + synchrone tree-build
De vehicle-compat snippet embedt de volledige JSON inline (~165KB raw / ~25KB gzipped voor 2753 items). Alpine bouwt bij elke accordion-expand synchroon een tree; op low-end Android kan dit 50-200ms kosten en INP richting 200ms duwen. JSON-parse bij DOMContentLoaded, niet lazy.
Aanbeveling Beperk de inline JSON tot eerste ~500 items en laad de rest async bij accordion-open, of gebruik requestIdleCallback voor de initiële parse. Meet INP via CrUX voor/na.
performance
Frontend + Performance
copilot/sonnet
bevestigd
Gemiddeld
Shopify dynamic payment_button injecteert iframes boven de vouw (mobile)
form | payment_button rendert 2× (r259 mobile, r403 desktop). Shop Pay/Apple Pay iframe-injectie veroorzaakt mainthread-werk bij page-load; op mobile staat de button boven de vouw. Bekende Shopify-gotcha; eerder niet verwijderd wegens conversie-risico.
Aanbeveling Overweeg de payment_button op mobile lazy te laden via Alpine x-intersect/IntersectionObserver. Weeg af tegen het Shop Pay-removal experiment (post-v29, 1.2% conversie via wallet-buttons). Meet via CrUX INP voor/na.
performance
Frontend + Performance
copilot/sonnet
bevestigd
Gemiddeld
Fanfaro-differentiator niet above-the-fold op mobiel
De kern-conversiezin 'Zelfde fabrikant als grote merken · scherpe prijs' neemt de kwaliteitsangst weg maar staat op mobiel onder de afbeelding (zichtbaar in pdp-390-buybox.png, niet in eerste viewport). Op desktop staat hij wel ATF.
Aanbeveling Verplaats de USP-regel op mobiel direct onder de titel (vóór de afbeelding) of integreer als pill bij de prijs, zodat de differentiator in de eerste viewport landt.
cro
CRO + conversie
opus
bevestigd
Gemiddeld
Eenheidkeuze zonder context over benodigde maat
Varianten 1L/5L/20L/60L tonen als pills zonder hint welke maat past bij de carterinhoud. De niet-technische doelgroep weet vaak niet of 4L of 5L volstaat. Kenteken-/best-match-logica bestaat al elders maar wordt op de PDP niet ingezet.
Aanbeveling Toon bij de eenheidkeuze een korte hint ('De meeste auto's hebben 4-5L nodig') of een link 'Niet zeker? Check op kenteken'.
cro
CRO + conversie
opus
bevestigd
Gemiddeld
Onbekend-merk-bezwaar niet weggenomen in buy-box
De specs (ACEA C3, API SN, OEM-goedkeuringen) zitten in een ingeklapte accordeon ver onder de buy-box, terwijl de koopbeslissing in de buy-box valt. Een korte spec-garantie ontbreekt op het beslissingsmoment.
Aanbeveling Plaats 1-2 kern-OEM-goedkeuringen of de hoofdnorm als badge-rij direct in de buy-box bij de Fanfaro-USP.
cro
CRO + conversie
opus
bevestigd
Laag
Cookie-consent banner duwt afbeelding/CTA onder de vouw op 390px
Visuele analyse claimt een consent-overlay die ATF-content op 390px blokkeert. Conflicteert met de live screenshots (geen banner). Gedowngraded naar LAAG en samengevoegd met de niet-reproduceerbaar-bevinding; alleen relevant als live verificatie de banner alsnog aantoont.
Aanbeveling Controleer welke consent-app de banner serveert (Shopify Admin > Apps) en configureer als bottom-bar max 60px, MAAR alleen na live reproductie. Anders geen actie.
ux
Frontend + Performance
copilot/sonnet
genoteerd
Laag
Desktop ATC-knop mist accessible name met productnaam
De ATC-buttons (main-buy-box-atc-desktop/-mobile) hebben als toegankelijke naam alleen 'In mijn winkelwagen', zonder productnaam. Collectiekaarten hebben dit via v2026.06-28 al correct (aria-label met product.title).
Aanbeveling Voeg aria-label='{{ product.title | escape }} toevoegen aan winkelwagen' toe aan beide PDP-ATC-buttons, consistent met collection-product-card.liquid (K2).
compliance
UX + Accessibility
sonnet
bevestigd
Laag
Accordeon-panels openen abrupt zonder overgang op mobiel
In product-content-sections.liquid (r50/69/106/130) openen accordeon-panelen via x-show zonder x-transition; grotere content-blokken verschijnen visueel rauw. De prefers-reduced-motion CSS-safety-net is aanwezig.
Aanbeveling Voeg x-collapse toe aan elk panel (de @alpinejs/collapse plugin is al geladen): vervang x-show=openSections.X door x-show=openSections.X x-collapse.
ux
UX + Accessibility
sonnet
bevestigd
Laag
Preload laadt slechts 1 van 4 Red Hat Display woff2-bestanden
theme.liquid r26 preloadt alleen red-hat-display-latin.woff2. Er zijn 4 woff2 (latin/latin-ext × normal/italic). Italic of latin-ext tekens laden on-demand na render → mogelijke FOUT en kleine CLS.
Aanbeveling Controleer of PDP-body italic RHD gebruikt (bv. extra_description rich text). Zo ja in ATF-content: voeg preload voor red-hat-display-italic-latin.woff2 toe. Latin-ext zelden ATF, acceptabel.
performance
Frontend + Performance
copilot/sonnet
bevestigd
Laag
CTA-copy 'In mijn winkelwagen' is passief
De knop 'In mijn winkelwagen' beschrijft een toestand, geen actie, en draagt geen waarde/urgentie. Voor een zekerheid-zoekende DIY-koper mist overtuigingskracht.
Aanbeveling Test een actiegerichte variant ('Toevoegen aan winkelwagen' of 'In winkelwagen — voor 2-3 werkdagen geleverd'), gele primary-kleur consistent houden.
cro
CRO + conversie
opus
bevestigd
Laag
Geen cross-sell van bijpassende producten op Fanfaro-PDP
De fanfaro-cross-sell-snippet (Mannol>Fanfaro) rendert niet op een Fanfaro-PDP. Er is geen alternatieve cross-sell (oliefilter, trechter, 1L bijvul), terwijl 82% van de orders 1-item is.
Aanbeveling Voeg een 'Vaak samen besteld'-blok toe (passende oliefilter, vultrechter, of 1L bijvul-variant naast 5L) om AOV te verhogen.
cro
CRO + conversie
opus
bevestigd