Problem
@tanstack/start-plugin-core's dev server plugin uses isRunnableDevEnvironment(serverEnv) (which calls instanceof) to guard SSR middleware registration at src/dev-server-plugin/plugin.ts line ~147.
When vite is aliased to another package via pnpm overrides (e.g. vite: npm:@voidzero-dev/vite-plus-core@latest), two different RunnableDevEnvironment class references exist in memory — instanceof returns false, SSR middleware is never registered, and all routes return 404.
This is a dual-package hazard.
Reproduction
- Create a TanStack Start project
- Add pnpm override:
"vite": "npm:@voidzero-dev/vite-plus-core@latest"
- Run
pnpm dev
- All routes return 404 "Cannot GET /"
Suggested Fix
Replace instanceof with duck-typing in plugin.ts:
- if (!isRunnableDevEnvironment(serverEnv) || "dispatchFetch" in serverEnv) {
+ if (!("runner" in serverEnv) || "dispatchFetch" in serverEnv) {
The runner property (a public getter) is unique to RunnableDevEnvironment — FetchableDevEnvironment and DevEnvironment don't have it. The existing "dispatchFetch" in serverEnv guard correctly handles Nitro.
Versions
@tanstack/start-plugin-core: 1.166.8
vite-plus / @voidzero-dev/vite-plus-core: 0.1.12 (Vite 8.0.0)
Workaround
pnpm patch @tanstack/start-plugin-core with the diff above.
Problem
@tanstack/start-plugin-core's dev server plugin usesisRunnableDevEnvironment(serverEnv)(which callsinstanceof) to guard SSR middleware registration atsrc/dev-server-plugin/plugin.tsline ~147.When
viteis aliased to another package via pnpm overrides (e.g.vite: npm:@voidzero-dev/vite-plus-core@latest), two differentRunnableDevEnvironmentclass references exist in memory —instanceofreturnsfalse, SSR middleware is never registered, and all routes return 404.This is a dual-package hazard.
Reproduction
"vite": "npm:@voidzero-dev/vite-plus-core@latest"pnpm devSuggested Fix
Replace
instanceofwith duck-typing inplugin.ts:The
runnerproperty (a public getter) is unique toRunnableDevEnvironment—FetchableDevEnvironmentandDevEnvironmentdon't have it. The existing"dispatchFetch" in serverEnvguard correctly handles Nitro.Versions
@tanstack/start-plugin-core: 1.166.8vite-plus/@voidzero-dev/vite-plus-core: 0.1.12 (Vite 8.0.0)Workaround
pnpm patch @tanstack/start-plugin-corewith the diff above.