Build vs. Buy>Upsell, Cross-sell & Personalization>Recently viewed / continue shopping

Build or Buy Recently Viewed & Continue Shopping on Shopify?

Written by Deploi EditorialReviewed by Martin Dejnicki, Director of SEO & AI SearchUpdated August 2026Pricing verification pending

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

VerdictBUILD (theme section) · BUY only with zero dev access
Buy score
4.4
Build score
8.3
Confidence
HighTiny 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 profileVerdictWhy
Under $2M revenueBUYCheck 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 – $15MBUILDIf 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 – $75MBUILDBrowse-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+BUILDA 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

OutcomeImpactHow it works
Customer experienceHighMobile 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 — directMediumReturning shoppers land one tap from products they already considered — recovered mid-decision sessions convert without a discount attached.
Revenue — indirectMediumOwned browse history feeds browse-abandonment email flows, reaching shoppers who viewed and left without carting — a larger pool than cart abandoners.
Data & insightMediumViewed-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 efficiencyLowOne 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

  1. 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.

  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.

  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 →

DimensionBuyBuildWhy
Cost
Acquisition & implementationAn app is live in minutes; the section is an estimated 2–4 days of theme work (Deploi estimate, illustrative).
Recurring feesMicro-apps bill monthly forever for one strip of products; the build has no subscription line at all.
Maintenance & upgradesThird-party carousels are a documented theme-update breakage point; a section rides the theme QA you already run.
Switching & exitLow 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 riskA crowded micro-app field churns quietly — free tiers get discontinued and listings disappear. A section has no vendor to lose.
Security & compliance surfaceOne less third-party script reading browsing behavior on every product page view.
Platform-deprecation exposureTheme sections, localStorage, and customer metafields are first-class, stable primitives sitting far from checkout's deprecation churn.
Value
Fit to requirementApps ship one generic carousel; a build matches your card design, hides sold-out items, and appears exactly where you want it.
Time to marketToday versus a handful of days — among the smallest speed gaps in the catalog.
Performance & scaleAn injected script plus external CSS for one carousel is the app-bloat pattern in miniature; a section renders with the theme.
Data ownership & AI-readinessBrowse history is a genuine personalization signal: synced to customer metafields it feeds email and cross-sell, rented it decorates an app dashboard.
Focus & opportunity costScope this small barely registers on a roadmap — which is exactly what makes it a good first replace-an-app win.

The App Landscape

AppStatusPricingBest for
Recently-viewed micro-appsCategoryDozens of near-identical widget listings; free tiers usually carry app branding — verifyFree–$15/mo band (illustrative)Zero-dev stores that need the shelf live today
Recommendation & upsell suites with a recently-viewed moduleCategoryThe 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
Illustrative cumulative cost over 36 months$0$685.8000000000001$1k$2k$3kMo 0Mo 12Mo 24Mo 36Buy (app path)Build (custom path)
Illustrative cumulative cost, honestly told: against one cheap micro-app the app line stays lower inside this horizon — and a free tier never crosses at all. The build overtakes when the shelf rides suite-band pricing, when you want the metafield data path anyway, or when theme work already underway shrinks the upfront to added-scope size.
  • 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.
community-reported (2026 research corpus)
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.
app-store 1–2★ review theme

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)

  1. Audit what you have: theme sections, plus any recommendation app already including a recently-viewed module
  2. Pick placements with marketing: product pages, cart, empty-cart state, 404, order confirmation
  3. Ship the localStorage shelf first; add the customer-metafield sync for logged-in shoppers second
  4. Wire the metafield list into your email platform's browse-recovery flow
  5. 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

  1. Check whether an app you already pay for includes a recently-viewed module before adding a new install
  2. Shortlist two or three micro-apps and verify current pricing — this category churns
  3. Prefer paid tiers without app branding, and cap yourself at one widget app total
  4. Test every breakpoint after each theme update — third-party carousels break silently
  5. Diary a re-decision for your next theme sprint, when the build shrinks to added-scope size

Official Docs & Sources

Official documentation linked for verification — our verdicts and estimates are our own.

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 today

Ecommerce development at Deploi

Verdict 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.

No affiliate links. No paid placement. We make money building and integrating solutions — not on referral fees.