WooCommerce 9.3 is coming soon…
The post will track the work we do as we prepare to release 9.3 as well as provide a preview of what’s to come in this new version.
Other important information:
- 📀 This release does include a database update.
Release Schedule:
- 🧪 WooCommerce 9.3 RC available for testing
- Final Release — September 11th, 2024
- See updates
Hey folks, on Wednesday, August 21st, 2024, we kicked-off our Code Freeze ahead of the release of WooCommerce 9.3. 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 WooCommerce 9.3 release, scheduled for September 10th, 2024.
What’s coming in 9.3
Remote error logging: we’ve implemented a remote error logging system to improve the stability and reliability of WooCommerce stores. This feature logs WooCommerce Core PHP and JavaScript fatal errors to a remote logging service when users opt-in to tracking. This functionality allows us to identify and fix issues more quickly, often before users report them, improving debugging capabilities and enhancing store owners’ support.
Improved wp-admin stability: previously, there was a cache bug that caused requests to the WooCommerce.com API endpoints to affect the load times of wp-admin
pages for merchants who have enabled marketplace suggestions. We’ve fixed the bug to ensure that an API failure does not impact the admin experience. We’ve also removed irrelevant API requests that may run on wp-admin
pages.
Significant reduction in WooCommerce’s file size: we’ve optimized the WooCommerce plugin and substantially reduced its file size. Compared to version 9.2, which was 20.5MB, version 9.3 has achieved a 27% overall size reduction. A key factor in this improvement was the compression of certain assets, shrinking them from 10MB to just 4MB. This considerable decrease in plugin size offers several benefits for WooCommerce users, including faster load times and reduced server storage requirements. For e-commerce stores, where performance is crucial, this optimization can lead to improved user experience amongst other benefits.
Coming soon mode optimizations: we’ve addressed various pieces of feedback we received by moving the site visibility badge to the admin menu and adding a confirmation modal when changing from a live site to coming soon mode. We also optimized the performance of all sites by preventing an unnecessary front-end query. Additionally, we’ve implemented a new filter to allow extensions to include their pages in the “store pages only” coming soon protection.
Shortcode checkout accessibility improvements: the aria-required="true"
attribute has been added to required form fields on the shortcode checkout and whenever the woocommerce_form_field()
function is used. The aria-required
attribute was chosen over the required
attribute to avoid backwards compatibility issues.
Product meta checkboxes accessibility improvements: we’ve improved the interface when managing product data in the Add Products
screen. In accordance with W3C’s recommendations, the checkboxes shown in the header of the product data box are now shown before their descriptive labels.
API Changes
- REST: Update product stock when removing line item from order #50606
- Store API: Do not resume orders with
pending
status #50531 - CYS – Move the
ai/business-description
endpoint to woocommerce admin API #50359 - CYS – Move the
ai/images
endpoint to woocommerce admin API #50365 - CYS – Move the
ai/patterns
endpoint to woocommerce admin API #50372 - CYS – Move the
ai/store-info
endpoint to woocommerce admin API #50363 - CYS – Move the
ai/product
endpoint to woocommerce admin API #50393
Database Updates
- To improve performance, the
woocommerce_coming_soon
option is now set by default on all sites. #50581 - The meta key used for coming soon mode has been updated to be stored in the
user.woocommerce_meta
, rather than theuser.meta
attribute. #50664
Known Issue
As reported in #50958, the beta release of WooCommerce 9.3 includes a bug that causes a “product out of stock” email to be sent for products where the stock isn’t tracked. A fix for this bug has been developed and will be included in the final version of WooCommerce 9.3.
Changelog
See all bug fixes and improvements
- Fix – Add check to ensure themes API is safe #51081
- Fix – CYS – Remove usage of
prepare_item_for_response
function inImages
endpoint. #50923 - Fix – Add ability for a screen reader to announce the current tab on a single product page. #50373
- Fix – Add a label to the product pagination for the woocommerce pagination #49924
- Fix – Add aria-current to the current link in My Account side nav #49800
- Fix – Add aria-label on View order button to aid in accessibility for screen readers #49424
- Fix – Add CSS outline for site visibility badge keyboard accessibility #50794
- Fix – Add scope attribute and aria-label to the product attributes table #49768
- Fix – Add to Cart with Options – Fix translation when used inside the Single Product block. #50628
- Fix – Allow verified parameter to be set by REST API request #50525
- Fix – Avoid PHP warnings if
add-to-cart.php
template does not passaria-describedby_text
#48969 - Fix – Cart block: Strip HTML tags and decode HTML entities in quantity change notifications. #50541
- Fix – Changed from using React.render to React.createRoot for marketing coupons as it has been deprecated since React 18 #48832
- Fix – Changed from using React.render to React.createRoot for payment methods promotion, shipping settings region zone as it has been deprecated since React 18 #48835
- Fix – Changed from using React.render to React.createRoot for print shipping banner as it has been deprecated since React 18 #48831
- Fix – Changed from using React.render to React.createRoot for product-usage-notice-modal as it has been deprecated since React 18 #50765
- Fix – Changed from using React.render to React.createRoot for wc addon tour as it has been deprecated since React 18 #48833
- Fix – Changed from using React.render to React.createRoot for WCAdmin uses as it has been deprecated since React 18 #48785
- Fix – Changed instances of prime marks inappropriately used when apostrophes are supposed to be used for some parts of WC Admin JS/TS/TSX files #50776
- Fix – Clear product unique ID (
global_unique_id
) when duplicating products. #50629 - Fix – Compatibility Layer: fix ‘woocommerce_before_single_product_summary’ hook position. #50392
- Fix – CYS – Improve the error when a request fails due to permissions #50211
- Fix – CYS – Update the “show_on_front” setting to “posts” to avoid overriding the “page” template. #50083
- Fix – CYS: disable zoom out on fonts/color pairs iframe #50498
- Fix – CYS: Fix auto scroll when a new block is added. #50431
- Fix – CYS: Improve opt in flow #50529
- Fix – Display address card for virtual products if shopper’s address is known #50127
- Fix – Enable skipped E2E tests for attributes #50143 #50143
- Fix – Ensure coupon errors are visible on block checkout when invalid coupons are removed. #50412
- Fix – Ensure low and no stock email notification routine is triggered whenever product stock changes #49583
- Fix – Ensure session object is initialized before attempting to get chosen shipping methods #50774
- Fix – Ensure that the orders REST endpoint behaves the same as the UI when updating an order to remove a line item. #50606
- Fix – Featured Product: Fix variable product Selection dropdown #50633 #50633
- Fix – Fix “Product Meta” translations – Register the block server side. #50625
- Fix – Fix: ensure the global product object is always ready for compatibility layer by disabling default render routine of Product Templates inner blocks. #49971
- Fix – Fix activating the installed subscription when the user has multiple active licenses for the same product. #49803
- Fix – Fix address heading level on My Account page. #49764
- Fix – Fix an admin bar CSS positioning bug in WordPress.com on mobile #50709
- Fix – Fix cart shortcode updates when not used on the main cart page. #50524
- Fix – Fix core profiler checkbox vertical alignment and border color #50151
- Fix – Fix core profiler set up my store button and TOS are too close to each other #50579
- Fix – Fix e2e Google for WooCommerce strict mode violation error #50189
- Fix – Fixed Core Profiler’s sticky footer button problem #50727
- Fix – Fixed placeholders in the classic cart shipping calculator to update with country selection. #49684
- Fix – Fixes a bug where some express payment buttons weren’t being rendered correctly #49304
- Fix – Fix extensionCartUpdates to surface generic error messages, and include documentation for the error handling. #49762
- Fix – Fix focus order on checkout block page. #49649
- Fix – Fix navigation badge decreases when installing extension in “Grow your business task” #50584
- Fix – Fix page titles of the cart and checkout page when using blocks and FSE themes. #49986
- Fix – Fix rescheduling of actions that are blocked by other delayed actions #50082
- Fix – Fix the “Add payment methods” link in LYS congrat screen redirects to a blank page #50609
- Fix – Fix translation – Avoid registering blocks in the wrong context. #50615
- Fix – Fix
Product meta
console error. #50680 - Fix – Fix
store-title
endpoint – Pass default value toget_option
. #50673 - Fix – Hide save changes button in main payments screen #50064
- Fix – In Remote Specs, treat empty arrays as valid cached values so individual engines can return default values. #50521
- Fix – Keep focus on shipping option input once selected #49360
- Fix – Make the matching variations alert a live region #50132
- Fix – Only count published products in productCount #50503
- Fix – Prevent fatal error if NULL is provided in array_search under Jetpack Stats #50696
- Fix – Prevent Store API orders being placed with empty state #50028
- Fix – Prevent sync-on-read from affecting results of HPOS diff CLI tool. #49726
- Fix – Product Collection: Fix max price query to include prices less or equal to the given max value. #49917
- Fix – Product Collection: fix the preview if used in Products by specific Category or Tag #49889
- Fix – Product Price block: prevent price amounts from breaking into multiple lines #50660
- Fix – Properly detect active plugins in multisite WP installations. #50417
- Fix – Reduce error noise in the user profile screen, by removing the requirement for custom fields to have a class attribute. #48079
- Fix – Remove Active Shipping Zones check for displaying shipping calculator on the Cart Page. #49214
- Fix – Single product block – Fix translation for title and description in edit mode. #50599
- Fix – Store API: Do not resume pending orders–create a new order instead #50531
- Fix – Transform labels in shipping zone region selector to decode html entities #50694
- Fix – Treat post_type=product as a shop page. #50567
- Fix – Update product order status colors to ensure accessible color contrasts #49934
See all features and additions
- Add – Add an additional field for the email settings that sets the footer text color #49648
- Add – Add blueprint behind a feature flag for testing purposes. #49763
- Add – Add field for the email footer text color #49648
- Add – Add function to clear system status theme info cache #50803
- Add – Add methods required by extensions to control product feature usage based on subscription status. #50218
- Add – Add parameter to avoid attempting to create the logs directory if it doesn’t exist #49766
- Add – Add Pattern button to no blocks view on the CYS assembler #49981
- Add – Add reactified main payments screen #49972
- Add – Add reactify-classic-payments-settings feature flag #49966
- Add – Add tracks for WordPress Importer/Export pages. #50769
- Add – Add
FilteredGetDataTrait
,OrderAwareControllerTrait
, andStatsDataStoreTrait
for extension developers to reuse while creating custom Analytics #49425 - Add – Implement server-side remote error logging #49599
- Add – Inform screen reader users when mini cart updates #48295
- Add – Integrate JS remote logging package in WooCommerce Admin #50134
- Add – Product Collection: emit the JS event when PC block is rendered #50166
- Add – Product Collection: Enable Context-Aware Previews by Adding
usesReference
toregisterProductCollection
#49796 - Add – Track frequency of unhandled JS errors with MC Stats #50155
- Add – Use MC Stats for PHP fatal error counting #49658
- Add – [E2E tests]: Add product description using the block editor #50232 #50232
See all updates and tweaks
- Update – Added more paths to remote logger query param whitelist #51108
- Update – Update WooCommerce Shipping Promo Banner to install the latest version of WooCommerce Shipping instead of WCS&T. #50970
- Update – Add abbreviations for fields GTIN, UPC, EAN, OR ISBN #50042
- Update – Add additional fields to new product editor e2e tests. #50241
- Update – Add confirmation prompt for site visibility settings when changing from live to coming soon mode #50759
- Update – Add pattern validation for global_unique_id #50501
- Update – Add remote logger as a log handler to wc logger #50430
- Update – Add request_uri prop to remote logging data #50671
- Update – Add woocommerce_coming_soon option for all sites #50581
- Update – Comment: Fix typos in documentation. #50282
- Update – CYS – Add tests for the Full Composability feature. #49748
- Update – CYS – Run appropriate tests depending on the WordPress version. #50016
- Update – CYS – Update icon and text colors in the assembler. #50478
- Update – CYS: Improve opt-in flow fonts. #50086
- Update – CYS: Improve opt-in flow patterns. #50080
- Update – CYS: Improve tracking survey #50196
- Update – CYS: Improve tracking survey #50354
- Update – CYS: Update the tracking URL to the external Fiverr link in sidebar of the Add your logo screen. #50753
- Update – Enable remote logging feature flag #50351
- Update – feat: add
aria-required
attributes to WC form fields #48371 - Update – Fixed log-out link behavior so that redirects work, and so that security nonces are automatically added to link in navigation menus. #49605
- Update – Migrate LYS user meta #50664
- Update – Move marketing task to things to do next task list #50487
- Update – Move site visibility badge to admin bar. #50775
- Update – Remove “Need help?” modal from onboarding #47812
- Update – Remove all links from the CYS sidebars #50414
- Update – Remove remote API call from marketing task #50479
- Update – Remove WooCommerce Navigation client side feature and deprecate PHP classes. #50190
- Update – Renamed columns inside In-App Marketplace > My subscriptions and added action to turn auto-renewal on for a subscription #49985
- Update – Rename woocommerce_is_store_page to woocommerce_is_extension_store_page #50771
- Update – Reverting the new
buttonAttributes
API. This will be included in a later release #50763 - Update – Revert the Zoom Out feature for the CYS experience #50535
- Update – Show expiring and expired notices to active and unconnected subscriptions #50383
- Update – Store API: Remove the need for nonces when using cart tokens. Remove deprecated X-WC-Store-API-Nonce header. #50025
- Update – Strip HTML tags from aria-label in wc_help_tip function #50103
- Update – Text adjustments on shipping zones settings page #50136
- Update – Update AdditionalPayments task to use default payment gateways #50674
- Update – Update add product task button section UI #50580
- Update – Update all blocks to use API Version 3. #48720
- Update – Update Blueprint settings layout. #50724
- Update – Update core profiler continue button container on extension screen #50582
- Update – Update Store Alert actions to have unique keys. #50424
- Update – Update WooCommercePayments task is_supported to use default suggestions #50585
- Tweak – Add GTIN in structured data #50087
- Tweak – Add link to title, remove link from a description, minor copy changes to site visibility settings page #50781
- Tweak – Add the
woocommerce_should_clear_cart_after_payment
filter to influence whether the cart should be cleared after payment. #44515 - Tweak – allows the quantity selector on block cart page to render as readonly when editable is false #49450
- Tweak – Bump Jetpack COnnection, Jetpack Constants and a8c MC Stats #50471
- Tweak – Extract the checkbox list option logic into its own component #50566
- Tweak – Make
geolocation_ajax_get_location_hash
case-insensitive, to reduce the number of cache misses. #45439 - Tweak – Optimize large image files #50517
- Tweak – Product Collection: fix the PHP deprecated warning #50661
- Tweak – Reduce core profiler sticky footer height #50788
- Tweak – Remove colon from product data meta box checkboxes #50619
- Tweak – Remove the code related to the automatic Products (Beta) -> Product Collection upgrade. #50440
- Tweak – Set timeout to 2 seconds for helper product-usage-notice-rules endpoint request #50821
- Tweak – Update size of site visibility badge. #50792
- Tweak – Vertically center product meta elements #50826
See all developer updates
- Dev – Execute test env setup on host instead of wp-env container #51021
- Dev – Added code docs with examples to the Analytics classes #49425
- Dev – Add lost password e2e tests #50611
- Dev – Add unit tests for the product_add_publish track. #49916
- Dev – CI: introduce PHPUnit tests sharding. #50084
- Dev – CI: minor speed boost of wp-env startup. #50445
- Dev – CI: speedup assets size verification job execution time. #50178
- Dev – CI: Use a single shard when re-running failed tests in CI #50492
- Dev – CI config: update changes list to include more paths #50399
- Dev – Clean up unused images #50516
- Dev – CYS – Document possible Intro pages #50171
- Dev – CYS – Move the “ai/patterns” endpoint to woocommerce admin API. #50372
- Dev – CYS – Move the “ai/store-info” endpoint to woocommerce admin API #50363
- Dev – CYS – Move the ai/business-description endpoint to woocommerce admin API #50359
- Dev – CYS – Move the ai/store-title endpoint to woocommerce admin API #50352
- Dev – CYS – Move the
ai/images
endpoint to woocommerce admin API #50365 - Dev – CYS – Move the
ai/product
endpoint to woocommerce admin API. #50393 - Dev – CYS: add E2E tests for fonts installation. #50210
- Dev – E2E tests: add a flaky test reporter for Core e2e tests #50259
- Dev – E2E tests: add an option to skip the env setup script running before test execution #50620
- Dev – E2E tests: add buildkite-test-collector for blocks e2e tests #50642
- Dev – E2E tests: add environment reporter #49988
- Dev – E2E tests: add hpos-disabled env and tagged tests with hpos tag #50448
- Dev – E2E tests: fixed broken logo picker tests #50473
- Dev – E2E tests: fix flakiness in page-loads customer page test #50559
- Dev – E2E tests: fix flakiness in product attributes test #50485
- Dev – E2E tests: removed Github reporter #50256
- Dev – E2E tests: Removed unnecessary pause in the test #50043
- Dev – E2E tests for verifying approve, spam and reply to product reviews. #50060
- Dev – Fix E2E tests SKU field id #49729 #49729
- Dev – Fixes a flaky product variations e2e test #50807
- Dev – Fix Metrics CI job #50214
- Dev – Fix optional param in PHPdoc for
WC_Admin_Marketplace_Promotions
to generate code-reference w/o warnings #50732 - Dev – Fix the Metrics job by adding a missing NVM install step #50482
- Dev – Make the Metrics tests use utilities provided by the updated @wordpress/e2e-test-utils-playwright package. #50626
- Dev – Mark ReportTable tableData prop as not required #50816
- Dev – Monorepo: enable new linting rules for PHP (PSR-4 naming, Strict types declaration). #49438
- Dev – Monorepo: tweak Webpack loaders paths filtering for better build perfromance. #49714
- Dev – move block theme docs to docs site folder #50638
- Dev – move part of checkout docs to main docs folder #49984
- Dev – Move
ReportError
to@woocommerce/components
asAnalyticsError
#50108 - Dev – moving product collection docs to main docs folder #50368
- Dev – Reduce duplicated code in Analytics controllers, unify their behavior and API. #49425
- Dev – Reduce the amount of duplicated code in Analytics
DataStore
s. #49425 - Dev – Removed defaultProps from React functional components since they will be deprecated for React 19 #50266
- Dev – Removed directive to disable woocommerce_coming_soon in e2e tests so that we get better test coverage #50344
- Dev – Render a React placeholder for offline and WooCommerce Payments settings sections #50008
- Dev – Replace
Automattic\WooCommerce\Admin\API\Reports\*\Query
classes with a singleGenericQuery
class. #49425 - Dev – Switch
render()
tocreateRoot().render()
to use React 18 features. #48843 - Dev – Tests: moved api core tests as a suite in e2e-pw #50024
- Dev – Tweak the lost password e2e logic #50666
- Dev – Update @wordpress/e2e-test-utils-playwright core dependency to wp-6.6 #50274
- Dev – Updated e2e tests docs to clarify the use of environments #50530
- Dev – Updated the workflow prompting for testing instructions to only run once (preventing double comments) #50034
- Dev – Update E2E tests for linked list and variation creation with new component changes. #50128
- Dev – Update lys e2e tests to test with both classic and block themes #50657
- Dev – Update Playwright to 1.46.1 from 1.45.1 #50772
- Dev – Update WP version to 6.6 in Blocks wp-env config. #49704
- Dev – Use stricter text selector on test #50848
- Dev – [Filter Products by Price]: Update view when changing the min/max value #50651 #50651
See all enhancements
- Performance – Cache order dates in options for performance. #50066
- Performance – Compress pattern placeholder image assets #50405
- Performance – Improve performance of maybe_assign_default_product_cat by only dropping cache and term recounting if changes were made in the database #50006
- Performance – Improve setup_tasks_remaining performance #50655
- Enhancement – Add a filter to override the SKU database lock. #49755
- Enhancement – Add email type to Checkout block email field. #48611
- Enhancement – Add filter
woocommerce_is_store_page
to modify whether Coming Soon mode considers a URL a store page or not. #50174 - Enhancement – Add username in email reset-password link #49737
- Enhancement – CYS: improve CTA #50278
- Enhancement – Ensure
wccomHelper
data is only loaded on the Extensions page where it’s needed. #49758 - Enhancement – Fixed minor issues in the developer documentation recently added by public resources team #50845
- Enhancement – Hide zoomed product images for screen readers. #50003
- Enhancement – Improve hover style on product tabs when using the Minimal style in the Product Details block #50605
- Enhancement – Make screen readers announce notice messages once page loads. #50061
- Enhancement – Refactor: Migrate the All Products block to API version 3 #50203
- Enhancement – Remove opacity from the hover style of the mini cart button #50240
- Enhancement – Use standard link color in legal disclaimers on core profiler #50830
- Enhancement – Add query params masking to remote logger #51108
View the full changelog.
Update timeline
✅ Code Freeze
Added: August 26th 2024
On August 21st, 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.3 Beta
Added: August 27, 2024
👉 To Test: Use the WooCommerce Beta Tester plugin to try beta versions. Or download the latest beta release from WordPress.org.
✅ WooCommerce 9.3 RC
Added: September 4th, 2024
👉 To Test: Use the WooCommerce Beta Tester plugin to try beta versions. Or download the latest RC release from WordPress.org.
⏳ WooCommerce Release 9.3
Scheduled: September 11th, 2024.
Update: this release was originally scheduled for release on September 10th, 2024. We’re currently anticipating it will be released on September 11th, 2024.
Leave a Reply