Shopify app deploy fails with "At least one specification (.toml OR .json) file is required"

Running shopify app deploy consistently fails with the error:

Version couldn't be created.

At least one specification (.toml OR .json) file is required

See specification requirements: https://shopify.dev/docs/apps/build/sales-channels/channel-config-extension#specification-properties

This happens on ALL apps (existing and freshly scaffolded with shopify app init), confirming it’s not project-specific.

Environment:

  • CLI version: 3.84.1 / 3.93.2

  • Node: 24.2.0 (via nvm, also tried 22.14.0)

  • macOS ARM64

  • Organization ID: 130408367

  • App ID: 349917020161 (also reproduced with App 347012562945 and fresh apps)

App type: Embedded app with 3 Shopify Function extensions (product_discounts + validation), Custom distribution. NOT a sales channel.

Steps to reproduce:

  1. shopify app init → Build a Remix app

  2. shopify app deploy

  3. Error occurs at appVersionCreate mutation

The functions build successfully. The error comes from the server-side appVersionCreate GraphQL mutation. The error message references sales channel specifications, but this is not a sales channel app.

Another log that might be helping :

➜  nex-tep-shopify-discounts-architect git:(main) ✗ shopify app dev
╭─ info ──────────────────────────────────────────────────────────────────────────────────────────────╮
│                                                                                                     │
│  Using shopify.app.nex-tep-discounts-architect.toml for default values:                             │
│                                                                                                     │
│    • Org:             Wetrust Interactive S.L.                                                      │
│    • App:             Nex-tep Discounts Architect                                                   │
│    • Dev store:       percko-3oum4rl7.myshopify.com                                                 │
│    • Update URLs:     Yes                                                                           │
│                                                                                                     │
│   You can pass --reset to your command to reset your app configuration.                           │
│                                                                                                     │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────╯

15:17:39 │                     remix │ Running pre-dev command: “npx prisma generate”
15:17:39 │               app-preview │ Preparing app preview on percko-3oum4rl7.myshopify.com
15:17:39 │                  graphiql │ GraphiQL server started on port 3457
15:17:39 │                     proxy │ Proxy server started on port 49290
15:17:39 │ discount-architect-valida │ Building function discount-architect-validator…
15:17:39 │ discount-architect-valida │ Building GraphQL types…
15:17:39 │   discount-architect-auto │ Building function discount-architect-auto…
15:17:39 │   discount-architect-auto │ Building GraphQL types…
15:17:39 │   discount-architect-code │ Building function discount-architect-code…
15:17:39 │   discount-architect-code │ Building GraphQL types…
15:17:40 │   discount-architect-code │ Bundling JS function…
15:17:40 │   discount-architect-auto │ Bundling JS function…
15:17:40 │ discount-architect-valida │ Bundling JS function…
15:17:40 │   discount-architect-auto │ Running javy…
15:17:40 │   discount-architect-code │ Running javy…
15:17:40 │ discount-architect-valida │ Running javy…
15:17:41 │   discount-architect-code │ Done!
15:17:41 │   discount-architect-auto │ Done!
15:17:41 │ discount-architect-valida │ Done!
15:17:42 │                     remix │ Prisma schema loaded from prisma/schema.prisma
15:17:42 │                     remix │ Datasource “db”: SQLite database “dev.sqlite” at “file:dev.sqlite”
15:17:42 │                     remix │
15:17:42 │                     remix │ 1 migration found in prisma/migrations
15:17:42 │                     remix │
15:17:42 │                     remix │
15:17:42 │                     remix │ No pending migrations to apply.
15:17:42 │                     remix │   ➜  Local:   http://localhost:49293/
15:17:42 │                     remix │   ➜  Network: use --host to expose
15:17:43 │               app-preview │ ❌ Error
15:17:43 │               app-preview │ └  At least one specification (.toml OR .json) file is required
15:17:43 │               app-preview │
15:17:43 │               app-preview │ See specification requirements:




───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
│ (d) Dev status │ (a) App info │ (s) Store info │                                                                                 (q) Quit

❌ Error updating app preview

╭─ error ─────────────────────────────────────────────────────────────────────────────────────────────╮
│                                                                                                     │
│  Failed to start app preview.                                                                       │
│                                                                                                     │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────
╯

@gjadeau I had the same issue. It works for me after upgrading to the latest CLI version:

npm install -g @shopify/cli@latest