- Too transactional
- Hard to discover
- Support tickets for things the app already did
- Design dev gap
- No design system, slower to ship
- Design seen as decoration, not strategy
Redesigning the mobile banking app for 123k+ active users.
Libra serves individuals and business owners on the same app. I redesigned both sides end to end, while the engineering team rebuilt it in React Native. This case study focuses on the personal banking flows.
👤 Role
UX/UI Designer
🤝 Contribution
End-to-end product redesign
👥 Team
Scrum team
💻 Platform
React Native — iOS & Android
⏳ Timeline
2026 - ongoing
Marketing had analytics: time on page, completion time per flow. Useful, but it only told me what was happening, not why. I needed direct feedback, so I pulled from a few sources:
I ran all of it through AI to sort by root cause, spot patterns, and turn it into a clear, short list of actual problems.
The old home screen answered "how much do I have in total?". People were opening it to actually do something, and mostly from the same account.
"I have one account I actually use. I shouldn't have to select it every time I open the app."
Customer quoteThe old home screen tried to show everything at once: every account, every deposit, a grand total up top. Except 93% of users have four accounts or fewer, and almost nobody opens the app just to stare at a number. We were designing for 7% of users on the one screen literally everyone sees first.
Show one account at a time, put four actions above the fold, and make switching accounts one tap away. The account list didn't go anywhere: it just moved to where switching actually happens.
Constraint
Business customers really do juggle 3 to 4 accounts a day. Killing the list would've fixed the homepage for most people but broken it for them.
Decision
Keep one account in focus, move the switcher into a bottom sheet. Same one tap cost as before, but it's not competing for space on the main screen anymore.
Trade off
You can't glance at every balance at once anymore. A few customers mentioned missing that. I kept the change anyway: the total was mostly a vanity number for most users, and the switcher still shows every balance if you need it.
"Why isn't my card saved? Typing 16 digits every time I add money is exhausting."
Customer quoteEvery top up started from zero, even for someone using the exact same card for the tenth time that month. And when finance needed to add a fee, there was no natural place to put it in a flow that never talked about cost at all. Some people didn't even know what a CVV was.
Saved cards, so the common case is almost free of friction. A fee that explains itself: the "how to avoid this" message sits above the amount, so you see the way out before the cost. And a CVV icon and tooltip, so nobody has to guess.
"I had no idea I could add my card to Apple Wallet in the app."
Customer quoteThe old card screen had a real hierarchy problem. Basic stuff like Freeze card or See details was buried, while big features like Apple Wallet integration were almost invisible. If someone can't find a feature in a few seconds, it might as well not exist.
Four actions above the fold: Transfer, Show details, Freeze, More. Ordering a card is now just picking a colour and reviewing, everything else is prefilled and editable. And the virtual card works the moment it's issued.
My first version of card to card transfers kept the Face ID step and a confirmation screen, just like external transfers. In testing, people thought it was ridiculous: it's your own money moving between your own cards, and the confirmation screen was just repeating what was already on screen. I dropped both steps, but only for transfers between your own cards. External transfers still keep every step.
"Every payment starts from zero. Even the ones I make every single week."
Customer quoteThe app did nothing to make repeat payments easier. It never suggested people you'd paid before, so every transfer started from scratch. On top of that, the domestic payment screen asked for everything at once, who you're paying, how much, from which account, all on a single page. It made for a long screen that took more effort to process than it should have.
Frequent payments got their own row at the top. New payments still use the full form, split into separate screens for who, how much, and which account, with validation at the field instead of at the end. Sending and receiving also split into their own screens.
Research showed people split into two camps: some want to pick the recipient first to avoid mistakes, others want to type the amount first because that's the number already in their head. Both make sense, this is still an open question I'm testing.
When I joined Libra there was no Figma and no design system. Screens went to developers as HTML&CSS files.
The developers loved it: not because it looked nice, but because for the first time they could read a component file that felt like it was written for them. No more measuring screenshots. The rest of the bank loved it too: suddenly everyone could see what was being built, share screens with clients, and actually point at something when they needed to convince someone.
If there's one thing this project confirmed, again and again, it's that banking language and human language are not the same thing, and the gap between them is where people get lost. Regulations exist for good reasons. But a rule that has to be followed doesn't have to be written the way a bank talks to itself internally. It can be written the way you'd explain it to someone at a kitchen table.
Every screen in this redesign was, in some way, a small argument for that idea: that clarity isn't the opposite of rigor, it's what rigor looks like when it actually reaches the person it was meant for. The bank didn't lose anything by being direct. If anything, every time we removed a confusing word or a hidden step, trust went up, not down.