Base44 error decoder

Paste the error, or describe what's happening in a few words. The decoder matches it against 22 documented errors and stuck states. Runs in your browser.

Try:

All entries

ISOLATE_INTERNAL_FAILURE

A backend function failed to start. Almost always a file in /functions that isn't a valid function: a missing Deno.serve() entrypoint, a utility or empty file, an import of frontend code or another function, or a Node/browser API Deno doesn't have.

  1. Open the function; make sure it exports a handler through Deno.serve().
  2. Move helper files out of /functions (they're treated as functions).
  3. Remove imports of frontend components or other functions; import from npm/deno modules only.
  4. Redeploy the function from Dashboard → Code → Functions.

Plan gate: Backend functions need the Builder plan or higher, on the workspace that owns the app.

Backend function returns 404

Either the function isn't deployed/routed, or you're testing it the wrong way (pasting the URL into a browser isn't a valid test).

  1. Test it from Dashboard → Code → Functions → Test Function. If that passes, the function works.
  2. Confirm the owning workspace is on Builder or higher.
  3. Check the file is in the right folder, named correctly, and uses Deno.serve().
  4. Redeploy to refresh routing.
  5. If it started after a deploy or platform update, tell support when.

Plan gate: Builder+ for backend functions.

403 Forbidden

Signed in but not allowed: a role or RLS (row-level security) rule on an entity blocks the action, or a webhook from a service that can't send credentials hit a non-public endpoint.

  1. Dashboard → Security → check the entity's RLS rules and the user's role.
  2. For Telegram/WhatsApp/Stripe-style webhooks, use a separate public function limited to non-sensitive actions.
  3. Backend functions: confirm Builder+ plan.
401 Unauthorized

Not signed in, or the session or an integration's credentials expired.

  1. Sign in again.
  2. For integrations, regenerate the API key in the external service and update the Secret in Base44.
429 Too many requests

Rate limited. Limits are per person, so they scale with your users; hitting them in normal use usually means a loop or an unbatched fetch.

  1. Look for a component that fetches on every render or in a loop.
  2. Batch requests, cache results, add retry with backoff.
  3. If it happens during normal activity, report the time and action to support.
  4. When reconnecting a domain, a 429 is temporary: wait a few minutes.
500 Server error

A server-side problem. Often transient. On a webhook POST it usually means the URL is wrong.

  1. Refresh and retry; check status.base44.com.
  2. Webhooks: use the default app link as the base, even with a custom domain: https://app--your-app.base44.app/api/apps/APP_ID/functions/NAME.
Error in json schema: properties is required for object type

A field's definition doesn't match the data being saved. Flexible objects and custom inputs are the usual culprits, and this also causes blank screens after publishing.

  1. Compare the entity's field types with what the form sends.
  2. Only use JsonSchemaForm when the properties are defined in advance.
  3. Fix the schema or the input, then republish.
'dict' object has no attribute 'lower'

The chat expected text and received an object. Usually transient.

  1. Revert your last message.
  2. Hard refresh (Ctrl+Shift+R / Cmd+Shift+R).
  3. Start a new prompt. If it persists, send the prompt and error to support.
Failed to fetch app

Usually an emoji or unsupported character in the app name. Needs support to fix.

  1. Contact Base44 support with the app link; this needs escalation.
White screen in the editor or app

Most often a bad edit (revertable) or a schema mismatch (see the JSON schema error).

  1. Click Revert on the last chat message, or roll back in Version History.
  2. Check for a JSON schema mismatch if it appeared after publishing.
  3. Clear cache, try another browser, then support with console screenshots.
Stuck on Thinking… / Applying changes

The AI turn hung. Complex first builds can legitimately take 10–15 minutes; beyond that it's stuck.

  1. Press Stop; then Revert to before the stuck prompt (Version History is fastest).
  2. Switch to Discuss mode and send any short message to break the state.
  3. After the very first prompt: Dashboard → Settings → Clone app, and continue in the clone.
  4. Split long prompts into smaller steps.
Asked the AI to undo, nothing happened

Chat can't undo. Only the Revert button under a message or Version History rolls back.

  1. Use Revert under the message, or Version History.
  2. Note: after connecting GitHub, versions from before the connection can't be restored.
Published changes not showing

Cache, an unpublished state, or a backend function that wasn't redeployed.

  1. Clear cache; check from another device.
  2. Confirm you clicked Publish and saw success.
  3. Redeploy backend functions from the dashboard if you changed one.
Login required on every page / landing page not public

Visibility is app-wide. A Private app needs login on every page, including the landing page. There is no per-page setting.

  1. Dashboard → Overview → App Visibility → Public.
  2. For a public landing with private content: RLS plus redirects in one app, or two apps (landing on the main domain, private app on a subdomain).

Plan gate: Private apps need Starter or higher.

Feature built on the Users entity doesn't work for users

Expected: the built-in Users entity is restricted to collaborators and the owner.

  1. Create a UserProfile entity keyed by user email and build on that.
Domain stuck on Pending verification / Connecting

DNS not matching, slow propagation, or an IPv6 record getting in the way.

  1. Refresh the Domains page; open the domain in a browser; if it loads, it's connected.
  2. Records: A @ 216.24.57.1 and CNAME www base44.onrender.com; remove all AAAA records; turn off registrar forwarding/parking.
  3. On Cloudflare set the records to DNS only (grey cloud).
  4. Allow up to 72 hours; after 30 minutes stuck, unlink and re-add.
ERR_SSL_PROTOCOL_ERROR on a custom domain

Records don't match exactly, an AAAA record exists, or the certificate hasn't issued yet.

  1. Match the dashboard values exactly for both www and root.
  2. Remove AAAA records; Base44 is IPv4-only.
  3. Allow up to 72 hours. uk.com/gb.com/eu.com/us.com: the www version can't get SSL at all; use the bare domain.
Domain already exists

The domain is still attached to a deleted app in Base44's system.

  1. Contact support to release it; domains from apps deleted before 5 June 2025 always need support.
Unsupported file type / format mismatch

The file's real format doesn't match its extension (renamed, not converted), or it's over the size limit.

  1. Re-export the image as PNG/JPG from an editor; renaming never converts.
  2. Videos: 100 MB max; supported MP4, WEBM, MOV, AVI, MKV, M4V, WMV, OGV, 3GP, 3G2.
cdn.tailwindcss.com should not be used in production

A platform-injected console warning. Harmless; can't be removed.

  1. Ignore it.
Out of credits / paywall

The workspace has used its monthly message or integration credits. App users see only a generic error, not a credit message.

  1. Check Settings → Credit usage.
  2. Upgrade for immediate credits, or wait for the reset on your subscription date.
  3. Plan in Discuss mode (0.3 credits) and build in small steps to spend less.
GitHub sync problems

GitHub 2-way sync is permanent, syncs automatically only, requires the default branch to be main, and leaves entities out of the repo.

  1. Rename the default branch to main.
  2. Don't look for a manual push; sync is automatic.
  3. Entities stay managed in Base44, not in the repo.
  4. Remember: you can never reconnect to the same repository name after disconnecting.

Plan gate: Builder+ for GitHub sync.

Base44 docs: Troubleshooting · checked Oct 2026