Block target (purchase.checkout.block.render) UI not rendered for logged-in customers

Block target (purchase.checkout.block.render) UI not rendered for logged-in customers

Summary

Extensions using the purchase.checkout.block.render target execute correctly but their UI is not rendered for logged-in customers. The extension code runs, hooks return correct data, and the component returns valid JSX, but nothing appears on screen. Guest checkout works fine.

Environment

  • Shopify Plus store
  • Checkout UI Extension API version: 2025-07
  • Extension target: purchase.checkout.block.render
  • Extension block placed below the “Delivery” section in checkout editor
  • Store has both Shipping and Local Pickup delivery methods enabled

Steps to Reproduce

  1. Set up a store with both Shipping and Local Pickup delivery methods
  2. Add a checkout UI extension using purchase.checkout.block.render target
  3. Place the extension block below the “Delivery” section in the checkout editor (the section that contains both Shipping and Pickup targets)
  4. As a guest, go to checkout, select “Pickup”, choose a location — the extension renders correctly
  5. Log in as a customer and go to checkout with “Pickup” selected and a location chosen
  6. The extension UI is not rendered — not when the section is collapsed, and not after expanding it

Expected Behavior

Per the extension targets documentation:

“Block targets always render, regardless of which checkout features are active.”

The extension should render for both guest and logged-in customers.

Actual Behavior

The extension executes correctly — hooks return accurate data and the component returns valid JSX — but the UI is not rendered for logged-in customers. Expanding the collapsed section does not help.

Console logs confirm the extension is running and returning render logs.

Workaround

Switching from the block target to the static target purchase.checkout.pickup-location-list.render-after resolves the issue. The extension renders correctly for both guest and logged-in customers.

Impact

Breaking issue for any block target extension placed below the “Delivery” section that provides critical checkout functionality. In our case, logged-in customers cannot see the required pickup time slot selector (which was created before there was a specific purchase.checkout.pickup-location-list.render-aftertarget)

1 Like

Hey @niepoort - thanks for flagging, and for the detailed write-up.

This reads like it could be a potential issue to me. My understanding is that block targets should always render regardless of which checkout features are active, and from what you share there, your extension is running (hooks returning data, JSX returned,
logs firing).

A few things would help me dig in:

  1. Minimal repro - Can you try a stripped-down extension with just Hello in purchase.checkout.block.render I can test this on my send to see if that also disappears for logged-in
    customers.
  2. DevTools check - When logged in and the UI’s missing, is the extension’s iframe in the DOM at all? If it’s there, does it have display: none or zero dimensions? Any console errors? Helps figure out if it’s not mounting vs. mounting but hidden.

Hope to hear from you soon!