Three days before a major seasonal sale, an industrial tool distributor clicked “Upgrade PrestaShop now” in the native 1-Click Upgrade module, expecting a smooth transition from version 1.7.8 to 8.0. Within forty seconds, their storefront collapsed into a blank white screen, and their back office locked them out with fatal Symfony routing exceptions. They thought it was a minor update. It was actually a major platform leap.
Executing a PrestaShop 1.7 to 8 upgrade is fundamentally different from moving between minor versions like 1.7.6 and 1.7.7. PrestaShop 8 represents a clean break from older software conventions: strict PHP typing, modern Symfony foundations, and the removal of legacy libraries that have lived in the core for over a decade. If you treat this migration like a standard routine patch, you will break your store.
Why the Jump from PrestaShop 1.7 to 8 Is a Major Architecture Shift
To understand why things go wrong, you have to look at what changed under the hood. PrestaShop 8 is the first release of the platform fully independent from the commercial entity originally driving it, signaling a clean-up of technical debt that accumulated over seven years of 1.7 maintenance releases.
Here are the primary architectural pillars that changed between 1.7 and 8:
- PHP 8.1 Support and Deprecations: PrestaShop 1.7 ran primarily on PHP 7.1 through 7.4 (with very limited 8.0 support on 1.7.8). PrestaShop 8 requires PHP 8.1 for optimal stability and security, and supports PHP 8.2 in later point releases. PHP 8 is strict about type mismatches, deprecated function calls, and uninitialized array keys that PHP 7 silently ignored.
- Symfony Framework Modernization: Core subsystems have transitioned deeper into modern Symfony components. Legacy controllers, hooks, and old routing definitions that were tolerated in 1.7 are stripped out in PrestaShop 8.
- Decoupled Dependencies: Legacy libraries like Swift Mailer have been discarded in favor of Symfony Mailer. If your custom modules rely on old mailer classes, email delivery will simply crash on order confirmation.
- Stricter Security Defaults: Password hashing, API authorization, and token validations are significantly tightened. Outdated custom modules attempting direct database interactions without proper tokens fail outright.
What Breaks Most Often During a PrestaShop 1.7 to 8 Upgrade
When I audit failed upgrades, the root cause is almost never the core database records. Customer tables, order histories, and product catalogs migrate cleanly in 95% of cases. The real disasters happen in the surrounding ecosystem.
1. Custom and Abandoned Third-Party Modules
This is the single biggest point of failure. In PrestaShop 1.7 running on PHP 7.4, loose type handling allowed sloppy module code to survive. A module could pass a null value to a function expecting a string, and PHP would issue a quiet warning that never reached the user.
In PHP 8.1, that same mistake triggers a fatal TypeError. Here is a subtle reality that catches most developers off guard: a legacy module might not even throw errors on your homepage, but the moment a customer enters the checkout funnel, an unhandled return type in a shipping or payment hook halts the entire PHP process. The customer sees an unhelpful “Something went wrong” message, and your cart abandons.
2. Deprecated Mailer Implementations
PrestaShop 1.7 relied heavily on Swift_Message and the native Mail::send() wrappers that assumed Swift Mailer was running underneath. PrestaShop 8 completely drops Swift Mailer and introduces Symfony Mailer. Modules that hook into email generation—such as custom invoice generators, abandoned cart recovery tools, or ERP sync notifications—will crash if they instantiate Swift Mailer classes directly.
3. Custom Theme Incompatibilities
If your theme was built on the Classic Theme engine from early 1.7 releases, it probably carries outdated Smarty templates, deprecated jQuery libraries, and obsolete asset compilation files. While PrestaShop 8 maintains backward compatibility with Classic-based themes on the surface, modern browser standards and updated core JavaScript files frequently clash with older theme assets, breaking modal popups, facet filters, and checkout step transitions.
4. Database Collation and Engine Inconsistencies
Stores that started their lifecycle on PrestaShop 1.6, upgraded to 1.7, and are now moving to 8 often have mixed database tables. Some tables run utf8_general_ci with MyISAM engines, while modern PrestaShop tables expect utf8mb4_unicode_ci on InnoDB. When PrestaShop 8 attempts to create foreign key relationships or execute complex joins during migration scripts, mismatched collations cause the upgrade script to abort midway, leaving an unusable, half-migrated database.
The Chicken-and-Egg Dilemma: Managing PHP Versions
Upgrading to PrestaShop 8 creates a tricky infrastructure problem that trips up many merchants. PrestaShop 1.7.8 is not fully compatible with PHP 8.1. Conversely, PrestaShop 8 will not install or run properly on PHP 7.4. If you run an automated upgrade tool like 1-Click Upgrade directly on your live server, you are caught in an impossible situation: running the script under PHP 7.4 causes PrestaShop 8 to fail, but switching your server to PHP 8.1 before the upgrade crashes your active 1.7 store.
Because of this, I never recommend executing an in-place upgrade on a production server. A safe migration requires an isolated staging environment where the codebase and database are decoupled, upgraded under the correct command-line PHP binaries, verified, and then swapped back into production during a controlled maintenance window.
If managing server binaries, database collation scripts, and code patching feels outside your team’s comfort zone, consider hiring our dedicated PrestaShop 1.7 to 8 upgrade service to handle the heavy technical lifting safely.
How to Prepare Your Store for PrestaShop 8 Compatibility
A successful upgrade requires thorough preparation long before running any migration scripts. Follow this operational checklist to ensure a smooth transition:
- Audit Your Module Inventory: Export a complete list of every module installed on your store. Identify which modules are active, which are inactive, and which are completely redundant. Delete modules you no longer use rather than simply disabling them, as disabled modules can still cause autoloader conflicts.
- Check Vendor Support for PHP 8.1: Contact module developers or check the PrestaShop Addons marketplace for PrestaShop 8 compatibility updates. If a mission-critical module (such as a custom ERP connector or local carrier module) has been abandoned by its developer, plan for custom refactoring or source a modern replacement before beginning the upgrade.
- Prune Dead Database Weight: Over years of operation, your database accumulates enormous amounts of garbage. Truncate tables like
ps_connections,ps_connections_source,ps_guest, and old cart logs. A database reduced from 12 GB to 800 MB migrates in minutes rather than hours, dramatically reducing the risk of server timeouts. - Audit Overrides: Check
/override/classes/and/override/controllers/. In PrestaShop 8, overrides are increasingly discouraged in favor of Symfony event listeners and services. Any override extending an old core class must be reviewed line-by-line to verify that parent method signatures match the new typed declarations in version 8. - Build a Dedicated Staging Environment: Clone your entire store—files and database—to a separate subdomain with its own database credentials. Disable all outbound transactional emails, background cron tasks, and live payment gateways in staging to avoid contacting real customers during testing.
Testing the Upgrade: The Minimum Verification Checklist
Once your staging store is running PrestaShop 8 on PHP 8.1, do not assume success just because the home page loads. Run these critical tests in order:
- Enable Debug Mode: Navigate the back office with debug mode enabled. Check for fatal exceptions, missing translation warnings, and legacy hook notices.
- Execute an End-to-End Order: Add products with combinations to the cart, apply a coupon code, create a new customer account, and complete an order using sandbox credentials on all available payment gateways.
- Verify Email Delivery: Test order confirmations, account creation emails, and password resets. Check that HTML email templates render properly without stripped styles or broken variable tags.
- Inspect Webhooks and API Endpoints: If your store integrates with external systems like Klaviyo, ERPs, warehouse dispatch systems, or accounting software, verify that API webhooks trigger successfully and payload formats remain intact.
Upgrading from PrestaShop 1.7 to 8 is a major project, but it gives you a fast, secure, and modern e-commerce foundation that will serve your business for years. With over 10 years of experience and 200+ successful projects, I help high-volume merchants complete seamless migrations without lost data or costly downtime. If you want an experienced developer to evaluate your architecture, get expert help today.
Frequently Asked Questions
Can I upgrade directly from PrestaShop 1.7 to 8 using the 1-Click Upgrade module?
While the 1-Click Upgrade module technically supports the jump, doing so directly on a live store almost always causes fatal errors due to PHP version conflicts and outdated third-party modules. You should only use the module on a dedicated staging clone with PHP 8.1 configured and non-compatible modules disabled beforehand.
Will my PrestaShop 1.7 theme work on PrestaShop 8?
Most 1.7 themes based on the Classic Theme engine can work with moderate code adjustments, but they rarely work right out of the box. You will need to update outdated Smarty syntax, check for deprecated JavaScript dependencies, and ensure custom checkout templates align with PrestaShop 8’s updated order flow.
What PHP version should I use for PrestaShop 8?
PrestaShop 8.0 and 8.1 run best on PHP 8.1, which delivers substantial performance improvements over PHP 7.4. While PrestaShop 8.1 introduces initial compatibility for PHP 8.2, PHP 8.1 remains the recommended choice because of wider third-party module support.
Final Thoughts
PrestaShop 1.7 has reached the end of its official support lifecycle. Remaining on it leaves your business vulnerable to unpatched security vulnerabilities and cut off from modern module ecosystems. However, jumping blindly into an upgrade without auditing your codebase, testing module dependencies, and staging the deployment is a risk you should never take. Plan meticulously, clean up your technical debt before running the migration, and treat the move to PrestaShop 8 as a long-term investment in your store’s stability.