Version Comparison
- PHPUnit Integration tests with code coverage ~80%.
- PHPCS to a stricter standard than Magento.
- PHPStan to Level 6 (Level 9 for non-Magento modules, e.g. PHP-SDK)
- Separation of concerns, each module can be removed if not required.
- Setting of Theme JS settings via the admin.
- Single URL for search results.
- Addition of recommendations banner widget.
- Correct filtering of visibility without any customisation.
- Correct currency conversion including symbols defined in Magento.
- Move Javascript to page end where possible.
- Add Javascript to the head in a non-blocking manner where possible.
- Remove all Klevu code from the checkout
- Switch to Klevu JSON indexing from XML indexing.
- Removal of on-the-fly calculation of indexing actions.
- Customer group pricing includes catalog price rules.
- Use Magento image generation for Klevu images.
| v2.x/v3.x | v4.x |
Plugin | Migrated from Magento 1. | Purpose-built for Magento 2 following Magento’s best practice. |
PHP support | 5.6+ Limits PHP features that can be used, e.g. type hints. Versions of PHP that are EOL contain security bugs. | 8.1+ Make full use of newer PHP features (type hints, named args, null safe op, etc..) Performance improvements from newer versions of PHP. |
Magento Support | 2.1.18 - 2.4.6 Includes workarounds for missing features, core bugs, etc.. Support for the old version means v2.x of the extension cannot be listed on Magento Marketplace. | 2.4.4+ Only supports Magento versions supported by Adobe. |
Future Klevu Development | Will receive feature updates until v4.x General Availability and security updates for 1 year after the launch. | Will receive all new features, including message queues for indexing and analytics, partial product data sync and multi-store integration with one API key. |
Klevu API | XML API | JSON API |
Test Code Coverage | ~14% | ~80% |
PHPCS compliant | No | Yes, to a stricter standard than Magento’s PHPCS. |
PHPStan compliant | No | Yes, to level 6 for the Magento modules (level 9 for PHP-SDK and PHP-pipelines) |
Separation of concerns | Indexing and search code mixed in the same module. | A module for each feature. Indexing, frontend and analytics are separated. Each indexing entity type and frontend solution is added via separate modules. Designed to have non-required modules removed via composer replace. |
Object Manager | Is used in the code and can not be removed due to circular dependencies. | No usage outside of Magento's best practice guidelines (e.g. constructor arguments, factories or tests). |
Can code be modified via plugins? | Not all due to some variables passed by reference. | Yes, this is the recommended way of modifying all Klevu code. |
Klevu JS Theme customisations | Via a custom module only. | Via admin settings, themes or a custom modules. |
Search Results URL | Custom URL /search can not be changed. Magento results URL is also available at /catalogsearch/result causing duplicate content. | Reuses the Magento search URL /catalogsearch/result can be changed as required. Toggle between Klevu Theme JS results and Magento via a URL parameter. |
Recommendations Banners | Code has to be added manually. Code provided via KMC does not work with dynamic blocks. | Added via a widget with an option to make it compatible with dynamic blocks. Only the recs banner ID is required. |
Custom Product Types | Possible, but not simple to implement. Requires preferencing classes which could lead to breaking the upgrade path for the module. | Built with custom product types in mind. Inject an entityProvider class for the custom type via di.xml |
Custom Entity Types | Possible, but not simple to implement. Requires preferencing classes and breaking the upgrade path for the module. | Built with custom entity types in mind. Inject an entityIndexerService class for the new type via di.xml |
Entity data sent to Klevu during indexing. | Syncs many attributes which may not be required by your store. | Sync only the data required for your store. |
Customisation of entity data sent to Klevu during indexing. | Requires preferencing a class and breaking the upgrade path for the module. | Uses Klevu YAML pipelines which can be overridden by injecting your own YAML file via di.xml. Option to auto-generate YAML for custom attributes. No code is required to add data to indexing. |
Indexing next action calculation | During indexing the action to perform is calculated on the fly. This can be extremely resource-heavy and time-consuming for larger stores. | The next action is calculated in advance of the sync and stored in the database tables. Sync then reads those tables and performs the required action. |
Klevu script tags | Multiple script tags are added that should have been combined into one. | Reduction in the number of tags added. |
Klevu interactive | Is in use. Klevu JS waits until page is interactive before firing. | Removed. Klevu JS executes immediately. Any Klevu JS that has other dependencies is handled via webhooks and is executed when available. |
Headless Frontend | Frontend modules have to remain installed, enabled and enabled in the config. | All fronted modules can be removed via composer replace if a headless implementation is required. |
|
|
|