Home » Make It Fast » Shopify Apps Vs Native Features

Shopify Apps vs Built In Features: Speed and Bloat Test

Last Updated On February 18, 2026 @ 9:52 am

Store Build Lab Author And Researcher Chris Pontine

Tested By: Chris Pontine

Founder & Lead Researcher

I may earn a commission from qualifying sign-ups, learn more. I only recommend what I’ve tested in Shopify, with notes on what affects store structure, performance, and conversion flow. 

Shopify stores usually start pretty lean. Then the real world happens.

You add a wishlist so shoppers can save items. You add discounts so people buy more than one. You add a popup. Then reviews. Then upsells.

None of those are “bad.” They exist because they solve real ecommerce problems fast.

The catch is simple. Every app you stack can add a new layer to your storefront. That layer can show up as heavier pages, more layout shifting, and a store that feels slower than it should.

So in this post, I tested two popular Shopify apps and compared them to what Shopify can do natively.

The quick verdict

  • If you need a real wishlist experience, you will usually need an app. Shopify does not give most stores a true wishlist out of the box.
  • If you need bulk discounts, Shopify can handle the discount logic natively, but apps exist because storefront messaging and tier-style presentation is often the missing piece.
  • The real risk is not “apps vs no apps.” The risk is “global apps that load everywhere” vs “targeted apps that only touch one template or one product.”

That is why I tested one global UX app and one targeted discount app.

What I mean by “native” vs “app layer”

Here’s the simplest way to think about it.

Native Shopify features are things you can do inside Shopify without adding extra storefront code from an app. Examples include discount codes, automatic discounts, theme templates, theme sections, built-in pages, and standard Shopify checkout.

App layer features are things an app adds on top of your storefront experience. That can include scripts, UI buttons, modals, extra price blocks, and extra requests the browser has to load.

Payload is the total weight a shopper feels. That includes page weight, scripts, layout stability, and how responsive the page feels when they tap and scroll.

My test setup 

This is the setup I used so the test matches what a normal store owner does.

  • Store: Soccer Life (development store, password protected)
  • Plan: Basic Shopify
  • Theme: Flora
  • Products: 8
  • Collections: 3
  • Apps tested:
    1. Swym Wishlist Plus (wishlist enabled globally)
    2. Discounty: Bulk Discount Sales (Buy 2+ = 10% on one product)

Pages tested:

  • Homepage: https://soccerlifenow.myshopify.com/
  • Collection page: https://soccerlifenow.myshopify.com/collections
  • Product page (the one with the discount): https://soccerlifenow.myshopify.com/products/classic-home-soccer-jersey
Shopify admin Apps page showing Swym Wishlist Plus and Discounty installed

I always document what’s installed before I run speed and UX checks.

How I measured changes (so I am not guessing)

I used Google Lighthouse (Mobile) as my repeatable measurement method.

My rule:

  1. Run Lighthouse 3 times per page
  2. Keep the middle result
  3. Only change one thing at a time

I tested in this order:

  1. Baseline (0 apps installed)
  2. Discounty enabled on the jersey product only
  3. Swym enabled globally
  4. Both apps enabled together

Important note: a dev store and password pages can make testing messy. I am not trying to claim these are perfect “live traffic” results. I am using Lighthouse to measure the delta after each change.

Lighthouse mobile summary for Shopify homepage, product, collection page
Lighthouse mobile summary for Shopify homepage, product, collection page
Lighthouse mobile summary for Shopify homepage, product, collection page

Baseline results (0 apps)

Before adding any apps, I captured my baseline on the same three templates.

Product page (Classic Home Soccer Jersey)

  • Performance: 69
  • Accessibility: 88
  • Best Practices: 73
  • SEO: 100

Home page

  • Performance: 71
  • Accessibility: 87
  • Best Practices: 73
  • SEO: 77

Collection page

  • Performance: 66
  • Accessibility: 97
  • Best Practices: 77
  • SEO: 100

Why this matters: if your store is already heavy before apps, your real problem is usually your theme section stack, image weight, or layout choices. Apps just make the problem louder.

App test 1: Discounty (Buy 2+ = 10% on one product)

Why this app exists

