Performance
Plan: every plan, including Free.
A wishlist runs on every page of your store, so Cove is built to cost as little as possible: no requests for shoppers who never save, small scripts, nothing that moves the page.
Zero requests for shoppers who never save
Section titled “Zero requests for shoppers who never save”Most visitors never save anything. For them Cove makes no requests at all:
- Buttons, hearts and the wishlist link are drawn by Liquid, on Shopify’s servers, with the rest of the page.
- Hearts on Dawn and Horizon product cards read the product from the card’s own markup.
- The count badge stays hidden without asking.
Cove talks to its server only when there is something to load or save:
| Shopper | Requests |
|---|---|
| Never saved, not signed in | None, until they tap a heart. |
| Signed-in customer | One small request per page, to load their saved items. |
| Guest who has saved on this browser | One small request per page, to load their saved items. |
Every request goes to /apps/wishlist on your own domain (Shopify’s app proxy) and returns plain data, nothing else. Hearts found with a custom card selector need one extra lookup, 50 cards at a time, and only for shoppers who already have a wishlist; for everyone else it waits until a tap.
Small scripts, only where needed
Section titled “Small scripts, only where needed”Every Cove script is under 10,000 bytes, the limit Shopify sets for theme app extensions, and loads deferred, after your page. cove.css is under 4 KB compressed.
| File | Loads on |
|---|---|
cove.js, cove.css |
Every page while the app embed is on. |
cove-page.js, cove-page.css |
The wishlist and shared pages only. |
cove-notify.js |
Product pages with the Notify me block, only when the product has a sold-out variant. |
cove-media.js |
Product pages with the heart over the image. |
cove-cart.js |
The cart page, or pages with a cart drawer, when Save for later is on (Starter and up). |
cove-elements.js |
Every page, only when Load custom elements is on. |
cove-events.js |
Every page on Pro and Premium (pixel events). |
Each extra file is added by your theme as a regular script tag, only on the pages that need it. No Cove script ever loads another.
No layout shift
Section titled “No layout shift”Nothing Cove adds pushes your content around:
- Card hearts and the heart over the image sit on top of the card or image.
- The floating button, the save message and the Change panel float above the page.
- The Wishlist button reserves room for its longer label, so switching to “Saved to wishlist” never resizes it.
- The heart over the image starts hidden, taking no space, until it is in place.
- On the wishlist page, “Loading” and the empty state share one spot.
The one exception is In the header menu for the wishlist link, which adds an icon to your header after the page appears.
No remote code
Section titled “No remote code”- Cove’s storefront code ships only inside the app’s versioned theme extension, which Shopify reviews and hosts. Nothing is downloaded and run later.
- Your design (colours, sizes, icon, labels) is written into the page by Liquid from your saved settings. The scripts never fetch design or settings.
- Cove’s server answers with data only, never with HTML or scripts.
More in Security.
Measuring it
Section titled “Measuring it”Run Lighthouse or PageSpeed Insights on a product page with the app embed on and off to see the difference on your own theme. With nothing saved, you should see no request to /apps/wishlist in your browser’s network panel.