Is PrestaShop 9 worth upgrading?

PrestaShop 9 is finally here, an important step in the progress of the entire e-commerce platform. With the adoption of Symfony 6.4, the implementation of Smarty 4, and the release of a new Admin API built on API Platform, this version should provide better optimizations, strengthened security, and a more robust technical foundation for the future. Accompanying these innovations, however, are significant changes that break support for third-party modules: many commonly used legacy classes Tools::displayPrice, Tools::encrypt() and l() have been deprecated or completely removed, causing the need for substantial updates to third-party modules and templates.

For this very reason, a cautious approach regarding upgrades in production environments is to be preferred, to allow developers to upgrade their extensions and themes to the new PrestaShop 9 ecosystem.

Main new features of PrestaShop 9

  • Symfony 6.4 LTS: upgrade to the framework with long-term support, increased stability and security.
  • Compatibility with PHP 8.1 - 8.4: extended support for the latest versions of the language.
  • New Admin API: completely rewritten programming interface for modern and RESTful integrations.
  • Hummingbird theme: new front-end theme based on Bootstrap 5, TypeScript and BEM methodology
  • Improved developer experience: removal of legacy code, updated dependencies, more modern tools and revised documentation

Deprecations and legacy classes removed

As mentioned earlier, upgrading to PrestaShop 9 will require careful analysis of both modules and templates, as many legacy classes that are still commonly used for backward compatibility have been removed. This makes it essential to update the code to avoid execution bugs or errors. The table below summarizes the most important deprecated classes and methods, sorted by the likelihood of their use in modules and themes.

Class/MethodDescription
Tools::displayPriceMethod commonly used in templates to display prices, now removed
Tools::encrypt / Tools::encryptIVUsed in various modules for simple encryption, now removed
Translate::getAdminTranslationMethod for back office translations, now removed in favor of the new system
Tools::displayNumberNumber formatting in templates, deprecated and removed
Controller::addJqueryMethod for including jQuery in forms, no longer supported
Validate::isPlaintextPassword / isPasswdAdminPassword validity checks, now handled differently
Tab::getClassNameLegacy method for getting the class associated with a Tab
SpecificPrice::setPrioritiesPriority management of specific prices, deprecated method
AdminPdfController::generateInvoicePDFByIdOrderMethod to generate PDF invoices from order IDs, now removed
Product::getProductPropertiesUsed to enrich product data, now moved to ProductLazyArray
FrontController::addColorsToProductListLegacy function for managing product colors
Tools::clearColorListCacheMethod to clear product colors cache, now removed
AdminController::isFresh / refreshMethods for managing the cache of back office pages
Cart::simulateCarriersOutputCouriers simulation method, no longer used
Upload and FileUploadLegacy classes for uploading files, completely removed
Validate::isAnythingGeneric validation method, now removed
Tools::getBrightness / isBrightGraphics methods related to color brightness
OrderReturn (deprecated parameters)Removal of obsolete parameters for handling returns
Tools::stripslashes / safePostVarsLegacy input sanitization methods, now removed
displayFlagsLegacy variable used to display language flags

How long will it take to update the forms and themes?

Because of the change in core and removal of legacy classes, and new technical requirements, many modules, will need to be rewritten or updated, especially those that:

  • use Tools::displayPrice, Tools::encrypt(), l()
  • depend on removed libraries integrate user functionality (passwords)
  • using Bootstrap 4 in interfaces A rewrite or update will be necessary.

The time it takes to update many modules or templates could take up to several months, especially in the case of uncommon, niche, or particularly complex modules. Our advice is not to use version 9 currently in production environments and to wait for the next minor release, which will most likely fix many of the bugs introduced with this major update.

What happened to the GitHub version?

One sore point concerns the disappearance of the "clean" version of PrestaShop on GitHub: starting with version 9, the unbranded directly ready-to-use build will no longer be available. To get a truly "clean" and more stable version, you will need to download the sources from the repository and generate the package manually using the tools/build/ script CreateRelease.php.

However, there are " unofficial" versions of PrestaShop that are not Branded, such as the following:

https://github.com/matrixino/VanillaPrestaShop

Alternatively, although not the ideal solution, you can install the PrestaShop Edition Basic, downloadable from prestashop.com, choosing during installation not to include the following modules:

Module nameFunction
PrestaShop Classic EditionPrestaShop Classic Edition introduces changes to the back office theme and includes links and promotional communications related to PrestaShop SA's paid services and commercial offers, such as a link to the 'Care Center'.
PrestaShop CheckoutIntegrated solution for managing payments (cards, PayPal, local methods) with optimized security.
PrestaShop AccountManages user authentication and registration with integration to the PrestaShop ecosystem.
PrestaShop MarketplaceThe module has the function of checking and updating licenses of modules purchased on PrestaShop Addons with one click. It therefore facilitates the management of updates and activations, but is not essential unless you are using modules that require activation to function properly or are tied to an active subscription.
PrestaShop CloudSyncAllows synchronization of data (products, orders, stock) between store and cloud services. Unfortunately, in a non-transparent way.
PrestaShop ShippingSimplifies shipping and courier management directly from the control panel through Mail Boxes Etc. Service unfortunately while good, not competitive.
PrestaShop MarketingAllows you to improve online visibility and promote products on channels such as Google. Unfortunately it is on a monthly subscription basis, better to opt for third-party modules that provide a self-hosted license.
PrestaShop SocialsSynchronizes the catalog with Facebook and Instagram to increase social presence. Also subscription-based and surpassed in many functions by far more comprehensive and especially self-hosted modules.

Unless they are essential to your project, these modules are part of the PrestaShop Integration Framework, which-as we have repeatedly reported-is not only quite unstable, but also introduces a hybrid SaaS logic, at odds with the self-hosted nature of a CMS like PrestaShop. In addition, these modules constantly exchange data with PrestaShop Addons and various business partners, often transmitting information that is not essential to the functioning of the modules themselves. For more details, see the article:

PrestaShop Checkout module is now to be abandoned

In conclusion

After more than two years of development, PrestaShop 9 introduces a large number of significant updates, modernizing many features to meet the current needs of online commerce. However, this major step forward is partly overshadowed by the growing push to adopt the PrestaShop Integration Framework, a choice that seems to aim more at monetization than community interest, bringing PrestaShop closer to a hybrid SaaS model, inspired by that of Shopify. The result is a platform that risks losing its identity: neither completely free, nor truly integrated. PrestaShop's strength has always been its self-hosted and open source nature, which allows users to install, modify, and manage their e-commerce independently. In our opinion, the direction taken by MBE represents a questionable choice, which risks alienating developers and merchants from what has made PrestaShop a landmark project in the open source landscape.

Note: What does SaaS and self-hosted mean?

A SaaS (Software as a Service)platform is software distributed as an online service, accessible through a browser, where the user does not directly manage the infrastructure or code. A well-known example is Shopify: everything is hosted and controlled by the service provider, which imposes constraints on functionality, customizations, and updates.

In contrast, a self-hosted platform such as PrestaShop (in its original form) allows the user to download, install, modify and fully control the software on its own server. This mode offers maximum freedom, transparency and independence, in the face of greater responsibility for technical management.

Author: Loris Modena

Loris Modena

SENIOR DEVELOPER

Loris Modena owner of Arte e Informatica, began working in the computer industry in 1989 as a systems engineer involved in the maintenance and installation of computer systems. He starts programming for the web in 1997 dealing with CGI programming in PERL and later switching to PHP and JavaScript programming. During this period he approaches the Open source world and Linux server management.

Product added to wishlist