Lovable Stacks: Classic vs Modern, What Actually Happens (I Tested It)
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 |
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.
Reader margin
What stayed with you?
Leave one small mark in the margin.
Notes from readers
The margin is open. You can leave the first note.
Stuck with something like this? I fix it daily → Services