Back to the archive
Ecommerce Performance

The Fastest Return Trip Is No Reload: Ecommerce bfcache Performance in 2026

Measure back-forward cache eligibility, restore rate, product-discovery speed, and cart-state correctness across ecommerce journeys.

An ecommerce operator reviewing performance metrics on a laptop.

What we repeatedly see in ecommerce performance reviews is a team optimising the first page load while ignoring one of the most common shopping behaviours: opening a product, deciding it is not right, and returning to the list. When that return rebuilds the page, loses scroll position, or resets filters, product discovery becomes slower even though the homepage Lighthouse score looks healthy.

The browser back-forward cache, usually called bfcache, can restore a complete page snapshot almost instantly. For commerce teams, however, eligibility is only half the problem. The restored collection must preserve discovery context while price, inventory, authentication, and cart signals remain correct.

Shopper comparing products on a laptop

Table of contents

Keyword decision and search intent

  • Primary keyword: ecommerce bfcache performance
  • Secondary keywords: back-forward cache ecommerce, product-list back navigation, ecommerce navigation speed, bfcache cart state
  • Search intent: technical informational with optimisation intent
  • Funnel stage: mid-funnel
  • Page type: implementation and measurement guide
  • Why this angle can win: most ecommerce speed content measures cold page loads, while shoppers repeatedly move between lists and product pages and need both instant restoration and commercially correct state.

Why return navigation is commercial

Google’s updated bfcache guidance says back or forward actions represent about one in ten desktop navigations and one in five mobile navigations in Chrome usage data. Those figures describe the web, not a universal ecommerce benchmark, but they make the behaviour too important to omit from a performance programme.

A product-discovery loop often looks like this:

  1. land on a collection, category, search result, or campaign page;
  2. filter, sort, scroll, or paginate;
  3. open a product detail page;
  4. compare price, availability, media, reviews, and delivery;
  5. return to the previous results;
  6. repeat until confidence is sufficient.

If step five reloads, the customer can lose the exact product position and comparison context. On a mobile network, the cost includes data transfer, parsing, script execution, API requests, image decoding, and the cognitive work of finding the previous place.

bfcache differs from the HTTP cache. The HTTP cache stores responses; bfcache can preserve a snapshot of the page and its JavaScript heap. That is why a restore can be faster than a carefully cached reload. It is also why restored state needs deliberate freshness and privacy controls.

Measure eligibility and real restores

Do not publish a single “bfcache enabled” checkbox. Measure the journey in layers.

MetricDefinitionDecision it supports
Back-forward navigation shareeligible navigation events / all navigationscommercial exposure
Restore ratebfcache restores / back-forward navigationsrealised browser benefit
Not-restored reason sharefailures by reason / failed restoresengineering priority
Restore-to-visible timepageshow to usable visual stateperceived return speed
State recovery raterestores with correct filter, scroll, and selection / restoresdiscovery continuity
Freshness repair raterestores requiring price, stock, or cart refresh / restoresdata-control design
Post-restore error rateerrors after restore / restoreslifecycle safety
Restore conversionpurchase progress after restore / restored sessionscommercial context

The restore rate cannot be expected to reach 100%. Browser policies, memory pressure, document state, sensitive pages, and user behaviour can make a page ineligible or evict it. Use the rate to find preventable problems, not to punish teams for browser decisions they do not control.

Instrument the pageshow event and record whether event.persisted is true. Where supported, the NotRestoredReasons API can provide diagnostic evidence. Keep browser, device, template, market, release, and authentication state so one global average does not conceal a product-template regression.

Protect shopping state

The performance win is useful only when the snapshot remains trustworthy.

StatePreserve immediatelyRevalidate after restoreUnsafe shortcut
Filters and sortselected controls and result contextavailability-dependent result countsrebuilding defaults
Scroll positionexact list positionlazy-loaded items if requiredjumping to page top
Product comparisonselected itemscurrent price and stocksilently dropping choices
Cart badgelast visible valuecart session and item countshowing a stale count indefinitely
Wishlistoptimistic selectionauthenticated server stateexposing another session
Pricevisible valuemarket, customer, promotion, and currency rulesassuming snapshot price is final
Inventoryvisible status brieflycurrent sellabilityaccepting stale availability at cart
Authenticationno private assumptionsession validityretaining signed-out account data

Google recommends using pageshow to update stale or sensitive information when a page is restored. In commerce, the update should be selective. Do not erase the speed benefit by rebuilding the entire application. Revalidate the small set of states whose correctness can change the purchase: session identity, cart, price, inventory, promotion eligibility, and delivery promise.

Render an immediate preserved interface, then update changed values without stealing focus or moving the shopper. If a selected product becomes unavailable, explain the change. If the cart changed in another tab, reconcile it rather than replacing the current view without warning.

