Skip to content

Update Astro - #7300

Merged
diegohaz merged 2 commits into
mainfrom
update/astro
Aug 27, 2026
Merged

diegohaz merged 2 commits into
mainfrom
update/astro

Conversation

@diegohaz

@diegohaz diegohaz commented Aug 27, 2026 •

Copy link
Copy Markdown
Member

Motivation

The app uses an Astro dependency group with three eligible patch updates under the repository Renovate policy. Updating the group keeps the Astro runtime, Cloudflare adapter, and MDX integration aligned after their stability-aged fixes.

Solution

Update the exact versions in app/package.json, then regenerate and deduplicate pnpm-lock.yaml with the repository declared pnpm 11.24.0.

{
  "@astrojs/cloudflare": "14.2.4",
  "@astrojs/mdx": "7.0.8",
  "astro": "7.2.6"
}

Astro PR #17812 makes the ambient manifest external during optimization. This leaves the bare astro/app/manifest import for Vite to discover in the normal server graph. On a cold start, that discovery during the first OG-image request reloads the server program and invalidates the already-requested deps_ssr/default-handler-*.js chunk. This is the cold SSR optimizer failure class tracked in Astro #17166 and Astro #16248.

Pre-optimize the manifest through the existing app workaround list:

optimizeDeps: {
  include: ["astro/app/manifest"],
}

Dependencies

Declaration Workspace Old New Source
@astrojs/cloudflare app 14.2.3 14.2.4 Changelog
@astrojs/mdx app 7.0.7 7.0.8 Changelog
astro app 7.2.4 7.2.6 7.2.5 and 7.2.6 changes

Verification

  • pnpm install --frozen-lockfile
  • pnpm dedupe
  • pnpm lint-fix
  • pnpm tsc
  • pnpm build-app-lite
  • Start pnpm dev-app from a cold Vite cache, then confirm curl -i http://localhost:4322/og-image/api returns HTTP 200

@changeset-bot

changeset-bot Bot commented Aug 27, 2026 •

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 3208f01

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

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

@coderabbitai

coderabbitai Bot commented Aug 27, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 5e5eca98-660a-4f36-9818-69fbd6097d52

📥 Commits

Reviewing files that changed from the base of the PR and between 6cdcd02 and 3208f01.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (2)
  • app/astro.config.ts
  • app/package.json
🚧 Files skipped from review as they are similar to previous changes (1)
  • app/package.json

Included review availability: Your plan provides up to 8 included reviews per hour; 6 remain after this review.


📝 Walkthrough

Summary by CodeRabbit

  • Chores
    • Updated framework, integration, and data-fetching components to newer patch versions.
    • Includes maintenance updates for Cloudflare support, MDX, Astro, and React Query.
    • Improved application startup optimization for smoother performance.

Walkthrough

The app updates Astro-related dependencies and adds astro/app/manifest to the Vite optimizeDeps.include array.

Changes

Astro app updates

Layer / File(s) Summary
Update Astro package versions
app/package.json
@astrojs/cloudflare, @astrojs/mdx, @tanstack/react-query, and astro receive patch-version updates.
Pre-optimize Astro manifest import
app/astro.config.ts
The Vite optimizeDeps.include array now includes astro/app/manifest.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Merge Risk: ⚪ Minimal · up to 3208f

This PR updates aligned Astro packages and pre-optimizes the manifest import to prevent a cold-start SSR failure. No actionable merge-blocking risk remains after normal checks and review.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title, "Update Astro," identifies the main dependency update and is related to the changeset. It is broad but sufficiently clear.
Description check ✅ Passed The description clearly explains the Astro dependency updates, the Vite configuration workaround, the motivation, and the verification steps.
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1 files. (1 skipped: 1 unsupported.)

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch update/astro

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@ariakito

ariakito Bot commented Aug 27, 2026 •

Copy link
Copy Markdown
Contributor

Performance

Chrome

No significant performance changes detected.

