One codebase, two platforms
The Flutter template brings structure and conventions. iOS and Android come out of the same codebase and the same repository.
Technology
A single Flutter codebase for iOS and Android is quick to set up. Getting into the stores needs build machines, signatures, certificates and a release process. The platform covers that, macOS included.
Start for free. No credit card required.
Mobile CI/CD rarely breaks down over application code. It breaks down over build environments and signatures, and those are the parts the platform handles.
A look at what a self-built mobile release process involves and how much of it the platform absorbs.
| Task | With the Application Platform | Set up yourself |
|---|---|---|
| Project structure and repository | Fully covered: Generated from a production-ready Flutter template with settled conventions | Not offered: Create the repository and agree structure and conventions in the team |
| Build pipeline for both platforms | Fully covered: One GitLab CI pipeline builds iOS and Android from the same codebase | Not offered: Write and maintain two separate build paths yourself |
| macOS build environment | Fully covered: macOS machines for iOS builds are part of the platform | Not offered: Buy a Mac, maintain it and keep it running as a CI runner |
| Android signing | Fully covered: Keystore and passwords are managed and handed to the pipeline | Partly covered: Store the keystore somewhere safe, share it, wire it into CI |
| Apple credentials | Fully covered: Signing credentials are managed centrally rather than kept locally | Not offered: Renew certificates and profiles by hand and share them around |
| Store metadata and screenshots | Fully covered: Maintained in the project and pushed to the stores | Not offered: Edited by hand in two portals with no version history |
| Releases and versioning | Fully covered: Version numbers come out of the pipeline and every release takes the same route | Partly covered: Bump versions manually and upload builds by hand |
| Whitelabel variants | Fully covered: Several brands from one codebase with their own branding and store listings | Not offered: Keep branches or copies around and build each brand separately |
| Seeing errors from the app | Fully covered: Sentry is fully configured, errors arrive with stack trace, release and context | Partly covered: Integrate error tracking yourself and match releases manually |
| Backend for the app | Fully covered: NestJS, Laravel or FastAPI run as services in the same project | Partly covered: A separate setup with its own pipeline, server and secrets |
Green means fully covered, amber partly, grey still on you. Automating mobile releases yourself is possible, but most of the effort sits outside your app code.
As of 10 August 2026. This comparison describes typical workflows and can differ from project to project.
The pieces between a finished feature and a published app.
The Flutter template brings structure and conventions. iOS and Android come out of the same codebase and the same repository.
Test, build, publish and release run through GitLab CI configuration that sits readable in your repository and can be edited.
Remote workspaces include macOS machines, so Apple builds no longer depend on a laptop someone has to keep awake.
One codebase produces several brands, each with its own branding, domains and store listings.
Pipeline for Customer App
Four steps from creating the project to your first release.
Pick Flutter in the wizard. Repository, project structure and CI/CD pipeline are created alongside the project.
Bring your existing app into the repository and keep environment variables and credentials centrally in the project.
The Android keystore and Apple credentials are managed and made available to the pipeline without ever entering the repository.
The pipeline builds iOS and Android, produces a version and pushes the build, metadata and screenshots to the stores.
No. Remote workspaces include macOS machines that run iOS builds, removing the build Mac in an office that needs maintenance and goes offline during updates. You can also use those machines for development over RDP or VNC.
Signing credentials such as the keystore and Apple credentials are managed and made available to the pipeline, never in the repository or on laptops. A release no longer depends on one person. Access follows from project rights.
A Flutter app can sit in the same project as a NestJS, Laravel or FastAPI backend, each with its own repository and pipeline but shared server connection and credentials. Errors from both land in Sentry with a stack trace and context.
Register for free, pick Flutter as your stack and follow the route from a commit to a store listing.
Start for free. No credit card required.