All work

Case 03of 08

Northbank A banking app that got smaller

A credit union with forty thousand members had a 2.1-star app and a support line clogged with people trying to freeze a lost card. We rebuilt it around one balance and one action, and cut more scope than we added.

iOS · AndroidiOSAndroidAccessibility2024
ClientNorthbank Credit Union
40,000 members
EngagementBuild + Partner
Duration1 week scope
14 weeks build
StackReact Native, Swift
modules, existing core
Outcome2.1 → 4.6 stars
northbankCard
£2,480.19Everyday account
Spent this month62%
Freeze card
Card lockedOne tap to undo
Activity
Greenhill Bakery−£4.20
Transit · weekly−£22.00
Salary+£2,140
Ellis Hardware−£61.85
Add to Apple Pay

Home and activity — card controls promoted to the first screenFig. 01

01 — Chapter

The problem

The old app was a port of a web portal, and it showed: eleven tabs, six of which were read-only statements. Freezing a card — the single most urgent thing a member ever does — was five taps deep, behind a menu called Services.

We read nine months of App Store reviews and 1,400 support tickets before proposing anything. Two complaints dominated, and between them accounted for 31% of all app-related calls: I cannot find my balance, and I cannot stop my card.

  • 2.1 stars across 1,900 reviews
  • Card freeze five taps deep, behind an ambiguous label
  • 31% of app-related support calls were about finding one of two things
  • Dynamic type broke the layout above the second size step
  • Median member age 54, and the app was designed as though it were 28

Before and after

Information architecture
northbank · v4 · 11 tabs
Services › Cards › Manage › …
Before · card freeze five taps deep
northbank · v5 · 3 tabs
Freeze card
After · one tap, from the first screen
1 tap

To freeze a card, from anywhere in the app. It was five, and it was the single most common reason members called the branch.

02 — Chapter

Cutting scope, twice

The brief asked for bill splitting, savings goals and a chat assistant. We said no to all three, twice, and put the effort into the two things members were actually failing to do. That is an uncomfortable conversation to have in week two of a fourteen-week build, and we had it again in week seven.

What replaced them: one balance in one place, card controls on the home screen, and wallet provisioning inline instead of a link to a help article. Bill splitting still has not shipped, two years on, and that continues to be the right call.

  • Eleven tabs reduced to three
  • Card freeze and unfreeze in one tap from the home screen
  • Apple Pay and Google Pay provisioning inline, not documented elsewhere
  • Three requested features cut, with the reasoning written down for the board
  • Statements kept, but moved out of the tab bar where they were dominating it

Freezing a card

Five taps became one
1Open the appBalance and card state are the first thing on the screen. No menu, no dashboard, no carousel of offers.0 taps
2FreezeOne control, on the card itself, labelled with the word members actually use. Confirms in place rather than on another screen.1 tap
3ConfirmedState is visible on the card and in the tab bar. Unfreezing is the same control, in the same place.0 taps
4Old flowServices › Cards › Manage › select card › Freeze — and a confirmation dialog nobody could find their way back from.
App Store rating by quarterRolling 90-day average, iOS Old appRebuild
2.1Q1
2.3Q2
1.9Q3
3.8Q4
4.4Q1
4.6Q2

Q4 is the launch quarter and includes two weeks of one-star reviews from members confused by the icon change — a communications failure of ours, described below. Android tracked within 0.2 stars throughout.

03 — Chapter

Accessibility as a gate

A credit union’s membership skews older than a challenger bank’s — median age 54. Accessibility was treated as a release gate rather than a final audit: no build shipped to TestFlight that failed dynamic type at the largest step, or VoiceOver on the four critical paths.

That discipline cost perhaps a day a week and is the reason the rating moved. Roughly a fifth of the positive reviews after launch mention text size directly, which is not something people usually bother to praise.

  • Dynamic type to the largest step on every screen, not just the main ones
  • VoiceOver paths scripted and tested each release, not spot-checked
  • Contrast, target size and motion preferences enforced in CI
  • Tested with eleven members over 65 before launch, twice
  • Two features held back a release for failing a gate

Dynamic type

The layout holds at every step
Freeze cardDefault
Freeze cardLarge
Freeze cardXXL · layout holds
AX5Largest dynamic type step supported on every screen, not only the main ones.
4 pathsVoiceOver journeys scripted and run each release: balance, freeze, pay, transfer.
11 membersAged 65 and over, tested with twice, before launch and before the second release.
CI gateContrast, target size and reduced-motion checks fail the build, not a report.
1 tapTo freeze a card from anywhere in the app. It was five.
0Features shipped that failed an accessibility gate. Two were held back a release.

Results

Each with its method
2.1 → 4.6App Store ratingAcross 2,400 reviews in the first six months
−54%App support callsMeasured against the same quarter the year before
71%Members migratedWithin 90 days, with no forced upgrade
3 → 0Features cutBill splitting, savings goals, chat assistant
They talked us out of half the roadmap and the app got better for it. I have never had an agency argue for less work.
Dominic FarrowChief executive, Northbank Credit Union

LogWeek by week

The build log

Fifteen weeks including discovery, then a standing two days a month since launch.

Week 0

Paid discovery. Nine months of reviews and 1,400 support tickets read and coded. The two dominant complaints established before any design work.

Weeks 1–2

Information architecture. Eleven tabs to three, on paper, tested with nine members in a branch waiting room. The scope conversation happened here.

Weeks 3–6

Home and card controls built against the existing core banking API, which constrained more than the design did. Accessibility gates added to CI in week four.

Weeks 7–9

Wallet provisioning, native Swift and Kotlin modules. The scope conversation happened again; the answer was the same and was written down for the board.

Weeks 10–11

Accessibility round two with eleven members over 65. Nineteen issues found, fourteen fixed immediately, two features held back a release.

Weeks 12–13

Phased migration, 5% then 20% then 50%, with a per-cohort rollback plan. No forced upgrade at any point.

Week 14

Public launch. Two weeks of confused reviews about the icon, which we should have prevented. Communications fixed in the following release.

Since

Partner retainer, two days a month. Currently building the savings release that was cut from the original scope, now that members have asked for it.

What shipped

Six deliverables
01iOS and Android appReact Native with native Swift modules for wallet and biometrics.
02Card controlsFreeze, unfreeze, travel notice and limits from the home screen.
03Wallet provisioningApple Pay and Google Pay inline, with the fallback path designed.
04Accessibility suiteDynamic type, VoiceOver scripts and contrast checks enforced in CI.
05MigrationPhased rollout with no forced upgrade and a rollback plan per cohort.
06Partner retainerTwo days a month since launch, currently on the savings release.
The part a portfolio leaves out

What we would do differently

We under-invested in the migration comms. The app was ready before the messaging was, and the first two weeks of reviews were dominated by people who did not know why the icon had changed — visible as the gap between Q4 and Q1 in the chart above. Launch communications are now part of the build, with copy drafted at the same time as the release notes.

Who did it

Credits
max

Product design, React Native, accessibility programme, migration plan. One person, fourteen weeks, then two days a month.

Collaborator

Native Swift and Kotlin modules for wallet provisioning and biometrics. Six weeks, introduced to the client before starting.

Northbank

Chief executive as sponsor, head of member services as decision-maker, and eleven members over 65 who tested twice and were paid for their time.

Two build slots openNext start: March

Tell us what you’re building and we’ll scope it

Two working daysA reply from the person who would do the work
One paid weekDiscovery, written scope, fixed price
Yours either wayThe scope document, whether or not you continue
Start a projectStart a project