Full breakdown (27 tests)
Test Scripting Rendering INP Total
ariakit-tailwind > react > page load 53.9ms → 55ms (+2%) 2962.6ms → 2858.8ms (-4%) 0ms → 0ms (n/a) 3016.6ms → 2913.8ms (-3%)
ariakit-tailwind > react > toggle layer and text classes 0.1ms → 0.1ms (+4%) 4187.2ms → 3813.5ms (-9%) 0ms → 0ms (n/a) 4187.3ms → 3813.6ms (-9%)
collection-renderer-perf > react > mount nested renderers 38.4ms → 38.6ms (+0%) 4.8ms → 4.7ms (-2%) 24ms → 24ms (+0%) 43.3ms → 43.3ms (+0%)
collection-renderer-perf > react > rerender nested renderers 59.3ms → 55.3ms (-7%) 3.9ms → 3.7ms (-5%) 16ms → 16ms (+0%) 63.1ms → 58.9ms (-7%)
collection-renderer-perf > react > toggle renderer items 80.3ms → 84.2ms (+5%) 19ms → 19.5ms (+2%) 16ms → 16ms (+0%) 99.4ms → 103.5ms (+4%)
collection-renderer-perf > react > scroll nested renderers 110.6ms → 103.3ms (-7%) 44.4ms → 42.7ms (-4%) 0ms → 0ms (n/a) 157ms → 145.6ms (-7%)
combobox-perf > react > open combobox 71.5ms → 67.8ms (-5%) 350.1ms → 350.5ms (+0%) 440ms → 440ms (+0%) 420.8ms → 416.3ms (-1%)
combobox-perf > react > close combobox 11.7ms → 11.7ms (+0%) 325.6ms → 324.9ms (-0%) 344ms → 344ms (+0%) 337.5ms → 336.5ms (-0%)
combobox-perf > react > move across items 373.2ms → 377.9ms (+1%) 528.5ms → 534.1ms (+1%) 32ms → 24ms (-25%) 901.5ms → 907.3ms (+1%)
combobox-select-perf > react > open combobox select 160.9ms → 163.1ms (+1%) 12.2ms → 11.9ms (-2%) 196ms → 196ms (+0%) 173.2ms → 175.1ms (+1%)
combobox-select-perf > react > close combobox select 12.6ms → 12.5ms (-1%) 1.7ms → 1.7ms (+0%) 16ms → 16ms (+0%) 14.4ms → 14.2ms (-1%)
combobox-select-perf > react > move across items 471ms → 473.8ms (+1%) 525.4ms → 521ms (-1%) 24ms → 24ms (+0%) 993.7ms → 989.4ms (-0%)
combobox-select-perf > react > restore filtered items 44.9ms → 44.5ms (-1%) 12.2ms → 12.2ms (-1%) 0ms → 0ms (n/a) 57.1ms → 56.6ms (-1%)
composite-perf > react > mount composite 82.1ms → 82.1ms (-0%) 11.1ms → 11ms (-0%) 112ms → 112ms (+0%) 93.1ms → 93ms (-0%)
composite-perf > react > move across items 267.3ms → 272.6ms (+2%) 798.9ms → 807.4ms (+1%) 24ms → 24ms (+0%) 1073.9ms → 1087.6ms (+1%)
composite-perf > react > mount controlled composite 87.6ms → 87.6ms (+0%) 11.4ms → 11.5ms (+1%) 112ms → 112ms (+0%) 98.8ms → 99.4ms (+1%)
composite-perf > react > update controlled items 17.3ms → 17.2ms (-0%) 18.1ms → 17.9ms (-1%) 16ms → 16ms (+0%) 35.4ms → 35.2ms (-0%)
dialog-perf > react > open dialog 23.7ms → 23.7ms (-0%) 67.7ms → 67.1ms (-1%) 104ms → 104ms (+0%) 92.5ms → 90.6ms (-2%)
dialog-perf > react > close dialog 3.9ms → 3.9ms (+0%) 63.1ms → 63.3ms (+0%) 80ms → 80ms (+0%) 67.3ms → 67.1ms (-0%)
menu-perf > react > open menu 129.6ms → 130.3ms (+1%) 355.5ms → 352.1ms (-1%) 492ms → 492ms (+0%) 484.1ms → 483.1ms (-0%)
menu-perf > react > close menu 11.1ms → 11.1ms (-0%) 328.5ms → 328.5ms (+0%) 344ms → 344ms (+0%) 339.7ms → 339.7ms (+0%)
menu-perf > react > move across items 308.4ms → 310.6ms (+1%) 405.5ms → 395.6ms (-2%) 24ms → 24ms (+0%) 713ms → 704.2ms (-1%)
tab-perf > react > mount tabs 159.4ms → 152.4ms (-4%) 11.5ms → 11.5ms (-0%) 172ms → 168ms (-2%) 171ms → 164.3ms (-4%)
tab-perf > react > move across tabs 470.1ms → 460.5ms (-2%) 2395.7ms → 2384.6ms (-0%) 40ms → 40ms (+0%) 2865.8ms → 2848.3ms (-1%)
tooltip-perf > react > move across items with independent tooltips 271.4ms → 277.8ms (+2%) 76.1ms → 78.1ms (+3%) 24ms → 24ms (+0%) 347.5ms → 355.9ms (+2%)
tooltip-perf > react > move across items with a shared tooltip 175.7ms → 172.4ms (-2%) 78.5ms → 77.2ms (-2%) 24ms → 24ms (+0%) 254.1ms → 249.8ms (-2%)
tooltip-perf > react > move across items without tooltips 99.5ms → 100.4ms (+1%) 35.9ms → 35.8ms (-0%) 16ms → 16ms (+0%) 135.4ms → 135.8ms (+0%)

