March was a milestone month for PrestaShop. The long-awaited 9.1 release shipped with Hummingbird 2.0 as the default theme, the community gathered at the first Ecommerce Open Source Summit, and the March Live Update featured PrestaShop’s new leadership for the first time on the stream.

Core Monthly banner

Dear community,

March 2026 will be one to remember. PrestaShop 9.1 is now available, making Hummingbird 2.0 the default storefront experience for every new installation. Alongside this major release, we published a security patch for the 8.2 branch, the first-ever Ecommerce Open Source Summit took place in Paris, and closed the month with a Live Update where PrestaShop’s new leadership spoke directly with the community. On the blog, we also shared how AI helped accelerate API development and introduced the example modules repository. Let’s dive in.

PrestaShop 9.1: Hummingbird takes center stage

On March 23rd, PrestaShop 9.1 was officially released. This is the version many developers and agencies have been waiting for. Hummingbird 2.0 is now the default front office theme, delivering a modern, accessible, and high-performance storefront out of the box. For those who followed the v2 architecture article published in February, this is the natural next step: what was experimental is now the baseline.

PrestaShop 9.1 is available!

Beyond the theme, 9.1 introduces two experimental features behind feature flags. The multi-carrier shipping system (also known as “Shipments”) rethinks how orders with multiple carriers are handled, and the redesigned discount system brings a cleaner, more reliable approach to managing promotions. Both features are opt-in, giving merchants and developers time to test before committing. If you want to understand these features in depth, the dedicated articles on Shipments and Improved Discounts are well worth reading.

Security patch for the 8.2 branch

The same day, PrestaShop 8.2.5 was released. This security patch addresses two vulnerabilities: a stored XSS issue in back office templates (requiring prior access to exploit) and an improper use of the validation framework. If you are still running 8.2.x, updating is recommended. As a reminder, the 8.2 branch receives security patches only, so planning your migration to PrestaShop 9 remains a good idea.

Developer resources and community events

March was also a busy month on the blog. We published an article introducing the example modules repository, a collection of over 20 small, focused modules that demonstrate specific development patterns in practice. If you have ever wanted to see how a particular PrestaShop feature works in real code, this is the place to look.

API Hackathon powered by Claude Code

On the AI front, we shared how four PrestaShop teams came together for an API hackathon powered by Claude Code, producing 14+ new Admin API endpoints in a single day. The article goes into the process, the results, and the reusable tooling that came out of it.

Ecommerce Open Source Summit 2026

The community also gathered in Paris for the inaugural Ecommerce Open Source Summit (EO2S), organized by Friends of Presta. The event brought together developers, agencies, and ecommerce professionals for a full day of talks, including the first joint appearance of PrestaShop and Sylius since the Cyber_Pixel acquisition. The keynote featured an exclusive CMS Ecommerce Barometer for France, and Soledis presented their 400-hour B2B contribution alongside Kiwik’s work on Custom Data. A great sign for the health of the open source ecommerce community.

March Live Update: new leadership meets the community

On March 31st, we hosted the March Live Update, and it was a special one. For the first time, PrestaShop’s new leadership (CEO Mikolaj Krol, COO Damian Murawski, and General Manager Olivier Binet) joined the session together to say hello, answer community questions, and share their perspective on the project’s direction. The session also included a detailed preview of the upcoming One-Page Checkout feature planned for PrestaShop 9.2. If you missed it, the replay is available on YouTube.

Most active contributors

March was one of the busiest months in recent memory, with 372 pull requests merged across the project. Here are the most active contributors by number of PRs:

  1. @ga-devfront (84 PRs), who rolled out automated issue-to-project workflows across nearly every module in the organization, a big step toward unified project management.
  2. @Progi1984 (29 PRs), with test improvements, CI configuration, and label synchronization work.
  3. @Quetzacoalt91 (26 PRs), driving the Update Assistant 7.6 release with module compatibility checks and upgrade support.
  4. @nesrineabdmouleh (25 PRs), building out the discount V2 and multicarrier test suites in the UI testing library.
  5. @jolelievre (15 PRs), laying the groundwork for the new pricing architecture.

