Skip to content
Building in public3 min read

Building in Public #5: The need for speed

By Peter Coppinger

Building in Public #5: The need for speed

New obsession: build speed. An online app build was taking around twenty minutes end to end. Twenty minutes! People will wait that long once, out of curiosity. They will not wait it twice. So this week I declared war, with a written plan: get it to five.

The rule I set myself: no optimising by vibes. Profile first, fix the biggest number, measure again. I've been burned before: remember the parallel-lanes experiment that cost triple for zero speedup.

The first big win

The first real find was a beauty. Our verifier runs the app through a full production build to catch errors, which is correct and important. But it was doing that build every fix round, and each one cost about 137 seconds. Build once, verify the fixes against a live dev server, done: minutes off the tail of every build that needs repairs. The best optimisations feel embarrassing in hindsight; this one filed the paperwork and moved in.

Multi-tenant by default

Alongside the speed war, a foundational ship: generated apps are now multi-tenant by default. Organisations, roles, admin user management, baked in from the first build. If Vorx apps are going to be real business apps, 'add your team' can't be an afterthought bolted on later; it has to be load-bearing from day one.

Also landed: a full forms pipeline for generated sites (submissions stored, triaged, emailed, exportable), SEO finalization at publish time (proper canonical tags, sitemaps, social cards), and a fix for a genuinely nasty distributed-systems bug in the sync service, the kind where the leader election deadlocks and everything looks fine except nothing moves. Those bugs age you.

The build isn't at five minutes yet. But it's a lot closer than twenty, I know exactly where the remaining time lives, and the list of levers is written down and ranked.

That's not a dream, that's a queue.

Just shipped

  • Feature: sharing your build now earns credits: post it on X or LinkedIn, submit the link, get 15 credits.
  • Bug fix: the language picker now actually saves your choice instead of reverting on the next page load.
  • Feature: fleet coordination now works from anywhere. A hosted endpoint, not my home Wi-Fi.
  • Feature: Mission Control is served online, locked to the company's own accounts.
  • Feature: generated apps can now be installed like native apps, icon and all.
  • Feature: a performance gate flags exactly which change slowed a generated app down.
  • Feature: generated apps can connect to Google Sheets: append rows, read rows.
  • Feature: generated apps can schedule real recurring jobs, not fake ones.
  • Feature: owners get told immediately if their published app's database ever disappears.
  • Feature: Apple login for generated apps.
  • Bug fix: edits interrupted by a deploy now resume instead of silently vanishing.
  • Bug fix: the cookie consent banner was never actually visible on production, so nobody was ever asked.
  • Bug fix: generated apps were asking their database for tables that were never created. It hit 18 live projects.
  • Bug fix: a code slip in generated apps could crash the whole page on load. Caught and fixed.
  • Bug fix: publishing showed a "failed" message while the site was actually live. Fixed.
  • Bug fix: agents quietly working from stale code can no longer ignore the staleness.
  • Bug fix: a fresh browser window said "please log in again" to people who were logged in.
  • Bug fix: demo data stopped booking appointments on days the business is closed.
  • Bug fix: copied credentials could point a new project at the wrong database. Sealed.
  • Bug fix: an overeager cleanup job was deleting healthy backends. Stopped.
  • Feature: sharing your build now earns credits: post it on X or LinkedIn, submit the link, get 15 credits.
  • Bug fix: the language picker now actually saves your choice instead of reverting on the next page load.
  • Feature: fleet coordination now works from anywhere. A hosted endpoint, not my home Wi-Fi.
  • Feature: Mission Control is served online, locked to the company's own accounts.
  • Feature: generated apps can now be installed like native apps, icon and all.
  • Feature: a performance gate flags exactly which change slowed a generated app down.
  • Feature: generated apps can connect to Google Sheets: append rows, read rows.
  • Feature: generated apps can schedule real recurring jobs, not fake ones.
  • Feature: owners get told immediately if their published app's database ever disappears.
  • Feature: Apple login for generated apps.
  • Bug fix: edits interrupted by a deploy now resume instead of silently vanishing.
  • Bug fix: the cookie consent banner was never actually visible on production, so nobody was ever asked.
  • Bug fix: generated apps were asking their database for tables that were never created. It hit 18 live projects.
  • Bug fix: a code slip in generated apps could crash the whole page on load. Caught and fixed.
  • Bug fix: publishing showed a "failed" message while the site was actually live. Fixed.
  • Bug fix: agents quietly working from stale code can no longer ignore the staleness.
  • Bug fix: a fresh browser window said "please log in again" to people who were logged in.
  • Bug fix: demo data stopped booking appointments on days the business is closed.
  • Bug fix: copied credentials could point a new project at the wrong database. Sealed.
  • Bug fix: an overeager cleanup job was deleting healthy backends. Stopped.

Stay updated: one founder, an army of AI agents, building this in public.

Get each new diary entry by email: the wins, the failures, and the one number we're chasing. No spam, unsubscribe any time.