Media and Assets
Most "design-driven" performance problems are asset problems: hero images are too large or discovered too late, videos autoplay above the fold, icons ship as large libraries, or CSS/JS is globally loaded even when it's only needed on one template.
Priority Order
- Fix the LCP element (often the hero image).
- Prevent layout shift by reserving space for media.
- Reduce main-thread JS work (especially third-party scripts).
- Improve delivery (CDN, compression, caching).
Images
Rules of thumb:
- Use modern formats (WebP/AVIF).
- Do not lazy-load the LCP image.
- Provide dimensions so the browser can reserve space.
- Use responsive images (
srcset/sizes) so mobile does not download desktop assets.
responsive-hero-image.html
<img
src="/images/hero-1200.webp"
srcset="/images/hero-640.webp 640w, /images/hero-1200.webp 1200w"
sizes="(max-width: 640px) 640px, 1200px"
width="1200"
height="630"
alt="Hero image"
fetchpriority="high"
decoding="async"
loading="eager"
/>
Video
Avoid autoplay video backgrounds above the fold on performance-sensitive pages.
Better patterns:
- Use a poster image and click-to-play.
- Load video only after user intent (interaction) or when it scrolls into view.
- Prefer a dedicated video host and embed with a lightweight player.
Icons and SVG
- Avoid shipping a full icon font/library sitewide.
- Inline a small SVG for critical icons, or use per-page SVG assets.
CSS and JavaScript as "Assets"
- Keep render-blocking CSS small and stable (critical CSS helps on some stacks).
- Defer/delay non-critical JS where it is safe.
- Avoid loading "marketing" and "chat" scripts during initial render on every page.
If you use Perfmatters, start from the baseline and then move gradually to more aggressive settings.