Working with your app’s code
Base44 lets you work with your app’s code so you can create custom experiences while still relying on the platform for infrastructure and runtime. You stay close to the Base44 app model and APIs, which helps your app behave consistently across environments and makes it easier to adopt new platform capabilities over time. You can mix low code and full code in the same project. Start from Base44 primitives, then drop into code when you need custom logic, integrations, or UI that go beyond what is available out of the box. This balance gives you both speed and control without forcing you to maintain your own underlying platform.
Code and live preview side by side
Editing a backend function
Backend functions run your app’s server-side logic, such as sending emails, processing payments, or calling other services. You can edit a function’s code yourself in Code, redeploy it, and test it before you publish.- Click Dashboard at the top of the app editor.
- Click Code.
- Under Code files, open base44 > functions > your function’s folder, then click entry.ts.
- Edit the code.
- Click Save & Redeploy.

Saving and redeploying a backend function
- Your preview and tests: They use the new version right away.
- Your live app: It keeps running the version from your last publish until you publish again. Publishing sends all your changes on main live together, so you can’t publish one function on its own.
- Automations and workflows: They use the new version right away, without a publish.
- Branches: You can redeploy on main only. On a branch, the button is Save, and your change reaches main when you merge. Learn more about backend functions on a branch.
- Click Dashboard at the top of the app editor, then click Code.
- Open your function’s entry.ts file, and save or discard any changes.
- Click Test Function at the bottom right.
- Under Payload, enter the JSON input your function expects.
- Click Run Function.

Testing a backend function
Using in-product developer tools
Base44 includes developer tools that help you understand how your app behaves in real time and debug issues more efficiently. Instead of adding your own ad hoc logging or building separate dashboards, you can inspect what is happening directly from the Base44 environment. These tools let you see how your app talks to Base44 services and external integrations, monitor requests and responses, and surface important events, errors, or warnings. You can validate assumptions while you work, then iterate safely in staging or preview environments before you roll changes out more broadly.Integrating with GitHub
Base44 supports a GitHub based workflow so you can manage your app code with modern version control practices. Connecting your app to GitHub makes it easier to collaborate with your team and keep a clean history of every change that goes into your app. You can use branches and pull requests to review work before it goes live, enforce review or check requirements, and keep your main branches stable. When you connect GitHub workflows and checks, you can test and validate each change, then let Base44 handle deployment from the reviewed code. This creates a clear, auditable path from commit to production.
Connecting to GitHub
Exporting your code
You can download your app’s code as a ZIP file to keep a copy, review it, or work on it in your own tools. The exported code still relies on Base44 to run, so a ZIP is a copy of your code, not a way to move your app off Base44.Downloading the ZIP
Download a copy of your app’s current saved code from the app editor.- A standard React project built with Vite, set up the same way as the code you see in Code and in a connected GitHub repository.
- Your frontend code, your backend functions, and your data structure (the fields and permissions for each table).
- Your app’s data isn’t included. Export each table as a CSV file instead. Learn how to export your app’s data.
- Your secrets and app users aren’t included. They stay in Base44.
- Your version history isn’t included. The ZIP holds your app’s current saved code.
- Go to your app editor.
- Click the More actions icon at the top right.
-
Select Export project as ZIP.

Exporting your project from the More actions menu
-
Click Download ZIP.

Downloading your app's code as a ZIP file
Running it elsewhere
Your exported code is built to work with Base44. It uses the Base44 SDK to connect to your app’s backend on Base44 for data, logins, backend functions, and integrations. If you run the code somewhere else, those features still come from Base44 and use your live app’s data. Base44 doesn’t support self-hosting. You can’t run the Base44 backend, including the database, login system, and integrations, on your own servers. To run your app fully outside Base44, you’d need to replace those parts with your own backend and change the code that uses them. Here’s what you can do with your code instead:Edit the code in your own editor
Edit the code in your own editor
Keep a backup of your app
Keep a backup of your app
Connecting to external APIs
Base44 includes an integrations layer that lets your app call external services without you managing every API call by hand. Instead of wiring each provider yourself, you use Base44 integrations to handle common patterns like talking to AI models, working with files, sending email, or calling custom APIs, while Base44 manages credentials and execution on the backend. There are 2 main types of integrations:- Built in integrations cover common tasks such as generating text or images with AI, uploading and serving files, or extracting structured data from documents.
- Custom integrations let a workspace administrator import an OpenAPI specification for almost any external API and expose it to your apps as a reusable, named integration that is proxied through the Base44 backend.
Using Base44 as a backend service (BaaS)
Base44 includes a managed backend platform that is built with AI agents and modern full stack apps in mind. It handles core backend concerns such as data storage, authentication, real time updates, serverless functions, integrations, and hosting so you can focus on product logic and experience.
Base44 as a backend
Troubleshooting backend functions
Most backend function errors come from the request, the function’s code, or the way functions call each other. If a backend function isn’t working, find your situation below.My function returns a 404 or an error when I open its URL
My function returns a 404 or an error when I open its URL
- Check that your plan includes backend functions. Learn more about plans.
- Check that the URL or call uses the function’s exact name, which is the name of its folder under base44 > functions in Code.
- Open the function’s entry.ts file and click Save & Redeploy to deploy it again.
- Test the function again.
I see an ISOLATE_INTERNAL_FAILURE error when I save a function
I see an ISOLATE_INTERNAL_FAILURE error when I save a function
-
Ask the AI chat to fix the function:
-
If you edited the code yourself, check it against the format the AI uses. Functions in the app editor wrap their logic in
Deno.serve(), and each import starts withnpm:,jsr:ornode:, or is a relative path such as./helpers.ts. - Click Save & Redeploy, then publish your app so your live app gets the fixed function.
Calls from my function to Base44 fail with 403 'DNS points to prohibited IP'
Calls from my function to Base44 fail with 403 'DNS points to prohibited IP'
error code: 1000. Any call can fail this way, including reading or writing records, integrations, and calls to other functions. Retrying doesn’t help, but starting the same process again from the beginning works.This happens when the function sits too deep in a chain of backend functions calling each other. Each call from one function to another adds a level to the chain, whether it uses base44.functions.invoke() or a fetch() to a function’s URL. A chain can be up to 7 functions long, counting the function that starts it. The 8th function in a chain, and any after it, can’t reach Base44 at all.To fix the error:- Find the chain. Look for a function that invokes itself, or functions that invoke each other one after another, such as a function that processes one step of a long job and then invokes itself for the next step.
- Start each step from a new request instead of from the previous step. Have the function process one step, save its progress on a record, and return. Then start the next step from your app’s frontend, or from a scheduled workflow that picks up unfinished work.
-
If a function calls another function only to reuse its code, move that code into a file in
base44/shared/and import it in both functions instead. See Share code between functions. -
If you’re not sure where the chain is, ask the AI chat to find it:
My Telegram or WhatsApp webhook gets a 403 error
My Telegram or WhatsApp webhook gets a 403 error
FAQs
Click a question below to learn more.What does the activity monitor show?
What does the activity monitor show?

The activity monitor lists the requests your app makes
How do I view my app's files and components?
How do I view my app's files and components?
- Click the More actions icon in the top bar and select This page’s files to view the files that are currently used on the page you are editing. Use See all files to open the full file list.
- Click Dashboard, then Code to open the full file structure for your app and browse components.
- To download everything as a ZIP file, see Exporting your code.
- To connect your project to GitHub for advanced version control, click the More actions icon , select GitHub connection, and follow the setup steps.