# The fundamentals of iOS at Revolut

DevFeed: [The fundamentals of iOS at Revolut](<https://devfeed.tech/articles/the-fundamentals-of-ios-at-revolut-26349.md>)

Original publisher: [Read original article](<https://medium.com/revolut/the-fundamentals-of-ios-at-revolut-f75acb765ac8?source=rss----44c5ac415e14---4>)

Author: Illia Kucheriavyi

Published: 2024-05-14T11:41:25Z

Content type: tutorial

Language: en

Sources: [Revolut Engineering](<https://devfeed.tech/sources/revolut-engineering.md>)

Topics: [iOS](<https://devfeed.tech/topics/ios.md>), [iOS development](<https://devfeed.tech/topics/ios-development.md>), [feature flags](<https://devfeed.tech/topics/feature-flags.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [SDKs](<https://devfeed.tech/topics/sdks.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>), [experiments](<https://devfeed.tech/topics/experiments.md>), [Development](<https://devfeed.tech/topics/development.md>), [Agile](<https://devfeed.tech/topics/agile.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [releases](<https://devfeed.tech/topics/releases.md>)

Tags: [agile](<https://devfeed.tech/tags/agile.md>), [continuous-delivery](<https://devfeed.tech/tags/continuous-delivery.md>), [continuous-integration](<https://devfeed.tech/tags/continuous-integration.md>), [development](<https://devfeed.tech/tags/development.md>), [development-process](<https://devfeed.tech/tags/development-process.md>), [experiments](<https://devfeed.tech/tags/experiments.md>), [feature-flags](<https://devfeed.tech/tags/feature-flags.md>), [fundamentals](<https://devfeed.tech/tags/fundamentals.md>), [ios](<https://devfeed.tech/tags/ios.md>), [ios-development](<https://devfeed.tech/tags/ios-development.md>), [releases](<https://devfeed.tech/tags/releases.md>), [revolut](<https://devfeed.tech/tags/revolut.md>), [sdks](<https://devfeed.tech/tags/sdks.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>), [testing](<https://devfeed.tech/tags/testing.md>)

## AI overview

This article describes Revolut's iOS development practices, covering its applications and SDKs, weekly App Store updates, continuous integration and delivery, feature flags, gradual rollouts, rollback procedures, and experimentation with statistical measurement.

## Source excerpt

Let's take a look behind the scenes of the iOS development at Revolut, where we strive to provide exceptional financial services and seamless customer experiences for the customers who rely on our iOS apps to manage their financial lives. We believe that it's possible to deliver high-quality software, fast. To achieve this we follow a set of important principles and apply a number of modern agile practices, mainly inspired by XP (eXtreme Programming). Deliver fast Currently, on the iOS platform, we have both applications and SDKs. Here's a list of what's live: Revolut, Revolut <18, Revolut Business, Revolut POS and Revolut Pay SDK. All iOS applications are updated in the App Store on a weekly basis. We operate on the principles of continuous integration and continuous delivery to swiftly deliver new functionality to customers -- as soon as a feature or part of it is ready. We've built our own in-house framework for feature-based releases. According to our process, the Product Owner specifies a feature to be enabled starting from a selected version of the application. Then both the application version and its features are rolled out gradually, starting with a small percentage of our customer base. These two approaches -- feature flagging and gradual version and feature rollout -- enable delivering value to customers with the minimum amount of risk. If anything goes wrong, the flag will be turned off or the older version will be re-submitted as rollback, to remove the problematic change. Moreover, feature flags allow team members to easily switch between different user experiences, compare them, or turn them on and off for testing. We've also developed an in-house experimentation platform that allows teams to experiment with new features and measure their impact using predefined metrics in a statistically significant way. This platform guarantees that experiments are properly set up, and that results are produced using a robust statistical framework. All ideas are teste