Doubling engineering productivity through automation.
We strengthened CVS Health's mobile engineering foundation to help teams ship faster and safer, with greater confidence.
AI-era productivity starts with stronger engineering systems.
As more organizations look to AI to speed up software delivery, the fundamentals matter even more: clean architecture, reliable pipelines, automated quality checks, comprehensive tests, and code that teams can change with confidence.
CVS Health's mobile platform serves tens of millions of customers managing prescriptions, health records, clinic visits, and retail experiences. Behind that scale was a codebase carrying years of accumulated complexity: millions of lines of code, zero unit tests, a chronically broken build pipeline, and dependencies so tangled that one bug could hold up an entire month of features.
Livefront helped CVS strengthen the engineering system underneath the app: modern CI/CD, automated quality gates, better test coverage, reduced codebase complexity, and architecture patterns that made changes safer. The result was the kind of compounding productivity gain many companies now hope to get from AI: faster feedback, cleaner code, and more time for teams to focus on product work.
You can't go fast on a cracked foundation.
When we first assessed the platform, the symptoms were clear: frequent production hotfixes, long-running branches that became high-stakes integrations, and large monthly releases where one critical issue could block everything. There were no unit tests. No continuous integration worth the name. The average pull request sat open for nearly six weeks before merging.
Developers were isolated from the build system, unable to see how CI worked or contribute to keeping it healthy. Every merge carried risk. Every release felt like a controlled burn.
Livefront engineers are not just senior developers; most of them operate at Principal and Staff levels, significantly enhancing our mobile development efforts. Their expertise has been instrumental in establishing robust architecture and best practices across our codebase.
A team dedicated to the work that wasn't getting done.
Rather than a big-bang rewrite or feature freeze, Livefront embedded a dedicated foundation team working in parallel with CVS's feature engineers. We owned the infrastructure, tooling, and architectural work that feature teams rarely have bandwidth to address, so we didn't have to ask the business to stop shipping.
The guiding principle: make things measurably better for every engineer on the platform, not just the ones on our team.
From broken builds to reliable pipelines.
We migrated all repositories from GitLab to GitHub and replaced a fragile manual CI setup with automated CircleCI, complete with a merge queue, required PR checks, branch protection rules, and automated SAST security scans. Builds that were routinely broken became reliably green. New lint issues and test failures could no longer reach main.
We also automated QA and release build distribution, resolved tens of thousands of existing lint errors, eliminated dependencies on deprecated tooling that had been quietly blocking releases, and de-siloed the entire build process so engineers across CVS could understand CI and contribute to keeping it healthy.
The results were immediate. Commits to the main branch increased 662%. Average PR merge time dropped from 41.7 days to 2.97 days.
Fewer lines of code. More of what matters.
A large codebase is not a healthy codebase. We removed over a million lines of code across iOS and Android, eliminating duplication, dead code, and tangled dependencies that had been silently slowing every engineer on the platform.
Smaller, cleaner, better-organized code meant faster builds, faster reviews, and faster onboarding. Combined with the tooling improvements, build-time productivity doubled across the organization.
Modern architecture, shipped to production.
Tooling improvements create headroom; architecture improvements make that headroom permanent.
We introduced MVVM data flow using SwiftUI on iOS and Jetpack Compose on Android, built new networking layers with modern concurrency features, and implemented Dagger for fully testable dependency injection. A shared design system established consistent fonts, colors, and UI components at scale. Using CodeConnect in Figma, new screen creation became 4x faster for engineers across the team.
Breaking up the monolith.
One of the most consequential structural decisions was decomposing the monolithic iOS codebase into discrete local Swift packages with explicit boundaries between features and building a sample app framework that let developers work against any module in isolation.
The impact was immediate and compounding. Developers no longer had to build the full Xcode project just to work on a single feature. Sample apps for each module built and ran 10x faster than the full application. On Android, any feature team could stand up their own sample app module, slotting directly into the same pattern and collapsing feedback loops across the entire organization.
The sample apps not only sped things up, they changed what was possible. With full network mocking and scenario-based testing baked in, teams could exercise every critical business path and edge case in seconds rather than spinning up the full app and navigating to the right state. Testing became faster, more thorough, and no longer dependent on a running backend.
Nine major product initiatives shipped on the new foundation.
Critically, we didn't just create patterns, we led by example using those patterns to ship features. Nine complex features were built and deployed on the new architecture: Account & Authentication, Health Records (iOS), Enterprise Virtual Care, IMZ Check In, Next Gen Scheduling, Minute Clinic Core, Visit Manager 2.0, SuperApp Home Screen (Android), and Unified Navigation & Search. Component reuse paid dividends immediately: the Map View built for Next Gen Scheduling was reused directly in the Pharmacy Locator, saving weeks of duplicate work.
Test coverage: from zero to the standard.
When we started, the CVS codebase had zero unit tests. By the end of year one, iOS coverage crossed 10%. By the end of year two, it was approaching 50% — on a trajectory toward an 80% organizational target. Android followed the same curve. Both platforms went from untestable to among the best-covered repos in the CVS organization.
That coverage isn't just a metric. It's the reason engineers can change things with confidence, and the reason 50,000+ crashes were proactively avoided through careful implementation of AEM on the Super App Home Screen before they ever reached users.
300 hours per week, returned to the team.
Faster builds and tighter feedback loops compound quickly. By eliminating 615 runs of unnecessary CI testing jobs and shortening the iteration cycle across modules, we returned an estimated 300 hours per week to the CVS development organization. That's not time saved on one project... that's time reinvested, permanently, in every future feature.
Outcomes
Our contributions.
Development
- Web Services Development
- DevOps
- iOS Development
- Android Development
- Performance Engineering & Scalability
- Quality Assurance Testing