Changed admin-surface apps to build with Rolldown via rolldown-vite#29132
Changed admin-surface apps to build with Rolldown via rolldown-vite#291329larsons wants to merge 3 commits into
Conversation
|
Bugbot is not enabled for this team, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
WalkthroughChangesThe workspace now defines a Related issues: None specified. Related PRs: None specified. Suggested labels: dependencies, tooling Suggested reviewers: None specified. 🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
3a38789 to
62b6a8d
Compare
|
Bugbot is not enabled for this team, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
|
| Command | Status | Duration | Result |
|---|---|---|---|
nx run @tryghost/admin-x-settings:test:acceptance |
✅ Succeeded | 9m 50s | View ↗ |
nx run ghost:test:ci:integration |
✅ Succeeded | 2m 49s | View ↗ |
nx run ghost:test:integration |
✅ Succeeded | 2m 59s | View ↗ |
nx run ghost:test:legacy |
✅ Succeeded | 2m 37s | View ↗ |
nx run ghost:test:e2e |
✅ Succeeded | 2m 31s | View ↗ |
nx run-many --target=build --projects=tag:publi... |
✅ Succeeded | <1s | View ↗ |
nx run @tryghost/activitypub:test:acceptance |
✅ Succeeded | 43s | View ↗ |
nx run-many -t test:unit -p @tryghost/activityp... |
✅ Succeeded | 34s | View ↗ |
Additional runs (7) |
✅ Succeeded | ... | View ↗ |
💡 Verify your cache is correct by running tasks in a sandbox. Read docs ↗
☁️ Nx Cloud last updated this comment at 2026-07-06 18:15:52 UTC
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #29132 +/- ##
=======================================
Coverage 74.29% 74.29%
=======================================
Files 1565 1565
Lines 135738 135738
Branches 16459 16456 -3
=======================================
+ Hits 100845 100850 +5
- Misses 33864 33890 +26
+ Partials 1029 998 -31
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
E2E Tests FailedTo view the Playwright test report locally, run: REPORT_DIR=$(mktemp -d) && gh run download 28800256568 -n playwright-report -D "$REPORT_DIR" && npx playwright show-report "$REPORT_DIR" |
1 similar comment
E2E Tests FailedTo view the Playwright test report locally, run: REPORT_DIR=$(mktemp -d) && gh run download 28800256568 -n playwright-report -D "$REPORT_DIR" && npx playwright show-report "$REPORT_DIR" |
ref https://linear.app/ghost/issue/PLA-96/spike-rolldown-vite-drop-in-build-benchmarks - Rolldown is a drop-in for the Rollup+esbuild pair Vite uses; the PLA-96 spike confirmed all 8 admin apps build and pass their test suites unchanged, with 5-8x faster production builds (admin 11.7s -> 1.4s) and byte-equivalent output - the 8 apps opt in by pointing their vite dep at a new `rolldown` named catalog (catalog:rolldown -> npm:rolldown-vite@7.3.1) so the opt-in is visible in each app's package.json; public UMD apps (portal, comments-ui, etc.) stay on the stock `vite` catalog because they carry bundler-specific config (e.g. portal's manualChunks:false) that Rolldown rejects and needs separate work - pinning rolldown-vite to the 7.x line (Vite 7 API) deliberately isolates the bundler swap from the Vite 8 API changes, which are a later step
62b6a8d to
29be910
Compare
|
Bugbot is not enabled for this team, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
E2E Tests FailedTo view the Playwright test report locally, run: REPORT_DIR=$(mktemp -d) && gh run download 28806000400 -n playwright-report -D "$REPORT_DIR" && npx playwright show-report "$REPORT_DIR" |
ref PLA-96 - Under rolldown-vite, plugin-react 4.7.0 ran JSX through the babel transform, emitting an invalid top-level "jsx" option warning and a [vite:react-babel] recommendation to switch to plugin-react-oxc. - plugin-react-oxc is now deprecated in favour of plugin-react v5+, which auto-detects rolldown-vite and routes JSX through the Oxc transform, so the admin-surface configs keep a bare react() call with no plugin swap. - Public UMD apps stay on stock vite@7.3.2 and fall back to the babel transform, which v5.2.0 still supports (vite ^7 peer).
This reverts commit 72fb03b.
E2E Tests FailedTo view the Playwright test report locally, run: REPORT_DIR=$(mktemp -d) && gh run download 28812564719 -n playwright-report -D "$REPORT_DIR" && npx playwright show-report "$REPORT_DIR" |

ref PLA-96
Switches the 8 admin-surface apps to build with Rolldown via
rolldown-vite(the Vite-7-API fork that swaps Vite's Rollup+esbuild pair for the Rust bundler). This is the productionised outcome of the PLA-96 spike.What
Adds a
rolldownnamed catalog inpnpm-workspace.yaml:…and the 8 admin-surface apps opt in by changing their vite dep from
"vite": "catalog:"to"vite": "catalog:rolldown":admin,shade,admin-x-framework,posts,stats,admin-x-settings,activitypub,admin-x-design-systemNo app config changes are needed — Rolldown is a drop-in for these. The version stays defined once (in the catalog), while each app's
package.jsonnow visibly declares that it builds on rolldown.Why the public apps are excluded
A repo-wide swap breaks the public UMD apps: portal sets
manualChunks: falsein its output options, which Rolldown rejects (TypeError: manualChunks is not a function), and Vite deprecatesoptimizeDeps.rollupOptions→rolldownOptions. Those apps (portal,comments-ui,signup-form,sodo-search,announcement-bar) stay on the stockvitecatalog and need their own config work — a follow-up.Why
rolldown-vite@7, not Vite 8Vite 8 also ships Rolldown, but bundles Vite-8 API changes on top. Pinning to the 7.x line isolates the bundler swap (validated here) from the Vite-8 API migration (a separate, later step).
rolldown-vitecarries an npm deprecation notice pointing at Vite 8 — that's expected; it's the supported Vite-7 migration path.Benchmarks
Local
vite build, min of 3 runs, Vite 7.3.2 + Rollup → rolldown-vite 7.3.1:Output is byte-equivalent — a clean single admin build is 14.94 MB / 129 chunks on Rolldown vs 15.05 MB / 142 chunks on Rollup (one shared
enchunk and one koenig chunk each; no duplication).Validation
shade,admin-x-framework,posts,stats,admin-x-settings,activitypub,admin,admin-x-design-system— ~1,800 tests).CI here is the real assertion — it exercises the full build + test + lint + typecheck matrix, plus
ghost/core, which the local run doesn't cover.Note
While benchmarking I hit a latent quirk in
apps/admin/vite-ember-assets.ts:closeBundlecopies assets intodist/and back without clearing, so repeated non-clean builds accumulate stale chunks. Not caused by this change and not fixed here — flagging for a small separate cleanup.