Skip to content

docs: Astro 5 → 7 upgrade tracker (apps/docs) #115

Description

@beeeku

Context

Dependabot opened #110 to bump astro 5.18.1 → 6.1.8 in apps/docs. CI has been red since 2026-04-21 because the upgrade can't be done as a drive-by — it's a real migration. This issue captures the work so the dependency PR can be closed without losing the intent.

Blockers

From bun.lock:

  • @astrojs/starlight@0.33.2 peer-deps astro: ^5.1.5 → no Starlight release supports Astro 6 yet. This is the gating blocker.
  • @astrojs/tailwind@6.0.2 peer-deps astro: ^3 || ^4 || ^5. The package itself is being deprecated upstream in favor of the Vite Tailwind v4 plugin path.

Migration shape (when Starlight ships v6 support)

  1. Bump @astrojs/starlight to whatever release first declares astro: ^6.
  2. Bump astro itself in apps/docs/package.json.
  3. Drop @astrojs/tailwind from dependencies; switch astro.config.mjs to the Vite @tailwindcss/vite plugin (Tailwind v4 path) — confirm @astrojs/starlight-tailwind@3.0.x still works against the new wiring or wait for a Starlight Tailwind release that targets v4.
  4. Validate: bun --cwd apps/docs run typecheck && bun --cwd apps/docs run build. Spot-check Starlight nav, search (pagefind), code blocks (astro-expressive-code), and the dark theme.
  5. wrangler pages deploy preview on a branch deploy before landing.

Risk areas

  • Tailwind v3 → v4 config migration (tailwind.config.ts → CSS-first config).
  • zod jump from v3 to v4 transitively via Astro 6 — content collections that import z from astro:content may shift behavior.
  • vite ^6 → ^7 inside Astro — any custom Vite plugins in astro.config.mjs (currently none, but verify) need a compatibility check.

Acceptance

  • apps/docs builds and deploys against astro@^6.
  • No @astrojs/tailwind dependency.
  • Starlight site renders identically (visual diff acceptable to maintainer).
  • Dependabot can resume bumping Astro within v6 once landed.

Refs

