Skip to content
This repository has been archived by the owner on Feb 23, 2024. It is now read-only.

Fix: WooCommerce Blocks causing malfunction of the navigation block on WordPress 6.3 #10283

Conversation

nefeline
Copy link
Contributor

@nefeline nefeline commented Jul 19, 2023

This PR solves the conflict preventing the core's navigation block from being correctly previewed in the editor while having WooCommerce 7.9.0 running alongside WordPress version 6.3.

Fixes #10259

Investigation and Details

This issue was introduced on WooCommerce Blocks version 10.3.0 by #9468 . That PR was created to solve an issue where the Products (Beta) block would not be available in the editor inserter when running npm start.

After reverting the changes that caused the conflict, and ensuring the mini-cart could still be inserted in the editor (as that block was also relying on the same isSiteEditorPage hook), @Aljullu helped me out with circumventing other limitations found, such as ensuring we can still hide the Inherit query control in the post/page editor and insert the Products (Beta) block while running npm start.

@Aljullu also brought up this work by @nerrad that fixed some issues related to useSelect() in WC core which could be related to the problem we are facing here and served as an inspiration: woocommerce/woocommerce#37641

If anyone has a detailed explanation for the cause of this issue I would highly appreciate it: is it because we were calling useSelect() directly? If that's the case, why? Is it something else entirely?

Important Note

In its current shape and form, this PR fixes the problem for all users while still allowing us to insert the impacted blocks on npm start, the only caveat is that the navigation block itself still throws the same error exclusively on npm start.

Since this limitation impacts developers solely, and we need this fix to be included in the core of Woo (on version 8.0.0) ASAP as WordPress 6.3 will be released on August 8th, a follow-up issue is being opened to address this limitation separately.

Screenshots

Before After
Screenshot 2023-07-23 at 11 15 40 Screenshot 2023-07-23 at 11 14 09

User Facing Testing

  1. Ensure you have a local install up and running with the release candidate version of WordPress 6.3. You can do so by downloading it via WP-CLI: wp core update --version=6.3-RC1 --force followed by wp core update-db. Alternatively, you can also download the zip for the release over here.
  2. Create a new post
  3. Insert the navigation block (if you are testing this locally, make sure assets are compiled via npm run build)
  4. Make sure you can correctly preview it without any problems, as demonstrated in the screenshot in the description of this PR.
  • Do not include in the Testing Notes

WooCommerce Visibility

  • WooCommerce Core
  • Feature plugin
  • Experimental

Performance Impact

Changelog

Fix: Resolve the conflict preventing the navigation block from being correctly previewed in the editor while having WooCommerce enabled.

@github-actions
Copy link
Contributor

github-actions bot commented Jul 19, 2023

The release ZIP for this PR is accessible via:

https://wcblocks.wpcomstaging.com/wp-content/uploads/woocommerce-gutenberg-products-block-10283.zip

Script Dependencies Report

The compare-assets action has detected some changed script dependencies between this branch and trunk. Please review and confirm the following are correct before merging.

Script Handle Added Removed
wc-blocks.js wp-block-editor, wp-components, wp-core-data, wp-data, wp-edit-site, wp-plugins 🎉

This comment was automatically generated by the ./github/compare-assets action.

TypeScript Errors Report

  • Files with errors: 470
  • Total errors: 2255

⚠️ ⚠️ This PR introduces new TS errors on 6 files:

assets/js/blocks/classic-template/archive-product.ts

assets/js/blocks/classic-template/product-search-results.ts

assets/js/blocks/product-categories/block.tsx

assets/js/blocks/product-collection/inspector-controls/inherit-query-control.tsx

assets/js/editor-components/template-notice/index.tsx

assets/js/templates/revert-button/index.tsx

comments-aggregator

@github-actions
Copy link
Contributor

github-actions bot commented Jul 19, 2023

Size Change: -1.33 kB (0%)

Total Size: 1.36 MB

