WooCommerce 10.0 focused on accessibility and checkout. The official release notes list frontend changes aimed at WCAG 2.2 AA conformance, shareable checkout URLs, coupon fixes and a CSV product importer that accepts rich content. It is backwards compatible, and it includes database updates, so back up before you update.
This post covers what the 10.0 release post states, what to check on your own store, and how to update WooCommerce safely this time and every time after. It ends with where to find the notes for later releases.
WooCommerce 10.0 at a glance

- Headline changes: frontend accessibility improvements, shareable checkout URLs, coupon improvements, and rich content support in the CSV product importer.
- Compatibility: backwards compatible, according to the release post.
- Database: the release includes database updates, so WooCommerce will ask you to run an update after you install it.
- Size: 405 commits from 67 contributors.
- Stable tag: the 10.0.x series settled on 10.0.2, the first stable release of that series.
Everything in this post about the release itself comes from the WooCommerce developer blog: the 10.0 release post, the 10.0.1 and 10.0.2 dot release post, and the developer advisory on Cart and Checkout container queries. If a detail matters for your store, read the original post.
Frontend accessibility improvements
The headline of the release is accessibility. WooCommerce states that 10.0, used with a core WordPress theme or an accessibility-ready theme, is fully conformant with Web Content Accessibility Guidelines (WCAG) 2.2 level AA and substantially conformant with level AAA.
The work spans many changes. The release post names three areas:
- A semantic markup overhaul so screen readers interpret pages better.
- Form feedback and error handling with clear status messages and error identification.
- Keyboard-first navigation and focus management across the block-based cart, product galleries and checkout.
The conformance statement depends on your theme. If your theme overrides WooCommerce templates or adds its own markup, the result on your store can differ from WooCommerce’s own. After updating, tab through your cart and checkout with the keyboard and confirm that focus is visible and the order makes sense.
Shareable checkout URLs
Merchants can now create links that fill the cart with specific products and variations, apply a coupon and send the customer straight to checkout. That makes ready-to-buy bundles easy to share in an email campaign, on social media or on a landing page.
The release post gives this example, with product IDs and quantities followed by a coupon code:
https://yourstore.com/checkout-link/?products=123:2,456:1&coupon=SPRING10
In that example product 123 is added with a quantity of 2, product 456 with a quantity of 1, the coupon SPRING10 is applied, and the customer lands on the checkout page. Treat the URL as an example from the official post and test your own link on a staging copy before it goes into a campaign.
Coupon improvements
Several long-standing coupon issues were fixed, on both the admin side and in the cart.
- Admin errors now show when you save a coupon with invalid data, so you can see which values were not saved.
- A new validation rule stops you saving a Maximum spend that is lower than the Minimum spend.
- The coupon expiry date placeholder is translatable.
- Coupons that apply to a limited number of products now prioritise higher-priced items by unit price rather than subtotal. The release post says this fixes a case where discounts shrank when more items were added to the cart.
If you run restricted coupons, such as a discount on the two most expensive items, retest them after the update. The calculation changed, and your totals may differ from before.
CSV product importer accepts rich content
Before this release, product CSV files with HTML in the descriptions could not be imported cleanly. People stripped the formatting by hand or disabled the MIME check for the whole site, which the release post calls a dangerous workaround. The importer now handles HTML content, such as tables and bold text, while still blocking other harmful imports. That helps bulk updates and moves from other platforms.
Smaller changes worth knowing
Sale badge text filter
A new filter, woocommerce_sale_badge_text, lets developers change the sale badge label in block-based layouts. It runs on the frontend only and receives the full product object, so the text can change by product or category.
Fewer loading indicators in the Checkout block
The Checkout block now shows shipping option loading states only when a field that affects shipping changes: country, state, postal code or city. Changing a name, address line, company or phone number no longer triggers them.
Payment setup inside Launch Your Store
The WooPayments native onboarding, introduced in the previous release, is now part of the Launch Your Store flow, so a new store can set up payments without leaving those screens.
Simplified Cart block totals
The shipping calculator was removed from the Cart block totals, along with some wording and duplicate values. Customers now see shipping rates at checkout, after they enter an address, or they choose Local Pickup. They can still apply coupons on the cart page. If your store or a customization relied on the cart-page shipping calculator, check how your cart looks now.
Beta blocks introduced or changed
Add to Cart + Options (beta)
This new beta block, available in all block themes, customizes the add-to-cart form on a single product page. You can reorganize, remove or add inner blocks per product type. It is built on the Interactivity API, so products can be added without a page reload, quantity changes stay in sync with the Mini-Cart and Product Collection blocks, and variation attributes can display as pills instead of dropdowns. Extension developers are asked to test with it and report limits on GitHub.
Product Gallery (beta)
The Product Gallery block now uses the Product Image block to display images, and WooCommerce flags this as a breaking change for the beta block. If you inserted the block before 10.0, the instruction is to open the editor where you use it, delete the block and insert it again. The release post set a grace period until 10.2, after which the compatibility bridge would be removed and an old block could break on the frontend. If you have not reinserted it yet, do that now.
For developers: container queries and the dot releases
Cart and Checkout blocks now define their top-level wrappers as CSS containers with container-type: inline-size. Developers can style inner content with @container queries, or with the new SCSS mixins, instead of relying on the JavaScript-added classes .is-large, .is-medium, .is-small and .is-mobile. Those classes remain in the DOM for compatibility, but WooCommerce recommends the new approach. The Checkout Order Summary already uses the mixins, so review your styles if a plugin or theme touches that area. Another container between the wrapper and your element can interfere with the queries.
The release was delayed by a week after a fatal-error issue with additional strict_types checks on hook callbacks that run outside WooCommerce core. Two dot releases followed. 10.0.1 reverted a strict types declaration in the session handler that could cause a fatal error under some conditions. 10.0.2 restored previous session cookie behaviour to prevent conflicts with classes extending the session handler, including a conflict with the WooPayments session override. Version 10.0.2 is the first stable release of the series.
The practical lesson is to wait for the first dot release on a busy store. Update a staging copy on release day and your live store once the first fixes are out.
How to update WooCommerce safely
These steps apply to 10.0 and to every release after it. Follow the order. Most update disasters come from skipping the first two.
1. Read the release post first
Each release has a post on the WooCommerce developer blog. Look at three lines near the top: whether the release is backwards compatible, whether it includes database updates, and which version is the latest stable tag. Then read the breaking changes and developer advisories for anything your store touches.
2. Take a full backup you can restore
Back up the database and the files, and store the backup off the server. A backup you have never restored is a hope, not a backup, so restore it once to a test site to prove it works. This matters most for releases that include database updates, because those changes are not undone by reinstalling the old plugin files.
3. Update a staging copy first
Clone the live site to a staging environment. Many hosts include one-click staging, and the hosting guide covers what to look for. Update WooCommerce there first, run the database update, and check the store.
4. Check extension and theme compatibility
List every WooCommerce extension, payment gateway and shipping plugin you run, and check each one’s changelog or support page for compatibility with the new version. Open the system status report in the WooCommerce admin to see the WordPress and PHP versions you run and whether any template overrides are outdated. If your theme overrides WooCommerce templates, compare those files against the new versions before you update. The WooCommerce page on WordPress.org lists the versions of WordPress and PHP the plugin requires.
5. Update during a quiet period
Pick a low-traffic window, and avoid sale days. Put the store in maintenance mode if you take orders around the clock, or at least pause campaigns that send traffic to checkout. Update WooCommerce, then its extensions, then the theme, so you can tell which step caused a problem.
6. Run the database update prompt
After an update that includes database changes, WooCommerce shows an admin notice asking you to run the database update. Run it, and leave the browser alone until it finishes. On a store with many products or orders it can take a while and runs in the background, so check the notice again before you test. Do not deactivate WooCommerce or restore files halfway through.
7. Test the money paths
Place a test order with each active payment gateway and each shipping method. Apply a coupon, check the cart and checkout on a phone, and confirm that order emails arrive. Then open the Orders screen and check the test order. For 10.0 specifically, check restricted coupons, the Cart block, and any Product Gallery block.
8. Know your rollback before you need it
The safest rollback is restoring the backup you took in step 2, because it returns the files and the database together. Rollback plugins can reinstall an earlier plugin version, but they do not reverse database updates that already ran. If the update broke something, decide quickly: restore the backup, or fix forward if a dot release already addresses the issue.
The official walkthrough is WooCommerce’s how to update WooCommerce guide.
Where to find later release notes
- The releases section of the WooCommerce developer blog carries a post for every release, with highlights, database update notes and developer advisories.
- Dot release posts on the same blog list fixes for the first weeks after a major release.
- The changelog tab on the WooCommerce page at WordPress.org lists every change by version.
- The release post links to the full changelog and to GitHub, where you can report a bug.
Check these before each update, not after. It takes five minutes and tells you whether the release touches checkout, the database or the blocks you use.
Frequently asked questions
What is new in WooCommerce 10.0?
The main changes are frontend accessibility improvements, shareable checkout URLs, coupon improvements and a CSV importer that accepts rich content. It also brings the Add to Cart + Options and Product Gallery beta blocks, a simplified Cart block and CSS container queries for Cart and Checkout.
Is WooCommerce 10.0 backwards compatible?
Yes, the release post states that it is backwards compatible. A few items still need attention, such as the Product Gallery beta block, which has to be reinserted, and the Cart block, which no longer shows a shipping calculator.
Does WooCommerce 10.0 need a database update?
Yes. The release includes database updates, and WooCommerce asks you to run them after installing the update. Take a backup first.
Should I update the day a release comes out?
On a store that takes orders daily, update a staging copy first and wait for the first dot release before updating the live site. The 10.0 series needed two dot releases to settle.
How do I roll back a WooCommerce update?
Restore the backup you took before the update, because it returns files and database together. Reinstalling an older plugin version alone does not undo database updates that already ran.
Where can I read the release notes for newer versions?
Use the releases section of the WooCommerce developer blog, the changelog tab on the WordPress.org plugin page, and the full changelog linked from each release post.
Will the update affect my theme?
It can, if your theme overrides WooCommerce templates or styles the Cart and Checkout blocks with width-based classes. Compare your overridden templates against the new versions and test the Checkout Order Summary on staging.
Try your store on a live demo
If you are choosing a theme for a WooCommerce store, open the live demos to see store layouts in a working site. For related reading, see how the main ecommerce platforms compare, WooCommerce subscription plugins, and the best multi-vendor WordPress themes.