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.0shopify app deploy --force# NEW — low-risk: adds and updates extensions, blocks deletionsshopify app deploy --config production --allow-updates# NEW — high-risk: allows deletions too, only use on manual workflow runsshopify 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:
- CI environments (detected via standard env vars) — your pipelines won't auto-upgrade
- Project-local installs (
./node_modules/@shopify/cli) — locks to whatever version yourpackage.jsonpins - 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 REPLACEMENTshopify webhook trigger shopify app webhook triggershopify theme serve shopify theme devshopify app generate schema shopify app function schemashopify app webhook trigger --shared-secret --client-secretshopify 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/nullgrep -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 CLIrun: 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
- Shopify changelog — Shopify CLI 4.0 release (May 21, 2026): https://shopify.dev/changelog/shopify-cli-40-semver-auto-updates-removing-deprecated-flags-and-commands
- Shopify changelog —
--forceflag deprecation announcement (March 25, 2026): https://shopify.dev/changelog/the-shopify-cli-app-release-force-flag-is-deprecated-and-will-be-removed - Shopify community — From romantic to semantic: CLI versioning and auto-updates announcement: https://community.shopify.dev/t/from-romantic-to-semantic-shopify-cli-versioning-and-auto-updates/33069
- Shopify docs —
shopify app deployflags reference: https://shopify.dev/docs/api/shopify-cli/app/app-deploy - Shopify docs — CI/CD deployment for apps: https://shopify.dev/docs/apps/launch/deployment/deploy-in-ci-cd-pipeline
- Shopify docs — Shopify CLI upgrade reference: https://shopify.dev/docs/api/shopify-cli#upgrade-shopify-cli



