Case Study · WS Audiology · 2023 to 2025

Bluetooth pairing flow

UX designer · iOS & Android · Bluetooth pairing, end to end

The Bluetooth pairing flow for medical-grade hearing aids, on iOS and Android. I designed the full decision tree end to end, including six error states and an accessibility pass with a blind participant. Connection drove more than half of all support calls, and the flow’s silence when something failed was the real problem.

Interaction Design Error State Design Hardware-Software UX Accessibility
Activate pairing mode
Activate pairing mode

Bluetooth pairing is the first real interaction a hearing aid user has with the app. It’s also where the most drop-offs happen. I designed the full decision-tree flow end-to-end: from welcome screen through device discovery, pairing, and error recovery, across iOS and Android.

WS Audiology is one of the largest hearing-aid manufacturers globally. Pairing is the gate to every other interaction in the companion apps that ship with these devices. Failures here turn into support calls and abandoned setups.

4
Design iterations
6
Error states designed

First experience with high failure rate

Bluetooth pairing for medical-grade hearing aids is not the same as pairing a speaker. Hearing aids have their own connection protocols and physical interaction patterns. Most users have low technology literacy and no prior experience pairing a Bluetooth device.

Support data confirmed it: connection drove more than half of all support calls, the single biggest driver, and the highest abandonment point in the onboarding funnel.

We couldn’t change the hardware. Hearing aids would disappear from the Bluetooth scan without warning or report partial connections. The design had to account for every hardware state the firmware team told us was possible.

UX designer

Owned the design across all four iterations, working closely with product, engineering, and the audiological team.

What I owned

  • Flow architecture
  • Screen design (iOS and Android)
  • Interaction specs
  • Component annotations
  • Engineering handoff
  • Accessibility QA

Who I worked with

  • Product and engineering teams
  • Other designers (accessibility review and user testing)
  • Audiological team (hardware behaviour and decision logic)
  • Firmware engineers (error state mapping)

Same flow, completely different contexts

The same flow serves two completely different contexts:

HAW
Hearing Aid Wearer
Context
At home, alone. Usually re-pair setup after receiving hearing aids from the clinic and a problem happened with the app and/or hardware.
Mental model
Low familiarity with Bluetooth and app-based setup. Often assumes the audiologist should have done this step.
Primary need
Reassurance at every step. Clear physical instructions. No dead ends. Recovery that doesn’t require starting over.
Failure mode
Gives up and calls support, or the clinic, when the flow stops responding or shows no error context.
HCP
Hearing Care Professional
Context
In clinic, during a fitting appointment. Pairing on the patient’s phone, with the patient watching.
Mental model
High technical familiarity. Knows what Bluetooth pairing is doing under the hood. Needs the UI to confirm, not explain.
Primary need
Speed and reliability. Clear error feedback so they can diagnose and recover without dropping to workarounds.
Failure mode
Develops undocumented workarounds (force-quitting, manual BT toggles) that work inconsistently and can’t be taught to patients.

What the research showed

We started with support data, then ran research sessions to understand why connection failed so often. The sessions showed the flow itself was sound. The gap was what happened when the hardware did not cooperate.

Findings

  • HAWs had no mental model for re-pairing. First-time setup was handled at the clinic, but when the app crashed and they needed to pair again at home, there was no guidance and no recovery path.
  • Every HCP participant had developed their own workaround: force-quitting the app, toggling Bluetooth manually, repeating the flow from scratch. None of these were supported by the design.
  • When an error occurred, users couldn’t tell whether the problem was the app, the hearing aids, or their phone. No state-specific feedback meant no actionable next step.

The flow wasn’t confusing. It was silent when things went wrong. A linear flow with no branching assumed perfect hardware conditions that real-world Bluetooth never guarantees.

A decision tree, not a linear flow

Connection flow decision tree: full flow map showing branching paths for HAW and HCP user types across iOS and Android

Full connection flow decision tree · Wireframes · Figma · Connection Workflow

