How to debug an AI-built app
A repeatable method: reproduce it, read the real error, find the layer, change one thing, verify. Written for apps whose code you did not type.
Troubleshooting is tracing a visible failure to its cause. Start with a failed request, empty list or deployment, then verify the fix.
Start with the guide that matches your question or the error you can see. Each guide below names the problem, gives checks you can run, and links to related reading.
Choose one action you can repeat: opening a saved record, submitting a form or loading the deployed page. Record what you expected, what appeared instead and the first failing request. A blank screen, empty list and rejected request can look similar but need different fixes.
| Observation | Next check | Avoid |
|---|---|---|
| 401 response | Was a valid credential sent to the correct environment? | Changing ownership rules before checking identity |
| Successful response with an empty list | Do the filter and access policy match this account's rows? | Disabling access rules to make data appear |
| Preview works, live fails | Compare deployed revision and environment configuration | Assuming the latest preview is already published |
| 429 response | Read provider limits and retry instructions | Repeating the request in a tight loop |
Illustrative case: a record saves but disappears after refresh. First check whether the write succeeded; then check whether the next read uses the same account and filter. Do not treat an optimistic screen update as proof that the record reached storage.
A repeatable method: reproduce it, read the real error, find the layer, change one thing, verify. Written for apps whose code you did not type.
A symptom-to-cause index. Start from what you can see — a blank page, an empty list, a failed login, a dead deploy — and follow it to the layer responsible.
A 401 means the server could not identify you. The causes, how to tell which one you have, and how to confirm the fix.
The differences between your machine and a deployment — configuration, case sensitivity, build strictness, real users — and how to find which one bit you.
Empty lists, permission errors and silent failures between the browser and a hosted database — and how to tell which of the three you have.
The variable is set and the code still reads undefined. The six reasons that happens, in the order worth checking them.
How keys end up visible in a bundle or a repository, how to confirm it, what to do in the first ten minutes, and how to stop it recurring.
Your change is committed and the live site is unchanged. Branch, build, cache or domain — how to find out which, in four checks.
Rate limits, token limits, concurrency limits and accidental loops — how to tell which one you hit and how to stop hitting it.
Looking for something else? Browse every topic.