iOS Screen Navigation Engine at Revolut
Article Summary
Vincent Berihuete from Revolut reveals how they ditched traditional iOS navigation patterns for something far more powerful. Forget Coordinators—this is about building a custom navigation engine that eliminates code duplication across massive fintech flows.
Revolut's iOS team built a Flow Engine: a state machine-driven navigation system that abstracts screen flows and their dependencies. Instead of copying navigation logic across view controllers, they created reusable flows that handle complex user journeys (like product details with related items and cart actions) in a single, testable abstraction layer.
Key Takeaways
- Flow Engine uses state machine pattern to manage multi-step navigation flows
- Eliminates copy-paste navigation code with reusable FlowRunner one-liners
- Three-layer architecture: Flow (steps/state), FlowPerformer (execution), FlowRunner (magic maker)
- Dependencies and business actions abstracted away from view controllers entirely
- Enables easier TDD approach for complex navigation scenarios
Revolut's Flow Engine transforms iOS navigation from scattered view controller logic into centralized, testable flows that can be called with a single line of code from anywhere in the app.