Theme integration
Performance
What we load, when, and what it costs you.
A fitment app that slows a storefront down costs more than it earns. Here is exactly what WySync loads and what it costs.
What ships to the browser#
- No framework.
- Vanilla JavaScript, per widget. There is no React, no jQuery dependency, and no shared runtime bundle to download before anything renders.
- Per-widget assets.
- A product page loads the product fitment and table assets, not the collection grid's.
- Shopify's CDN.
- Theme app extension assets are served by Shopify, from the same edge as the rest of your theme.
- No blocking requests.
- Scripts are deferred; the vehicle state hydrates after first paint.
Where the work happens#
Fitment filtering is an index intersection, executed server-side in the search engine, with Redis in front of the hot paths. Nothing is filtered in the browser and nothing loops over products in Liquid — which is the mechanism that makes tag-based fitment slow as a catalog grows.
Typical fitment query time is well under 50 ms at the app, with cached queries considerably faster. Your storefront's total time is dominated by your theme and images, as it should be.
Core Web Vitals#
- LCP — the YMMS hero renders from Liquid on the server, so it counts toward LCP as content rather than arriving late as a layout shift.
- CLS — every widget reserves its space before hydration. The persistent bar is the one to watch: place it below the header rather than above it if your header is already tall.
- INP — dropdown interactions are local; only the model and submodel steps fetch, and those responses are cached.
Things that genuinely cost you#
| Choice | Cost | Worth it? |
|---|---|---|
| Per-collection fitting counts on the list page | One query per tile | Yes for 4–8 mapped collections, no for 30 |
| The fitment table expanded by default | Rendered HTML weight on wide-fitment SKUs | No — ship it collapsed |
| Autocomplete on every keystroke | Requests, debounced and cached | Yes; it's the highest-converting surface |
| Search suggestions showing collections and pages | An extra query | Marginal |
Measuring it properly#
Compare like for like: a collection page with the native grid against the same collection with the WySync grid, on the same connection, cache cleared, three runs each. Most stores find the WySync page is faster on large collections, because the native grid was paginating with Liquid over thousands of products.
Check whether a widget got placed twice — a duplicated collection block will fetch twice. The Widgets screen shows what is actually installed on your published theme.
Support is answered by the people who wrote this code — not a ticket queue.