The Challenge
Penny’s retirement savings app had years of Cordova/Ionic debt that slowed releases, limited native performance, and made mobile-specific features painful to ship. The business needed a modern, maintainable stack without expanding headcount or pausing roadmap delivery.
The Approach
- Picked Flutter + FlutterFlow: Selected a visual-first workflow to accelerate delivery while keeping escape hatches for complex native needs.
- Kept the same team: Built a structured onboarding plan (pairing, code walkthroughs, linting/templates) so existing engineers could contribute immediately instead of hiring a separate mobile team.
- Production-first increments: Ran the migration feature-by-feature to keep releases flowing and reduce risk of a big-bang rewrite.
Technical Execution
- Architecture: Established a Flutter module structure with clean separation of presentation, state, and services. Created shared UI kits and theming to mirror Penny’s brand quickly.
- FlutterFlow to code: Used FlutterFlow for layout speed, then hand-tuned generated code where performance or accessibility required it. Documented the dev loop so the team could repeat it without me.
- Custom integrations: Implemented native plugins and bindings for Intercom, analytics, deep links, and secure storage, filling the gaps FlutterFlow couldn’t cover out of the box.
- Testing and delivery: Added widget tests around critical flows and stood up CI builds for iOS/Android so the team could ship confidently from day one.
Team Enablement
- Ran daily pairing sessions for the first two sprints to transfer patterns.
- Delivered concise SOPs: branching model, code review checklists, and a “when to drop to code” guide for FlutterFlow.
- Set up guardrails (analyzer rules, formatting, reusable components) to keep quality high as new contributors joined the codebase.
Outcomes
- Full migration without new headcount: The existing team shipped the Flutter app while continuing feature work.
- Faster release cadence: Build times, QA cycles, and store submissions stabilized; hotfixes moved from days to hours.
- Better UX surface area: Native-feeling interactions and offline resilience that weren’t feasible in the Cordova app.
Penny now has a Flutter codebase their own team can evolve—no agency dependency, no legacy drag, and a clear path for the next set of features.