WooCommerce 9.4: Pre-release updates

WooCommerce 9.4 is coming soon…

The post will track the work we do as we prepare to release 9.4 as well as provide a preview of what’s to come in this new version.

💿 This release contains database updates

Release Schedule:

Howdy folks, we kicked-off our Code Freeze on Wednesday, Sept 18, 2024 ahead of the release of WooCommerce 9.4. As we begin the testing phase, and get the release ready for Beta, we wanted to share some spoilers and document any updates to the expected release timeline. 

Check back here for more updates ahead of the WooCommercee 9.4 release, scheduled for November 11, 2024. 

What’s 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.

Additionally, we continue to work on our plan to make Product Collection a single product grid block (read more in Announcing the Product Collection Block). To ensure the Product Collection covers all of the features of existing product grids, we’ve added a set of JS events as a substitute for actions emitted by other product grid blocks.

Product details block: 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.

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, often before users report them, improving debugging capabilities and enhancing store owners’ support.

Searching inside of WooCommerce: 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.

More options for express checkout: 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.

API Changes

  • CYS – Move the ai/products endpoint to woocommerce admin API #50396
  • CYS – Move the private/patterns endpoint to woocommerce admin API #50400
  • Add filter to overwrite response of wc_rest_should_load_namespace #50902
  • Add global_unique_id parameter to products REST API #51264

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 – 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 in reports/taxes and reports/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
  • Update – Added experimental delayed order creation block. #50934
  • Update – Added Stripe tax in onboarding tax task #50989
See all features and additions
  • 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 – 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 – 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 ReportSummarys isRequesting 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 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

Known issue

There is a change in the upcoming WordPress 6.7 release that discourages plugins from loading translations too early, and generates warnings when this happens. We have introduced a number of corrections to address this within WooCommerce, but there may be some instances that still need attention (and these may only manifest when triggered by other plugins).

Update timeline

✅ Code Freeze

Added: September 19, 2024

On September 19th, we implemented the Code Freeze and began preparing to release the Beta. Stay tuned for the upcoming version in the WooCommerce Beta Tester plugin

✅ WooCommerce 9.4 Beta 1

Added: September 23, 2024

✅ WooCommerce 9.4 Beta 2

Added: October 2, 2024

WooCommerce 9.4 RC 1

Added: October 21, 2024

WooCommerce 9.4 RC 2

Added: October 29, 2024

WooCommerce 9.4 RC 3

Added: November 5, 2024

WooCommerce 9.4 RC 4

Added: November 8, 2024

👉 To Test: Use the WooCommerce Beta Tester plugin to try beta and RC versions. Or download the latest RC release from WordPress.org.

WooCommerce Release 9.4

Scheduled: November 11, 2024


Keep yourself in the loop!

Sign up for the WooCommerce developer newsletter:
This field is hidden when viewing the form
This field is hidden when viewing the form
This field is hidden when viewing the form


6 responses to “WooCommerce 9.4: Pre-release updates”

  1. Could you please fix this in the beta tester plugin?

    Deprecated: Creation of dynamic property WC_Beta_Tester::$wporg_data is deprecated in woocommerce-beta-tester / includes / class-wc-beta-tester.php on line 210

    Since you move the plugin to woocommerce.com there is noway to post issues with the plugin.

    i have to adjust that file on every update to get rid of the deprecation message.

    I posted this request here before but some how that message disappeared. maybe because it had a link in it.

    I apologize for posting it again.

    Thank you

    1. Brent MacKinnon Avatar
      Brent MacKinnon

      Thanks for sharing this! I’ll share this feedback with the appropriate team today.

    2. Brent MacKinnon Avatar
      Brent MacKinnon

      Hi again Neo,

      I want to share that it looks like the issue you’ve mentioned got fixed in v2.4 of beta tester.

      I see the version on WooCommerce.com is still at 2.3.2, so I’ll investigate that issue now.

      In the meantime, you can try using version 2.4 of the Beta Tester from GitHub:

      https://github.com/woocommerce/woocommerce/releases/download/wc-beta-tester-2.4.0/woocommerce-beta-tester.zip

  2. danielspain Avatar
    danielspain

    Hi, please take a look at:
    https://github.com/woocommerce/woocommerce/issues/52646

    the problem still happens with wc 9.4 rc4!!! a lot of non-english sites will be affected…will it be solved in time? Thanks in advance!

    1. Brent MacKinnon Avatar
      Brent MacKinnon

      Taking a look! thanks Daniel!

  3. Steven Gipson Avatar
    Steven Gipson

    Is this update going to fix this order prematurely failing? Keep getting this error, but then it ends up processing:

    There was an error processing your order. Please check for any charges in your payment method and review your order history before placing the order again. OrderProcessor.php:222 Order status changed from Pending payment to Failed.

Leave a Reply

Your email address will not be published. Required fields are marked *