· 1 min read
Shipping Flutter to enterprise clients without a CI budget
Flavors, signed builds and a one-command release script get you most of the reliability of a full pipeline, for the price of an afternoon.
Plenty of enterprise mobile work happens without a CI pipeline: a small team, a client-owned signing key, and a deadline. You can still make releases boring.
Flavors before anything else
Separate build flavors for development, staging and production — with distinct application IDs — mean a tester can hold all three on one device, and nobody ever asks which environment a build points at. This is the single highest-leverage thing to set up on day one.
One script, no memory
Every manual release step is a step that gets skipped at 11pm. Put version bumping, the build command, the signing and the artefact naming into one script that takes a flavor and produces a named, dated artefact. The goal is that nobody needs to remember anything.
Crash reporting is not optional
Without CI you lose the safety net of automated test runs on every push, so you compensate at the other end: crash reporting wired in from the first release, with the build number visible in every report. Knowing which build broke is most of the debugging.
Written by Md. Farhad Hossen, Senior Flutter Developer in Dhaka. Say hello.
Keep reading
More posts
· 2 min read
Choosing state management for a banking app
GetX, BLoC and Provider all work. What actually decides the choice is who maintains the app after you, and how loudly failures need to announce themselves.
Read· 2 min read
Offline-first Flutter for field agents
A microfinance officer in rural Uganda cannot wait for your API. Designing the sync layer first, and the UI second, changes what the app can promise.
Read