Revamping PickMe iOS App: From Objective-C to SwiftUI
Article Summary
PickMe rebuilt their entire iOS app from Objective-C to SwiftUI in just 6 months. Here's how a team that started with 1 developer scaled to 10 engineers and shipped a complete rewrite.
The Sri Lankan ride-hailing company needed to expand beyond rides into food delivery, logistics, and rentals. Their legacy Objective-C codebase couldn't scale, so they made the bold call to modernize everything while keeping the business running.
Key Takeaways
- Modular architecture: Each service (Rides, Food, Flash) now runs as independent module
- Centralized localization tool enables OTA string updates without app releases
- Xcode Cloud CI/CD with SonarQube cuts manual testing and speeds deployment
- SwiftUI migration reduced storyboard complexity and improved app load times
- Shared modules for maps, networking, and chat eliminate code duplication across teams
The new architecture enables parallel development across teams, cuts maintenance costs, and positions PickMe for rapid expansion into new services and markets.
About This Article
PickMe's Objective-C and UIKit codebase had circular dependencies between modules. The Storyboard-based views were resource-heavy and slow to load. This made it hard to manage multiple service verticals on their own.
Keshan Fernando's team moved shared utilities into a Core Module. They switched to Swift Package Manager for handling dependencies and used XCFrameworks to break the circular dependency cycles. This let different services own their own modules.
Teams can now develop their modules independently and in parallel. Features ship faster and the organization spends less time on refactoring work.