Hi everyone,
I’m building a Shopify app that includes a Checkout UI Extension (using purchase.checkout.block.render) which adds a custom field during checkout.
As per Shopify behavior, I understand that:
-
Checkout UI Extensions always load for every checkout once the app is installed
-
We cannot attach or detach the extension based on a merchant’s plan
-
The only control we have is conditional rendering inside the extension
My requirement
I want to:
-
Show the custom checkout field only for merchants on a paid plan
-
Completely hide the field for merchants on a free plan
Constraints
I want to avoid:
-
Calling a backend API on every checkout to check subscription status
-
Calling any metafield API or relying on dynamic metafield reads
-
Any solution that could impact checkout performance or scalability
My question
Is there any other Shopify-recommended or scalable approach to handle free vs paid plan logic in a Checkout UI Extension without:
-
backend API calls
-
metafield reads
Or is using a shop-level metafield (updated on billing change) the only correct and supported approach for gating features in checkout extensions?
I’d appreciate guidance from anyone who has implemented paid feature gating in Checkout UI Extensions or has insight into Shopify best practices.
Thanks in advance