Activity

  1. beeeku commented on Jul 12, 2026

    @beeeku
    OwnerAuthor

    Audit note (scheduled routine): the gating blocker on this tracker has cleared, and the target has actually moved past it.

    Ecosystem state as of today:

    • @astrojs/starlight@0.40.0 (2026-06-09) shipped with a minimum of astro ^6.4.5 — the "no Starlight release supports Astro 6 yet" blocker at the top of this issue is no longer true.
    • @astrojs/starlight@0.41.0 (2026-06-23) dropped Astro 6 support and now requires astro ^7.
    • Latest Starlight is 0.41.3; Astro 7 is generally available.

    Two ways to re-scope this ticket:

    1. Land the migration as-planned (Astro 6) — pin @astrojs/starlight to the ^0.40.x window, bump astro to ^6.x. Buys us the docs upgrade now, but immediately becomes stale because the ecosystem is on Astro 7.
    2. Re-target to Astro 7 — bump straight to @astrojs/starlight@^0.41 + astro@^7. Skips a hop, matches where the ecosystem is, single migration.

    Recommendation: (2). The migration shape in the original description mostly still applies (@astrojs/tailwind → Vite Tailwind plugin, content-collection zod v4 audit, custom Vite plugin sanity check); the only extra beat is verifying astro-expressive-code and pagefind against Astro 7.

    If you're happy with (2), I can rename this to "Astro 7 upgrade tracker (apps/docs)" and update the acceptance criteria to match. Ping me if you'd rather I do the migration itself in a PR.


    Generated by Claude Code

  2. beeeku commented on Jul 19, 2026

    @beeeku
    OwnerAuthor

    Audit update (scheduled routine): the "blocked on Starlight" premise no longer holds. Retracing upstream since this ticket was filed:

    Starlight release Date peerDependencies.astro
    0.39.x 2026-05-07 → 2026-06-02 still ^5 (matches this ticket)
    0.40.0 2026-06-09 ^6.4.5 ← Astro 6 support landed
    0.41.0 2026-06-23 ^7.0.2 ← already jumped past 6
    0.41.3 (current) 2026-07-03 ^7.0.2

    Current pin in apps/docs/package.json is @astrojs/starlight@^0.33.0 on astro@^5.7.0, so the workspace is now four minors behind Starlight and up to two majors behind Astro. Two paths from here:

    1. Two-step: astro@6 first, then @7 later. Matches the migration shape in the original ticket but does the upgrade twice.
    2. Jump straight to astro@7 + @astrojs/starlight@0.41.3. Larger diff to validate, but avoids landing an intermediate state that upstream has already moved past.

    Either way, the tracker no longer waits on Starlight. Other blockers from the original ticket to re-verify against current versions:

    • @astrojs/tailwind@6.0.2 peer-deps ^3 || ^4 || ^5 — still incompatible with Astro 6/7; needs the Tailwind v4 + @tailwindcss/vite swap the ticket already calls out.
    • zod bump from v3 to v4 transitively via Astro 6+ — apps/docs/package.json currently pins zod: 3.25.76 explicitly, so a workspace-wide zod story needs sorting before this can land cleanly.

    Not touching #110 or filing PRs from this audit — flagging so the tracker can be re-scoped ("Astro 5 → Astro 7 direct" vs a two-step migration) and the Dependabot ignore rule can be tightened to ^7 once decided.


    Generated by Claude Code

  3. beeeku commented on Jul 23, 2026

    @beeeku
    OwnerAuthor

    Audit note (scheduled routine): the Starlight blocker cited above is no longer valid — refreshed the npm registry against latest and the migration is now actionable.

    Current upstream state (verified against registry.npmjs.org today):

    Package Version Peer of interest Status vs this tracker
    @astrojs/starlight 0.41.4 astro: ^7.0.2 ✅ Astro 7 supported (was ^5.1.5 when this issue was filed)
    @astrojs/starlight-tailwind 5.0.0 @astrojs/starlight: >=0.38.0, tailwindcss: ^4.0.0 ✅ Tailwind v4 compatible
    @astrojs/tailwind 6.0.2 astro: ^3 || ^4 || ^5 ❌ Still Astro-5-only, no v7 support; upstream continues to point to the Vite Tailwind v4 plugin instead

    Repo currently pins @astrojs/starlight@^0.33.0, astro@^5.7.0, @astrojs/tailwind@^6.0.0 in apps/docs/package.json:1 — i.e. this tracker's world.

    Refreshed migration shape (supersedes the original plan):

    1. @astrojs/starlight → ^0.41.4 (drops the Astro-5 peer wall).
    2. astro → ^7.x in apps/docs/package.json — skipping ^6 entirely since Starlight went straight to ^7.0.2.
    3. Drop @astrojs/tailwind and @astrojs/starlight-tailwind@^3 from dependencies. Switch astro.config.mjs to the Vite @tailwindcss/vite plugin and bump @astrojs/starlight-tailwind to ^5.0.0. Tailwind v3 → v4 config migration lands here (tailwind.config.ts → CSS-first).
    4. Transitive risk unchanged from original ticket: Vite ^6 → ^7, Zod ^3 → ^4 via astro:content, deferred rendering / chunked collection-storage options (both new in Astro 7).
    5. Validate: bun --cwd apps/docs run typecheck && bun --cwd apps/docs run build; spot-check Starlight nav, pagefind search, astro-expressive-code blocks, dark theme.
    6. wrangler pages deploy preview on a branch deploy before landing.

    Recommend un-labeling blocked and picking this up — it's real work but no longer waiting on anyone upstream.

    Related: #122 is a fresh dependabot bump (5.18.2 → 7.1.3) that hit the same wall; suggest closing that PR with ·@·d·ependabot i·gnore t·his major version (same treatment as #110) and doing the migration as one deliberate PR against this tracker instead.


    Generated by Claude Code

  4. beeeku commented on Aug 13, 2026

    @beeeku
    OwnerAuthor

    Audit note (scheduled routine): dropping the blocked label to match ground truth. Three prior audit passes (2026-07-12, 2026-07-19, 2026-07-23) all confirmed the same thing — @astrojs/starlight@0.41.4 peer-deps astro: ^7.0.2, so the "no Starlight release supports Astro 6/7 yet" wall the ticket originally described is gone. The refreshed migration shape in the 2026-07-23 comment above (Starlight ^0.41.4 + Astro ^7 + drop @astrojs/tailwind for the Vite @tailwindcss/vite plugin path) is what should ship.

    Related state changes today so the tracker sees the same world I do:

    Not filing a PR from the audit — this is a coordinated multi-package migration that deserves a deliberate branch, not a scheduled-routine drive-by.


    Generated by Claude Code

  5. beeeku commented on Aug 15, 2026

    @beeeku
    OwnerAuthor

    Status audit — 2026-08-15

    The 2026-08-13 Dependabot cycle filed six PRs that all belong to this migration:

    PR Package Bump
    #126 @astrojs/starlight 0.33.2 → 0.41.7 (needs astro: ^7)
    #128 zod (/apps/docs) 3.25.76 → 4.4.3 (comes via astro:content on v7)
    #130 @astrojs/starlight-tailwind (/apps/docs) 3.0.1 → 5.0.0 (needs Tailwind v4 + @tailwindcss/vite)
    #131 @astrojs/starlight-tailwind (root) 3.0.1 → 5.0.0
    #133 @astrojs/react 4.4.2 → 6.0.2
    #134 tailwindcss 3.4.19 → 4.3.3

    None can land in isolation — Starlight 0.41.x peer-deps astro: ^7, @astrojs/starlight-tailwind@^5 requires Tailwind v4, and Astro 7 brings zod@^4 transitively. They should be closed as part of this migration (or auto-close as their base branch rebases when the coordinated PR lands).

    PR #137 — draft, now ready for review — expands the /apps/docs ignore: block in .github/dependabot.yml to cover the six peers above, so the next Dependabot cycle stops recreating them. That's a config-only unblocker (CI green: Constitution / Lint / Bundle Size / Type Check / Test / verify), not a substitute for the actual migration work still tracked here.

    Sibling trackers just filed for the other 2026-08-13 majors that don't belong here:

    Filing separately per first-principles rule — silencing them under this tracker would hide real work that isn't part of the Astro migration.


    Generated by Claude Code

  6. changed the title [-]docs: Astro 6 upgrade tracker (apps/docs) — blocked on Starlight[/-] [+]docs: Astro 5 → 7 upgrade tracker (apps/docs)[/+] on Sep 10, 2026
  7. added a commit that references this issue on Sep 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions