Skip to content

feat(wrangler): Add a new wrangler preview command group for Worker Previews#12983

Merged
petebacondarwin merged 49 commits intocloudflare:mainfrom
1000hz:introducing-wrangler-preview
Apr 9, 2026
Merged

feat(wrangler): Add a new wrangler preview command group for Worker Previews#12983
petebacondarwin merged 49 commits intocloudflare:mainfrom
1000hz:introducing-wrangler-preview

Conversation

@1000hz
Copy link
Copy Markdown
Contributor

@1000hz 1000hz commented Mar 20, 2026

Refs IAC-362

This PR introduces a wrangler preview family of commands for creating Preview deployments and managing Previews settings. This feature is currently limited to private beta status.

New commands

  • wrangler preview
  • wrangler preview delete
  • wrangler preview settings
  • wrangler preview settings update
  • wrangler preview secret put
  • wrangler preview secret delete
  • wrangler preview secret list
  • wrangler preview secret bulk
image

It also introduces a previews property to the Wrangler config schema which includes all binding-related fields as well as limits, observability, and logpush. These fields all adhere to their existing heritability traits, with previews itself being inheritable. This property allows users to specify an alternate configuration for their Worker's Preview deployments.

Also included are some new box drawing utilities, though we may want to swap these out for a library like https://github.com/sindresorhus/boxen in the future.


  • Tests
    • Tests included/updated
    • Automated tests not possible - manual testing has been completed as follows:
    • Additional testing not necessary because:
  • Public documentation

Open with Devin

@1000hz 1000hz requested a review from a team as a code owner March 20, 2026 08:35
@changeset-bot
Copy link
Copy Markdown

changeset-bot bot commented Mar 20, 2026

🦋 Changeset detected

Latest commit: a0e7656

The changes in this PR will be included in the next version bump.

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@workers-devprod
Copy link
Copy Markdown
Contributor

workers-devprod commented Mar 20, 2026

Codeowners approval required for this PR:

  • @cloudflare/wrangler
Show detailed file reviewers
  • packages/workers-utils/src/config/config.ts: [@cloudflare/wrangler]
  • packages/workers-utils/src/config/environment.ts: [@cloudflare/wrangler]
  • packages/workers-utils/src/config/index.ts: [@cloudflare/wrangler]
  • packages/workers-utils/src/config/validation.ts: [@cloudflare/wrangler]
  • packages/workers-utils/tests/config/validation/normalize-and-validate-config.test.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/tests/index.test.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/tests/preview.test.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/index.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/preview/api.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/preview/index.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/preview/preview.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/preview/secret.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/preview/settings.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/preview/shared.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/utils/box.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/utils/merge-deep.ts: [@cloudflare/wrangler]

devin-ai-integration[bot]

This comment was marked as resolved.

@1000hz 1000hz force-pushed the introducing-wrangler-preview branch from f9cf745 to 2ab5201 Compare March 20, 2026 08:47
@1000hz 1000hz requested a review from a team as a code owner March 20, 2026 08:47
@github-project-automation github-project-automation bot moved this to Untriaged in workers-sdk Mar 20, 2026
@pkg-pr-new
Copy link
Copy Markdown

pkg-pr-new bot commented Mar 20, 2026

create-cloudflare

npm i https://pkg.pr.new/create-cloudflare@12983

@cloudflare/kv-asset-handler

npm i https://pkg.pr.new/@cloudflare/kv-asset-handler@12983

miniflare

npm i https://pkg.pr.new/miniflare@12983

@cloudflare/pages-shared

npm i https://pkg.pr.new/@cloudflare/pages-shared@12983

@cloudflare/unenv-preset

npm i https://pkg.pr.new/@cloudflare/unenv-preset@12983

@cloudflare/vite-plugin

npm i https://pkg.pr.new/@cloudflare/vite-plugin@12983

@cloudflare/vitest-pool-workers

npm i https://pkg.pr.new/@cloudflare/vitest-pool-workers@12983

@cloudflare/workers-editor-shared

npm i https://pkg.pr.new/@cloudflare/workers-editor-shared@12983

wrangler

npm i https://pkg.pr.new/wrangler@12983

commit: a0e7656

@1000hz 1000hz marked this pull request as draft March 20, 2026 09:18
@1000hz 1000hz force-pushed the introducing-wrangler-preview branch 2 times, most recently from f165a2b to 14993e8 Compare March 20, 2026 09:42
@1000hz 1000hz marked this pull request as ready for review March 20, 2026 09:52
devin-ai-integration[bot]

This comment was marked as resolved.

@1000hz 1000hz force-pushed the introducing-wrangler-preview branch from e4942f6 to a65531f Compare March 20, 2026 10:49
Copy link
Copy Markdown
Contributor

@penalosa penalosa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First pass review—my main concern at this stage is code duplication, and using existing utilities from across the codebase.

Comment thread packages/wrangler/src/__tests__/deploy/formats.test.ts
Comment thread packages/wrangler/src/__tests__/index.test.ts
Comment thread packages/wrangler/src/__tests__/index.test.ts
Comment thread packages/wrangler/src/preview/shared.ts
Comment thread packages/wrangler/src/preview/index.ts Outdated
Comment thread packages/wrangler/src/preview/index.ts Outdated
Comment thread packages/wrangler/src/preview/index.ts Outdated
Comment thread packages/wrangler/src/preview/index.ts
Comment thread packages/wrangler/src/preview/preview.ts
@1000hz 1000hz force-pushed the introducing-wrangler-preview branch from dffb6fc to 9830a63 Compare March 20, 2026 21:33
devin-ai-integration[bot]

This comment was marked as resolved.

maxwellpeterson added a commit to maxwellpeterson/grangarda that referenced this pull request Mar 20, 2026
…eploy

