The question everyone asks
"Can I switch my project from TanStack to classic Vite?" or "if I remix a project, does it change the stack?"
Instead of guessing, I tested it. Five experiments, real projects, real results.
The two stacks
Lovable currently has two architectures:
| Classic | Modern | |
|---|---|---|
| Framework | Vite + React SPA | TanStack Start (SSR) |
| Routing | react-router-dom | @tanstack/react-router (file-based) |
| Entry point | index.html + main.tsx | __root.tsx (server-rendered) |
| Key files | src/pages/, src/main.tsx | src/routes/, src/router.tsx, src/server.ts |
| SEO | Needs prerendering | Built-in via SSR |
| Deploy | Any static host | Needs server runtime |
Framework
Vite + React SPA
TanStack Start (SSR)
Routing
react-router-dom
@tanstack/react-router (file-based)
Entry point
index.html + main.tsx
__root.tsx (server-rendered)
Key files
src/pages/, src/main.tsx
src/routes/, src/router.tsx, src/server.ts
SEO
Needs prerendering
Built-in via SSR
Deploy
Any static host
Needs server runtime
What I tested
Test 1: Ask a TanStack project to switch to Vite
Created a project with the modern stack, then prompted: "switch this project to classic Vite + React, remove TanStack completely."
Result: The AI refused. The environment is fixed to TanStack Start and changing it would break the build, dev server, and preview system.
Test 2: Same thing, but more insistent
Tried again with: "I need you to use the classic version of Lovable."
Result: Same refusal. No option to change stacks from inside a project.
Test 3: New project, modern stack, but prompt says "use classic"
Created a brand new project with tech_stack "modern" but the initial prompt said "use the classic Vite + React stack, not TanStack Start."
Result: Still TanStack. The prompt cannot override the tech_stack parameter.
Test 4: Remix a Classic project
Remixed a project that was on the classic Vite + React stack.
Result: The remix is also Classic. Files confirm it: src/pages/Index.tsx, src/main.tsx, vite.config.ts. No TanStack anywhere.
Test 5: Remix a TanStack project
Remixed a project on the modern TanStack Start stack.
Result: The remix is also TanStack. Files confirm it: src/routes/index.tsx, src/router.tsx, src/routeTree.gen.ts, src/server.ts.
The rules
After five tests:
- The stack is locked at project creation
- Prompts cannot change the stack, not even on a new project
- The AI will refuse to swap frameworks mid-project
- Remix preserves the original stack, always
- The only way to get a specific stack is to set it when you create the project
How to create a project with the right stack
If you use the Lovable MCP (from Claude Code), specify it explicitly:
\\\`
create_project(
workspace_id: "your-workspace-id",
tech_stack: "classic",
initial_message: "build me a landing page..."
)
\\\`
For modern/TanStack:
\\\`
create_project(
workspace_id: "your-workspace-id",
tech_stack: "modern",
initial_message: "build me a landing page..."
)
\\\`
From the Lovable UI, look for the stack selection when starting a new project.
How to tell which stack you are on
Check your project files:
Classic (Vite + React):
- src/pages/ folder
- src/main.tsx
- index.html at root
Modern (TanStack Start):
- src/routes/ folder
- src/router.tsx
- src/routeTree.gen.ts
- src/server.ts
If you are stuck on the wrong stack
You cannot convert mid-project. Your options:
- Create a new project with the stack you want
- Connect your current project to GitHub first
- Use that repo as reference to rebuild in the new project
It takes some work, but it is the only reliable path.