Product Icon

WooCommerce

Sell online with the flexible, customizable eCommerce platform designed to grow with your business. From your first sale to millions in revenue, Woo is with you. See why merchants trust us to power 3.4 million online stores.

Deferred loading via Ajax of product blocks (upsells, related, cross sells etc.)

Many sites face a situation where regular pages, posts, catalog pages load quickly, and product pages load more slowly. A bunch of optimizations, caching does not help much.

Any product blocks have a very strong influence on this, especially if for marketing you need to display more than 10 products in a block (it can be 20+ in one block and in another).

Comparing the product page without them and with them, you can see a noticeable difference in the speed of loading the product page. The situation is also similar when using Gutenberg product blocks.

Therefore, it is advisable to implement the ability in the plugin settings to enable loading of product blocks (upsells, related, cross sells, as well as Gutenberg product blocks) using Ajax.

Author

tunyk

Current Status

Open

Last updated: May 14, 2025

2 comments

Log in to comment on this feature request.

  1. polytrackio says:

    The benefit of this is Reduced TTFB and First Paint for the product page and a “lighter” feel for the User, as the main content (description, product image) is displayed immediately. PolyTrack

  2. sunyatasattva says:

    Hello @tunyk!

    Thank you for your feature request. What you are reporting seems odd to me. Let me clarify: we have two kinds of “Products” block.

    The first—old—kind is client-side rendered, which means it does exactly what you are asking for here: it loads a very minimal HTML, and then defers the loading of the actual products data after the user has visited the page. We have found this to be not performant, to hurt user perception of the store, and also not-SEO friendly. This is why we moved away from these blocks, into the second type.

    The second type, accessible by typing “Product Collection” in the inserter, is much more performant and renders server-side. Which means that loads all the products before showing the page. Can you confirm that you are using this block and that you are seeing a degraded performance? To clarify, the difference between loading 10 or 20 products in a block should be negligible as far as the server query goes, so if you are seeing a substantial difference, this is definitely something we’d want to look at, as it shouldn’t be like that.

    Thanks for the feedback!