Build or Buy Recently Viewed & Continue Shopping on Shopify?
Building a recently-viewed shelf wins for any Shopify store with dev access: a theme section reading localStorage ships in 2–4 days for a one-time $1,000–$4,000 (Deploi estimate, illustrative). Micro-apps rent the same strip for a monthly fee that never stops, delivered as an injected third-party script. The build keeps browse history on your side, feeding cross-sell and email flows. Buy only with zero dev access, after checking whether your theme already includes the section.
Your profile — see how the verdict shifts
- Confidence
- High — Tiny bounded scope, stable browser and theme primitives, crowded low-differentiation micro-app category
- Reference scenario
- $20M–$100M GMV · agency dev bench · single storefront
- As of
- August 2026
Decision at a Glance
| Your profile | Verdict | Why |
|---|---|---|
| Under $2M revenue | BUY | Check your theme first: several 2.0 themes ship a recently-viewed section already. If yours doesn't, a free micro-app covers it — your first dev dollars belong elsewhere. |
| $2M – $15M | BUILD | If any agency or in-house dev touches your theme this year, the shelf is a days-long line item inside that work; buy only with truly zero dev access. |
| $15M – $75M | BUILD | Browse-recovery flows need the history on your side at this scale, and stock carousels can't match your grid or merchandising rules; the injected-script tax starts to matter too. |
| $75M+ | BUILD | A third-party script for one carousel is an unforced page-weight error at this traffic, and the build cost rounds to zero against your theme budget. |
What Recently viewed / continue shopping Actually Drives
| Outcome | Impact | How it works |
|---|---|---|
| Customer experience | High | Mobile shoppers browse in fragments across days; a continue-shopping row restores their trail in one tap instead of forcing a re-search through navigation. |
| Revenue — direct | Medium | Returning shoppers land one tap from products they already considered — recovered mid-decision sessions convert without a discount attached. |
| Revenue — indirect | Medium | Owned browse history feeds browse-abandonment email flows, reaching shoppers who viewed and left without carting — a larger pool than cart abandoners. |
| Data & insight | Medium | Viewed-but-not-bought by SKU is a clean merchandising signal; held in your metafields it joins your analytics, held in an app it decorates a dashboard. |
| Operational efficiency | Low | One owned section replaces an installed app to configure, update, and chase support on — and removes one injected script from every product page. |
Spend ceiling: A recently-viewed shelf is a convenience, not a system — cap total spend near a rounding error. If you pay for anything, pay for the data path into metafields and email, not the carousel.
What buying enables (top apps)
- + Live today with zero dev involvement — the genuine case for the app path
- + Vendor-maintained carousel templates and placement presets that track common theme patterns
- + A recently-viewed module often already included in a recommendation suite you're paying for anyway
What building additionally unlocks
- + Browse history in customer metafields — an owned signal feeding browse-recovery flows and on-site cross-sell with no export ceiling
- + Zero injected script: the shelf renders with the theme instead of after it
- + Merchandising rules stock widgets skip — hide sold-out items, pin in-stock variants, match your grid at every breakpoint
- + Continue-shopping placements apps rarely reach: empty-cart state, 404 pages, order confirmation
Find Your Verdict in 3 Questions
Does your theme — or an app you already pay for — include a recently-viewed section?
Yes: Your verdict: WAIT — switch it on and style it; revisit only if you want cross-device history or email flows.
No: Go to question 2.
Do you have any dev access — agency or in-house — touching your theme this year?
Yes: Your verdict: BUILD — a days-long section with no recurring fee; scope it into the next theme sprint.
No: Go to question 3.
Do you want browse history feeding email or cross-sell flows, not just a shelf?
Yes: Your verdict: BUILD — the metafield sync is the whole point, and apps keep that signal on their side; find dev capacity for a week of work.
No: Your verdict: BUY — a micro-app renders a basic shelf today; diary a re-check for your next theme project.
The TCC Scorecard — 12 Dimensions
TCC — Total Cost of Capability: what it actually costs to have this capability over three years, whichever way you get it. Each dimension is scored 0–5 for both paths. How we score →
| Dimension | Buy | Build | Why |
|---|---|---|---|
| Cost | |||
| Acquisition & implementation | An app is live in minutes; the section is an estimated 2–4 days of theme work (Deploi estimate, illustrative). | ||
| Recurring fees | Micro-apps bill monthly forever for one strip of products; the build has no subscription line at all. | ||
| Maintenance & upgrades | Third-party carousels are a documented theme-update breakage point; a section rides the theme QA you already run. | ||
| Switching & exit | Low lock-in either way: browse history lives mostly in shoppers' browsers, not the vendor's database, so exit is uninstall plus leftover-script cleanup. | ||
| Risk | |||
| Vendor risk | A crowded micro-app field churns quietly — free tiers get discontinued and listings disappear. A section has no vendor to lose. | ||
| Security & compliance surface | One less third-party script reading browsing behavior on every product page view. | ||
| Platform-deprecation exposure | Theme sections, localStorage, and customer metafields are first-class, stable primitives sitting far from checkout's deprecation churn. | ||
| Value | |||
| Fit to requirement | Apps ship one generic carousel; a build matches your card design, hides sold-out items, and appears exactly where you want it. | ||
| Time to market | Today versus a handful of days — among the smallest speed gaps in the catalog. | ||
| Performance & scale | An injected script plus external CSS for one carousel is the app-bloat pattern in miniature; a section renders with the theme. | ||
| Data ownership & AI-readiness | Browse history is a genuine personalization signal: synced to customer metafields it feeds email and cross-sell, rented it decorates an app dashboard. | ||
| Focus & opportunity cost | Scope this small barely registers on a roadmap — which is exactly what makes it a good first replace-an-app win. | ||
The App Landscape
| App | Status | Pricing | Best for |
|---|---|---|---|
| Recently-viewed micro-apps | Category — Dozens of near-identical widget listings; free tiers usually carry app branding — verify | Free–$15/mo band (illustrative) | Zero-dev stores that need the shelf live today |
| Recommendation & upsell suites with a recently-viewed module | Category — The shelf ships as a stock widget inside broader personalization apps — verify | $20–100/mo bands (illustrative) | Stores already paying for a suite — switch the module on, don't add a second app |
The Build Path
- Theme JS + localStorage: A small script writes each viewed product handle to localStorage; a theme section renders the shelf from that list on product, collection, and cart pages — no server round-trip, nothing injected.
- Customer-metafield sync for logged-in shoppers: Logged-in browse history syncs to a customer metafield, so the shelf follows the shopper across devices and the same list feeds Klaviyo browse-recovery flows.
- Continue-shopping placements: One list powers a continue-shopping row on the empty-cart state, the 404 page, and the order-confirmation page — the nudges micro-apps charge extra for.
- Effort band
- $1,000–$4,000 build (localStorage shelf at the low end, metafield sync at the top) — Deploi estimate (illustrative). Standalone it sits below the $10–25K contact-form band; it usually ships as a line item inside broader theme work.
- Typical timeline
- 2–4 days for the localStorage shelf; about a week with metafield sync and all placements (Deploi estimate, illustrative)
- Maintenance, honestly
- Our standard rule is ~15–20% of build cost per year (Deploi estimate) — here a few hundred dollars at most, and in practice it folds into the theme QA you already run after updates. There is no subscription line.
- What you own — and what you take on
- You own: the component, the card design, the placements, and the browse-data path into metafields and email. You take on: checking the shelf in the post-update theme QA pass — the exact check third-party widgets silently fail.
3-Year Total Cost of Capability
| Buy (app path) | Build (custom path) | |
|---|---|---|
| Year 0 (setup) | $0–$100 | $1,000–$4,000 |
| Years 1–3 (recurring) | $540–$2,200 | $450–$1,800 (maintenance) |
| 3-year total | ≈$540–$2,300 | ≈$1,450–$5,800 |
- † All figures illustrative samples for the reference scenario — not quotes, not verified pricing.
- † App path: one paid mid-band widget subscription held flat; free tiers exist but carry branding and feature caps.
- † Build path: metafield-sync variant with all placements; upkeep at the standard ~15–20%/yr rule; three-year horizon.
What the Sticker Price Hides
On the buy path
- — Free tiers usually carry the app's branding under your product grid; removing it is what the paid tier is for
- — The widget renders after the page via injected script — a layout-shift and page-weight tax on every template it appears on (app-bloat pattern, July 2026 research)
- — Cross-device history and email integrations sit on higher tiers — the upgrade ladder for a widget that started free
- — App widgets breaking at theme updates and breakpoints is a documented recurring pattern (July 2026 research)
On the build path
- — Cross-device continuity needs the customer-metafield sync — the fiddly 20% of an otherwise tiny build
- — localStorage empties when shoppers clear site data or browse privately — the guest shelf is best-effort by design, so set expectations that way
- — Upkeep isn't zero: the standard ~15–20% of build cost per year applies even here (Deploi estimate) — a few hundred dollars of post-update QA
What Merchants Say
App widgets breaking after theme updates, often at a single breakpoint, is a recurring complaint shape — the recently-viewed strip quietly disappears on mobile while desktop looks fine.
The category's 1–2★ shape: carousels that never match the product grid, sold-out items resurfacing in the shelf, and support answering 'add custom CSS' to merchants who installed an app to avoid code.
If You Change Your Mind Later
If you bought and outgrow it
Exit is genuinely easy — the rare app category with almost no lock-in. Browse history lives mostly in shoppers' browsers, not the vendor's database; uninstall, then sweep the theme for leftover script tags and CSS. That ease cuts the other way too: paying monthly for years for one removable carousel is exactly what makes the fee hard to justify.
If you built and want out
Nothing is stranded: the section is part of your theme, and the browse data sits in localStorage and your own customer metafields. Replace the theme wholesale and the section re-scopes into the new build like any other custom block — hours of work, not a project. Zero exit cost is itself an argument for building this one.
When This Answer Changes
We're watching for:
- ▸ Shopify shipping a recently-viewed section in free themes or a saved-browsing primitive in customer accounts (none as of July 2026 research)
- ▸ Your theme vendor adding a built-in recently-viewed section in an update — check before any build
- ▸ Search & Discovery expanding from recommendations into browse-history surfaces
Verdict change log:
No changes since first publication (August 2026).
Common Questions
Does a recently-viewed shelf work for guest visitors?
Yes — localStorage covers guests without any login: a small script stores the last 10–20 viewed product handles on the shopper's device, and the theme section renders the shelf from that list. Clearing site data or private browsing empties it, so the guest shelf is best-effort by design. Logged-in shoppers get the upgrade that matters: a customer-metafield sync that follows them across devices.
Can recently-viewed data feed email and personalization flows?
Yes, once browse history syncs to customer metafields for logged-in shoppers — the build detail that turns a UI widget into an owned signal. The same list that renders the shelf flows into Klaviyo browse-recovery emails and on-site cross-sell logic, jobs merchants often rent as 2 or 3 separate subscriptions. Guest history stays on the device until login merges it into the customer record.
Is building really cheaper than a free recently-viewed app?
Not against a free micro-app on a spreadsheet — we'll say that plainly. Free tiers usually carry app branding, add an injected script, and hold back the features that matter; paid tiers bill monthly forever. A one-time $1,000–$4,000 section (Deploi estimate, illustrative) wins when theme work is already underway, when you want the browse data owned, or when a widget breaks at one more theme update.
Your Next Steps
If you're going with BUILD(matches your selected profile)
- Audit what you have: theme sections, plus any recommendation app already including a recently-viewed module
- Pick placements with marketing: product pages, cart, empty-cart state, 404, order confirmation
- Ship the localStorage shelf first; add the customer-metafield sync for logged-in shoppers second
- Wire the metafield list into your email platform's browse-recovery flow
- Add the shelf to post-update theme QA, and measure shelf-click to add-to-cart rate from day one
If you're going with BUY
- Check whether an app you already pay for includes a recently-viewed module before adding a new install
- Shortlist two or three micro-apps and verify current pricing — this category churns
- Prefer paid tiers without app branding, and cap yourself at one widget app total
- Test every breakpoint after each theme update — third-party carousels break silently
- Diary a re-decision for your next theme sprint, when the build shrinks to added-scope size
Official Docs & Sources
- Checkout UI extensions — shopify.dev
Official documentation linked for verification — our verdicts and estimates are our own.
Related Decisions
Should You Build or Buy Cart Upsell & Cross-Sell on Shopify?
Buy cart upsell for velocity; build to kill per-order fees once volume crosses the line.
Should You Build or Buy Checkout Upsells on Shopify Plus?
Building checkout upsells wins at Plus: app and custom offers now run on the same sanctioned extension surface.
Build or Buy a Free-Shipping Progress Bar on Shopify?
A free-shipping progress bar is the clearest build-first call on Shopify: days of theme work replace a forever fee.
Should You Build or Buy Gift with Purchase on Shopify?
Building gift with purchase on Shopify Functions wins once your rule outgrows native discounts.
Fixed Bundles & Multipacks on Shopify: Build, Buy, or Wait?
Fixed bundles and multipacks are a WAIT: native Shopify Bundles covers them free on every plan.
Ready to stop renting a carousel?
This is one of the smallest replace-an-app wins on the board: days of theme work, no monthly fee, and browse history that finally lands on your side. We'll scope it into your next theme sprint.
Contact us todayVerdict scored for the reference scenario above. Estimates are not quotes; app pricing is illustrative band pricing, re-verified quarterly. Full scoring anchors: see the TCC methodology.
Read how we score these decisions (the TCC Framework). No affiliate links, no paid placement — no app vendor pays to appear here.