Theme App Extension — Some block JS/CSS assets not served when multiple blocks are active on the same page

Description:

I have multiple theme app extension blocks from the same extension bundle active on a product page template (product.json).

Observed behavior:

  • extension_1.js:white_check_mark: served on product page

  • extension_2.js:cross_mark: NOT served on product page (but served on index page)

  • extension_3.js:cross_mark: NOT served on product page

All blocks are active in product.json, same app instance UUID, same deploy.

What we’ve ruled out:

  • Theme content_for_header is present unconditionally :white_check_mark:

  • All blocks are correctly added to the template :white_check_mark:

  • Extension code (javascript field in schema) is correctly defined :white_check_mark:

  • Same bundle UUID across all pages :white_check_mark:

  • Works correctly on other stores :white_check_mark:

Question: What determines which block JS/CSS assets are served on a given page when multiple blocks from the same extension bundle are active? Is there a known limitation or undocumented behavior in Shopify’s theme app extension asset serving mechanism?