Unflagged threshold-sized changes for combobox-perf > react > move across items: INP (rounds 2/3, raw 0/3, pairs 33%).

collection-renderer-perf > react > rerender nested renderers

Function Self Total Hits
O 65.7ms 195.6ms 60
L 31.9ms 31.9ms 30
Oo 17.2ms 17.2ms 22
qc 15.8ms 15.8ms 14
$c 13.5ms 26.6ms 28
(anonymous) 13.1ms 13.1ms 12
Fd 12.1ms 13.1ms 10
fe 7.5ms 10.7ms 7
I 7.5ms 15.6ms 7
Ts 6.4ms 16ms 6

combobox-perf > react > open combobox

Function Self Total Hits
r 3072.3ms 3072.3ms 2874
ge 44.9ms 44.9ms 42
t 36.8ms 363.3ms 35
W 36.3ms 36.3ms 34
I 30.3ms 65.3ms 29
Kc 24.8ms 3218.2ms 26
(anonymous) 19.9ms 144.4ms 19
(anonymous) 16ms 47.1ms 15
(anonymous) 15.7ms 15.7ms 15
qc 14.6ms 14.8ms 21

combobox-select-perf > react > restore filtered items

Function Self Total Hits
v 24.9ms 31.4ms 23
(anonymous) 15.2ms 92.8ms 14
I 14.1ms 29.2ms 13
(anonymous) 10.5ms 29ms 9
L 9.7ms 9.7ms 9
(anonymous) 6.5ms 72.1ms 6
(anonymous) 6.4ms 21.5ms 6
t 6ms 74.1ms 6
(anonymous) 5.4ms 6.5ms 5
Kc 4.4ms 26.5ms 5

composite-perf > react > mount composite

Function Self Total Hits
(anonymous) 50ms 152.4ms 48
L 47.8ms 47.8ms 45
I 34.8ms 96.8ms 34
(anonymous) 31.1ms 428.8ms 28
t 30.1ms 456.5ms 29
(anonymous) 28.4ms 28.4ms 26
(anonymous) 26ms 228.1ms 26
Oo 20.2ms 20.2ms 19
Io 9.6ms 9.6ms 9
Kc 8.6ms 26.1ms 8

composite-perf > react > move across items

Function Self Total Hits
ca 171.4ms 171.4ms 161
u 106.9ms 174.2ms 100
t 88ms 99.8ms 82
(anonymous) 77.1ms 476.5ms 72
Si 70.2ms 70.2ms 65
Yo 63.3ms 235.4ms 59
Lc 52.1ms 898.9ms 49
(anonymous) 41.7ms 78.7ms 39
(anonymous) 38.8ms 477.9ms 36
(anonymous) 36.3ms 130.1ms 34

dialog-perf > react > open dialog