Spotlight on community contributors

March saw strong contributions from the community. @Codencode had another strong month, fixing a fuzzy search SQL bug, refactoring attachment download URLs for SEO-friendly patterns, and fixing hook names in the special offers module, among other contributions across the core and documentation. @soledis-contributeur kept pushing forward the B2B initiative, adding business entity management features and the B2C/B2B mode settings across the core and the Update Assistant. @axel-paillaud submitted five documentation pull requests, fixing namespace references, endpoint URI templates, and URL corrections. @Prestaworks improved CMS category page presentation and fixed product name handling for attributes. Finally, @jf-viguier added the useful --skip-overrides option to the PrestaShop CLI module command and updated configuration documentation.

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!

Beyond these spotlights, March was an exceptionally active month across the ecosystem. The Update Assistant shipped version 7.6.0, a major update that adds module compatibility checks against both the Marketplace and open source project APIs, improved error reporting, and full support for upgrading to PrestaShop 9.1.0. A follow-up patch 7.6.1 was released shortly after to fix an edge case. Hummingbird saw continued jQuery removal efforts and dynamic checkout step generation. The One-Page Checkout module (ps_onepagecheckout) received its first batch of feature work. And the new pricing architecture started taking shape on the develop branch. For the full picture, scroll down through the complete list of pull requests below.

Project releases

A quick update about PrestaShop’s GitHub issues and pull requests:

Code changes in the ‘develop’ branch

Back office

  • #41012: Add shipments on edit modal. Thank you, @Poulinhoo
  • #40960: Handle shipment product quantity update. Thank you, @M0rgan01
  • #40944: Add a modal to improve shipments inside order page for editing a product. Thank you, @Poulinhoo
  • #40918: Add GetShipmentsForOrderDetail query. Thank you, @M0rgan01
  • #40912: Handle no value objects, like NoStateId, NoCombinationId in ValueObje…. Thank you, @jolelievre
  • #40892: Discount UI improvement. Thank you, @jolelievre
  • #40874: Update eligible carriers calculation for multi-shipment. Thank you, @M0rgan01
  • #40867: Hide expiration field when “period never expires” is checked. Thank you, @nicosomb
  • #40852: Add soft delete on multishipment. Thank you, @Poulinhoo
  • #40846: Update split and merge forms for multi-shipment. Thank you, @M0rgan01
  • #40819: Add possibility to create a shipment on an existing order. Thank you, @Poulinhoo
  • #40685: EPIC1-US1.2 : B2B Model Activation : add “B2C mode” and “B2B mode” settings. Thank you, @soledis-contributeur

Core

Front office

  • #40864: Feat(OPC): introduce template feature flag for One-Page Checkout. Thank you, @ThbPS
  • #40308: CMS pages listed on CMS Category page should be presented properly. Thank you, @Prestaworks
  • #39949: Refactor attachment download URLs to use SEO-friendly pattern /attachment/{id}-{filename}. Thank you, @Codencode

Installer

Tests

  • #41112: Functional Tests : API : GET /discount-types. Thank you, @Progi1984
  • #41060: Functional Tests : BO - Discount - Minimum purchase amount (On Free shipping). Thank you, @Progi1984
  • #41056: Functional tests - Add new UI test to check free gift in discount V2 page . Thank you, @nesrineabdmouleh
  • #41055: Add UI test for theme/logo > see all theme’s modules button. Thank you, @nicosomb
  • #41031: Functional tests - Refacto discount V2 > Minimum purchase amount. Thank you, @nesrineabdmouleh
  • #40973: Nightly : Change hour of start. Thank you, @Progi1984
  • #40957: Functional tests - Add some check to BO - Orders - Multicarrier. Thank you, @nesrineabdmouleh
  • #37161: Functional tests - Migrate link list pages to ui-testing-library and refacto CRUD linkList. Thank you, @nesrineabdmouleh

Code changes in the ‘9.1.x’ branch

