DEV Community

builtstack
builtstack

Posted on

3 bugs that cost me 3 weeks building a form builder

I built a form builder (mini-Tally) as a side project.

The code was the easy part. These three bugs cost me the most time.

Bug 1 — Typing didn't work

In my form editor, typing in a question field did nothing. The letters just didn't appear.

Cause: I used setBlocks(blocks.map(...)) — which captures stale state.

Fix — use the functional form:


typescript
setBlocks((prev) => prev.map((b) => 
  b.id === id ? { ...b, label } : b
));
Bug 2 — GitHub ate my src folder
I dragged my project folder into GitHub's web uploader. It said "uploaded 20 files." The build failed with "module not found: src/main.tsx".

The browser uploader had silently skipped the src folder entirely.

Lesson: don't use the web uploader for folders with nested files. Use git.

Bug 3 — Auth worked locally, broke in production
Sign-up worked on localhost. On the deployed site, it did nothing. No error, just silence.

Cause: Supabase redirect URLs were only configured for localhost. Supabase rejected requests from the production domain.

Fix: After deploying, add your production URL to Supabase → Authentication → URL Configuration. Both the Site URL and the Redirect URLs list.

The stack
Next.js 16 (App Router, Server Actions)

Supabase (Auth + Postgres + RLS)

Tailwind CSS

TypeScript

What I built
A form builder with 6 question types, public form pages, and CSV export.

Live demo: https://getjustforms.vercel.app

If you hit any of these bugs, ping me in the comments.
Enter fullscreen mode Exit fullscreen mode

Top comments (0)