A linear pairing flow only works when everything goes right. I structured the flow as a decision tree. At each node the app checks a condition and routes to the next step, so users never hit a dead end.

Two user types, one flow

The flow serves both HAWs and HCPs through the same screens. The design had to be clear and reassuring enough for someone who has never paired a Bluetooth device, while staying concise enough for someone doing it ten times a week.

Design decisions

  • Permission context before the OS prompt: A brief explanation before the system dialog reduced refusals and gave less technical users a reason to tap Allow.
  • Visible scanning state: A loading indicator confirmed the phone was actively searching. Silence from the app reads as failure.
  • Help that stays out of the way: 'Need more help?' opened an inline drawer without leaving the flow.

Hearing aid restart

Users had to manually restart their hearing aids before pairing by opening and closing the battery door, or placing the devices in the charging case for several seconds. Explaining a physical action in a UI required a restarting animation, not just text.

The flows couldn’t be identical. The permission model on Android required a denial-count state that iOS didn’t need, and the pairing dialog varies by device manufacturer on Android in a way iOS doesn’t. We maintained separate Figma pages for iOS and Android from iteration 1.

Welcome Screen
1 of 10
Welcome Screen
T&C acceptance required before any data is processed, a legal requirement built into the entry point, not retrofitted later.

Six error states

Each error state was mapped with firmware and product: what triggers it, what the app can detect, and what the user needs to do next. The rule throughout: every failure state defines a specific next step.

Bluetooth permission denied
Permission failure · Blocking
Trigger
User taps Don’t Allow on the system Bluetooth permission dialog.
State
App cannot scan: No pairing is possible without this permission.
Recovery
iOS routes to Settings > Privacy & Security > Bluetooth. Android allows up to three attempts before the dialog is suppressed; after that, the user must go to App Info > Permissions manually.
No hearing aids found
Discovery failure · High impact
Trigger
Scan returns no devices. Aids are off, uncharged, or outside the 3-minute pairing window.
State
Empty scan results: The scan ran; there was nothing to find.
Recovery
Inline help drawer with restart instructions. User stays on the scan screen and retries.
Only one hearing aid found
Partial scan · Blocking
Trigger
Scan returns one device from an expected binaural pair.
State
One side missing: The user cannot proceed until both aids appear.
Recovery
Inline error on the device card. User must restart the hearing aids and wait. There is no option to continue with one aid.
Pairing dialog rejected
Pairing failure · Platform-dependent
Trigger
User taps Don’t Allow or Cancel on the system Bluetooth pairing request.
State
Pairing not completed: The hearing aid did not pair.
Recovery
iOS: close and reopen the app, full setup required again. Android: retries up to three times, then shows a persistent error with a prompt to contact their hearing care professional.
Bluetooth turned off mid-flow
Mid-flow interruption · High impact
Trigger
BT is disabled by the user or OS during scanning or pairing.
State
Connection interrupted: Any in-progress state is lost.
Recovery
Inline error with a prompt to turn Bluetooth back on. iOS routes to Settings; Android surfaces a direct system-level toggle.
Bluetooth access revoked mid-flow
Mid-flow interruption · Blocking
Trigger
App’s Bluetooth permission is revoked from Settings while the flow is active.
State
Access lost: Scanning and pairing stop immediately.
Recovery
Inline error prompting the user to restore access via Settings > Privacy & Security > Bluetooth (iOS) or App Info > Permissions (Android).

What the previous app taught us

Before designing the new flow, we ran a structured accessibility evaluation of the existing app with a real blind hearing aid user. The participant had been completely blind for 20 years, relied entirely on VoiceOver, and had stopped using the manufacturer app because it wasn’t accessible.

What we found

  • Focus order was unpredictable: after completing a task, VoiceOver would jump to an unexpected element instead of starting from the top or the last confirmed step. The participant had to re-explore every new screen to reorient.
  • Icons and images had no meaningful accessibility labels. A menu icon would be read as "burger", decorative images were announced as raw filenames, and interactive elements had no context for what they did.
  • The participant was navigating entirely from memory and prior experience, not from what the design communicated.

