all articles
Shopware 6·April 22, 2026·2 min read

Shopware 6 performance: 7 steps to a faster store

A practical playbook for optimizing Shopware 6 stores — from caching strategy to Core Web Vitals.

Storefront speed is a direct lever on conversion. Google knows it, users feel it, and since 2024 Shopware's own storefront benchmark formally tracks it. This post walks through concrete steps we've used on real client stacks to land Largest Contentful Paint under 1.8s and Total Blocking Time under 100ms.

1. Profile before optimizing

Before changing anything, run Lighthouse and PageSpeed Insights on at least three page types:

  • home,
  • category listing,
  • product detail.

Without a baseline you don't know what you're optimizing. Shopware also exposes debug:container, bundle:dump and messenger:stats via bin/console — use them.

2. HTTP cache and reverse proxy

Shopware 6 ships with Symfony HTTP cache, but in production you should always replace it with a real reverse proxy. Our stack:

  • Varnish in front of PHP-FPM,
  • Redis for session and cache backend,
  • Cloudflare as an edge cache for static assets.

The difference between default cache and a Varnish setup on a 40k-product client: TTFB from 480ms to 90ms.

3. Database tuning

Typical pain points:

  • Indexes on product_translation, product_category and product_visibility.
  • innodb_buffer_pool_size set to 60–70% of available RAM.
  • Slow query logging above 100ms enabled permanently, not only while debugging.

Pay special attention to the indexer queue. If you use the admin for bulk edits, switch indexers to --queue and consume them through Symfony Messenger.

4. Frontend: lean Twig + lazy loading

Shopware's stock storefront is solid, but in 90% of cases you want a custom theme that:

  • drops the Bootstrap components you don't use,
  • lazy-loads images with loading="lazy" and decoding="async",
  • uses picture with srcset and modern formats (AVIF/WebP).

For interactive bits — don't pull in all of jQuery just for a slider. Vanilla JS or a Stimulus controller plus IntersectionObserver covers 95% of needs.

5. CDN and media

Put a CDN in front of the media/ folder. Shopware supports remote URLs via the shopware.cdn.url parameter. Our rules:

  1. Originals always live in object storage (S3 / B2 / Cloudflare R2).
  2. Thumbnails are generated on upload, not on first request.
  3. CDN cache TTL — 365 days for media/, with a hash in the filename.

6. Plugins: audit and isolate

Rule number one: plugins are the single biggest cause of slow Shopware.

Walk through every plugin and ask three questions:

  1. Am I actually using it in production?
  2. Does it extend the critical request path (cart, checkout, listing)?
  3. Does it have its own cache pool and use event subscribers instead of decoration everywhere?

We often unlock 30% of performance just by removing 4–5 unnecessary plugins.

7. Core Web Vitals: CLS, INP, LCP

Since March 2024 INP has replaced FID. For Shopware that means:

  • reduce JS work on the main thread,
  • reserve space for all dynamic components (banner, slider, cart preview),
  • prefetch category routes from the header on hover.

Wrap-up

Shopware 6 performance is an engineering problem, not a template you buy. The right approach combines measurement, infrastructure, frontend discipline and ruthless plugin hygiene.

If your Shopware slows down as your catalog or traffic grows, send us a brief — we run an audit and in 80% of cases fix the bottleneck without rewriting the system.

#shopware-6#performance#ecommerce#core-web-vitals

Got a complex software challenge?

We specialize in projects other agencies turn down. Send a brief — we reply within 24 hours.