Filename Size Change
build/active-filters-wrapper--mini-cart-contents-block/cart-button--mini-cart-contents-block/checkout-but--e791dc6c-style.js 956 B -1 B (0%)
build/active-filters.js 7.61 kB +22 B (0%)
build/all-products.js 41.8 kB +20 B (0%)
build/all-reviews.js 7.86 kB -5 B (0%)
build/attribute-filter.js 13.3 kB +60 B (0%)
build/breadcrumbs.js 2.14 kB +1 B (0%)
build/cart-blocks/cart-accepted-payment-methods-style.js 136 B -1 B (-1%)
build/cart-blocks/cart-express-payment-style.js 137 B +1 B (+1%)
build/cart-blocks/cart-items-style.js 228 B -1 B (0%)
build/cart-blocks/cart-order-summary-style.js 320 B -2 B (-1%)
build/cart-blocks/empty-cart-style.js 337 B -2 B (-1%)
build/cart-blocks/order-summary-coupon-form-style.js 135 B -2 B (-1%)
build/cart-blocks/order-summary-shipping-style.js 177 B -1 B (-1%)
build/cart-blocks/order-summary-subtotal-style.js 137 B +1 B (+1%)
build/cart-blocks/proceed-to-checkout-style.js 1.09 kB -2 B (0%)
build/cart.js 45.2 kB -64 B (0%)
build/catalog-sorting.js 1.71 kB +3 B (0%)
build/checkout-blocks/actions--checkout-blocks/terms-style.js 488 B +3 B (+1%)
build/checkout-blocks/actions-style.js 684 B -1 B (0%)
build/checkout-blocks/billing-address-style.js 531 B -1 B (0%)
build/checkout-blocks/contact-information-style.js 607 B -1 B (0%)
build/checkout-blocks/order-summary-cart-items-style.js 137 B +1 B (+1%)
build/checkout-blocks/order-summary-discount-style.js 135 B -2 B (-1%)
build/checkout-blocks/payment-style.js 460 B -1 B (0%)
build/checkout-blocks/pickup-options-style.js 442 B -1 B (0%)
build/checkout-blocks/shipping-method-style.js 1.37 kB +1 B (0%)
build/checkout-blocks/shipping-methods-style.js 415 B -2 B (0%)
build/checkout.js 47.8 kB -66 B (0%)
build/featured-category.js 15.2 kB +48 B (0%)
build/featured-product.js 15.3 kB +50 B (0%)
build/filter-wrapper.js 2.4 kB +1 B (0%)
build/handpicked-products.js 8.13 kB +16 B (0%)
build/legacy-template.js 8.8 kB -129 B (-1%)
build/mini-cart-contents-block/cart-button-style.js 387 B -1 B (0%)
build/mini-cart-contents-block/empty-cart-style.js 360 B +2 B (+1%)
build/mini-cart-contents-block/footer-style.js 2.4 kB -3 B (0%)
build/mini-cart-contents-block/products-table-style.js 5.45 kB +2 B (0%)
build/mini-cart-contents-block/title-style.js 443 B -2 B (0%)
build/mini-cart-contents.js 17.8 kB -68 B (0%)
build/mini-cart.js 6.25 kB -119 B (-2%)
build/price-filter.js 8.58 kB +2 B (0%)
build/product-add-to-cart--product-button--product-rating--product-rating-counter--product-rating-stars.js 150 B -1 B (-1%)
build/product-add-to-cart.js 8.72 kB +6 B (0%)
build/product-average-rating--product-button--product-image--product-price--product-rating--product-ratin--e23975b5.js 953 B -1 B (0%)
build/product-average-rating.js 398 B +1 B (0%)
build/product-best-sellers.js 8.46 kB +9 B (0%)
build/product-button.js 3.96 kB +4 B (0%)
build/product-categories.js 2.69 kB -20 B (-1%)
build/product-category.js 9.48 kB +9 B (0%)
build/product-collection.js 13.9 kB -15 B (0%)
build/product-image.js 1.56 kB -1 B (0%)
build/product-new.js 8.77 kB +18 B (0%)
build/product-on-sale.js 8.77 kB +9 B (0%)
build/product-query.js 12.9 kB -25 B (0%)
build/product-rating-counter.js 688 B +1 B (0%)
build/product-rating-stars.js 938 B +1 B (0%)
build/product-results-count.js 1.66 kB -1 B (0%)
build/product-sale-badge.js 666 B +1 B (0%)
build/product-search.js 2.63 kB -1 B (0%)
build/product-summary.js 1 kB -6 B (-1%)
build/product-tag.js 8.97 kB +21 B (0%)
build/product-title.js 975 B +2 B (0%)
build/product-top-rated.js 9.02 kB +16 B (0%)
build/products-by-attribute.js 9.81 kB +5 B (0%)
build/rating-filter.js 6.94 kB -3 B (0%)
build/reviews-by-category.js 12.2 kB +16 B (0%)
build/reviews-by-product.js 13.4 kB +25 B (0%)
build/single-product.js 11.3 kB +17 B (0%)
build/stock-filter.js 7.65 kB +8 B (0%)
build/store-notices.js 1.69 kB +1 B (0%)
build/vendors--checkout-blocks/shipping-method-style.js 11.7 kB +6 B (0%)
build/vendors--mini-cart-contents-block/products-table--price-filter-wrapper--product-price-style.js 5.27 kB +1 B (0%)
build/vendors--mini-cart-contents-block/products-table-style.js 3.16 kB +1 B (0%)
build/wc-blocks-rtl.css 2.49 kB -52 B (-2%)
build/wc-blocks-vendors.js 65.5 kB -3 B (0%)
build/wc-blocks.css 2.49 kB -49 B (-2%)
build/wc-blocks.js 2.66 kB -1.09 kB (-29%) 🎉
ℹ️ View Unchanged
Filename Size
build/active-filters-frontend.js 8.7 kB
build/active-filters-rtl.css 2.02 kB
build/active-filters-wrapper-frontend.js 7.64 kB
build/active-filters-wrapper-rtl.css 1.88 kB
build/active-filters-wrapper.css 1.88 kB
build/active-filters.css 2.02 kB
build/add-to-cart-form-rtl.css 380 B
build/add-to-cart-form.css 378 B
build/all-products-frontend.js 10.1 kB
build/all-products-rtl.css 4.24 kB
build/all-products.css 4.24 kB
build/all-reviews-rtl.css 1.84 kB
build/all-reviews.css 1.84 kB
build/attribute-filter-frontend.js 23 kB
build/attribute-filter-rtl.css 4.19 kB
build/attribute-filter-wrapper-frontend.js 7.69 kB
build/attribute-filter-wrapper-rtl.css 4.06 kB
build/attribute-filter-wrapper.css 4.06 kB
build/attribute-filter.css 4.19 kB
build/blocks-checkout.js 35.1 kB
build/breadcrumbs-rtl.css 253 B
build/breadcrumbs.css 253 B
build/cart-blocks/cart-accepted-payment-methods-frontend.js 1.38 kB
build/cart-blocks/cart-cross-sells-frontend.js 253 B
build/cart-blocks/cart-cross-sells-products--product-price-frontend.js 2.91 kB
build/cart-blocks/cart-cross-sells-products-frontend.js 3.83 kB
build/cart-blocks/cart-cross-sells-products-style.js 137 B
build/cart-blocks/cart-cross-sells-style.js 253 B
build/cart-blocks/cart-express-payment--checkout-blocks/express-payment-frontend.js 5.17 kB
build/cart-blocks/cart-express-payment-frontend.js 719 B
build/cart-blocks/cart-items-frontend.js 301 B
build/cart-blocks/cart-line-items--mini-cart-contents-block/products-table-frontend.js 5.47 kB
build/cart-blocks/cart-line-items-frontend.js 1.06 kB
build/cart-blocks/cart-line-items-style.js 137 B
build/cart-blocks/cart-order-summary-frontend.js 1.28 kB
build/cart-blocks/cart-totals-frontend.js 307 B
build/cart-blocks/cart-totals-style.js 238 B
build/cart-blocks/empty-cart-frontend.js 347 B
build/cart-blocks/filled-cart-frontend.js 655 B
build/cart-blocks/filled-cart-style.js 313 B
build/cart-blocks/order-summary-coupon-form-frontend.js 1.63 kB
build/cart-blocks/order-summary-discount-frontend.js 2.12 kB
build/cart-blocks/order-summary-discount-style.js 136 B
build/cart-blocks/order-summary-fee-frontend.js 272 B
build/cart-blocks/order-summary-fee-style.js 137 B
build/cart-blocks/order-summary-heading-frontend.js 333 B
build/cart-blocks/order-summary-heading-style.js 335 B
build/cart-blocks/order-summary-shipping-frontend.js 17 kB
build/cart-blocks/order-summary-subtotal-frontend.js 273 B
build/cart-blocks/order-summary-taxes-frontend.js 434 B
build/cart-blocks/order-summary-taxes-style.js 177 B
build/cart-blocks/proceed-to-checkout-frontend.js 1.43 kB
build/cart-frontend.js 29.9 kB
build/cart-rtl.css 9.59 kB
build/cart.css 9.58 kB
build/catalog-sorting-rtl.css 277 B
build/catalog-sorting.css 276 B
build/checkout-blocks/actions-frontend.js 1.88 kB
build/checkout-blocks/billing-address--checkout-blocks/shipping-address-frontend.js 4.7 kB
build/checkout-blocks/billing-address-frontend.js 1.18 kB
build/checkout-blocks/contact-information-frontend.js 2.04 kB
build/checkout-blocks/express-payment-frontend.js 1.13 kB
build/checkout-blocks/fields-frontend.js 318 B
build/checkout-blocks/fields-style.js 260 B
build/checkout-blocks/order-note-frontend.js 1.13 kB
build/checkout-blocks/order-summary-cart-items-frontend.js 3.75 kB
build/checkout-blocks/order-summary-coupon-form-frontend.js 1.79 kB
build/checkout-blocks/order-summary-coupon-form-style.js 137 B
build/checkout-blocks/order-summary-discount-frontend.js 2.29 kB
build/checkout-blocks/order-summary-fee-frontend.js 275 B
build/checkout-blocks/order-summary-fee-style.js 137 B
build/checkout-blocks/order-summary-frontend.js 1.28 kB
build/checkout-blocks/order-summary-shipping-frontend.js 17 kB
build/checkout-blocks/order-summary-shipping-style.js 137 B
build/checkout-blocks/order-summary-style.js 320 B
build/checkout-blocks/order-summary-subtotal-frontend.js 273 B
build/checkout-blocks/order-summary-subtotal-style.js 137 B
build/checkout-blocks/order-summary-taxes-frontend.js 435 B
build/checkout-blocks/order-summary-taxes-style.js 177 B
build/checkout-blocks/payment-frontend.js 9.28 kB
build/checkout-blocks/pickup-options-frontend.js 4.84 kB
build/checkout-blocks/shipping-address-frontend.js 1.18 kB
build/checkout-blocks/shipping-address-style.js 475 B
build/checkout-blocks/shipping-method-frontend.js 2.62 kB
build/checkout-blocks/shipping-methods-frontend.js 6.41 kB
build/checkout-blocks/terms-frontend.js 1.55 kB
build/checkout-blocks/terms-style.js 677 B
build/checkout-blocks/totals-frontend.js 347 B
build/checkout-blocks/totals-style.js 285 B
build/checkout-frontend.js 31.8 kB
build/checkout-rtl.css 9.22 kB
build/checkout.css 9.21 kB
build/customer-account-rtl.css 406 B
build/customer-account.css 406 B
build/customer-account.js 3.19 kB
build/featured-category-rtl.css 986 B
build/featured-category.css 987 B
build/featured-product-rtl.css 1.03 kB
build/featured-product.css 1.03 kB
build/filter-wrapper-frontend.js 14.3 kB
build/filter-wrapper-rtl.css 399 B
build/filter-wrapper.css 397 B
build/legacy-template-rtl.css 258 B
build/legacy-template.css 257 B
build/mini-cart-component-frontend.js 30.9 kB
build/mini-cart-contents-block/cart-button--mini-cart-contents-block/checkout-button--mini-cart-contents---358acf4e-style.js 293 B
build/mini-cart-contents-block/cart-button-frontend.js 1.73 kB
build/mini-cart-contents-block/checkout-button-frontend.js 1.81 kB
build/mini-cart-contents-block/checkout-button-style.js 470 B
build/mini-cart-contents-block/empty-cart-frontend.js 360 B
build/mini-cart-contents-block/filled-cart-frontend.js 267 B
build/mini-cart-contents-block/filled-cart-style.js 268 B
build/mini-cart-contents-block/footer-frontend.js 3.83 kB
build/mini-cart-contents-block/footer-rtl.css 419 B
build/mini-cart-contents-block/footer.css 418 B
build/mini-cart-contents-block/items-frontend.js 237 B
build/mini-cart-contents-block/items-style.js 237 B
build/mini-cart-contents-block/products-table--product-image--product-title-style.js 352 B
build/mini-cart-contents-block/products-table-frontend.js 582 B
build/mini-cart-contents-block/products-table-rtl.css 2.19 kB
build/mini-cart-contents-block/products-table.css 2.18 kB
build/mini-cart-contents-block/shopping-button-frontend.js 538 B
build/mini-cart-contents-block/shopping-button-style.js 403 B
build/mini-cart-contents-block/title-frontend.js 1.9 kB
build/mini-cart-contents-block/title-items-counter-frontend.js 1.59 kB
build/mini-cart-contents-block/title-items-counter-style.js 302 B
build/mini-cart-contents-block/title-label-frontend.js 1.53 kB
build/mini-cart-contents-block/title-label-style.js 301 B
build/mini-cart-contents-rtl.css 2.73 kB
build/mini-cart-contents.css 2.73 kB
build/mini-cart-frontend.js 2.85 kB
build/mini-cart-rtl.css 2.61 kB
build/mini-cart.css 2.61 kB
build/packages-style-rtl.css 3.59 kB
build/packages-style.css 3.59 kB
build/price-filter-frontend.js 14.6 kB
build/price-filter-rtl.css 2.71 kB
build/price-filter-wrapper-frontend.js 6.75 kB
build/price-filter-wrapper-rtl.css 2.56 kB
build/price-filter-wrapper.css 2.56 kB
build/price-filter.css 2.7 kB
build/price-format.js 1.19 kB
build/product-add-to-cart--product-average-rating--product-button--product-image--product-price--product---1d132d69.js 272 B
build/product-add-to-cart--product-image--product-title.js 351 B
build/product-add-to-cart-frontend.js 8.67 kB
build/product-add-to-cart-rtl.css 1.39 kB
build/product-add-to-cart.css 1.4 kB
build/product-average-rating-frontend.js 1.72 kB
build/product-button-frontend.js 4.96 kB
build/product-button-rtl.css 889 B
build/product-button.css 891 B
build/product-categories-rtl.css 671 B
build/product-categories.css 670 B
build/product-details-rtl.css 413 B
build/product-details.css 410 B
build/product-gallery-large-image-rtl.css 314 B
build/product-gallery-large-image.css 313 B
build/product-gallery-large-image.js 2.01 kB
build/product-gallery.js 2.3 kB
build/product-image-frontend.js 2.72 kB
build/product-image-gallery-rtl.css 322 B
build/product-image-gallery.css 322 B
build/product-image-rtl.css 951 B
build/product-image.css 949 B
build/product-price-frontend.js 248 B
build/product-price-rtl.css 696 B
build/product-price.css 695 B
build/product-price.js 1.67 kB
build/product-query-rtl.css 367 B
build/product-query.css 365 B
build/product-rating-counter-frontend.js 2.03 kB
build/product-rating-frontend.js 2.37 kB
build/product-rating-rtl.css 262 B
build/product-rating-stars-frontend.js 2.27 kB
build/product-rating-stars-rtl.css 914 B
build/product-rating-stars.css 916 B
build/product-rating.css 262 B
build/product-rating.js 1.04 kB
build/product-results-count-rtl.css 248 B
build/product-results-count.css 247 B
build/product-reviews-rtl.css 474 B
build/product-reviews.css 473 B
build/product-sale-badge-frontend.js 1.81 kB
build/product-sale-badge-rtl.css 392 B
build/product-sale-badge.css 389 B
build/product-search-rtl.css 435 B
build/product-search.css 434 B
build/product-sku-frontend.js 1.87 kB
build/product-sku-rtl.css 258 B
build/product-sku.css 258 B
build/product-sku.js 535 B
build/product-stock-indicator-frontend.js 2.06 kB
build/product-stock-indicator-rtl.css 250 B
build/product-stock-indicator.css 250 B
build/product-stock-indicator.js 729 B
build/product-summary-frontend.js 2.28 kB
build/product-summary-rtl.css 571 B
build/product-summary.css 572 B
build/product-template-rtl.css 439 B
build/product-template.css 437 B
build/product-template.js 3.35 kB
build/product-title-frontend.js 2.23 kB
build/product-title-rtl.css 718 B
build/product-title.css 719 B
build/rating-filter-frontend.js 21.4 kB
build/rating-filter-rtl.css 4.25 kB
build/rating-filter-wrapper-frontend.js 6.23 kB
build/rating-filter-wrapper-rtl.css 4.11 kB
build/rating-filter-wrapper.css 4.11 kB
build/rating-filter.css 4.24 kB
build/reviews-by-category-rtl.css 1.84 kB
build/reviews-by-category.css 1.84 kB
build/reviews-by-product-rtl.css 1.84 kB
build/reviews-by-product.css 1.84 kB
build/reviews-frontend.js 7.18 kB
build/single-product-rtl.css 399 B
build/single-product.css 397 B
build/stock-filter-frontend.js 21.6 kB
build/stock-filter-rtl.css 4.06 kB
build/stock-filter-wrapper-frontend.js 6.45 kB
build/stock-filter-wrapper-rtl.css 3.93 kB
build/stock-filter-wrapper.css 3.93 kB
build/stock-filter.css 4.06 kB
build/vendors--active-filters-wrapper--attribute-filter-wrapper--mini-cart-contents-block/cart-button--mi--d6bb29e6-style.js 606 B
build/vendors--attribute-filter-wrapper--cart-blocks/order-summary-coupon-form--cart-blocks/order-summary--48e1e4bb-frontend.js 6.84 kB
build/vendors--attribute-filter-wrapper--cart-blocks/order-summary-shipping--checkout-blocks/billing-addr--d9f38f9d-frontend.js 4.2 kB
build/vendors--attribute-filter-wrapper-frontend.js 5.11 kB
build/vendors--cart-blocks/cart-cross-sells-products--cart-blocks/cart-line-items--cart-blocks/cart-order--3c5fe802-frontend.js 5.26 kB
build/vendors--cart-blocks/cart-line-items--checkout-blocks/order-summary-cart-items--mini-cart-contents---233ab542-frontend.js 3.57 kB
build/vendors--cart-blocks/order-summary-shipping--checkout-blocks/billing-address--checkout-blocks/order--decc3dc6-frontend.js 19.4 kB
build/vendors--cart-blocks/proceed-to-checkout-style.js 179 B
build/vendors--checkout-blocks/pickup-options--checkout-blocks/shipping-methods-frontend.js 8.25 kB
build/vendors--checkout-blocks/shipping-method-frontend.js 12.4 kB
build/vendors--price-filter-wrapper-frontend.js 2.2 kB
build/vendors--product-add-to-cart-frontend.js 7.25 kB
build/vendors--rating-filter-wrapper-frontend.js 5.11 kB
build/vendors--stock-filter-wrapper-frontend.js 5.11 kB
build/wc-blocks-data.js 22.4 kB
build/wc-blocks-editor-style-rtl.css 6.39 kB
build/wc-blocks-editor-style.css 6.4 kB
build/wc-blocks-google-analytics.js 1.56 kB
build/wc-blocks-middleware.js 934 B
build/wc-blocks-registry.js 3.15 kB
build/wc-blocks-shared-context.js 1.1 kB
build/wc-blocks-shared-hocs.js 1.75 kB
build/wc-interactivity.js 10.4 kB
build/wc-payment-method-bacs.js 816 B
build/wc-payment-method-cheque.js 811 B
build/wc-payment-method-cod.js 909 B
build/wc-payment-method-paypal.js 837 B
build/wc-settings.js 2.6 kB
build/wc-shipping-method-pickup-location.js 30.4 kB

