[workbench] Add TanStack Start workbench#1875
Conversation
🦋 Changeset detectedLatest commit: 175b118 The changes in this PR will be included in the next version bump. This PR includes changesets to release 17 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 |
📊 Benchmark Results
workflow with no steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express workflow with 1 step💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express workflow with 10 sequential steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express workflow with 25 sequential steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express workflow with 50 sequential steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express Promise.all with 10 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express Promise.all with 25 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express Promise.all with 50 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express Promise.race with 10 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express Promise.race with 25 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express Promise.race with 50 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express workflow with 10 sequential data payload steps (10KB)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express workflow with 25 sequential data payload steps (10KB)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express workflow with 50 sequential data payload steps (10KB)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express workflow with 10 concurrent data payload steps (10KB)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express workflow with 25 concurrent data payload steps (10KB)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express workflow with 50 concurrent data payload steps (10KB)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express Stream Benchmarks (includes TTFB metrics)workflow with stream💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express stream pipeline with 5 transform steps (1MB)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express 10 parallel streams (1MB each)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express fan-out fan-in 10 streams (1MB each)💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express SummaryFastest Framework by WorldWinner determined by most benchmark wins
Fastest World by FrameworkWinner determined by most benchmark wins
Column Definitions
Worlds:
❌ Some benchmark jobs failed:
Check the workflow run for details. |
🧪 E2E Test Results✅ All tests passed Summary
Details by Category✅ ▲ Vercel Production
✅ 💻 Local Development
✅ 📦 Local Production
✅ 🐘 Local Postgres
✅ 📋 Other
❌ Some E2E test jobs failed:
Check the workflow run for details. |
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
TanStack Start runs on Vite + Nitro, so the existing workflow/vite plugin already supports it - this PR just adds a workbench app to exercise the combination in the e2e test suite, plus a getting-started doc. The workbench app mirrors workbench/vite (symlinked workflows + nitro pg plugin) but uses TanStack Start's file-based router for the test routes. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
eeaf471 to
a1adbf9
Compare
The Vercel project for workbench-tanstack-start-workflow isn't auto-deploying for this branch. Local dev/prod/postgres e2e already cover tanstack-start. Re-enable once the project is connected. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
workbench/tanstack-start/. TanStack Start runs on Vite + Nitro, so the existingworkflow/viteplugin already supports it — no SDK changes are needed.getting-started/tanstack-startguide and removes the "coming soon" badge from the home-page framework grid.Derived from first principles, but cross-checked against #877 for project ID and route names so the existing Vercel project (
prj_643jeVugTMq5ivsOFQHcbLG1qcnu) can be reused.Notable choices
/,/api/chat(HMR sentinel), and/api/test-direct-step-call. Symlinksworkflows/andplugins/fromworkbench/nitro-v3/so we don't fork the test suite.routeTree.gen.tsis gitignored and added to biome's exclusion list — TanStack regenerates it onvite dev/vite build.src/routes/api/*files avoid statically importing workflow source. TanStack Start bundles allsrc/routes/**files together; statically importing a workflow file pulls its class definitions into the route chunk, where the SWC plugin re-emits class-registration IIFEs under the app's host. Combined with the canonical registrations under the source-file host, the secondObject.defineProperty(cls, "classId", { configurable: false })then throws at module-load time. Using a dynamic import for the HMR sentinel and an inline step for the direct-step-call test avoids this pathway.getting-started/vite.mdx(same Vite plugin under the hood).Test plan
Validated locally against the workbench's prod build (
pnpm build && node .output/server/index.mjs) with both world backends, mirroring CI:pnpm turbo run build --filter='!./workbench/*'(packages + docs)cd workbench/tanstack-start && pnpm build(prod build)APP_NAME=tanstack-start pnpm vitest run packages/core/e2e/local-build.test.ts— 13/13 passAPP_NAME=tanstack-start DEV_TEST_CONFIG=... pnpm vitest run packages/core/e2e/dev.test.tsagainstvite dev— 3/3 pass (3 N/A skipped: Next.js-only)APP_NAME=tanstack-start ... pnpm vitest run packages/core/e2e/e2e.test.tsagainstvite dev— 70/70 pass (6 N/A skipped: Pages Router)postgres:18-alpinematching CI) — 71/71 pass (6 N/A skipped)CI status
workbench-tanstack-start-workflowis connected to this repo / has the GitHub deployment hook enabled before un-drafting.VERCEL_AUTOMATION_BYPASS_SECRETto OIDC Trusted Sources). Not caused by changes in this PR.🤖 Generated with Claude Code