PrestaShop 9.1 RC1 is open for testing!
The first Release Candidate of PrestaShop 9.1 is here. Help us validate it before the final release.
The first Release Candidate of PrestaShop 9.1 is now available for testing. This is the last major milestone before the stable release, and your feedback is what determines whether 9.1 ships on schedule and in great shape.

Download & testing instructions
What is a Release Candidate?
A Release Candidate is the final pre-release stage in our development cycle. All planned features are in place, and the focus has fully shifted to quality, stability, and catching any remaining regressions. RC1 is functionally what we intend to ship as the final 9.1 release. Any fixes applied from this point on will be based directly on your reports.
What’s inside PrestaShop 9.1 RC1?
All the features introduced during the beta phase are included. Here’s a quick recap of the highlights:
Hummingbird 2.0: new default theme
Hummingbird 2 is now the default theme in PrestaShop 9.1. Built on Bootstrap 5, it prioritizes performance, developer experience, and accessibility, achieving over 95% compliance with the European Accessibility Act (EAA).
Tech overview Release notes Discussions & feedback
Multi-carrier / Multi-shipping
PrestaShop 9.1 introduces shipment-based order management, giving merchants the ability to split and merge shipments within a single order. This removes the long-standing “1 order = 1 carrier” limitation and improves clarity for both merchants and customers.
Note: this feature is behind a feature flag.
Watch the demo Read the article
Improved Discounts
The discount system has been redesigned around four types (Catalog, Cart, Free Shipping, and Free Gift), replacing the legacy cart rules with a clearer and more performant structure.
Note: this feature is behind a feature flag.
Watch the demo Read the article
What is a feature flag?
Some 9.1 features are experimental and must be enabled manually before you can test them. You can find these settings under Advanced Parameters -> New & Experimental Features.Changelog
- Back Office:
- Improvement:
- #40720: Add actionUpdateDefaultCombinationAfter hook when default combination is set (by @Codencode)
- #40536: Add discountType endpoint (by @nicosomb)
- #40517: Add some help boxes to product page (by @Hlavtox)
- #40481: Improved UX for API client creation (by @kpodemski)
- #40330: Add usage limits fields for new discount system (by @boherm)
- #40094: Fix: Doctrine auto-mapping in modules: only the first subfolder inside src/Entity is recognized (by @Codencode)
- #39923: Improve wording of some settings, better explain the meaning of them (by @Hlavtox)
- #39459: Set optin and newsletter off for John DOE (by @Touxten)
- Bug fix:
- #40809: Clean discount form (by @jolelievre)
- #40743: Fix: Bug: when invoicing is disabled, changing order status to “paid=1” does not register any payment on the order (by @Codencode)
- #40710: Fix: Feature values count is duplicated when using “All shops” with multiple shops (by @Codencode)
- #40682: Fix the collision when we create / delete product customization in the same action (by @nicosomb)
- #40640: Fix EntitySearchInput::setValues forEach callback argument order (by @Codencode)
- #40620: Update AdminSecurity permissions logic in OrderController (by @rsoulard-prolaser)
- #40578: Dynamic pack quantity (by @jolelievre)
- #40563: Admin API improvements for combination endpoints (by @jolelievre)
- #40556: Fix: CsvFileReader service fails with “You have requested a non-existent service ‘session’” (by @Codencode)
- #40554: Fix: always display taxes total in order summary (by @Codencode)
- #40532: BO Product page, fix feature value collection indexes (by @jolelievre)
- #40525: Update module ps_apiresources (by @jolelievre)
- #40518: Fix position of minimum_product_quantity field in table (by @nicosomb)
- #40499: Fix: When saving an Attribute is_color_group is not updated. (by @Codencode)
- #40475: Fix link for redirection on country BO page (by @jolelievre)
- #40433: Fix: Module update problem (by @Codencode)
- #40329: Prevent NoResultException when checking for existing translations (by @ChillCode)
- #40317: Fix: Backoffice data grids can yield different random results every time (by @Codencode)
- #40066: Fix: [BO] Admin Countries page redirect issue with multishop after changing shop (by @Codencode)
- #40054: Use URL when building urls to prevent subtle mistakes with &? (by @tswfi)
- #40050: Fix: Incorrect redirect from HTTP to HTTPS on the admin login page when PrestaShop is in a subfolder (by @Codencode)
- #40036: BO - Product : Fixed feature display in multishop (by @Progi1984)
- #39854: Fix: Quick Access links redirect to root instead of subdirectory, causing 404 (by @Codencode)
- #38775: Fix: Multishop - error loading CMS pages removed from the default shop (by @Codencode)
- Refactoring:
- Improvement:
- Front Office:
- New feature:
- Improvement:
- #40758: Secure table name with bqsql in DB and DBQuery #33539 backport (by @jf-viguier)
- #40733: Bump prestashop/hummingbird to 2.0 (by @Progi1984)
- #40572: Add feature during theme enabling to unhook specific modules (by @jolelievre)
- #40537: Remove unnecessary force refresh in checkout (by @Hlavtox)
- Bug fix:
- #40814: Update classic theme to 3.1.1 (by @jolelievre)
- #40626: Fix “Free shipping” displayed for discounts with free shipping off an… (by @Hlavtox)
- #40614: Fix “Free shipping” displayed on cart when a discount haven’t free shipping enabled and with a reduction amount = 0 (by @boherm)
- #40538: Fix quantity input, add to cart button and availability labels when items are added in a cart (by @Hlavtox)
- #40246: Fix preview in multilang (by @tleon)
- Refactoring:
- #40673: Use proper delivery times (by @Hlavtox)
- #40662: Corrects the error message when the quantity is less than 1 in cart (by @Touxten)
- #40653: Add cart product presenter and cart availability (by @Hlavtox)
- #40570: Prevent accidental usage of quantity_wanted from request (by @Hlavtox)
- #40406: Comment how language setting works in FO (by @Hlavtox)
- Core:
- New feature:
- Improvement:
- #40833: Bump apiresources to 0.5.0 (by @boherm)
- #40811: Backport missing workflows from develop to 9.1.x (by @jolelievre)
- #40768: Integrate new header-stamp for 9.1.x branch (by @jolelievre)
- #40765: Dynamic PHP matrix in workflows for 9.1.x (by @jolelievre)
- #40730: Add hooks that enable to control free shipping price (by @Hlavtox)
- #40678: Restore dev version for ps_apiresources (by @nicosomb)
- #40603: Clean old cart rule migration (by @jolelievre)
- #40596: Discounts for guest, test scenario (by @kpodemski)
- #40546: Command : Added CLI for checking fixtures translations (by @Progi1984)
- #40520: Skip removed modules on enable theme (by @jolelievre)
- #40467: Chore: [composer] update prestashop/dashproducts (by @mattgoud)
- #40381: Remove
curl_closeobsolete function calls (by @ShaiMagal) - #40359: Use node 20.19.5 by default to build assets (by @jolelievre)
- #40353: Dynamise hook documentation generation based on Version (by @jolelievre)
- #40350: Remove the composer config to ignore audit (by @jolelievre)
- #40342: Improved-shipment: Global refactorisation (by @M0rgan01)
- #40269: Prevent database inconsistencies by preventing faulty group delete calls (by @Hlavtox)
- #40133: Update ca-bundle from 1.3.7 to 1.5.9 (by @tswfi)
- Bug fix:
- #40823: Don’t add “default” if “default” already in name for getFormattedName (by @boherm)
- #40776: Replace github action that sets up mysql in CI (by @Touxten)
- #40762: Replace github action that sets up mysql in CI (by @Touxten)
- #40657: Fix configuration of Dev mode and Debug profiling in the back office (by @kpodemski)
- #40656: Fix getting specific price for a given customer group (by @kpodemski)
- #40590: Fix creating orders for guests (by @kpodemski)
- #40588: Update Changelog 9.0.3 (by @jolelievre)
- #40585: Preliminary tasks for patch version 9.0.3 (by @jolelievre)
- #40562: Update VAT rates for Estonia and Romania (by @Codencode)
- #40498: Fix: doctrine throws error from the beginning: There is no column with name “theme_name” on table “ps_image_type” (by @Codencode)
- #40496: Fix some type issues related to carriers (by @Hlavtox)
- #40480: Improvements to Makefile (by @kpodemski)
- #40479: Fix legacy profiler in the back office (by @kpodemski)
- #40423: Fix empty extra vars / product list when using the new automatic text email option (by @matrixino)
- #40400: Simplify cart rule minimal value by avoiding subtracting values (by @Hlavtox)
- #40040: Always request a non cached result in Order::getIdByCartId (by @ilsalvopss)
- Refactoring:
- #40798: Fix, comment and improve country initialization logic related to shipping (by @Hlavtox)
- #40604: Update classic to 3.0.6 (by @Hlavtox)
- #40432: Simplify some of cart logic to gradually move to single source of truth (by @Hlavtox)
- #40389: Comment logic related to addresses and their initialization (by @Hlavtox)
- Installer:
- Improvement:
- #40839: Update default catalog 9.1.x (by @ps-jarvis)
- #40824: Update default catalog 9.1.x (by @ps-jarvis)
- #40468: Update default catalog 9.1.x (by @ps-jarvis)
- #40397: Update default catalog 9.1.x (by @ps-jarvis)
- Bug fix:
- #40574: Fix Makefile to prevent build assets twice (by @jolelievre)
- #40457: Fix installation theme step order (by @jolelievre)
- #40077: Install Console : Allow characters “<” & “>” in admin password (by @Progi1984)
- Improvement:
- Web Services:
- Bug fix:
- #40442: Fix: PHP Fatal error when deleting product image by Webservice API #39111 (by @semicolonSimp)
- Bug fix:
- Localization:
- Bug fix:
- #40521: Fix default fixtures translation (by @jolelievre)
- Bug fix:
- Tests:
- Improvement:
- #40789: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984)
- #40734: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984)
- #40691: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984)
- #40674: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984)
- #40645: Functional Tests : Fixed campaigns (Part 5) (by @Progi1984)
- #40607: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984)
- #40565: Functional Tests : Fixed campaigns (Part 4) (by @Progi1984)
- #40512: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984)
- #40469: Functional Tests : Fixed campaigns (Part 3) (by @Progi1984)
- #40458: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984)
- #40436: Functional Tests : Fixed campaigns (Part 2) (by @Progi1984)
- #40434: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984)
- #40428: Functional Tests : Fixed campaigns (Part 1) (by @Progi1984)
- #40425: Functional Tests : Use Hummingbird as front theme for Audit/Modules/Regression/Sanity Scenarios (by @Progi1984)
- #40419: Functional Tests : Use Hummingbird as front theme for BO Scenarios (by @Progi1984)
- #40418: Enable Hummingbird as default theme (by @Progi1984)
- #40363: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984)
- #40128: Functional Tests : Hummingbird 2 (as secondary theme) (by @Progi1984)
- Bug fix:
- #40684: Functional Tests : Enable scenarios (by @Progi1984)
- #40646: Fixtures : Enable payment modules for US (by @Progi1984)
- Refactoring:
- #40405: Functional tests - Add enable/disable the classic theme (by @nesrineabdmouleh)
- #40402: Functional tests - Delete enable/disable the theme hummingbird (by @nesrineabdmouleh)
- Improvement:
How to test PrestaShop 9.1 RC1
- Download and install RC1 in a test or staging environment (never on a live shop).
- Enable the relevant feature flags to test experimental capabilities.
- Test your themes, modules, and customizations for compatibility.
- Report any bugs or regressions on GitHub with clear reproduction steps.
Requirements for PrestaShop 9.1 RC1
- PHP 8.1 (up to PHP 8.5 is supported)
- Composer 2
- Node.js 20 and NPM 10
Please check all system requirements in the documentation. You must also have Git installed on your machine.
Creating a custom ZIP
If you prefer not to use the Classic version, you can build a custom ZIP file with the PrestaShop Release Creation tool:
- Clone the repository using the
9.1.0-rc.1tag:git clone [email protected]:PrestaShop/PrestaShop.git --branch "9.1.0-rc.1" . - Run
composer create-releaseorphp tools/build/CreateRelease.phpin the root of the repository. - The ZIP file will be generated in the
tools/build/releases/directory.
Known limitations
No upgrade path
You cannot upgrade from Beta to RC1, nor from RC1 to the final release using the Update Assistant module. Always use a fresh installation for testing pre-release versions.Do not install on live shops. This version may still contain bugs. It is intended for testing purposes only.
Your feedback matters
RC1 is the last major checkpoint before the final release, and your testing during this window directly shapes the quality of what ships. There’s no beta cycle left. Only your reports between now and the final release.
Here is how you can help:
- Install RC1 in a dedicated test environment.
- Enable feature flags to verify the new functionality.
- Test your setup: themes, modules, integrations, and customizations.
- Report issues early via GitHub Issues, with environment details and reproduction steps.
You’re also welcome to discuss your findings in the GitHub Discussions or on Slack.
Thank you to our contributors
PrestaShop 9.1 RC1 would not exist without the dedication of our community. A warm welcome to the new contributors joining for the first time in this release cycle: Salvo Passaro, Giuseppe Tripiciano, rsoulard-prolaser, and semicolonSimp. Thank you for your contributions!
A huge thank you to everyone who contributed to this release! Your dedication helps make PrestaShop stronger, more secure, and better for everyone. We truly appreciate your time and expertise.
Want to join the movement? Start contributing today and help shape the future of open source e-commerce!
boherm
ChillCode
Codencode
Hlavtox
ilsalvopss
jf-viguier
jolelievre
kpodemski
M0rgan01
matrixino
mattgoud
nesrineabdmouleh
nicosomb
Progi1984
rsoulard-prolaser
semicolonSimp
ShaiMagal
tleon
Touxten
tswfi
Final notes
We’d like to thank everyone who has tested, contributed, and supported the development of PrestaShop 9.1 so far. Your help is what makes this community and this software stronger.