Hi everyone! Customer account extensions, regardless of target do not respect the Theme Editor block visibility settings and are always rendered.
Steps to reproduce
- Generate a new extension with
shopify app generate extension(choose customer-account) - Deploy or run
shopify app dev - Open the Shopify Theme Editor; Navigate to the Order Status page which is the default target for customer-account-extensions.
- Add the block for the extension
- Navigate to the live Order Status page and confirm the block is visible
- Toggle off the visibility for the app block in the Shopify Theme Editor
- Refresh the live Order Status page - the extension is still visible even though the visibility toggle is off
Expected Behavior
When a merchant hides (or removes) a customer account block extension in the active checkout/accounts configuration and saves, the extension should not render on the corresponding live customer account page — consistent with the editor preview and with how merchants interpret the visibility control.
Actual Behavior
-
Editor preview: Hidden state works after Save.
-
Live customer account page: Block still renders; extension JavaScript still runs.
-
No custom visibility logic in app code — the scaffold only calls
render()with a banner component.
Environment
-
Extension created with
shopify app generate extension→ customer account UI template (stock scaffold, no changes) -
Language: JavaScript (JSX)
-
UI stack: Preact 10.29.2 +
@shopify/ui-extensions/preact+ Polaris web components (s-banner,s-text) -
Extension API version:
2026-04(shopify.extension.toml) -
@shopify/ui-extensions: 2025.10.0 -
Shopify CLI: 3.94.3
-
Target: default -
customer-account.order-status.block.render; triedcustomer-account.order-index.block.rendertoo and the behavior is the same. -
Store: New customer accounts (not legacy)
-
Configuration: Single active checkout/accounts configuration
Extension code
import '@shopify/ui-extensions/preact';
import {render} from "preact";
export default async () => {
render(<Extension />, document.body)
}
function Extension() {
return (
<s-banner>
<s-text>
{shopify.i18n.translate("earnPoints")} dsadsa
</s-text>
</s-banner>
);
}
Extension Configuration
# Learn more about configuring your Customer account UI extension:
# https://shopify.dev/api/customer-account-ui-extensions/unstable/configuration
# The version of APIs your extension will receive. Learn more:
# https://shopify.dev/docs/api/usage/versioning
api_version = "2026-04"
[[extensions]]
name = "customer-account-test"
handle = "customer-account-test"
type = "ui_extension"
uid = "541bb7f4-2a43-6f59-3384-428b804471e7165d661a"
# Controls where in Shopify your extension will be injected,
# and the file that contains your extension’s source code. Learn more:
# https://shopify.dev/docs/api/customer-account-ui-extensions/unstable/extension-targets-overview
[[extensions.targeting]]
module = "./src/OrderStatusBlock.jsx"
target = "customer-account.order-status.block.render"
[extensions.capabilities]
# Gives your extension access to directly query Shopify’s storefront API.
# https://shopify.dev/docs/api/customer-account-ui-extensions/unstable/configuration#api-access
api_access = true
# Gives your extension access to make external network calls, using the
# JavaScript `fetch()` API. Learn more:
# https://shopify.dev/docs/api/customer-account-ui-extensions/unstable/configuration#network-access
# network_access = true