Function Self Total Hits
(anonymous) 17.1ms 17.1ms 18
(anonymous) 6.4ms 28.7ms 8
vl 5.8ms 7.5ms 44
r 5.1ms 5.1ms 6
Kc 3.3ms 224.7ms 4
Jt 3.1ms 3.1ms 1
I 3ms 3.1ms 4
T 3ms 3ms 2
ae 2.7ms 2.7ms 3
Ru 2.7ms 237.4ms 4

menu-perf > react > open menu

Function Self Total Hits
r 2070.2ms 2071.2ms 1938
L 46.2ms 46.2ms 43
(anonymous) 34ms 281.1ms 33
(anonymous) 33.9ms 104.3ms 31
(anonymous) 33.2ms 158.8ms 31
I 31.6ms 89.1ms 29
t 30.5ms 420.7ms 31
W 27.4ms 27.4ms 26
qc 25.1ms 25.3ms 31
Kc 11ms 1106.3ms 11

tab-perf > react > mount tabs

Function Self Total Hits
(anonymous) 51.9ms 143.4ms 53
(anonymous) 36.5ms 245.4ms 34
L 35.3ms 35.3ms 34
Oo 35.2ms 35.2ms 31
t 29.8ms 529.6ms 32
(anonymous) 29.4ms 215.6ms 29
I 26.4ms 74.7ms 25
qc 15.1ms 15.1ms 23
y 14.2ms 18.8ms 14
H 10.3ms 13.4ms 12

tab-perf > react > move across tabs

Function Self Total Hits
T 1896.4ms 1910.3ms 1695
ca 124.5ms 124.5ms 116
(anonymous) 84.3ms 236.3ms 80
Si 79.2ms 79.2ms 74
L 71.9ms 71.9ms 66
T 62.4ms 318.2ms 62
la 59.7ms 59.7ms 55
u 30.3ms 46.6ms 29
ws 30.1ms 48.4ms 28
(anonymous) 29.6ms 66.1ms 27

tooltip-perf > react > move across items with independent tooltips

Function Self Total Hits
W 116.6ms 119.9ms 106
(anonymous) 72.1ms 162.7ms 67
t 63.4ms 748.7ms 59
(anonymous) 48.2ms 312.3ms 45
(anonymous) 47.1ms 47.1ms 44
d 42.3ms 106.6ms 39
ge 39.8ms 40.9ms 37
L 34.4ms 34.4ms 32
J 17.2ms 21.5ms 16
(anonymous) 16.1ms 198.1ms 15

⚠️ = regression above 10% and 5ms · 🚀 = improvement above 10% and 5ms

Compared tests used mixed interleaved round counts; a change is flagged only when the paired median delta exceeds the threshold, rounds agree on direction and raw samples support it.

Node

No significant performance changes detected.

Full breakdown (33 benchmarks)

packages/ariakit-components/benchmark/collection-store.bench.ts

Benchmark Baseline Current Change
render 200 new collection items 3,730 ops/sec 3,690 ops/sec -39.8 ops/sec (-1%)
render 8 new collection items 130,528 ops/sec 131,704 ops/sec +1,176 ops/sec (+1%)
register an existing item in a 200-item collection 598,977 ops/sec 595,622 ops/sec -3,355 ops/sec (-1%)
register an existing item in a new 200-item collection 77,256 ops/sec 77,533 ops/sec +277 ops/sec (+0%)

packages/ariakit-components/benchmark/composite-store.bench.ts

Benchmark Baseline Current Change
move through composite items 39,750 ops/sec 39,363 ops/sec -387 ops/sec (-1%)
move through cloned composite items 10,784 ops/sec 11,323 ops/sec +539 ops/sec (+5%)
repeatedly find the last enabled composite item 806,273 ops/sec 807,087 ops/sec +814 ops/sec (+0%)
group 200 composite items into 1 row 35,929 ops/sec 33,938 ops/sec -1,991 ops/sec (-6%)
group 200 composite items into 4 rows 4,491 ops/sec 4,598 ops/sec +107 ops/sec (+2%)
group 200 composite items into 10 rows 4,486 ops/sec 4,532 ops/sec +46.2 ops/sec (+1%)
group 200 composite items into 200 rows 1,866 ops/sec 1,878 ops/sec +11.7 ops/sec (+1%)
group 8 composite items into 4 rows 92,105 ops/sec 92,067 ops/sec -38.3 ops/sec (-0%)
group 48 interleaved composite items into 2 rows 20,478 ops/sec 20,539 ops/sec +61.1 ops/sec (+0%)

