Searching for auto parts is not like searching a regular webshop. Users type part numbers, car models, or just “brakes for a 2015 Fabia”. Results need to be precise but also explorable — one part can have a dozen variants across manufacturers.
Until recently search and the vehicle catalogue were two separate experiences. Different UI, different sorting, different — or no — filters. It made no sense to keep them apart.
One filter bar, two contexts
Search results now carry the same filter bar as the vehicle catalogue. The same component, the same logic. You can filter by brand (Bosch, TRW, Febi…), toggle in stock only, and sort by price — cheapest or most expensive first.
Everything runs through URL parameters. Find the right filter combination? Copy the link, send it to a colleague. No “set it up like I have it” — the link opens the exact same data.
/search?q=brakes+Fabia&brand=Bosch&inStock=1&sort=price_asc
What it took to make it work
The key call: don’t write a new filter component. We already had ProductFilters in the catalogue — we gave it price-sorting capability and plugged it into the search page with empty vehicle groups (those don’t make sense outside the catalogue).
Price sorting works in two modes:
- Signed-in user — sees their own wholesale price
- Guest — retail price list
Items with “price on request” stay at the bottom regardless of sort direction. Because nobody should have to hunt through sorted results to figure out whether the price is real.
Side effects that matter
A few things got fixed along the way that wouldn’t be their own blog post but add up to a usable search:
- Duplicate search box — the results page had its own search field in addition to the one in the header. Both did the same thing, but it wasn’t clear which one drove the results. The extra one is gone.
- Native select → Combobox — the sort dropdown was an OS-native
<select>that looked foreign on the page. It now uses the same Combobox as the rest of the site. - Catalogue sorting too — price sorting applies to the vehicle catalogue as well. Same code path, same behaviour.
Who benefits
A mechanic searching for a part who wants to see only in-stock items from a specific manufacturer. Or a customer browsing the catalogue who sorts alternatives by lowest price — because their supplier prefers the cheapest option anyway.
This is one of those cases where the result isn’t a shiny new feature. It’s two things that should never have been separate finally working as one.