Vanilo 3.0 has been released with many changes, including breaking ones.
Vanilo supported many different versions of PHP and Laravel beginning with PHP 7.0 and Laravel 5.5.
Being constrained by the compatibilities of these dependencies, the codebase has an increased complexity and it can only rely on the features present in the lowest supported version.
Fortunately, Laravel has changed its release policy and major versions, thus breaking changes are less frequent. Vanilo being a Laravel plugin will now align its releases with Laravel major releases.
It means that Vanilo 3 is the counterpart of Laravel 9, ie. it only supports Laravel 9 and no earlier Laravel versions. As a consequence it has the same dependencies, including PHP: 8.0 - 8.1.
Vanilo has been both a set of independent components (cart, products, orders, etc) and a framework that glues those components together into a unified E-commerce system.
When we began Vanilo, every module went into a separate repository and the framework required them as external composer dependencies. During the years, it turned out to be very ineffective for us to maintain the code spread into many repositories, slowing down the progress and putting more cognitive load on the people.
Beginning with Vanilo 3.0, we have moved every component into the framework. The standalone modules are still available at the very same locations, but technically they have become the read-only subtree split of the main repository.
This change possibly doesn't affect your application, still it was a significant internal change. We already saw the benefits of it during the works of Vanilo 3.0
We learned during the years, that many of the applications using Vanilo, were not using the Vanilo Admin. The unused part being present, required extra steps from the developers, and caused extra code to loaded with the app. Therefore, in Vanilo 3.0 the admin package has been removed from Vanilo Core (the framework).
It is now available as a separate composer package:
The top most wanted feature has been Product Variants for years. The topic is quite complex and there are two major approaches of the implementation.
The Vanilo 3 Documentation has been extended with a Product Variants section, explaining the details of this topic.
Vanilo will support both product variant "schools" via:
The Links module is part of the 3.0 release, whereas the Master Products module will only be released with 3.1, in March 2022.
For detailed description of the Links Module, see the Links Documentation.
Vanilo 3.0 has another brand-new module, the Shipment Module.
As of v3.0 the module supports the handling of shipments. Each
Shipment can have a
Carrier assigned. Carriers have name and configuration attributes, and can be set inactive.
Besides the carrier, shipments have tracking number, a shipping address, a status enum, comment, configuration, dimensions and weight and can be marked as trackable/non-trackable.
The handling of shipping fees is handled by the upcoming Adjustments module.
For detailed description of the Shipment Module, see the Shipping Documentation.
The base product model has several new fields (all of them are optional):
original_price: for very simple promotions,
The most important difference is that the
has been renamed to
In order to maintain the compatibility with existing codebases, a namespace alias has been created. This alias will be removed in Vanilo 4.
As a consequence of the namespace change, the corresponding
config values have been renamed to
Apart from these changes, the
Buyable and the
Property interfaces have changed.
For a complete list of BCs and upgrade instructions see the Upgrade Guide
If you have issues or questions regarding the Vanilo 3 upgrade, feel free to open an issue at Github.
Wish you all a smooth upgrade! 🎉