Team reviewing a digital customer journey

Build a template scorecard

Prioritise templates by how often customers return to them and how expensive a reload is.

TemplateReturn-navigation importanceMain correctness riskFirst test
Collection/categoryvery highfilters, sort, stock, scrollPLP → PDP → back
Search resultsvery highquery, ranking, zero-result statesearch → PDP → back
Product detailmediumselected variant and pricePDP → guide → back
Carthigh but sensitivequantity, promotions, identitycart → shipping info → back
Accountsensitiveprivate customer datasign out → back
Checkoutplatform-dependentpayment and order stateavoid assumptions; follow platform rules
Editorial guidemediumscroll and linked product statearticle → product → back

Combine restore metrics with the customer journey latency framework. A near-instant return can reduce discovery friction even if it never appears in a conventional cold-load dashboard.

Remove common blockers

The unload event is a common avoidable blocker. Google’s guidance recommends pagehide where lifecycle work is required. Audit third-party tags as well as first-party code because an embedded frame can affect eligibility.

Review:

  • unload handlers in theme, consent, review, chat, and analytics scripts;
  • use of Cache-Control: no-store on pages that do not contain sensitive data;
  • open connections and browser APIs reported as not-restored reasons;
  • iframe permissions and sandboxing;
  • scripts that assume they initialise only once;
  • timers, observers, and event listeners that duplicate after restore;
  • analytics that count a restore as an ordinary full reload;
  • inventory or cart services that never revalidate resumed state.

Do not remove security controls to gain a restore. Account and checkout pages require stronger privacy review than public catalog pages. no-store can be appropriate for truly sensitive documents, and browser behaviour continues to evolve. Test the actual target browsers rather than copying one header policy across every route.

Test the complete journey

Chrome DevTools includes a Back-forward Cache panel that can navigate away and back, report whether restoration occurred, and surface actionable blockers. Use it as a diagnostic tool, then add repeatable journey tests.

Test at least:

  1. collection with filters and deep scroll;
  2. search results with autocomplete-origin query;
  3. PDP with non-default variant selected;
  4. cart changed in another tab;
  5. price or promotion changed between navigation and restore;
  6. item going out of stock;
  7. customer signing out before returning;
  8. consent state changing;
  9. embedded review, video, and support widgets;
  10. low-memory mobile conditions where eviction is more likely.

Validate interface state, network requests, analytics events, focus, scroll, announcements for assistive technology, and console errors. A fast restore that duplicates an add-to-cart listener is a regression, not a success.

Set release guardrails by template. A starting policy might require no new actionable not-restored reason on collection and search pages, no duplicated commerce events, and a passing stale-state test suite. These are internal controls, not published industry standards.

A 30-day implementation plan

Week 1: baseline

  • Measure back-forward navigation share by template.
  • Record restore rate and top not-restored reasons.
  • Map preserved and freshness-sensitive state.
  • Identify high-exposure discovery loops.

Week 2: repair

  • Replace avoidable unload handlers.
  • Review caching headers and third-party frames.
  • Add safe pageshow lifecycle handling.
  • Prevent duplicated listeners and analytics events.

Week 3: validate

  • Test filter, scroll, cart, price, inventory, and sign-out state.
  • Run on Chrome, Safari, and Firefox target versions.
  • Segment results by mobile and desktop.
  • Add regression journeys to release checks.

Week 4: govern

  • Publish the template scorecard.
  • Assign owners to remaining blockers.
  • Connect restore cohorts to product-discovery completion.
  • Recheck after tag, app, and theme changes.

EcomToolkit point of view

Ecommerce speed is not only how quickly a customer arrives; it is how little work the site makes them repeat. bfcache turns the back button into a high-value performance surface, especially for mobile product discovery.

EcomToolkit recommends starting with collection and search return journeys, preserving human context, and revalidating only commercial truth. Pair this work with the mobile ecommerce performance framework and contact EcomToolkit if your speed programme still measures pages instead of shopping loops.

Related partner guides, playbooks, and templates.

Some resource pages may later use partner links where the tool is genuinely relevant to the topic. Recommendations stay contextual and route through internal guides first.

More in and around Ecommerce Performance.

Free Shopify Audit

Get a free Shopify audit focused on the fixes that can move revenue.

Share the store URL, the blockers, and what needs attention most. EcomToolkit will review UX, CRO, merchandising, speed, and retention opportunities before replying.

What you get

A senior review with the priority issues most likely to improve performance.

Best for

Brands planning a redesign, migration, CRO sprint, or retention cleanup.

Reply route

Every request is routed to info@ecomtoolkit.net.

We use these details to review your store and reply with the next best steps.