- Add preview.yml: creates a Worker Preview on every PR using wrangler preview
  (prerelease from cloudflare/workers-sdk#12983), posts/updates a PR comment
  with the preview URL
- Add deploy.yml: runs npm run deploy on pushes to main
- Update wrangler to prerelease version from pkg.pr.new/wrangler@12983
- Replace deploy:preview script to call wrangler preview after build
- Remove vite preview script (superseded by wrangler preview)
maxwellpeterson added a commit to maxwellpeterson/grangarda that referenced this pull request Mar 20, 2026
* Add GitHub Actions workflows for preview deployments and production deploy

- Add preview.yml: creates a Worker Preview on every PR using wrangler preview
  (prerelease from cloudflare/workers-sdk#12983), posts/updates a PR comment
  with the preview URL
- Add deploy.yml: runs npm run deploy on pushes to main
- Update wrangler to prerelease version from pkg.pr.new/wrangler@12983
- Replace deploy:preview script to call wrangler preview after build
- Remove vite preview script (superseded by wrangler preview)

* Fix: install wrangler prerelease as a workflow step, not in package.json

npm ci rejects non-semver versions (URL-based installs), so the prerelease
wrangler must be installed after npm ci rather than declared in package.json.

* Fix: restore clean package-lock.json without pkg.pr.new URLs

The lockfile had URL-resolved entries for wrangler and its sub-deps from
the prerelease install, which caused npm ci to fail with 'Invalid Version'.

* Fix: capture wrangler output before propagating exit code

- Use set +e to prevent bash -e from aborting before we can echo output
- Run Post preview comment step with if: always() so it posts even on failure

* Fix: don't post PR comment on failure, fix output interpolation in github-script

- Remove if: always() so comment only posts on successful deploy
- Remove raw wrangler output interpolation into JS template literal which
  caused SyntaxError when output contained JS keywords

* Fix: add CLOUDFLARE_ACCOUNT_ID env var to both workflows

Wrangler fails in non-interactive mode when multiple accounts are
available and no account ID is specified.

* Fix: pass branch name as preview --name to avoid detached HEAD slug

GitHub Actions checks out PRs in detached HEAD state, causing
git rev-parse --abbrev-ref HEAD to return 'HEAD' -> slug 'head'.
Pass --name explicitly using github.head_ref instead.
devin-ai-integration[bot]

This comment was marked as resolved.

@workers-devprod
Copy link
Copy Markdown
Contributor

workers-devprod commented Mar 25, 2026

Codeowners approval required for this PR:

  • @cloudflare/wrangler
Show detailed file reviewers
  • packages/workers-utils/src/config/config.ts: [@cloudflare/wrangler]
  • packages/workers-utils/src/config/environment.ts: [@cloudflare/wrangler]
  • packages/workers-utils/src/config/index.ts: [@cloudflare/wrangler]
  • packages/workers-utils/src/config/validation.ts: [@cloudflare/wrangler]
  • packages/workers-utils/tests/config/validation/normalize-and-validate-config.test.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/tests/index.test.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/tests/preview.test.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/index.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/preview/api.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/preview/index.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/preview/preview.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/preview/secret.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/preview/settings.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/preview/shared.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/utils/box.ts: [@cloudflare/wrangler]
  • packages/wrangler/src/utils/merge-deep.ts: [@cloudflare/wrangler]
  • packages/wrangler/turbo.json: [@cloudflare/wrangler]

maxwellpeterson added a commit to maxwellpeterson/grangarda that referenced this pull request Mar 25, 2026
Wrangler now reads GITHUB_HEAD_REF/GITHUB_REF_NAME natively
(cloudflare/workers-sdk#12983), so we no longer need to manually
derive and pass --name to the preview deploy command.
maxwellpeterson added a commit to maxwellpeterson/sfplvinyl.com that referenced this pull request Mar 25, 2026
Wrangler now reads GITHUB_HEAD_REF/GITHUB_REF_NAME natively
(cloudflare/workers-sdk#12983), so we no longer need to manually
derive and pass --name to the preview deploy command.
maxwellpeterson added a commit to maxwellpeterson/grangarda that referenced this pull request Mar 25, 2026
…#5)

Wrangler now reads GITHUB_HEAD_REF/GITHUB_REF_NAME natively
(cloudflare/workers-sdk#12983), so we no longer need to manually
derive and pass --name to the preview deploy command.
maxwellpeterson added a commit to maxwellpeterson/sfplvinyl.com that referenced this pull request Mar 25, 2026
…#4)

Wrangler now reads GITHUB_HEAD_REF/GITHUB_REF_NAME natively
(cloudflare/workers-sdk#12983), so we no longer need to manually
derive and pass --name to the preview deploy command.
devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

Comment thread packages/wrangler/src/__tests__/preview.test.ts
Comment thread packages/wrangler/src/preview/api.ts
Comment thread packages/wrangler/src/preview/preview.ts
@1000hz 1000hz force-pushed the introducing-wrangler-preview branch from 703a576 to f72b833 Compare April 7, 2026 23:29
Copy link
Copy Markdown
Contributor

@workers-devprod workers-devprod left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Codeowners reviews satisfied

1000hz added 2 commits April 9, 2026 11:22
i.e. if a binding is declared at the top level of config, but not present in either of `"previews"` or the Worker's "Previews settings".
@petebacondarwin petebacondarwin merged commit 28bc2be into cloudflare:main Apr 9, 2026
57 of 58 checks passed
@github-project-automation github-project-automation bot moved this from Approved to Done in workers-sdk Apr 9, 2026
@1000hz 1000hz deleted the introducing-wrangler-preview branch April 9, 2026 17:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

5 participants