packages/ariakit-components/benchmark/disclosure-store.bench.ts

Benchmark Baseline Current Change
create disclosure store 684,412 ops/sec 679,480 ops/sec -4,932 ops/sec (-1%)

packages/ariakit-components/benchmark/tab-store.bench.ts

Benchmark Baseline Current Change
render 200 new tab items 3,318 ops/sec 3,256 ops/sec -61.7 ops/sec (-2%)
move when selected tab follows active tab 4,169 ops/sec 4,311 ops/sec +142 ops/sec (+3%)

packages/ariakit-store/benchmark/store.bench.ts

Benchmark Baseline Current Change
create store 2,355,804 ops/sec 2,399,837 ops/sec +44,033 ops/sec (+2%)
read state 18,693,993 ops/sec 18,700,817 ops/sec +6,824 ops/sec (+0%)
set state 2,048,070 ops/sec 2,055,430 ops/sec +7,360 ops/sec (+0%)
set state with selected subscribers 550,111 ops/sec 548,104 ops/sec -2,007 ops/sec (-0%)
set state with unrelated subscribers 2,015,501 ops/sec 1,994,536 ops/sec -20,965 ops/sec (-1%)
batch multiple updates 889,906 ops/sec 908,752 ops/sec +18,846 ops/sec (+2%)
set synced child state 1,009,675 ops/sec 999,614 ops/sec -10,061 ops/sec (-1%)
set synced source state 1,098,505 ops/sec 1,110,543 ops/sec +12,037 ops/sec (+1%)
set state with React subscribers 257,016 ops/sec 247,619 ops/sec -9,398 ops/sec (-4%)
cascade setup listeners 369,476 ops/sec 376,311 ops/sec +6,835 ops/sec (+2%)
create picked store 258,903 ops/sec 261,257 ops/sec +2,354 ops/sec (+1%)
initialize merged store chain 10,794 ops/sec 10,804 ops/sec +10.7 ops/sec (+0%)
merge stores 297,702 ops/sec 297,219 ops/sec -482 ops/sec (-0%)
set merged source state 346,161 ops/sec 350,536 ops/sec +4,375 ops/sec (+1%)
set merged picked source state 298,142 ops/sec 295,928 ops/sec -2,215 ops/sec (-1%)
set merged omitted source state 255,593 ops/sec 253,472 ops/sec -2,121 ops/sec (-1%)
set merged derived state 29,243 ops/sec 29,251 ops/sec +8.21 ops/sec (+0%)

⚠️ = regression above 10% · 🚀 = improvement above 10%

Aggregated across 2 interleaved rounds; a change is flagged only when the paired median delta exceeds the threshold, rounds agree on direction.

@diegohaz

Copy link
Copy Markdown
Member Author

Astro 7.2.6 exposed an update-induced cold-start regression in the OG-images job. The first /og-image/api request discovered astro/app/manifest in the Vite server graph, reloaded the program, and then requested an invalidated deps_ssr/default-handler-*.js chunk.

The workaround adds the manifest to the existing pre-optimization list:

optimizeDeps: {
  include: ["astro/app/manifest"],
}

This keeps the cold server program stable without disabling dependency discovery or changing the CI startup flow. The workaround can be revisited when the upstream cold SSR optimizer issue is fixed.

Local verification changed the exact reproduction from a server crash to HTTP 200. pnpm lint-fix, pnpm tsc, and pnpm build-app-lite also pass.

This pull request needs review because it now includes an app configuration workaround beyond version and lockfile changes. Automerge remains disabled.

@diegohaz
diegohaz merged commit 67c4f65 into main Aug 27, 2026
48 checks passed
@diegohaz
diegohaz deleted the update/astro branch August 27, 2026 22:57

This branch was successfully deployed

1 active deployment
Preview — 3208f01d Deployed Aug 27, 2026 by diegohaz via App / Preview / Deploy #3219
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants