Weaverse LogoWeaverse
All Articles
Paul Phan
7 mins read

Shopify CLI 4.0 Just Shipped. Your CI/CD Pipeline Probably Breaks On Monday.

Shopify CLI 4.0 introduces SemVer, auto-updates, and removes the --force flag from app deploy. Here's the exact migration every Hydrogen team needs to ship to their CI/CD pipelines.
#shopify#hydrogen#headless-commerce#shopify-cli#cicd
Shopify CLI 4.0 Just Shipped. Your CI/CD Pipeline Probably Breaks On Monday.
Table of Contents

Shopify CLI 4.0 shipped on May 21, 2026. It's the cleanest CLI release Shopify has done in years — semantic versioning, automatic upgrades, granular CI/CD safety flags. It's also a hard breaking change for anyone whose deploy pipeline still calls shopify app deploy --force.

If your team runs Hydrogen storefronts and Shopify apps through GitHub Actions, GitLab CI, Bitbucket Pipelines, or any other automated deploy runner, the --force flag has been removed. Stop using it. The replacement isn't optional anymore.

Here's exactly what changed, what to fix this weekend, and what the auto-update behavior means for your local dev environment.

What CLI 4.0 actually ships

Three things, in order of "things that will break production for you":

1. The --force flag is gone

shopify app deploy --force and shopify app release --force no longer accept the flag. They throw on it.

Shopify's reasoning is solid: --force skipped all confirmation prompts including the one for extension deletions — a destructive action that wipes data on every shop that installed your app. One typo in a script and you'd nuke an entire extension's data without a single prompt. The flag couldn't tell the difference between "I added a new field, please proceed" and "I removed a UI extension, please permanently delete it from every merchant."

The replacement landed back in March 2026: two granular flags that separate low-risk from high-risk operations.

# OLD — broken in CLI 4.0
shopify app deploy --force
# NEW — low-risk: adds and updates extensions, blocks deletions
shopify app deploy --config production --allow-updates
# NEW — high-risk: allows deletions too, only use on manual workflow runs
shopify app deploy --config production --allow-updates --allow-deletes

For Hydrogen teams running multiple Shopify apps (storefront proxy apps, custom checkout extensions, admin tools), this is the change you need to ship in your CI/CD config today. Every --force in your YAML files needs to become --allow-updates. The --allow-deletes flag should never appear in an automated pipeline — keep it for manual deploys when you've already reviewed exactly which extensions are coming out.

2. Semantic versioning replaces "romantic versioning"

Shopify's previous CLI versioning was loosely chronological — version numbers bumped on a rough release cadence regardless of whether changes were additive, fixes, or breaking. As of 4.0, that's done. CLI follows real SemVer:

  • Patch releases (4.0.1, 4.0.2) = bug fixes only
  • Minor releases (4.1.0, 4.2.0) = new features, backward compatible
  • Major releases (5.0.0) = breaking changes to command structure or behavior

For Hydrogen teams that pin CLI versions in package.json or in a Docker image, this means you can finally trust the version number. A minor bump is safe. A patch bump is safer. A major bump is the only thing you need to gate behind a review.

This is also the version Shopify will use to communicate future deprecations. If you see CLI 5.0 announced, treat it the same way you'd treat Hydrogen 2027.1 — read the migration notes before you upgrade.

3. Automatic CLI upgrades are now default

This is the change most teams won't notice until it bites them.

Starting with 4.0, Shopify CLI upgrades itself automatically using whichever package manager you installed it with (npm, pnpm, Homebrew, etc.). The intent is good: most devs were running months-old CLI versions and missing security fixes and new features.

Auto-upgrade is skipped in three cases:

  1. CI environments (detected via standard env vars) — your pipelines won't auto-upgrade
  2. Project-local installs (./node_modules/@shopify/cli) — locks to whatever version your package.json pins
  3. Major version releases — auto-upgrade only crosses minor/patch boundaries, never major

That means for local dev on a developer's machine, the CLI just stays current. For CI and for projects with a pinned dependency, behavior is unchanged.

If you specifically want to disable auto-upgrade everywhere:

shopify config autoupgrade off

For most Hydrogen teams, the right setup is: pin CLI in package.json for the repo (no surprise upgrades affecting builds), let global installs auto-upgrade so individual devs stay fresh.

Other commands and flags removed in 4.0

The 4.0 release also clears out a handful of long-deprecated command aliases. These have been printing deprecation warnings for months; now they throw.

REMOVED REPLACEMENT
shopify webhook trigger shopify app webhook trigger
shopify theme serve shopify theme dev
shopify app generate schema shopify app function schema
shopify app webhook trigger --shared-secret --client-secret
shopify app generate extension --type --template

If your Hydrogen project's package.json scripts, your Makefiles, your README quickstart, or your runbook docs reference any of the left-hand column, update them today.

The Hydrogen-specific CI/CD checklist for this weekend

For a typical Hydrogen + Shopify app stack, here's the exact audit:

1. Grep your CI/CD config files for --force

grep -r "shopify app deploy --force" .github/ .gitlab-ci.yml ci/ 2>/dev/null
grep -r "shopify app release --force" .github/ .gitlab-ci.yml ci/ 2>/dev/null

Replace every hit with --allow-updates. If you need deletions, do them manually outside the pipeline.

2. Check your pinned CLI version

If your project has @shopify/cli in devDependencies, look at the pinned version. Anything older than 4.0 is fine for now but will need to bump on next major Hydrogen feature you adopt that requires the new CLI. Anything pinned to 4.0+ should use a caret (^4.0.0) so you get minor and patch updates automatically.

3. Update your team's CLI docs

The five removed commands above are extremely likely to be sitting in someone's onboarding doc or README. Search for shopify theme serve and shopify webhook trigger specifically — those are the two that show up in tutorials and old blog posts and will trip up new devs.

4. Test deploy locally before the next CI run

The fastest way to confirm your migration is clean: pull the branch with your CI/CD changes, run the new --allow-updates deploy command from your laptop against a staging environment, and watch the output. If it deploys cleanly, the CI run will too.

5. Add a CI step that pins CLI version explicitly

For belt-and-braces safety, add an explicit install step at the top of your CI workflow:

- name: Install pinned Shopify CLI
run: npm install -g @shopify/cli@^4.0.0

This guarantees CI uses 4.x even if some upstream image or cache served you something older.

Why this release actually matters

For most Hydrogen teams the CLI is invisible infrastructure — until it isn't. Three subtle things land with 4.0 that change how shopify-cli-on-Hydrogen actually feels day to day.

Auto-upgrade closes the security gap. The number of teams running 2-year-old CLI versions with known fixes available was uncomfortable. Auto-upgrade quietly drops that to weeks at most for global installs.

SemVer means real changelogs. When 4.1 ships, you can read the release notes and trust that nothing breaks. When 5.0 ships, you know to read carefully. That's a meaningful change in how the platform communicates.

--allow-updates and --allow-deletes are the right split. Most CI/CD failures we've seen on Hydrogen + Shopify app projects come from --force doing more than the engineer expected. Forcing the split makes the destructive case explicit and the safe case automatic.

The teams shipping serious Hydrogen storefronts in 2026 spend a meaningful fraction of their time on the deploy and operations surface — pinning versions, locking down CI, separating staging from production runs, gating destructive changes. CLI 4.0 makes that work cleaner without requiring a team-wide process change. It's a release worth upgrading to this weekend.

The bottom line

CLI 4.0 is a small migration with a hard deadline: the next CI/CD run on a project still using --force. The fix is a one-line replacement in your pipeline config. The SemVer and auto-upgrade changes are pure quality-of-life improvements once you understand them.

If you're maintaining a Hydrogen storefront and the deploy pipeline is one of your active engineering tracks, the Weaverse team takes on Hydrogen engagements end-to-end including the CI/CD and deploy hardening surface. Senior engineers, fast scoping, deep platform fluency on the moving Shopify CLI, app deploy, and Hydrogen release cadence. Talk to us →

Sources

Reactions

Like
Love
Celebrate
Insightful
Cool!
Thinking

Join the Discussion

Never miss an update

Subscribe to get the latest insights, tutorials, and best practices for building high-performance headless stores delivered to your inbox.

Join the community of developers building with Weaverse.