compressed-size-action

@nefeline nefeline marked this pull request as ready for review July 23, 2023 09:23
@nefeline nefeline self-assigned this Jul 23, 2023
@woocommercebot woocommercebot requested review from a team and thealexandrelara and removed request for a team July 23, 2023 09:23
@nefeline nefeline added type: bug The issue/PR concerns a confirmed bug. priority: high The issue/PR is high priority—it affects lots of customers substantially, but not critically. labels Jul 23, 2023
@nefeline nefeline requested a review from gigitux July 23, 2023 09:27
Copy link
Contributor

@nerrad nerrad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One clue I found related to the original issue is that with WooCommerce not active, wp.editSite does not have a value in the post editor whereas when it is active it does. This indicates that something in WooCommerce is loaded in the post editor environment with a dependency on @wordpress/site-editor and this ultimately causes the error.

I notice that in your changes, you removed the templates/revert-button/index.tsx path from the side-effects array configuration in package.json. That file imports the @wordpress/site-editor package (and is the only file in all of Woo to do so). Likely not a coincidence and also indicates that the revert button functionality might not be working as expected in production builds (I don't see it in your testing notes).

package.json Outdated
@@ -27,8 +27,7 @@
"./assets/js/blocks/filter-wrapper/register-components.ts",
"./assets/js/blocks/product-query/variations/**.tsx",
"./assets/js/blocks/product-query/index.tsx",
"./assets/js/blocks/product-query/inspector-controls.tsx",
"./assets/js/templates/revert-button/index.tsx"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What was this path removed from the side-effects configuration?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since revert-button/index.tsx is the only file that has a @wordpress/edit-site dependency. I suspect this is actually the cause of the issue, especially since it is imported as a root asset! It should only be imported/utilized in the site editor environment.

Copy link
Contributor Author

@nefeline nefeline Jul 24, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since revert-button/index.tsx is the only file that has a @wordpress/edit-site dependency. I suspect this is actually the cause of the issue, especially since it is imported as a root asset! It should only be imported/utilized in the site editor environment.

Oh, nice catch: that sounds like the cause of the problem here indeed!

What was this path removed from the side-effects configuration?

The revert button works as expected with and without having "./assets/js/templates/revert-button/index.tsx" in this side-effect: it looks like this was added so it can run on production builds. Tagging @gigitux for confirmation.

Copy link
Contributor

@gigitux gigitux Jul 24, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for working on this!

Since revert-button/index.tsx is the only file that has a @wordpress/edit-site dependency. I suspect this is actually the cause of the issue, especially since it is imported as a root asset! It should only be imported/utilized in the site editor environment.

I was aware of this issue, I tried to use a dynamic import, but it didn't work. I wrote a message on the Gutenberg PR. I have no idea how to fix this in a good way, but I'm happy to help if needed!

The revert button works as expected with and without having "./assets/js/templates/revert-button/index.tsx" in this side-effect: it looks like this was added so it can run on production builds. Tagging @gigitux for confirmation.

True!

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The revert button works as expected with and without having "./assets/js/templates/revert-button/index.tsx" in this side-effect: it looks like this was added so it can run on production builds. Tagging @gigitux for confirmation.

That's odd, the described behaviour in this PR of the navigation block issue being resolved in production builds but not in development builds is consistent with the import being stripped out of production builds because it is considered a side-effect. This should be easily verifiable by checking to see if wp.editSite is available in the post editor with a production build of Woo Blocks.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right; I may have hit caching on my initial tests. I just had an idea to circumvent this: I will try to conditionally load the necessary script via PHP rather than JS, as I suspect it's not possible to truly conditionally import a module directly in the JavaScript execution flow.

assets/js/blocks/mini-cart/edit.tsx Outdated Show resolved Hide resolved
assets/js/templates/revert-button/index.tsx Outdated Show resolved Hide resolved
@nefeline
Copy link
Contributor Author

I notice that in your changes, you removed the templates/revert-button/index.tsx path from the side-effects array configuration in package.json. That file imports the @wordpress/site-editor package (and is the only file in all of Woo to do so). Likely not a coincidence and also indicates that the revert button functionality might not be working as expected in production builds (I don't see it in your testing notes).

Interesting! That looks like the cause of the problem indeed, but I wonder what is the correct approach to follow, because based on the release notes for WordPress 6.3, importing from '@wordpress/edit-site' is the recommended approach for adding additional information in the site editor’s Template sidebar, and this is what we are doing on /assets/js/templates/revert-button/index.tsx: https://make.wordpress.org/core/2023/07/18/miscellaneous-editor-changes-in-wordpress-6-3/

@gigitux
Copy link
Contributor

gigitux commented Jul 24, 2023

I notice that in your changes, you removed the templates/revert-button/index.tsx path from the side-effects array configuration in package.json. That file imports the @wordpress/site-editor package (and is the only file in all of Woo to do so). Likely not a coincidence and also indicates that the revert button functionality might not be working as expected in production builds (I don't see it in your testing notes).

Interesting! That looks like the cause of the problem indeed, but I wonder what is the correct approach to follow, because based on the release notes for WordPress 6.3, importing from '@wordpress/edit-site' is the recommended approach for adding additional information in the site editor’s Template sidebar, and this is what we are doing on /assets/js/templates/revert-button/index.tsx: https://make.wordpress.org/core/2023/07/18/miscellaneous-editor-changes-in-wordpress-6-3/

It is the only way to import that function :/

We should try to import the package with a dynamic import. I tried, but I wasn't able to do it 🤔

@Aljullu Aljullu force-pushed the 10259-woocommerce-causing-malfunction-of-the-navigation-block-on-wordpress-63 branch from 067326e to 2057f0f Compare July 24, 2023 10:44
@nefeline
Copy link
Contributor Author

We should try to import the package with a dynamic import. I tried, but I wasn't able to do it 🤔

Yeah, it's tricky. I was trying to figure out alternative approaches, but nothing came to mind up until now. Should we work on the revert button on a separate PR to unblock the patch release?

@nefeline nefeline requested a review from nerrad July 24, 2023 12:05
@gigitux
Copy link
Contributor

gigitux commented Jul 24, 2023

Yeah, it's tricky. I was trying to figure out alternative approaches, but nothing came to mind up until now. Should we work on the revert button on a separate PR to unblock the patch release?

We have times to fix the issue (I would say at least one week), is there a particular reason you want to do a patch release now?

(I would prefer reduce the number of patch release)

@nefeline
Copy link
Contributor Author

nefeline commented Jul 24, 2023

We should try to import the package with a dynamic import. I tried, but I wasn't able to do it 🤔

@gigitux do you mind sharing more details about the approach you attempted to implement for a dynamic import?

Edit: I just noticed that when you attempted to solve this problem back in May, Riad mentioned over here that we:

might be "bundling" the edit-site dependency which duplicates some JS packages

Did you make any progress on that front?

@nefeline
Copy link
Contributor Author

nefeline commented Jul 24, 2023

Update regarding the revert-button:

I made some attempts to solve the problem, including:

  • Conditionally loading '@wordpress/edit-site' via PHP;
  • Dynamic import to load modules on-demand, at runtime, instead of statically at the beginning.

But none of those worked. We are following the recommendations from Gutenberg for the usage of the PluginTemplateSettingPanel component so I reached out to Nik on WordPress/gutenberg#50257 (comment) to ask a few questions about not only this conflict with the navigation block, but also regarding the core/interface is already registered error.

@nefeline nefeline added this to the 10.6.2 milestone Jul 27, 2023
Copy link
Contributor

@nerrad nerrad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What Jarda was getting at in his comment on the Gutenberg ticket is that we should be building a different entrypoint for the script that requires wp.edit-site so that script gets conditionally loaded in the site editor context. Right now revert-button, is a direct dependent of the wc-blocks-shared-context entry point and it shouldn't be.

A few concerns about the latest changes:

  • The extra configuration for @wordpress/edit-site as an external is not needed. That's handled already in our configuration.
  • The changes to enqueueing wc-blocks-shared-context with no dependencies is fragile (it should utilize any assets.php file if it exists. The current implementation is fragile if in the future a dependency is added, it could easily be missed to have that dependency registered here.
  • Explicitly enqueuing wp-edit-site should be unnecessary. If we break out a new entry point script for revert_button, that script registration only on the site editor context should automatically take care of the correct dependencies assuming we're using the context of its relevant assets.php for getting them.

bin/webpack-entries.js Show resolved Hide resolved
@nefeline
Copy link
Contributor Author

My apologies @nerrad : I should have moved this PR to draft/in progress as I'm still figuring things out: I was experimenting with webpack externals and a few other ideas: will ping you as soon as this is ready.

@nefeline nefeline marked this pull request as draft July 27, 2023 12:07
@nefeline
Copy link
Contributor Author

Closing this out in favor of #10388

@nefeline nefeline closed this Jul 27, 2023
@nefeline nefeline removed this from the 10.6.2 milestone Jul 27, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
priority: high The issue/PR is high priority—it affects lots of customers substantially, but not critically. type: bug The issue/PR concerns a confirmed bug.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

WooCommerce causing malfunction of the navigation block on WordPress 6.3
4 participants