A Brief History

In late 2025, I wrote From Lovable to Live. It was a guide on taking a Lovable-generated site and hosting it on Cloudflare Pages. At that time, Lovable was useful. You described what you wanted. It generated a working React and shadcn UI app.

I used Lovable to generate 10 apps in production. They included a budget planner, a talent matrix, and a Kanban mind-graph tool. Each app used the same stack: React, Vite, 45-49 npm dependencies, and a vendored Radix UI kit with 49 files.

Why I Stopped Using Lovable

Free Tier Changed

Lovable reduced its free tier. The credits decreased. The message limits decreased. The cost of prototyping increased. I evaluated what value Lovable added to my workflow.

Generated Code Was Mostly Dead Weight

Lovable generated React code with many dependencies. When I needed to customise a layout, add a non-shadcn interaction, or change a chart, I had to read the generated code. The generated code contained many files that the app did not use. 48 of 49 vendored UI files were unused. The real logic of each app was 300-3,500 lines of code. The remaining scaffolding added complexity without function.

Models Can Now Generate Code Directly

In 2025, asking a model to generate a React app often produced incomplete results. You needed a tool like Lovable to fill the gaps. By late 2026, this changed. SOTA models (Claude 4 Sonnet, GPT-5) can generate production-quality code directly. Local models running via vLLM, SGLang, or Ollama on a Ryzen AI Max+ 395 with 128 GB unified memory can also generate code directly. The coding harnesses (Claude Code, Pi, subagents, MCP servers) provide the workflow. The abstraction layer that Lovable provided is no longer necessary.

The Portfolio Audit Confirmed the Problem

In mid-2026, I audited all 22 apps in my monorepo. The audit found these data:

Metric Value
Lovable-generated apps 10
Vendored components/ui/*.tsx files 481 across the portfolio
Of which never imported ~300
Runtime deps per Lovable app 45-49
Real behavioral core LOC 300-3,500
@tanstack/react-query usage 0 real calls across all 10 apps
react-hook-form usage 0 real calls across all 10 apps
Dead-weight deps deletable instantly ~140

Each Lovable app carried a Radix UI kit that it barely used. An app with 400 lines of real logic shipped 48 unused UI primitives, React Query (zero calls), react-hook-form (zero calls), and recharts (zero calls in that app). The scaffolding was the bulk of the code. The actual app was a small layer of logic on top.

What I Did

I followed the roadmap to remove or replace the Lovable-generated code:

Wave 1: Dead-weight sweep. I removed @tanstack/react-query and react-hook-form from the 5 Lovable apps still on React. Both had zero real usage. I deleted ~300 unused vendored UI files.

Wave 2: Dependency-free rewrites. I rewrote nine apps as hand-crafted vanilla HTML, CSS, and JS with zero runtime dependencies. For example, rust-hf-showcase had only a copy-to-clipboard button as its interactive element. Its bundle went from 492 kB of JS to 14 kB of HTML.

Wave 3: Logic core rewrites. I rewrote four medium-complexity apps as dependency-free code: insight-weaver, pr-dodger-deluxe, home-chore-helper, and financial-insights. financial-insights had one real dependency: recharts for a single stacked-bar projection chart. I replaced the chart with 200 lines of hand-rolled SVG. The bundle dropped from ~400 kB to 17 kB.

Wave 4: Holdout decisions. For 6 apps where a dependency provides real value, I made explicit decisions:

  • idea-weaver keeps react-force-graph-2d (a physics and canvas library that is hard to replace)
  • photo-site keeps framer-motion (the animations are the visual product)
  • blog-site, my-pi, start-with-local-ai stay on their current build tools (they are already dependency-minimal)
  • people-manager-suite and em-compass removed Azure auth and became local-only apps

Current Setup

The portfolio is a pnpm workspace monorepo (jreb-web-apps) with 23 apps.

13 apps are dependency-free. They are hand-authored HTML, CSS, and vanilla JS, built with Vite and no plugins:

App Bundle Function
rust-hf-showcase 14 kB HTML + 7 kB CSS Static marketing page
app-drawer-showcase 11 kB + 5 kB App-launcher grid
black-mirror 13 kB Episode ratings browser
recipe-folders 18 kB Ayurvedic recipe catalogue
gezonde-recepten 22 kB Dutch recipe catalogue with portion scaler
money-book 19 kB Budget planner
talent-grid-visualizer 11 kB 9-box talent matrix
insight-weaver 49 kB JS / 15 kB gzip Journaling app with SVG heatmaps
pr-dodger-deluxe 16 kB JS / 5.6 kB gzip Canvas arcade game
home-chore-helper 19 kB JS / 6.7 kB gzip Cleaning-task scheduler
financial-insights 17 kB JS / 5.8 kB gzip Finance projection with hand-rolled SVG charts
people-manager-suite 35 kB Team tracker (local-only)
em-compass 28 kB People explorer (local-only)

4 apps use Astro as a build tool only. They ship zero runtime JS frameworks:

App Role
blog-site (this one) Personal blog, root CSS and vanilla JS scripts
flashcards ES-NL flashcard SRS with pre-generated audio
sourdough-kitchen bread.jreb.nl recipe site
jreb-training Bilingual training landing page

3 apps keep one dependency they need:

App Dep Reason
idea-weaver react-force-graph-2d Force-directed graph is the core feature
photo-site framer-motion Scroll reveals and AnimatePresence for visual portfolio
my-pi @astrojs/starlight Docs chrome (sidebar, search, prev/next navigation)

Deployment. All apps build to static output in dist/. They deploy to Cloudflare Pages with automatic HTTPS, global CDN, and per-app build filters. A change to one app rebuilds only that app.

Coding harness. I did all rewriting using Pi. For specific tasks, I delegated work to Claude Code. I run local models (vLLM, SGLang) on my Ryzen AI Max+ 395 for prototyping. The pipeline does not use Lovable.

Summary

Lovable was useful in 2025. It was a fast way to prototype and deploy web apps. The situation changed. Models and coding harnesses improved. The free tier contracted. The audit showed that most generated code was unused scaffolding.

My portfolio now has 22 of 23 apps that are either dependency-free or carry only the dependencies that earn their keep. The 23rd app (werewolf-whodunnit) is still on its own repository. It is next.

Share this post