What changed

  • Focus order was annotated explicitly for every screen in Figma.
  • I labeled every icon, image, and interactive element, and marked decorative ones to be ignored by screen readers.
"I know the app doesn’t work properly for me. But I’ve learned my way around it."

Participant · Blind hearing aid wearer

VoiceOver and TalkBack with real devices

After engineering shipped the new flow, we ran an internal QA pass using VoiceOver on iOS and TalkBack on Android, with actual hearing aids paired. Running a screen reader while managing a live pairing exposed issues design review had missed.

What we found

  • Focus order in the scanning screen put the Cancel action before the status message, meaning VoiceOver users heard an actionable prompt before they understood what the app was doing.
  • The animation playing while scanning had no accessible equivalent. Progress during pairing was communicated visually via a ring animation with no live region update.
  • The restart-hearing-aids screen had its instructional text split across multiple elements that VoiceOver read in the wrong logical order. A user relying on the screen reader received fragmented instructions.

What changed

  • I added ARIA live regions to the scanning and pairing states, so screen reader users hear status changes without navigating to them.
  • I gave every animated state a static text equivalent and restructured the restart screen so VoiceOver reads the instruction as one unit.

Built in four iterations

Four iterations. Each added specificity: more error coverage, better platform handling, tighter accessibility.

Dev Handover Wireframes
Happy path plus initial error structure
First iOS and Android wireframes covering the full connection happy path: welcome, BT check, permissions, restart instruction, discovery, pairing, preparing, and success. I sketched four error states here but hadn’t resolved them yet. Handed the wireframes to engineering as dev-handover specs.
Happy pathiOS + AndroidDev handover
Sprint Improvements
Error coverage extended, back navigation added
Engineering QA surfaced additional edge cases not covered in Iteration 1. Extended error coverage to all six states. Added the Android back-gesture confirmation modal. Refined the restart instruction screen based on early internal testing; the battery door action wasn’t clear enough from text alone.
All 6 error statesAndroid back gestureRestart screen rework
Accessibility Improvements
Full rework after VoiceOver and TalkBack findings
Following the real-device accessibility testing session, I restructured focus order across every screen, specified ARIA live regions for all dynamic states, and annotated the scanning and pairing animations with static text. Read order for the restart instruction screen was completely rebuilt. Annotations adopted as team standard.
Focus order reworkLive regionsVoiceOver + TalkBackWCAG AA
EAA & Regulatory Compliance
Regulatory requirements, late in the project
EU Accessibility Act and medical device compliance requirements arrived late. The consent and disclosure language added at the connection entry point grew into a separate design effort, covered in the Privacy & Consent case.
EAA complianceMedical device regulationConsent language

What shipped

  • Decision-tree flow shipped for iOS and Android: Covering HAW and HCP with platform-specific adaptations for permissions, back navigation, and pairing.
  • Six error states, six recovery paths: No user path ends in a dead end. Every failure mode has a defined next step and a route back into the flow.
  • Accessibility validated on real devices: Focus order, live regions, and screen reader read-order across all screens, run with real hearing aid users and real hearing aids.
  • Annotation system adopted team-wide: The VoiceOver and TalkBack approach established here became the WSA design team standard for accessibility handoff across all features.

Real-device accessibility testing (VoiceOver on iOS, TalkBack on Android, both with paired hearing aids) surfaced focus-order and live-region gaps that screen review had missed. The fixes shipped in iteration 3 and the annotation approach became the team’s standard for accessibility handoff. The app has not yet been released, so post-launch engagement data is not available.

The one thing I’d do differently

The accessibility evaluation happened in Iteration 3, after the core flow structure and error states were already built. The rework was significant enough to push the release date. One session with a screenreader user against early wireframes would have surfaced the focus order problems before they were baked into every screen. Accessibility changes what gets built from the start. Treating it as a final review step costs rework.