Description
PartSyncer Recently Viewed remembers the products a visitor has looked at and shows them a strip of thumbnails to jump back to. The history is stored in the visitor’s own browser (localStorage) — no cookies, no accounts, no server-side data — so it works behind a full-page cache.
What you get
- A “Recently viewed” strip auto-placed on the single product page.
- A
[partsyncer_recently_viewed]shortcode, a Recently Viewed block, a classic widget, and an Elementor widget — use whichever fits your page. - Carousel, grid or list layout, with a choice of sort order (recent, newest, random, or price).
- Optional “Add to cart” button and live stock availability on each item, plus an individual remove button.
- Configurable heading and history length.
Theme-agnostic
The plugin renders its own markup and stylesheet, so it works with any WooCommerce-compatible theme. Every colour/size is a --psrv-* CSS variable a theme can override.
Privacy
No cookies. No accounts. No server-side storage. Nothing leaves the browser.
Privacy
This plugin does not collect, store, or transmit any personal data on the server. Each visitor’s browsing history is kept entirely in their own browser (localStorage), never sent to the site or any third party, and works without cookies. Uninstalling the plugin removes its one settings option; it holds no visitor data to erase.
Trademarks
WooCommerce is a registered trademark of Automattic Inc. This plugin is not affiliated with, endorsed by, or sponsored by Automattic or WooCommerce.
Screenshots



Installation
- Install and activate WooCommerce.
- Upload the plugin and activate it.
- The strip appears on product pages automatically. Adjust the heading and length at WooCommerce PartSyncer Recently Viewed.
- To place it elsewhere, add
[partsyncer_recently_viewed]or the Recently Viewed block.
FAQ
-
No. It uses
localStorage, so it needs no cookie notice and is safe with page caching. -
Does WooCommerce not already have this?
-
WooCommerce ships a cookie-based “Recently Viewed Products” widget. This plugin is cookieless (localStorage), which is friendlier to page caches and privacy rules, and adds a shortcode, a block and an auto-placed product-page strip.
-
How do I restyle it?
-
Override the
--psrv-*CSS variables or target the.psrv*classes.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“PartSyncer Recently Viewed Products” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “PartSyncer Recently Viewed Products” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.7.1
- Internal cleanup: no functional changes. Author/branding fields updated, and readme now documents this plugin’s privacy stance (no server-side data collection) and the WooCommerce trademark notice.
1.7.0
- New “Category filtering” setting: on a product category page, only show recently-viewed items that belong to that category or one of its parent categories (e.g. only recently-viewed Transmission parts show on the Transmission category page). Off by default; only applies to items recorded while it’s turned on.
1.6.2
- Fixed: clicking “Add to cart” a second time on a low-stock item (e.g. only 1 available) could fail and redirect to the product page with an error, because WooCommerce only reduces its displayed stock count at checkout, not at add-to-cart — so the button still looked available. The button now shows a disabled “Added” state after a successful add instead of staying clickable.
- Live stock/price data is no longer served from a stale cache immediately after an add-to-cart, so any real change (another shopper buying the last unit, a stock update) shows up right away.
1.6.1
- The “Add to cart” button now uses a 5px corner radius (was a full pill) and always defaults to white text for better contrast on a coloured background.
1.6.0
- Redesigned each item’s layout: image, title, SKU/part number, price and a colour-coded stock badge (amber when low, green otherwise, threshold from WooCommerce’s own “notify at” stock setting) are now laid out cleanly side by side — no more crowding.
- The “Add to cart” button is now a pill with a small cart icon, and shorter (“Add”).
- The popup panel header now shows a clock icon and a subtitle (“N parts · saved for N days” / “kept until you clear it”).
- Everything still restyles via
--psrv-*CSS variables, so a theme can recolour it (including a full dark-mode popup, as PartSyncer’s own theme now does) without touching the plugin.
1.5.1
- Fixed the price and stock text overlapping in the list layout and the popup panel — each item now uses a small grid (image, title, then price/stock/add-to-cart each in their own column) instead of cramming everything into one row.
- Stock text is now a small coloured badge for better visibility.
1.5.0
- The floating button can now sit at the top, middle or bottom of its screen edge (previously bottom only).
- An “Add to cart” button on each item (simple, in-stock, purchasable products only — others link to the product page instead), added via AJAX with no page reload.
- Live stock availability text (e.g. “5 in stock”) on each item, checked against the WooCommerce Store API.
- An individual remove (×) button on every item, with an Undo toast, so a single product can be dropped from the history without clearing everything.
1.4.0
- Elementor widget: “Recently Viewed Products” is now available in the Elementor editor, alongside the shortcode and block.
- List layout option, in addition to carousel and grid.
- Sort order option: most recent (default), newest first, random, price low-to-high, or price high-to-low.
- Option to exclude free (zero-price) products from being recorded and shown.
1.3.0
- Optional floating corner button + popup panel (like the familiar “recently viewed” bubble pattern), showing the full history with its own Clear/Undo. Position and edge offset are configurable, so it won’t collide with a chat or WhatsApp bubble from another plugin.
- The inline strip gains a “View all” link when there are more items than fit inline (floating mode only).
- Classic (non-block) widget added, for older themes and widget areas.
- Accessibility: the popup panel traps focus while open.
- Basic RTL groundwork: layout uses flex/grid flow (no hardcoded text direction); the floating button’s screen corner is a deliberate position choice and does not flip with text direction, matching how similar corner widgets behave.
1.2.0
- Cross-tab sync: the strip stays in sync between tabs.
- “Clear” now shows an Undo toast instead of clearing silently.
- The out-of-stock check now caches Store API responses for a few minutes (sessionStorage).
- Developer event:
psrv:product-recorded(document-level CustomEvent, for analytics integrations).
1.1.0
- Choose where the strip appears: product pages, the cart page (classic or block), and/or shop & category pages.
- Layout option: carousel or a grid with a configurable column count.
- Option to hide products that are now out of stock (checked against the WooCommerce Store API).
- Optional “forget after N days”, and a “Clear” link on the strip.
1.0.0
- Initial release.