Back office

  • #41018: Fix #33921 - Add specific error message when embedded HTML is blocked. Thank you, @mattgoud
  • #40964: Use sticky positioning for module selection panel in Positions page. Thank you, @intraordinaire
  • #40745: Allow category tree selector to open when no default category. Thank you, @Kaikina

Core

  • #41086: Fix tests with admin api. Thank you, @boherm
  • #41059: Set version to 9.1.1. Thank you, @Progi1984
  • #41041: Add workflow to automatically set milestone based on target branch. Thank you, @jolelievre
  • #41033: Update Symfony components after 6.4.35 release. Thank you, @nicosomb
  • #41009: Improve bulk actions returns from admin api. Thank you, @boherm
  • #40894: EditStateHandler : Fixes if ZoneId or Country are null (partial update). Thank you, @Progi1984
  • #40888: Add ShopContext and LanguageContext to FeatureAttributeRepository. Thank you, @boherm
  • #40834: Use constants for range behavior. Thank you, @Hlavtox
  • #40655: Fix saving module settings when legacy profiler enabled. Thank you, @kpodemski
  • #40651: Return correct product name for attributes. Thank you, @Prestaworks

Front office

  • #41087: Add checkout step properties. Thank you, @ga-devfront
  • #40853: Fix fuzzy search SQL when closest word contains apostrophe (#40847). Thank you, @Codencode
  • #40795: Fix: Fatal error in hookActionCartSave when switching language and calling Product::getPriceStatic() or Cart::getProducts(). Thank you, @Codencode

LO

Tests

Code changes in the ‘9.0.x’ branch

Back office

  • #40736: Fix: Error when creating an attribute for a group in “All shops” context with multiple shops. Thank you, @Codencode

Tests

  • #40990: Functional Tests : Bump @prestashop-core/ui-testing. Thank you, @Progi1984
  • #40954: Functional Tests : Improve nightly. Thank you, @Progi1984
  • #40946: Functional Tests : Improve functional:BO:orders:03-05. Thank you, @Progi1984
  • #40933: Functional Tests : Improve functional:BO:orders:01-view-and-edit-order. Thank you, @Progi1984
  • #40931: Functional Tests : Audit : BO - Wall of Fame. Thank you, @Progi1984
  • #40911: Functional Tests : Improve functional:BO:orders:03-05. Thank you, @Progi1984

Code changes in modules, themes and tools

.github

  • #41: Enhance stale action configuration by adding ‘operations-per-run’ input for rate limiting. Thank you, @cnavarro-prestashop
  • #40: Github Action : Sync Labels (Added new labels). Thank you, @Progi1984
  • #39: Github Action : Sync Labels (Fixed token). Thank you, @Progi1984
  • #38: Github Action : Sync Labels. Thank you, @Progi1984
  • #37: Add stale issue management action. Thank you, @cnavarro-prestashop
  • #36: Enhance changelog script with new contributors grid. Thank you, @kpodemski
  • #35: In shared PHPStan action add an input to prevent automatic merge. Thank you, @jolelievre
  • #34: GitHub add issue to project workflow. Thank you, @ga-devfront

API Resources

Auto Upgrade module

Automated tests on Pull Requests

Available quantities statistics module

Best-selling products statistics module

Best categories statistics module

Best customers statistics module

Best manufacturers statistics module

Best sellers module

Best suppliers statistics module

Best vouchers statistics module

Brands list module

Carrier distribution statistics module

Cash on delivery module

Catalog evaluation statistics module

Catalog statistics module

Changes in developer documentation sources

Check payment module

Classic theme

  • #205: GitHub add issue to project workflow. Thank you, @ga-devfront
  • #201: ContactForm: Hide subject dropdown when only one contact is available. Thank you, @Codencode

Contact Form module

Contact informations module

Cross-selling module

Currency selector

Customer data privacy block module

Customer reassurance block module

Custom text module

Dashboard Activity module

Dashboard Goals module

Dashboard Products module

Data mining for statistics module

Distribution API

  • #84: Enable updates to PrestaShop 9.1.0 with Update Assistant 7.6. Thank you, @Quetzacoalt91
  • #83: Add 9.1.0 and 8.2.5 release notes. Thank you, @ga-devfront
  • #82: Enable updates to PrestaShop 8.2.5. Thank you, @Quetzacoalt91
  • #81: Display all the Classic versions that exist for a same PrestaShop release. Thank you, @Quetzacoalt91

