Problem
The s-consent-phone-field and s-consent-checkbox web components are completely broken when used inside a Customer Account UI Extension. Instead of rendering the components, the browser console throws:
The extension itself builds and deploys successfully, the error only appears at runtime in the storefront page.
Code to Reproduce
OrderStatusBlock.tsx
import '@shopify/ui-extensions/preact';
import { render } from 'preact';
export default async () => {
render(<Extension />, document.body);
};
function Extension() {
return (
<s-stack direction="block" gap="base">
<s-form>
<s-consent-phone-field
name="sms-marketing-phone"
label="Phone"
policy="sms-marketing"
defaultValue="587-746-7439"
/>
<s-consent-checkbox
name="sms-marketing-consent"
defaultChecked
label="Text me with news and offers"
policy="sms-marketing"
/>
</s-form>
</s-stack>
);
}
shopify.extension.toml (relevant section)
[extensions.capabilities.collect_buyer_consent]
customer_privacy = true
sms_marketing = true
What I’ve Already Tried
Enabled the sms_marketingandcustomer_privacy(I also tried individually) capabilities in the TOML as required by the docs
Adjusted the API version in the TOML
Confirmed other web components (s-stack,s-form, etc.) render without issues in the same extension
Verified the extension builds successfully (Build successful+Extension changedin the CLI)
App preview is updated on the dev store
No TypeScript or import errors in the extension component file, the error only appears in the browser at runtime
Expected Behavior
s-consent-phone-fieldands-consent-checkboxshould render as documented on:- The
sms_marketingcapability flag in the TOML should be sufficient to unlock these components.
Actual Behavior
-
Both components are silently broken from the rendered UI.
-
The browser console shows:
-
No error is shown in the extension source file or during the build, the failure is purely at runtime.
Environment
| Shopify CLI version | (latest) |
| Extension type | Customer Account UI Extension (Web Components) |
| Target | customer-account.order-status.block.render |
| Dev store | New Customer Accounts enabled |
| API version | 2026-04 / latest |
Request
Please investigate whether s-consent-phone-field and s-consent-checkbox are actually registered as remote elements in the Customer Account UI Extension runtime, or if the collect_buyer_consent capability flag is not being picked up correctly to unlock them.
Happy to provide a minimal reproduction repo if needed. Thanks!
