Case Study:
Poulsbo RV

Rebuilding the Search Experience for 800+ Vehicles

Rebuilding the Search Experience for 800+ Vehicles: From 8 Seconds to Instant

Client: Poulsbo RV (Kent, WA) - www.poulsborv.com
Platform: WordPress with WooCommerce
Technology: React 18, TypeScript, PHP, TanStack Query, Vite, Fuse.js, MySQL
Services: Web Application Development, Front-End Engineering, Accessibility

The Challenge

Poulsbo RV operates one of the largest RV dealerships in the Pacific Northwest, with an online inventory of 800+ vehicles. Their existing AJAX-based search and filtering plugin (WCAPF – Ajax Product Filter for WooCommerce), while suitable for small stores, could not handle the size of Poulsbo RV's inventory and basically acted as a full page reload for every user interaction: every filter selection, every sort change, every minor slider movement, every page selection.

Imagine 8 seconds of load time per interaction! The browsing experience was effectively broken for anyone seriously shopping their inventory.

The Approach

Rather than trying to patch the existing filtering component, we replaced it entirely with a custom React application built as a WordPress plugin. This approach allowed for a clean integration with the existing site without disrupting the broader WordPress, Elementor, and WooCommerce setup.

A key performance decision was moving product data out of WordPress's native database structure into a dedicated cache table, which is rebuilt on a scheduled and event-triggered basis. This eliminated the query overhead that was the root cause of the 8-second load times, allowing the React application to retrieve filtered results almost instantly.

The application was built with React 18, TypeScript, TanStack Query, and Vite, with Fuse.js powering fuzzy search capabilities. Nonce-secured REST API endpoints handled secure communication between the React frontend and WordPress backend, with specific workarounds implemented for Kinsta and Cloudflare caching behavior.

URL-based filter state synchronization was implemented throughout, allowing users to share or bookmark filtered search results. Deployment was handled through a Bitbucket Pipelines and rsync pipeline to Kinsta.

What We Built

  • Custom React search and filtering application integrated as a WordPress plugin
  • Dedicated product cache table with scheduled and event-triggered rebuild logic
  • Fuzzy search across 800+ vehicle listings using Fuse.js
  • Instant filter, sort, and pagination interactions with zero page reloads
  • Range sliders with instant response, no reloading on movement
  • URL-based filter state for shareable and bookmarkable search results
  • Improved mobile navigation and filtering experience
  • Full WCAG accessibility compliance across all filter controls
  • Automatic inventory refresh when a user returns to browser window from another window

The Result - From 8 Seconds to Instant

Every filter interaction that previously triggered an 8-second page reload now responds immediately. Shoppers can browse, filter, and sort 800+ vehicle listings in real time with a search experience that matches what they would expect from a modern ecommerce site. Fuzzy search surfaces relevant results even when shoppers aren't sure of exact model names or specifications, reducing friction for first-time RV buyers navigating an unfamiliar inventory.