Distribution API Client

Docker-templates

  • #13: Backport changes on docker compose of autoupgrade stack. Thank you, @Quetzacoalt91

Docker images

Email Alerts module

Email subscription module

Example modules

  • #245: Changes to example-modules, batch 2. Thank you, @kpodemski
  • #243: PrestaShop 9.1 - Improvements / various fixes. Thank you, @kpodemski

Faceted search module

GDPR module

Google Analytics module

Google Sitemap module

Hummingbird theme

  • #972: backport: Cherry-pick AI context and CI updates from #961 and #964. Thank you, @ga-devfront
  • #971: Add TS any and strict typing rules on CONTEXT.md. Thank you, @ga-devfront
  • #970: Dynamically generate checkout navigation steps. Thank you, @ga-devfront
  • #968: Remove JQuery from filter-handler.ts. Thank you, @ga-devfront
  • #967: Remove JQuery from productcomments.ts. Thank you, @ga-devfront
  • #964: Remove AI config files from build artifact. Thank you, @ga-devfront
  • #961: Introduce AI assistant context and IDE rules for Hummingbird V2+. Thank you, @ga-devfront
  • #960: backport 2.x to develop. Thank you, @ga-devfront
  • #959: Add autoindex and missing index.php files. Thank you, @ga-devfront
  • #958: Add LICENSE.md and header stamps check. Thank you, @ga-devfront
  • #956: Refactor product actions into a block. Thank you, @Maofree
  • #951: Forward port 2.x into develop. Thank you, @tblivet
  • #950: Backport PR 947 from develop to 2.x. Thank you, @tblivet
  • #949: Fix checkout step navigation and CTAs for virtual-only carts. Thank you, @tblivet
  • #947: fix: add id_product_attribute when adding to cart from product list. Thank you, @prestamodule
  • #944: GitHub add issue to project workflow. Thank you, @ga-devfront
  • #941: fix: allow default message to be displayed if psData is not set in usePasswordPolicy. Thank you, @aeyoll

Image slider module

Kanbanbot

  • #85: Add NotifyCommunityQA command and handler. Thank you, @boherm

Language selector module

Localization Files

  • #60: Turkey updated its tax rates on July 10, 2023.. Thank you, @metineren
  • #58: Finland tax change 14% to 13.5% on 1.1.2026. Thank you, @tswfi

New Products module

Newsletter statistics module

Order Notifications on the Favicon module

Pages not found module

PrestaShop Flashlight

  • #177: chore(ci): Update actions and dependencies to latest versions. Thank you, @Venatum
  • #173: document how to use a local zip as prestashop source. Thank you, @Clap404
  • #172: chore(ci): Update actions and dependencies to latest versions. Thank you, @Venatum
  • #171: Added webp support. Thank you, @Alexandre-Lematre

PrestaShop test scenarios

Product Comments module

Product details statistics module

Products in the same category module

Ps_onepagecheckout

Registered customer information statistics module

Registrations statistics modules

Sales and orders statistics module

Search Bar module

Share Buttons module

Shopping cart module

Shop search statistics module

Social Follow module

Special offers module

  • #25: GitHub add issue to project workflow. Thank you, @ga-devfront
  • #22: fix(hooknames): correct SpecificPrice hook names (Core* hooks do…. Thank you, @Codencode

Stats Dashboard module

Suppliers list module

The PrestaShop open source project

Theme customization module

Traces

UI Testing Library

Viewed products block module

Wire payment module

Wishlist block module


Acknowledgments

Thank you to all contributors this month!

Thank you to the contributors whose PRs haven't been merged yet! And of course, a big thank you to all those who contribute with issues and comments on GitHub!

Coding is only just one of the ways you can contribute. Here are some ideas on how you can get involved in the project.

If you need help with contributing or have questions about it, feel free to contact me, @kpodemski, on the project’s Slack.

Happy contributin’ everyone!