As mentioned in previous blogs and newsletters we were looking for ReactiveSearch alternatives and refactoring the indexer was on our roadmap for a while. With v4, we can check those off ✅ 250+ commits and 6 months of development later, v4 is here! 🚀 including some awesome new features 🤘🏻
ReactiveSearch has been within Rapidez from day 1, but the current state is unclear and there isn't much activity on Github. We chose this as Magento requires Elasticsearch / OpenSearch, so no additional requirements. But ReactiveSearch did have some drawbacks, for example: it was hard to customize the pagination and the toolbar (sorting, items per page, etc) from Blade. In the past we've worked with InstantSearch by Algolia which supports more search engines, is actively maintained, financially funded, more popular and more widely used. So we chose InstantSearch!
InstantSearch integrates with Algolia, Meilisearch (plugin), Typesense (adapter), Elasticsearch (searchkit), etc. We did some research on other search engines, Meilisearch didn't perform well, Typesense could fit but switching to another engine has to bring something extra and sticking to ElasticSearch is preferred for backwards compatibility. In some projects custom we use DSL queries, so it would be nice to keep those as is. In theory it's possible to switch engines but out-of-the-box you'll get ElasticSearch. Do you need another search engine? Let's talk!
But what about OpenSearch? Magento is moving away from ElasticSearch due licensing issues. As mentioned in the Rapidez requirements currently only Elasticsearch is supported, but the next thing on the list is OpenSearch support! We did give it a try in the past but Rapidez is using the flattened field type which OpenSearch didn't support until version 2.7. We also like to add vector search which is easier with OpenSearch, so OpenSearch support is coming!
Our custom indexer has been replaced with a first party Laravel package; Laravel Scout! This makes the indexing process faster, everything can be queued, and it's easier to maintain. The php artisan rapidez:index
command is still there which will call php artisan scout:import
for all stores and indexable models like products and categories.
With the migration to InstantSearch we also added some new features and improved the frontend 💅
We've introduced a new filter which makes it possible to search within your category or search results. Also, the price slider has been changed and doesn't depend on an external library anymore!
Your previous searches will be stored, locally (in local storage). Useful when searching for the same thing regularly.
Based on previous searches that actually do have results.
Config refactor, with this it's easier to have multistore configurations + it's moved from directly in the html to a cacheable route
Automatic super attributes selection, so when you filter on a color it will be selected on all items so the matching images will show
Check out the upgrade docs for all v4 changes.
Since the last release blog, we created some new packages:
Have a look at the package overview in the docs or on Github for all Rapidez repositories for all packages.
Some really cool new projects went live; check out the showcases! The next things we're going to work on are:
OpenSearch support: As Magento is moving away from ElasticSearch.
Tailwind 4 upgrade: already some progress here but there are some issues with Tailwind 4 that need to be solved first.
Vue 3 upgrade: Vue 2 is EOL, so we need to upgrade.
Vector Search: To make the search results even more relevant.
Flat table dependency: Migrate away from it; we're already moving towards a more relation-based model system instead of joining everything together.
Price component + Tierpricing: One of our partners made two different tierprice implementations, we'd like to merge that together into the core.
Maybe we should create a dedicated roadmap page for this? 🤔 hopefully next update 🤞🏻
Subscribe on the homepage so you won't miss anything!
The Rapidez Demo has been updated 🚀 see all new features in action!
Contact us and we're happy to think with you! 😎