End of life

Digital Product Passport on PrestaShop 1.7.x

PrestaShop 1.7 is end of life. You can technically implement passport data on it, but doing so before upgrading is building on a platform that will receive no security fixes through the entire compliance period.

Platform facts

Last release line1.7.8 (1.7.8.11), originally released 5 October 2021
PHP1.7.8: 7.1 – 7.4. 1.7.7: 7.1 – 7.3
DatabaseMySQL 5.7 minimum. No MariaDB minimum is stated in the 1.7 docs
Symfony3.4 (from composer.json — the 1.7 docs do not state a version)
StatusEnd of life since 10 June 2025, when PrestaShop 9.0 was released

1.7 is end of life. PrestaShop stated that 1.7.8's maintenance period would end when 9.0.0 was released. That happened on 10 June 2025. There are no further security fixes.

The battery passport deadline is 18 February 2027, and other product groups run years beyond that. Committing to passport development on 1.7 means running an unmaintained platform, on a PHP version that is itself long unsupported, for the entire period during which you are publishing regulated public data about your products. Upgrade first.

Where to store passport data

ObjectModel with a custom table works here exactly as it does on 8.x and 9.x — the pattern has been stable across all three lines. The $definition conventions, the _lang tables and the multishop pivot tables are unchanged.

This is genuinely good news for an upgrade path: the storage layer is the part that ports cleanly. If you must start passport data collection on 1.7 before you can upgrade, put it in a properly defined ObjectModel with its own table, and it will move to 8.x or 9.x with little more than a compatibility check.

What will not port is the admin interface. Plan for that to be rewritten.

Editing passport data in the back office

1.7 has the legacy product page and controllers/admin/AdminProductsController.php. The displayAdminProducts*Step* hooks work, as does displayAdminProductsExtra.

actionProductFormBuilderModifier — the forward-compatible route on 8.1 and later — does not exist here, because the Symfony product form arrived in 8.1. So there is no way to write back-office code on 1.7 that will survive a move to 9.x. Any admin UI you build now is throwaway.

That asymmetry is the practical argument for upgrading before building: the data model ports, the admin UI does not, and on 1.7 you have no option to write the portable version.

Showing the passport on the storefront

displayProductExtraContent is available and behaves identically to 8.x and 9.x — it must return an array of ProductExtraContent objects. The class has been at src/Core/Product/ProductExtraContent.php since the 1.7 line.

The official example module for this hook declares compatibility from 1.7.0 through 9.99.99, which is a fair summary of how stable this part of the API has been.

displayProductAdditionalInfo, displayAfterProductThumbs and the other product page hooks are all present. Note that hook aliases do not yet emit deprecation notices on this line — so a module that works quietly here may start warning on 8.x.

The public passport URL

The ModuleFrontController pattern and the moduleRoutes hook both work as described for 8.x and 9.x. This part of the API has not changed across any of the three lines.

One caution: on 1.7 you can expose a loose PHP file in the module directory and hit it directly. PrestaShop 9 forbids this. If you build a passport endpoint that way now, it will break on upgrade — use a proper front controller even though this version does not force you to.

Version-specific gotchas

The upgrade is two jumps, not one

1.7 → 8.x brings PHP 7.2.5, Symfony 4.4 and Twig 3, drops non-public services from the container, changes template syntax, moves translations, and extracts the classic theme to a Composer package.

8.x → 9.x is the bigger jump: PHP 8.1 floor, Symfony 4.4 → 6.4 (every breaking change from ten Symfony releases at once), the product page rewrite, $this->get() removed from Symfony controllers, trans() no longer escaping, and the removal of Guzzle, SwiftMailer and TacticianBundle from core. Advanced Stock Management, multi-address delivery and high-DPI images were also removed outright.

The autoupgrade module handles the mechanics; the module compatibility work is the part that takes time.

If you genuinely cannot upgrade yet

Collect the data anyway, in an ObjectModel with a proper schema. Data collection is the long pole in any passport project and it is platform-independent. Do not build an elaborate admin UI you will throw away — a minimal editing screen, or even a CSV-driven import via actionProductSave, is the rational investment on a platform you are leaving.

Questions

Can we do DPP compliance work on PrestaShop 1.7?
Technically yes — the storage pattern and the front-office hooks all work. But 1.7 has been end of life since 10 June 2025 and receives no security fixes, while the compliance period you are building for runs to 2027 and beyond. The stronger argument is practical: any back-office code you write on 1.7 has to be rewritten for 9.x, because the form builder API does not exist on this line.
When exactly did 1.7 reach end of life?
10 June 2025, when PrestaShop 9.0 was released. PrestaShop had stated in January 2023 that 1.7.8's maintenance would end at that point, and that 1.7 would not be maintained afterwards.
Should we upgrade to 8.2 or straight to 9.1?
If you are upgrading anyway, 9.1 is the current line and avoids doing the work twice — 8.2 is in extended support and will itself be EOL when PrestaShop 10 ships. The counter-argument is module availability: check that your critical third-party modules have 9.x versions before committing, because that is what usually decides it in practice.

Sources