The company has the greatest number of users in all Western Europe. As of 2019, it had 12 million paying subscribers, which is 28% of the pay TV market.

    Project idea

    Update an existing app

    The Client had already had a mobile app. With its help the  subscribers could manage services, pay bills, and track the status of their devices connected to the network.

    By the time we started working on a new app, the old one had already been 6 years old. The users kept complaining about usability issues and the unstable app, asking to get an update. All in all, the app was obsolete: both the UI and the code.

    What we had to do was:

    • Update the design, creating a nice and user-friendly app that would get good ratings in stores.
    • Add new features: namely, merge several user accounts belonging to the same subscribers and make it possible for them to transfer funds between the accounts.
    • Boost sales for extra services.


    Concept design

    At the presale stage, we went over the reviews posted about the previous version of the app: we did that to figure out what the users don’t like and what they actually want from the app.

    With that in mind we put together a concept reflecting our vision and put it forward to the Client.

    The concept we suggested hit the spot right away: the Client was absolutely thrilled.

    With only minor tweaks, the concept became the basis of the app UI.

    CJM — Customer Journey Map

    At the starting stage of some projects we carry out a two-week CJM workshop together with a Client’s team and create a Customer Journey Map that covers the whole journey from creating a demand to meeting it.

    These workshops are guided brainstorming sessions with designers and product experts on our side and representatives from all relevant departments on the Client’s side.

    The added value of these workshops for the Client lies in team integration. All members interact as equals, generating a free flow of ideas. This is the day when we can all pay attention to what each party is saying and consider the needs of an end user.

    Thanks to the CJM session, the Client received a roadmap covering several subsequent versions of the app. The people in charge of this are Surf Product Lab — our consulting unit.

    UX/UI design

    The UX design we created was based on the CJM we built together. The UI concept was a complete copy of the one we showed in the pre-sales presentation: what we did is simply scale it up to cover the complete app. That’s how we came up with the final design.

    Our interface was UX testing. At Surf, we usually do it ourselves, but the Client preferred that the tests be done by a third party: they already had a contractor that performed UX tests for their another project.

    Successful UX testing

    12 people from two cities took part in the UX-testing. The moderator gave respondents some tasks — pass user authentication, top up the balance, enable autopay, etc. — and watched them doing it.

    The participants gave pretty high marks to the app, saying they liked both the design and the features. They described our product as a good app with a nice interface and just a few minor weaknesses.

    The actual users of the app did great on the tasks, but for the less experienced participants — the ones who hadn’t worked with the previous app version — it was harder to figure out how some of the features worked.

    It was really great to get feedback from fellow experts! Based on the UX test results we put some finishing touches to the UI, such as making the catalogue items larger, adding plan icons, and putting emphasis on specific characteristics of the services.

    Native apps built for Android and iOS

    The native apps we created for the Client are written in Swift for iOS and in Kotlin for Android. The apps are built using the standard architecture – SurfMVP for iOS, MVI and MVP for Android. This is what we use in all of our projects.

    Using a standard architecture helps us engage new developers in any projects seamlessly: they already know how it all works and waste no time adapting to the processes. Whenever they want to, clients can transfer their projects in-house. Our approaches are well-documented making it easy for the third party developers to hit the ground running in no time.

    Thorough testing

    The app involves numerous cases and complex logic, that’s why the full testing procedure takes 3 days. All in all, we’ve written 1149 test cases, which is quite a lot, covering every single tiny detail.

    The key functionality is checked via smoke autotests: a set of 95 test cases is checked every night.

    The long-awaited features implemented

    First off, we fixed one of the key customer pain points that was frequently mentioned in reviews. A Client can have a receiver at their own place in addition to the one installed at, say, their mom’s or dad’s. In order to pay their parents’ bills, they had to log out and then log into a different account.

    We made it possible for several receivers to ‘live’ under the same user account: users can now manage their subscriptions, top up their accounts, and transfer funds from one receiver to another.

    Continuous improvement

    After the app was released, it continues to be developed according to the roadmap we drew as a result of the CJM workshop.

    Here’s what we added:

    • Deep linking — transferring users directly from third-party sources and into a specific screen of an app or a specific web page. This feature is supported by almost any screen.
    • Dark theme.


    Modern UI powered by on-trend technologies

    • We laid the groundwork that can be further developed and improved for years to come — nothing can stop our Client from doing so.
    • The Client now has a roadmap that should keep the company covered for several subsequent versions of the app.
    • The users keep thanking us for the new app giving the app high ratings in the stores.
    Contact us
    Let’s discuss your project together
    CEO photo white

    Vladi Makeew

    CEO of Surf
    Drop a file here or click to upload
      Hidden span