chore: upgrade to Astro 7#1579
Conversation
Bump the catalog to stable Astro 7 (astro 7.0.0, @astrojs/cloudflare 14.0.0, @astrojs/node 11.0.0, @astrojs/react 6.0.0) and update templates, demos, and packages for compatibility. - Move route caching config from experimental.cache/routeRules to the stable top-level cache/routeRules keys (demos/cloudflare, infra/cache-demo). - Drop infra/cache-demo's obsolete pkg.pr.new Astro preview pin in favor of the catalog; align its wrangler with the catalog (v14 adapter needs >=4.99.0). - Externalize the bare zod import used by the type generator so EmDash sites build on Cloudflare under Astro 7. - Remove the now-obsolete @astrojs/telemetry override and refresh the minimumReleaseAge cooldown exclusion for the Astro 7 release. - Update @emdash-cms/cloudflare cache JSDoc to the stable top-level cache key.
🦋 Changeset detectedLatest commit: 69364a6 The changes in this PR will be included in the next version bump. This PR includes changesets to release 16 packages
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 |
Scope checkThis PR changes 891 lines across 8 files. Large PRs are harder to review and more likely to be closed without review. If this scope is intentional, no action needed. A maintainer will review it. If not, please consider splitting this into smaller PRs. See CONTRIBUTING.md for contribution guidelines. |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
docs | 04bdbff | Jun 22 2026, 01:43 PM |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
emdash-playground | 04bdbff | Jun 22 2026, 01:43 PM |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
emdash-demo-cache | 04bdbff | Jun 22 2026, 01:43 PM |
@emdash-cms/admin
@emdash-cms/auth
@emdash-cms/auth-atproto
@emdash-cms/blocks
@emdash-cms/cloudflare
@emdash-cms/contentful-to-portable-text
emdash
create-emdash
@emdash-cms/gutenberg-to-portable-text
@emdash-cms/plugin-cli
@emdash-cms/plugin-types
@emdash-cms/registry-client
@emdash-cms/registry-lexicons
@emdash-cms/sandbox-workerd
@emdash-cms/x402
@emdash-cms/plugin-ai-moderation
@emdash-cms/plugin-atproto
@emdash-cms/plugin-audit-log
@emdash-cms/plugin-color
@emdash-cms/plugin-embeds
@emdash-cms/plugin-field-kit
@emdash-cms/plugin-forms
@emdash-cms/plugin-webhook-notifier
commit: |
There was a problem hiding this comment.
Approach
This is a clean, well-scoped chore: upgrading the monorepo to stable Astro 7 and aligning templates/demos/packages for compatibility. The approach fits EmDash: move the now-stable route-caching config out of experimental, drop the obsolete pkg.pr.new preview pin (and the @astrojs/telemetry override that existed solely for it), refresh the temporary supply-chain cooldown exclusion, fix a Cloudflare bundling gap with the bare zod import, and update JSDoc. Critically, the upgrade is additive — the published packages' peer ranges are astro: ">=6.0.0-beta.0", @astrojs/cloudflare: ">=12.0.0", @astrojs/react: ">=5.0.0-beta.0", all of which Astro 7 / adapter 14 / react 6 satisfy, so no consumer breaks and no peer range needed tightening. A changeset is present and correctly scoped to emdash (the package with the real behavioral change). I'd sign off.
What I checked
- Peer ranges (
packages/core,cloudflare,authpackage.json): all>=lower bounds that already admit v7 — no backwards-incompatibility, consistent with the "additive" claim. emdash > zodpre-bundle entry (vite-config.ts): confirmedpackages/core/src/schema/zod-generator.tsimports the barezodentry (from "zod") andemdashdeclareszodas a catalog dependency, so thessr.optimizeDeps.includespecifier is a valid pnpm path and consistent with the adjacentastro > zod/v4entry.- Cache-config migration coverage: only
demos/cloudflareandinfra/cache-demoused Astro'sexperimental.cache; both were moved to the stable top-levelcachekey. The remainingexperimental:blocks in the repo (blog-demo,do-demo,do-solo-demo, the skills scaffold, the DO SQL modules) are EmDash's own registry config or Cloudflare DO compatibility flags — unrelated and correctly left alone. - cache-demo cleanup: dropping the
pkg.pr.newpreview pin removes the exotic dep that the deleted@astrojs/telemetryoverride existed for;wranglernow resolves via catalog to 4.100.0 (per the lockfile), satisfying the v14 adapter's>=4.99.0requirement. - Supply-chain exclusion:
astro+@astrojs/*are excluded from the 24hminimumReleaseAgecooldown, explicitly marked TEMPORARY with a removal note — reasonable for a same-day coordinated release. - Catalog/lockfile: resolved to
astro@7.0.0,@astrojs/cloudflare@14.0.0,wrangler@4.100.0,zod@4.4.1as intended.blocks/playground's pre-existingwrangler: "^4.63.0"pin is irrelevant — it's a Vite SPA, not an Astro/CF-adapter app. - Changeset: present, user-facing, scoped to
emdash. The@emdash-cms/cloudflareJSDoc edit is doc-only with no observable runtime/API effect, so it doesn't warrant its own changeset entry.
Unverified (no node_modules in the sandbox)
I could not independently confirm two things and relied on the author's stated build verification plus CI:
- The stable top-level
cache+ top-levelrouteRulesshape in Astro 7 — matches the known graduated-from-experimental API, but I couldn't read the v7 type definitions directly. - The
@astrojs/cloudflare/cachesubpath export shipping in v14 (used byinfra/cache-demo). Note this import pre-existed and was not added by this PR; only its config placement changed.
Neither is a concern raised by this diff — both are consistent with the PR's intent and would be caught by the build/typecheck CI the author reports as green.
Conclusion
No bugs, regressions, or convention violations found. The implementation is internally consistent, the upgrade is additive, and the changeset/supply-chain hygiene is appropriate. Approving.
What does this PR do?
Upgrades the project to stable Astro 7 and updates the templates, demo sites, and packages for compatibility. The pnpm catalog now pins
astro@7.0.0,@astrojs/cloudflare@14.0.0,@astrojs/node@11.0.0, and@astrojs/react@6.0.0.Notable changes:
cache/routeRulesout ofexperimentalto the stable top-level config keys indemos/cloudflareandinfra/cache-demo.infra/cache-democleanup. Dropped the obsolete pkg.pr.new Astro preview pin (the route-caching feature is now stable) in favor of the catalog, and aligned itswranglerwith the catalog (the v14 adapter's@cloudflare/vite-pluginrequires>=4.99.0). It uses the adapter's nativecacheCloudflarefrom@astrojs/cloudflare/cache, which ships in stable 14.0.0.zodimport used by the type generator so EmDash sites build on Cloudflare under Astro 7.@astrojs/telemetryoverride (it only existed for the removed preview pin) and refreshed theminimumReleaseAgecooldown exclusion to cover the Astro 7 release (published today, still inside the 24h window). The@astrojs/*scope exclusion is marked TEMPORARY and should be removed once the cooldown elapses.@emdash-cms/cloudflarecache JSDoc examples to the stable top-levelcachekey.No published package peer ranges were tightened; the upgrade is additive. Verified that there is no usage of removed/relocated v7 APIs (
@astrojs/db,astro:transitionsinternals, rootgetContainerRenderer(),src/fetch.tsconflicts, remark/rehype plugins).Closes #
Type of change
Checklist
pnpm typecheckpasses (alsotypecheck:demosandtypecheck:templates)pnpm lintpasses (0 diagnostics)pnpm testpasses (core 4022, cloudflare 183, auth 57, x402 17, blocks 96)pnpm formathas been runAI-generated code disclosure
Screenshots / test output
Built all templates (blank, blog(-cloudflare), marketing(-cloudflare), portfolio(-cloudflare), starter(-cloudflare)) and demos (simple, cloudflare, plugins-demo, postgres, preview, cache-demo, do-demo, do-solo-demo) under the stricter Rust compiler with zero errors. Both cache paths verified:
infra/cache-demo(nativecacheCloudflare) anddemos/cloudflare(EmDash'scloudflareCache).