- the webhook URL, signing secret and
webhookTopics - the launch URL (
appUrl) - the redirect URIs
- the storefront extensions (embeds and blocks)
- the dashboard extensions
- the MCP server URL
- the workflow actions and triggers your app declares
Development config (
devConfig) is deliberately not part of a release. It is your own testing
target, and a development install is never pinned to a release.Why use a release
Editing your app’s fields changes what every install sees immediately. A release lets you freeze a working config, publish a change deliberately, send it to a small share of installs first, and go back to the previous config without editing anything by hand.Create and publish
Create a draft from the current config, then publish it:Stage a rollout
Publish below 100 to send the change to a share of installs first:rolloutPercent is required on this route, because an omitted value would silently do nothing.
Roll back
What an install runs
- A new or reactivated production install is pinned to the current release, or to the previous published release when its stable bucket falls outside a staged rollout.
- A pinned install uses its release’s webhook URL, signing secret and topics, even after you edit the app’s fields.
- A development install is never pinned and keeps using
devConfig. - An install created before releases existed has no release and falls back to the app’s current fields.
Keep the response server side
A release response can include the webhook signing secret. The routes are owner only, require your merchant session and never accept an app token, but do not log the response or ship it to a browser you do not control.Next steps
Release endpoints
Request and response shapes for every release route.
Webhooks
How the pinned URL, secret and topics are used on delivery.

