WooCommerce 9.4 has been released on November 11, 2024.
ADVISORY NOTE: 9.4.0 is available on WordPress.org however, we have updated our stable tag to the 9.4.1 dot release.
This post highlights what’s new in this version of WooCommerce.
See our update guide.
Download directly from WordPress.org.
Other important information:
- 📀 This release does include a database update.
- See more
Latest Release:
👉 WooCommerce 9.4.1 (Stable)
About:
- ✅ Backwards compatible
- Commits: 320
- Contributors: 80
Whats coming in 9.4
Product collection block
This release will see a number of improvements in the Product collection block. The block will now only render when it contains products or when a “no results” block is explicitly present, ensuring a cleaner display for empty collections. This ensures a cleaner UI and a faster experience for users.
We’re also introducing new JS events as we move toward consolidating all product grid functionalities within the Product Collection block. This shift will enhance the experience by integrating features from existing product grids into the Product Collection block. To support this, new JS events have been added to replace actions previously emitted by other grid blocks. Check out our advisory on migrating to the new event structure or refer to our documentation for more details.
Product details block
Add: ‘Show tab title’ attribute to the Product Details blockPull Request #50884
By default, the Product Details block displays a non-customizable large title of the currently selected tab. In this release, we add a new Show tab title in content attribute to the Product Details block, so the user can customize if the title will be displayed or not.
More options for express checkout
[Feature] Express Checkout Improvements #50791
We’ve improved the functionality of the express checkout in the Cart and checkout blocks, introducing customization options for express payment buttons (adjustable height and border radius), displaying an active express payment methods list upon clicking the Express Payment block, and fixing layout issues like button container breaks and improper rendering at certain widths. While style control is currently limited to a few payment extensions, we’re working on expanding support.
The editor now displays active payment methods in real-time, improving layout accuracy. Currently, these styling controls are supported by select payment extensions, and we encourage developers to update their payment integrations for full compatibility with these new features.
Searching inside of WooCommerce
In app search improvements feature branch #51413
Search in WooCommerce > Extensions page has been improved, now enabling you to explore the complete extensions catalog on WooCommerce.com from the comfort of your own dashboard.
Remote error logging
We are now ready to ship this feature which we originally announced in 9.3. Since then, we’ve made changes to make it easier for store owners to debug fatal errors. The feature is meant to improve the stability and reliability of WooCommerce stores by logging WooCommerce Core PHP and JavaScript fatal errors to a remote logging service when users opt-in to tracking. The feature will allow us to identify and fix issues more quickly, improving debugging capabilities and enhancing store owners’ support.
Brands Added with Feature Flag
The Brands feature is now available for testing. It is currently turned off for all customers, however please visit our detailed post on technical implementation and testing feedback for this release cycle.
Brands allows you to create and manage brands for stores and assign them to products, similar to Categories. With brand short-codes, widgets, and blocks, you can create dedicated brand pages, display brand details on product pages, and help shoppers navigate stores using brand-specific navigation menus. Additionally, you can now limit coupon use to specific brands.
API Updates
Other important information
🚨 Known issues: Translation loading changes in WordPress 6.7
WordPress 6.7 introduces changes to how translations are loaded, aligning with best practices for internationalization. These updates may trigger debug warnings for some plugins, including WooCommerce, particularly when other plugins load WooCommerce code early. While we’ve made adjustments in WooCommerce 9.4 to mitigate this, production sites are advised to set WP_DEBUG_DISPLAY
to false to prevent notices from showing on the frontend. For more guidance, check out developer advisory.
Database updates
💿 wc_update_940_add_phone_to_order_address_fts_index
→ Makes phone numbers searchable via full text search for orders #51065
💿 wc_update_940_remove_help_panel_highlight_shown
→ Cleans up unused meta data related to the help panel spotlight feature (which is no longer used) #51249
Changelog
See all bug fixes and improvements
- Fix – Product grid blocks: fix Image aspect ratio with WordPress 6.7 #52431
- Fix – Product Image Gallery: Render placeholder in Editor in WordPress 6.7 #52432
- Fix – Support situations in which (WooCommerce) translations are inadvertently loaded too early. #52199
- Fix – Add a retry mechanism to the query to obtain the SKU lock for product creation through the API. #51735
- Fix – Fix
Error: Failed opening required '.../wp-content/plugins/woocommerce/src/StoreApi/Schemas/V1/AI/ProductsSchema.php
fatal error #51912 - Fix – Resolved fatal error when applying Brands-restricted coupon #51577
- Fix – Fix CSS issue with Safari 18.0 on the product form page. #51734
- Fix – Add a new notice to the plugins list for products used without subscriptions reminding them to purchase. #51060
- Fix – Added missing wp-block- classes to order confirmation, store notices, and breadcrumb blocks. #51380
- Fix – Added pre-API call permission checks for some API calls that were being called on non-admin accessible screens #51406
- Fix – Add focus styles to the Checkout block select field. #51332
- Fix – Adds a function_exists() check so that we don’t add a secondary fatal in remote logging if wp_get_current_user does not exist yet #51302
- Fix – Adjust Mongolia postcode validation to be 5 digits or 5 digits followed by 4 digits. #50279
- Fix – Bust WC object cache on direct post meta update to prevent stale cache read. #50215
- Fix – Conditionally set new order email sent meta field #50858
- Fix – Default saved payment method is now respected by block checkout. #50481
- Fix – Deprecate single product block save #51153 #51153
- Fix – Fix a styling bug where the guest order confirmation email input was too wide. #51277
- Fix – Fix badge number fails to match the number of unfinished tasks #51063
- Fix – Fix bottom margin of last patterns #50991
- Fix – Fix duplicate spec evaluation in evaluate_specs() #51166
- Fix – Fix error when adding the Product Gallery (Beta) block into a pattern #51189
- Fix – Fix My Account block icon being too small when inserted via block hooks #51047
- Fix – Fix Settings Save button when WP List Tables are present #51102
- Fix – Fix site visibility badge style #50976
- Fix – Fix the loading state for the In-App Marketplace search #51413
- Fix – Fix the order-items view for coupons, so we show the actually-used coupon info, if it exists. #48262
- Fix – Fix variation selector display issues on the front end #51023 #51023
- Fix – Fix wc_admin_unsnooze_admin_notes events are being needlessly created #51254
- Fix – Hide payment recommendations when no extensions are available #50949
- Fix – Improve checkout page accessibility after removing heading level 1. #50925
- Fix – Improve icon aligment in Essential Header and Minimal Header patterns #50952
- Fix – Improve performance of tax report export generation and fix tax_code for removed rates. #51395
- Fix – Make Admin\API\Reports\Customers\DataStore::anonymize_customer accept an order instance as a parameter to ensure compatibility with the
woocommerce_privacy_remove_order_personal_data
hook. #38201 - Fix – Make Checkout block
coupons
filter consistent by always running. #50876 - Fix – Only log PTK error if no action has been scheduled #51143
- Fix – Prevent an error in the WC_Checkout class when WooCommerce has not been properly initialized yet #50692
- Fix – Prevent search request in the Extensions > My Subscriptions page #51164
- Fix – Product bulk edit: allow to restore original price and avoid fatal errors. #50836
- Fix – Product bulk edit: fix increasing & decreasing sale price when there was no previous sale. #50842
- Fix – Put site visibility badge behind the launch your store feature flag #51159
- Fix – Removed the leftover user meta from the help panel spotlight #51249
- Fix – Remove extra bottom padding in filters in the editor. #51012
- Fix – Remove title attribute from images in product slider. #50886
- Fix – Replace retired theme Nokul with Gizmo in the CYS experience #51113
- Fix – Set customer email in reports if customer data is available #51367
- Fix – Trap focus inside the product gallery modal. #50730
- Fix – Update the logic that conditionally activates the compatibility layer in WooCommerce block templates so it detects blocks inside patterns #50595
- Fix – Use the correct language in Cart/Checkout when the user language is different from the store. #51244
- Fix – Use
get_filtered_ids
consistently inreports/taxes
andreports/taxes/stats
datastores #51219 - Fix – wc_get_cart_url should only return current URL if on the cart page. This excludes the usage of WOOCOMMERCE_CART. #51384
- Fix – Wrap parse_str under a check to resolve deprecation notice #51474
- Fix – Removes several side effects in the code base that caused translations to be loaded too early #52055
See all features and additions
- Add – BFCM promo card support (data to be served by WCCOM API) #51739
- Add – Add core feature for site visibility badge #51664
- Add – Added a Load More button to product lists on the Extensions page, to request additional search results from WooCommerce.com. #51413
- Add – Add endpoint title to the document title. #50900
- Add – Add global_unique_id parameter to products REST API #51264
- Add – Add inspector controls to Product Search block #51247 #51247
- Add – Add new feature for a product data views page. #50981
- Add – Add react-powered main payments settings screen #50825
- Add – Adds a filter for third party tax plugins to indicate that they have completed the tax task #51362
- Add – Add search result counts to the in-app marketplace header tabs (Extensions area) #51413
- Add – Adds unified styles for the express checkout block #50791
- Add – Add use-wp-horizon feature flag to set calpyso_env to horizon #51421
- Add – Add
locale
param when redirecting to the Jetpack auth page. #51392 - Add – Available express payment methods are visible in the editor when selecting the express payment block #50791
- Add – Improve the express checkout experience with several design tweak, uniform button styles and editor improvements #50791
- Add – Introduced Product Brands. #50165
- Add – Product Collection – Implement Inspector control to change selected product #50164
- Add – Product Collection – Show product picker in Editor when collection requires a product but not available <details> A collection can define if it requires a product context. This can be done using
usesReference
argument i.e.tsx __experimentalRegisterProductCollection({ ..., usesReference: ['product'], )
When product context doesn’t exist in current template/page/post etc. then we show product picker in Editor. This way, merchant can manually provide a product context to the collection. #50164 - Add – Product Collection: Added Editor UI for missing product reference #51114
- Add – Product Elements send a JS event when user attempts to view a product #51156
- Add – Provide screen readers with product sorting status message. #50573
- Add – Synchronise the express payment controls between the Cart & Checkout blocks #50791
- Add – Track data for font and color pairings including ‘Create your own’ option in CYS #51206
See all updates and tweaks
- Update – Fix CYS error with latest Gutenberg nightly builds #52623
- Update – Added experimental delayed order creation block. #50934
- Update – Added Stripe tax in onboarding tax task #50989
- Update – Change the way search results are displayed in the in-app marketplace #51413
- Update – Clean up ‘Profile Wizard’ code #51190
- Update – Clean up Purchase task #51274
- Update – Comment: Fix comment typos across various files. #50047
- Update – Consolidate Store API and Core account creation functions. #50913
- Update – Deprecate unsupported Inbox note banner layout #51275
- Update – Dynamically set plugin_name when redirecting to Jetpack Auth from core profiler #51278
- Update – E2E tests – skipping 11 tests for the Pressable website #51123
- Update – Ensure that active plugins shown in the System Status API endpoint actually exist #50974
- Update – Expand the e2e suite we’re running on WPCOM. #51303
- Update – Expand the e2e suite we’re running on WPCOM part #2. #51414
- Update – Expand the e2e suite we’re running on WPCOM part #3. #51422
- Update – Include API tests into test suites for Pressable and WPCOM. #51284
- Update – Make In-App Marketplace header sticky to improve discoverability. #51187
- Update – Move Pressable and WPCOM e2e runss to release-checks instead of daily-checks #51148
- Update – Product cards in the in-app marketplace show currency and billing period data dynamically, based on data received from WooCommerce.com #51170
- Update – Product Collection: Disable client-side nav if filter blocks are detected inside #51358
- Update – Product Rating: hide reviews in the front end when disabled at store or product level. #50979
- Update – Refactor WooCommercePayments task to use woo payment gateway from
WC()->payment_gateways->payment_gateways()
#50953 - Update – Replace marketplace search component with SearchControl from @wordpress/components #51413
- Update – Show payments recommendation when main settings element is found #50947
- Update – Update /customize-store tests, so they are passing against Pressable env. #51004
- Update – Update /merchant tests (first five files), so they are passing against Pressable env. #51014
- Update – Update /merchant tests (second five files), so they are passing against Pressable env. #51016
- Update – Update /merchant tests so they are passing against Pressable env. #51158
- Update – Update /shopper tests (first part), so they are passing against Pressable env. #51068
- Update – Update /shopper tests (second part), so they are passing against Pressable env. #51100
- Update – Update admin-* folders, so e2e tests are passing against Pressable env. #50994
- Update – Updated wording on the Cart/Checkout shipping sidebars #51072
- Update – Update In-App Marketplace category selector #51413
- Update – Update storybook file format in support with Storybook 7 story indexer. #51168
- Update – Update the Action Scheduler package to version 3.8.2 #51353
- Update – Update the rest of /merchant tests so they are passing against Pressable env. #51181
- Update – Update webpack config to bundle in @wordpress/dataviews package. #51008
- Update – Update
activate-and-setup
e2e tests, so they are passing against Pressable env. #50927 - Update – Update
add-variable-product
e2e tests, so they are passing against Pressable env. #50942 - Update – Update
products/block-editor
e2e tests, so they are passing against Pressable env. #50960 - Tweak – Limit the amount of Feature Controller logic that will run before init, to improve compatibility with translation-related changes in WP 6.7. #52557
- Tweak – Add default Facebook for WooCommerce plugin recommendation. #52405
- Tweak – Fix PHPCS warnings in OrdersTableQuery.php and ProductQuery.php #51281
- Tweak – Fix typo in inline doc in woocommerce client, includes, and lib folders. #50739
- Tweak – Fix typos in plugins/woocommerce-blocks/docs #48562
- Tweak – Fix version number in a template #51020
- Tweak – Include group and product id properties in the
marketplace_product_card_clicked
Tracks event #51180 - Tweak – Log deprecation warnings for
Query
class usage. #50969 - Tweak – Minor fixes to product descriptions on the Extensions screen. #51228
- Tweak – Move collections e2e tests from product collection file to its own file #50853
- Tweak – Move register product collection tester e2e tests from product collection file to its own file #50852
- Tweak – Move the inspector controls e2e tests from product collection file to its own file #50849
- Tweak – On mobile, style order confirmation page details side by side #50722
- Tweak – Reenable remote logging feature by default #51320
- Tweak – Remove the usage of
ReportSummary
sisRequesting
property as it has no effect. #50751 - Tweak – Remove titles on Extensions and Themes tabs in the marketplace #51195
- Tweak – Small visual tweaks to the express checkout area #50644
- Tweak – Update coming soon extensibility documentation #51160
- Tweak – Update footer design, add one more element to footer content and remove
woo-marketplace
copy at footer bottom. #51315 - Tweak – Update PHP unit tests to remove specific team names for generic names. #51017
- Tweak – Update product card content padding to 24px and add 0 margin bottom to product cards #51288
- Tweak – Update reset password e2e to use or locator to check reset status #50823
- Tweak – UX improvements to the express payment block in the editor #50791
- Tweak – Validate and prepare GTIN in structured data #50926
See all developer updates
- Dev – Add e2e tests to confirm that the store is in coming soon mode after completing the core profiler #50784
- Dev – Added doc blocks to conditionally fired hooks to better explain nuanced behavior #51061
- Dev – Add reporting of slow PHPUnit tests. #51253
- Dev – Coding standatds: fix PSR-4 naming violation in tests (part 1). #51194
- Dev – Coding standatds: fix PSR-4 naming violation in tests (part 2). #51198
- Dev – Convert with-reviews to TS #50890 #50890
- Dev – CYS – Move the “ai/products” endpoint to woocommerce admin API. #50396
- Dev – CYS – Move the “private/patterns” endpoint to woocommerce admin API. #50400
- Dev – E2E tests: fix flakiness in page publishing action #51196
- Dev – Explicitly select the payment method on the customer payment page e2e test #51210
- Dev – Fix eslint warnings #50869
- Dev – Fix flaky remote logging PHP unit test #50950
- Dev – Fix pnpm version to 9.1.3 to avoid dependency installation issues. #50828
- Dev – Fix slow test for Reports #51279
- Dev – fix small lint errors and fix lint rule to make doc contribution easier #50843
- Dev – Made XState utils updateQueryParam generic so that it can be reused in other XState machines #51167
- Dev – Make Block Reference a public doc #50906
- Dev – Manage K6 version #51239
- Dev – Mark several Customize Your Store PHP classes as internal #51069
- Dev – On Sale Badge: Migrate to block.json #50908
- Dev – Product Image: migrate to block.json #50903
- Dev – Product Price: migrate to block.json #50905
- Dev – Remove @wooocommerce
Combobox
component that is no longer used. #50975 - Dev – Remove deprecated RemoteInboxNotification classes #51250
- Dev – Track customize_your_store_assembler_hub_editor_loaded event to measure CYS loading time #51461
- Dev – Update docs #51144
- Dev – Updated webpack build script for wc admin so that the wp-admin-scripts are dynamically fetched from the fs instead of a hard list #51133
- Dev – [Enhancement] Abstract rating block #50810 #50810
See all performance improvements and enhancements
- Performance – Conditionally initialize block template compatibility classes #50785
- Performance – Don’t update the script data transient for the same data #50962
- Performance – Only load local pickup methods on cart/checkout pages #51174
- Performance – Only run woocommerce_admin_shared_settings filter on admin requests #51161
- Performance – Refactor Country Specs to use ‘in’ operator #51162
- Performance – Remove relevancy ranking from FTS queries to improve performance. #51065
- Enhancement – Add ‘Show tab title’ attribute to the Product Details block #50884
- Enhancement – Add additional sizing units for product image block #50770
- Enhancement – Add filter for response of
wc_rest_should_load_namespace
function to allow loading namespaces. #50902 - Enhancement – Add filters for custom orderby query params for WC Analytics #49722
- Enhancement – Add phone number to FTS index to improve order searchability. #51065
- Enhancement – Enhance WooCommerce version checking for remote logging reliability #51009
- Enhancement – Harden styles for interactive elements in Checkout block to prevent style leakage. #51375
- Enhancement – Improve remote logging structure and content #51360
- Enhancement – Improve the tabs focus style in the Product Details block with Minimal style variation #50880
- Enhancement – Introduce error handling on the in-app my subscriptions page #51298
- Enhancement – Move address card state management to data stores in Checkout block. #51386
- Enhancement – Move focus into coupon input if there is an error #48738
- Enhancement – Product Collection – Change cursor style of preview button to default #50612
- Enhancement – Product Collection: Don’t render when empty unless the no results block is present. #50404
- Enhancement – Product SKU block: add editable prefixes and suffixes. #51033
- Enhancement – Reduce dependency of remote logging on WC_Tracks #51365
- Enhancement – Reducing noise in remote logging #51357
- Enhancement – Refine PHP Fatal Error Counting in MC Stat #51363
View the full changelog.
Get WooCommerce 9.4
👉 To upgrade: See our update guide or download the latest release from WordPress.org.
🐞 Found a Bug? Please submit a report it on GitHub.
Leave a Reply