Bulk discounts are an AOV lever. They reduce friction when a shopper is close to buying two items but needs a small nudge.

Shopify can run discount logic natively, but Discounty exists because store owners often want:

  • “Buy more, save more” messaging on the product page
  • Tier display
  • A clear visual explanation of the deal

That messaging is where things can get messy for speed and layout stability.

How I set it up

I applied Discounty only to:

  • Product: Classic Home Soccer Jersey
  • Rule: Buy 2+ = 10% off

That makes this a targeted test. It should mainly affect the product page where the deal appears.

What I looked for

I focused on three things:

  1. Price block stability
    If discount messaging loads late and pushes content down, that creates layout shifting.
  2. Extra UI injection
    More elements can mean more rendering work.
  3. Template spread
    Even if the rule is for one product, some apps still load across multiple templates.

Discounty results 

Homepage (should be minimal if truly targeted)

  • Performance: 73
  • Accessibility: 87
  • Best Practices: 77
  • SEO: 77

Collection page (watch for price or badge changes)

  • Performance: 56
  • Accessibility: 97
  • Best Practices: 77
  • SEO: 100

Product page (this is the real impact)

  • Performance: 62
  • Accessibility: 88
  • Best Practices: 77
  • SEO: 100
Discounty settings showing Buy 2+ discount of 10% applied to the Classic Home Soccer Jersey

I kept this test narrow so I could isolate what changed.

Shopify product page showing Buy 2+ discount messaging on the Classic Home Soccer Jersey

Discount blocks should be stable. If they load late, they can trigger CLS and hurt perceived speed.

App test 2: Swym Wishlist Plus (enabled globally)

Why this app exists

Wishlists are not just a “nice feature.” They are an intent capture layer.

A shopper might not buy today, but a wishlist gives them a frictionless way to return without restarting the search. That matters more on mobile, where browsing is fast and decisions take longer.

How I set it up

I enabled Swym so it applied globally to all products. The goal was simple:

  • Every product can be added to a wishlist
  • Wishlist behavior is available wherever shoppers browse

That means the app can touch:

  • Collection grids
  • Product pages
  • Potentially the homepage, depending on how featured products are built

What I looked for

  1. Collection grid UI
    If a wishlist icon injects into every card, it can change spacing or load late.
  2. Interaction feel
    Even if a page loads fast, it can feel laggy if scripts and UI handlers stack up.
  3. Layout stability
    Late icons and late buttons can trigger shifts.

Swym results 

Homepage

  • Performance: 56
  • Accessibility: 86
  • Best Practices: 77
  • SEO: 77

Collection page

  • Performance: 49
  • Accessibility: 94 
  • Best Practices: 73 
  • SEO: 100

Product page

  • Performance: 66
  • Accessibility: 89 
  • Best Practices: 73
  • SEO: 100
Shopify collection page showing wishlist icons on product cards

Global wishlist features often inject UI into the collection grid, which is one of the most sensitive templates for speed and layout stability.

Both apps together (the real world scenario)

Most stores do not run just one app. They stack.

So the real question is not:
“Does an app slow Shopify down?”

It is:
“What happens when I stack two apps that both touch the storefront experience?”

This combined test is where you learn whether your store stays lean or starts to drift into bloat.

Combined results 

Homepage

  • Performance: 71
  • Accessibility: 89
  • Best Practices: 73
  • SEO: 77

Collection page

  • Performance: 70
  • Accessibility: 97
  • Best Practices: 73
  • SEO: 92

Product page

  • Performance: 73
  • Accessibility: 89
  • Best Practices: 73
  • SEO: 100
PageScenarioPerformanceAccessibilityBest PracticesSEO
HomeBaseline (0 apps)71877377
HomeStacked apps71897377
CollectionBaseline (0 apps)669777100
CollectionStacked apps70977392
ProductBaseline (0 apps)698873100
ProductStacked apps738973100
Store Build Lab Author Chris Pontine

Chris Pontine (Founder & Lead Researcher)

