Building Freetrade

The changes you don’t always see

Mateusz Mazur

September 28, 2021

Mateusz Mazur

Do you recognise this feeling? You see an app is available for an update and once you’ve updated it you spend the next 20 minutes playing spot the difference. 

Sometimes these changes are obvious, such as a new design or colour scheme, while others are hidden improvements under the bonnet, like more robust logging or simplified DB queries.

In this article, I'm going to talk about all of the changes involved in redesigning and rebuilding the onboarding experience for new clients. 

Books, covers and apps 

People say you shouldn't judge a book by its cover. While that might be true for people and books, when it comes to apps the first impression is often the last one. 

We want to give our clients a great (the best) experience from the moment they open the Freetrade app. This time, that meant giving the new client onboarding screens an overhaul. 

There were a few reasons why: 

  1. To scale the onboarding process and allow us to launch in different countries, with different subscription plans and products
  2. To make our product offering clearer 
  3. To provide clearer information on pricing

The first part of the user journey remains the same: sign up and add your personal details. 

What happens afterwards? Well, that’s where we made a few changes. 


(1) Nationality screen (2) Original account selection screen (3) Creation screen

You might recognise the image in the middle, this was our first account selection screen. On this screen you could choose between a:

  • Basic Account (also known as General Investment Account or GIA): no monthly fee but investment gains subject to capital gains tax (CGT) and dividends subject to income tax. 
  • Stocks and shares ISA: £3 monthly subscription fee but investment gains treated tax efficiently.  

After selecting an account, you were presented with a creation screen (the third image) and that would take you through to your newly created account.

While this setup had served us well so far, we weren’t highlighting all of the accounts we had to offer clients. For one, we were missing the popular Freetrade Plus account, which offers clients more trading flexibility and a wider selection of investments.     


(1) Creation screen (2) Membership selection (3) Additional accounts (4) Card details (5) Summary screen 

We have shuffled things around a bit. 

After you choose your nationality, you’ll be shown the creation screen (same as above). At this point, all your data will be saved before you choose your account as we have all the information we need to create a basic client account.

The important innovation here is that at this point if you were to exit the app, you wouldn’t need to go through the whole onboarding process again. Once your basic account is created, you’ll head straight to the new membership selection screen.

Here you can choose between a standard membership and a Plus membership. On the next screen, you have the option to choose extras - we call it the “additional accounts” screen. 

For now, this includes an ISA, but importantly the door is open for more product choices in the future. The extras are completely optional and you can skip or upgrade later if you prefer.

Should you choose a paid product, we will then also ask you for your card details. Finally, the account summary screen summarises all that the client has selected. 

Challenges and lessons learnt

For us, working on the new onboarding journey has been quite a, well, journey. So for anyone interested or perhaps embarking on their own onboarding journey, here are my six key takeaways:

Know your tech debt

As with any new system, giving clients the ability to sign up is likely to be the first feature implemented. 

Freetrade first launched on iOS, which meant we had to work with the oldest code in our codebase. The original onboarding journey had been implemented using Storyboards, this was particularly tricky to work with, so migrating to new, code-driven components was a must. 

Work on one platform at a time

Freetrade hires in a language-agnostic way, which I think is a great approach. But it presents a mighty challenge on arrival. 

For backend engineers (like myself), there may be a steep learning curve when learning mobile development for the first time, especially as we use RxSwift and RxKotlin heavily. 

The good news is that Freetrade has some truly talented people among its ranks and they are able to guide and coach as you climb the mobile development mountain. 

As we neared the Mount iOS summit, we could apply what we’d learnt to Mount Android. Going platform by platform worked really well.


How do we know when things aren't working the way they should be? Well, we are always listening and metrics are just another source of feedback. 

By monitoring different client journeys and keeping an eye out for journeys and tasks not going the way we’d expect, we’re able to detect when things aren’t working as well as they should be. 

In the case of onboarding, by measuring the time it takes for users to onboard we are able to detect what’s working and whether we have introduced a blocker relatively quickly.

Make sure you're testing it right

Data caching on the device is something else to be mindful of, often it would prevent us seeing the changes we’d made. It’s a good idea to reinstall the app between test runs to have a clean state, that way you will always be testing it as a new client would experience. 

There is such a thing as "too many feature flags"

Feature flags have been a bit of a nemesis. 

We avoid having long-lived branches by iteratively adding new features behind a feature flag. But the more flags there are in the codebase, the more difficult it becomes to test all the scenarios, track the flags values and work out which flags need to be turned on, and in what order. 

You can read more about feature flags and our approach here.

Don't forget dark mode

When redesigning anything a client might see and in particular the first few screens, UX/UI plays a big part in the mission.  

Dark mode has been around for a while on both iOS and Android but it’s still easy to overlook testing any changes in dark mode. That’s especially true if you have never used dark mode yourself. I’m now a dark mode advocate. Every day’s a school day, right? 

The curtain call 

So there we have it, six tips for when you are redesigning your client onboarding process.

Hopefully I’ve done a good job at showcasing the journey and ultimately the beneficial changes we have made for clients. 

Where you come in

We're always on the lookout for engineers to help build our platform and mobile apps. ‍

If you want to help build a world where everyone is investing, come join the fun at

The views expressed above are those of community members and do not reflect the views of Freetrade. It is not investment advice and we always encourage you to do your own research.

Simple pricing plans

Choose how you'd like to pay:


Save 17%



Save 17%




GIA pink
General investment account


  • Commission-free trades (other charges may apply. See full pricing table.)
  • Trade USD & EUR stocks at the exchange rate + a 0.99% FX fee
  • Fractional US Shares
  • Access to more than 4,700 stocks, including the most popular shares and ETFs
  • 1% AER on up to £1,000 uninvested cash

£59.88 billed annually


Billed monthly


GIA white
General investment account
Stocks and shares ISA

Everything in Basic, plus:

  • Full range of over 6,000 US, UK and EU stocks and ETFs
  • Trade USD & EUR stocks at the exchange rate + a 0.59% FX fee
  • Automated order types, including recurring orders
  • Advanced stock fundamentals
  • 3% AER on up to £2,000 uninvested cash

£119.88 billed annually


Billed monthly


GIA white
General investment account
Stocks and shares ISA
SIPP white
Self-invested personal pension (SIPP)

Everything in Standard, plus:

  • Trade USD & EUR stocks at the exchange rate + a 0.39% FX fee
  • Priority customer service
  • Freetrade Web beta
  • 5% AER on up to £3,000 uninvested cash

Download the app to start investing now

When you invest your capital is at risk.