Vibe Code Rescue

Buttons in your app do nothing when you click them

You built an app with Lovable, Bolt, or v0. It looks finished. Then you click Save, or Submit, or Delete, and nothing happens. No error, no spinner, no change. The button is real, it just is not connected to anything, or it is connected to something that fails silently. Both are fixable once you know which one you have.

Why this happens to AI built apps specifically

AI app builders render the visual layer first and the logic layer second. If the chat session moved on before the second part happened, you get a perfect looking button wired to a stub: an onClick whose entire body is a console.log or a // TODO: implement comment. The other common case is a handler that was implemented but crashes or fails a backend call the moment it runs. Either way the app compiles, deploys, and looks done, so nothing warns you until you click.

Confirm it in two minutes

Open the app, press F12 for devtools, select the Console tab, and click the dead button once. You will see one of three signatures:

  1. A red error appears on click. The handler is real and it is crashing. Usually it is reading a property of undefined because state or backend data never loaded before the click.
  2. Nothing at all in Console, and nothing new in the Network tab. The handler is a stub, or the click never reaches the button in the first place.
  3. The whole page reloads. The button sits inside a form without type="button" and without preventDefault. The click triggers a native form submit, and the reload throws away all your state before the handler can finish.

The fix, per signature

One more silent failure worth checking: an async handler whose backend call rejects and nobody hears it. An empty catch block, or no catch at all, swallows the failure completely. The click "works", the save never happens. Open the Network tab, click again, and look for a red request. If you find one, the button was never the problem, the API call was.

Do not do this

Do not keep pasting "the button doesn't work" into the AI chat. After a few rounds the chat context is poisoned: the model keeps rewriting the same component in slightly different ways without ever finding the cause, because you have not given it the cause. Paste the console error verbatim instead. If there is no error, say exactly that: "clicking Save produces nothing in the console and no network request." If the chat has already spun in circles, start a fresh chat with just the error and the component name.

Still stuck?

Run the instant diagnosis. Paste your public repo URL into the form and an automated clean-room check reports what is broken: install, build, render, and config, with the exact blocker named, in minutes, free. If the button's console output confused you, paste it into the issue too and I will read it the same day. Private repo or zip? Email works too.

Get an instant free diagnosis

Or email me instead. Fixes with 24 hour turnaround start at $95. Prefer self-serve? The $5 instant diagnosis on Apify checks your repo privately, no public issue needed.