A results testing note: A small bump on the product page (like 69 → 73) is usually normal Lighthouse variance, not the apps making it faster. Caching and Shopify’s CDN can change what loads when, and the score can rise if just one metric improves slightly (often LCP, TBT, or CLS). Also, wishlist and discount apps often load late or lightly on product templates, so they may not add much blocking work. If you want to confirm it’s real, run 3 to 5 tests per scenario in Incognito with cache disabled, and compare the actual metrics (LCP, TBT, CLS), not just the score.

What Shopify can do natively (and where apps still win)

This is the part most store owners need. Not theory. The practical gap.

Wishlist

For most stores, Shopify does not provide a true wishlist as a standard built-in feature that behaves like shoppers expect.

That is why Swym exists.

You can create “save” behaviors through workarounds, but for a real wishlist experience, an app is usually the straight path.

Bulk discounts

Shopify can run discount logic natively using:

  • Discount codes
  • Automatic discounts

So why do apps like Discounty exist?

Because storefront clarity is half the battle.

A discount that exists in the admin is not the same as:

  • showing the deal clearly on the product page
  • making it feel “real” before checkout
  • explaining tiers without confusion

Apps often fill that storefront presentation gap.

My decision framework (apps that stay, apps that go)

Here’s the filter I use so a store stays clean.

Step 1: Define the job

What is the app supposed to do?

  • Increase conversion?
  • Increase AOV?
  • Reduce support tickets?
  • Increase return visits?

If the job is vague, it is usually bloat.

Step 2: Check the scope

Is it global or targeted?

  • Global apps can be valuable, but they are the fastest way to add weight everywhere.
  • Targeted apps are easier to control.

In this test:

  • Swym is global
  • Discounty is targeted to one product

Step 3: Check stability

Does it inject UI late?

If it shifts layouts, it hurts trust and UX.

Step 4: Compare to native

If Shopify already does 80% of it, do you really need the app layer?

My recommendations from this test

I do not treat apps as good or bad. I treat them as tradeoffs.

Here’s how I would apply what I saw:

  1. Keep your global UX layer intentional
    If you run a wishlist, be picky about where icons appear and how they load on collection grids.
  2. Keep promo messaging stable
    Discount blocks should be designed so they do not shift the price area while loading.
  3. Avoid stacking multiple “UI injectors” on collection pages
    Collection grids are fragile. That template is often the first place speed and layout problems show up.
  4. Retest after every meaningful storefront change
    New section, new app block, new promo, new review widget. Retest the three templates.

If you want your store plan generated first, start here:

Testing Note 

Last tested: [Month Year]. I ran a repeatable mobile Lighthouse check on a development Shopify store (Basic plan) using the Flora theme, 8 products, and 3 collections. I captured a baseline with 0 apps, then tested two common app categories: a targeted bulk discount rule using Discounty (Buy 2+ = 10% on one product) and a global wishlist layer using Swym Wishlist Plus. What stood out is how different the risk profile is based on scope. Targeted merchandising rules tend to concentrate impact on the product template, while global UX layers can influence collection grids and browsing paths across the site. My recommendation is to keep global features intentional, stabilize promo and wishlist UI so it does not shift layouts, and retest the same three templates after every change so you can prove what improved or regressed.

FAQ

Do Shopify apps always slow down a store?

Not always. The bigger factor is scope. Apps that load globally and inject UI across templates are more likely to add noticeable weight than apps that are targeted to one page or one product.

Are Shopify built-in features better than apps?

Built-in features are usually leaner because they do not add extra storefront scripts. But built-in features do not cover everything, like a true wishlist experience for most stores.

Can Shopify do bulk discounts without an app?

Shopify can run discount logic natively with automatic discounts and codes. Apps exist because storefront messaging and tier presentation can be harder to build without an app layer.

What page should I watch first for app bloat?

Collection pages. Product grids are sensitive because they repeat elements many times, so small UI additions can multiply quickly.

Is a wishlist worth it?

If your shoppers browse a lot and do not buy on the first visit, a wishlist can increase return intent. The key is keeping the wishlist UI stable and not bloating your collection grid.

How do I know if an app is worth keeping?

Answer two questions: does it move a real business outcome, and can you control where it loads. If it is global and low value, it is usually bloat.

Build Your Shopify Store Blueprint!

Create a blueprint that lays out your collections, core pages, and build steps so you can launch faster and skip the painful rebuild later.