You don't have to start from scratch. If you already have a Flutter app, in a ZIP file, in a GitHub repository or in a folder on your computer, you can bring it into FlutterGo.AI and keep building it with the agent.
After the import, your app is a normal FlutterGo.AI project. The agent can read the code, answer questions about it, make changes and show a live preview.
Here we cover the three ways in, and what happens right after the import.
What you need#
- A real Flutter app: a
pubspec.yamlfile and a Dart entry point in thelibfolder, usuallylib/main.dart. Flavored entry points such aslib/main_dev.dartwork too. - For GitHub: the repository's link, or
owner/repo. Private repositories also need your GitHub account connected. - A free project slot. An import is a new project, and the Free plan allows 2 (see Creating a project).
How to do it#
1. Import a ZIP file#
- On Home, click the ZIP tile under the prompt box. Or click +, then Import Android & iOS app.
- Pick the ZIP file of your project. The project may sit inside a folder in the ZIP: FlutterGo finds the folder that holds
pubspec.yaml. - FlutterGo shows Importing Android & iOS app…, then opens the project.
The ZIP can be up to 220 MB. Leave out build folders such as build and .dart_tool to keep it small.
Tip: Want to tell the agent what to change right away? Attach the ZIP with the Files tile (or +, then Attach files), type what you want, and click Start building. FlutterGo imports the ZIP as your app and uses your words as the first instruction.
2. Or clone from GitHub#
- On Home, click the GitHub tile under the prompt box. Or click +, then Clone from GitHub.
- The Clone from GitHub window says: "Public repos only need a GitHub link. Private repos need your GitHub account." Choose Public repo or Private repo.
- Under Repository, type
owner/repoor pastehttps://github.com/owner/repo. To clone a branch other than the default one, type it under Branch (optional). - For a private repository, click Connect GitHub at the top of the window if GitHub isn't connected yet, and approve FlutterGo in GitHub's window. Then pick your repository under Your repositories. Private ones show a Private badge.
- Under App identity (optional), you can set the Project name and the Package / bundle ID. Leave the ID empty to keep the IDs already in the repository; a new ID is written into android/ and ios/. Use the same ID on Android and iOS is ticked; untick it to give iOS its own iOS bundle ID.
- Click Clone repository. The button shows Cloning…, then your app opens.
Tip: If your app is already in the App Store or Google Play, leave Package / bundle ID empty: the store needs the IDs it already knows.
The window's small print says: "Only Android and iOS app projects with pubspec.yaml and a lib/ entry point are accepted." pubspec.yaml must be at the root of the repository.
3. Or pick a folder from your computer#
This way lives in the New project dialog, which the Projects page shows while you have no projects yet.
- In the dialog, click Import Android & iOS app. Your computer's folder picker opens.
- Pick the folder that directly contains
pubspec.yaml. - FlutterGo packs the folder in your browser, leaving out folders such as
build,.dart_tooland.git, and uploads it. The project opens.
Up to 8,000 files and 200 MB can be imported this way. Under the button, or upload a .zip instead takes a ZIP file, and Clone from GitHub works as in step 2.
4. See what happens after import#
- FlutterGo adds anything a cloud build needs that your app is missing, such as the Android, iOS and web folders and the launcher icons. It leaves out desktop platform folders (
macos,windows,linux), build output and editor files. - The project opens, and FlutterGo sends a first message for you: "I imported this Flutter app. Please check the project and fix anything that would block the web preview. Keep the existing product — don't redesign it or replace it with a template."
- The agent checks the code and fixes what would stop the preview. It keeps your app as it is.
- When the code is clean, the preview starts. Now ask the agent anything about your code, or ask for a change.
Success: Your app runs in the preview, ready for your next change.
Tip: Keep the project in sync with GitHub from Ship → GitHub (Pro and up). A private repository you cloned through your GitHub account is already linked there. For a public one, use Link existing if you can push to it. See Save your code to GitHub.
Common mistake: Importing a repository that is not a Flutter app, for example a website. The import is refused because there is no pubspec.yaml.
Troubleshooting#
Problem: "That .zip is not a Flutter app — it must contain pubspec.yaml and a Dart entry point in lib/ (e.g. lib/main.dart or lib/main_dev.dart)." Possible causes: The ZIP holds something else, or the app is missing one of the two files. Solution:
- Open the ZIP on your computer and check that
pubspec.yamland a Dart file inlibare there. - Zip the folder that holds
pubspec.yaml, and import that ZIP.
Problem: "That folder is not an Android and iOS app project." Possible causes: You picked a parent folder, or the app is missing pubspec.yaml or its lib entry point. Solution:
- Pick the folder that directly contains
pubspec.yaml. - Try the import again.
Problem: "This zip is … The maximum upload size is 220.0 MB." Possible causes: The ZIP includes build output. Solution:
- Delete the
buildand.dart_toolfolders from your copy, zip it again and import it.
Problem: "Connect GitHub to clone this repository." Possible causes: The repository is private, or the FlutterGo app on your GitHub account has no access to it. Solution:
- Choose Private repo and click Connect GitHub.
- On GitHub's install page, grant FlutterGo the repository, or choose All repositories.
- Click Clone repository again.
Problem: "Repository must contain pubspec.yaml and a Dart entry point in lib/." Possible causes: The app sits in a subfolder of the repository, or the repository is not a Flutter app. Solution:
- On GitHub, download the repository as a ZIP (Code, then Download ZIP) and import it as in step 1. FlutterGo finds the app's folder inside the ZIP.
Problem: "Use a reverse-DNS id like com.company.myapp" Possible causes: The Package / bundle ID is not in the right form. Solution:
- Type an ID like
com.company.myapp, or clear the field.
Problem: "Could not clone the repository." Possible causes: A typo in the repository name, or a branch that doesn't exist. Solution:
- Check the spelling:
owner/repo, or the full link. - Clear Branch (optional) to use the default branch.
- Click Clone repository again.
Problem: "GitHub did not confirm the installation. Try Connect GitHub again." Possible causes: GitHub's window was closed before you finished. Solution:
- Click Connect GitHub again and finish every screen in GitHub's window.
Problem: "Your plan includes 2 projects and you have 2." Possible causes: You are on the Free plan and already own 2 projects. Solution:
- Delete a project you don't need, or upgrade. See Creating a project.
FAQ#
Can I import any GitHub repository? Any Flutter app with pubspec.yaml at its root. Public repositories only need the link. Private ones need your GitHub account connected, with access to that repository.
Does importing change my original code? No. The import is a copy in FlutterGo. Your ZIP, folder or repository stays as it was, unless you later push changes to it.
Can I import a specific branch? Yes. Type the branch name under Branch (optional). Leave it empty for the default branch.
What happens to my app's packages and assets? They come with the project. FlutterGo fetches the packages when it builds the preview.
Does the agent know my app's history? No. The agent reads your code files, not your git history. It can still understand the code and change it safely.
Can I keep the imported project in sync with GitHub? Yes, from the Pro plan up, with Ship → GitHub. See Save your code to GitHub.