Problem 1: 20-30 seconds of silent waiting creates perceived system failure.
Problem 2: Full authentication required for a low-risk information task.
The entry moment in a financial app sets the tone for trust. Silence during startup is interpreted as instability, not just slowness.
Users have different intents. Checking balance ≠ transferring money. Yet both require the same friction level. Aligning access with risk would reduce daily micro-friction.
Solution 1: Add mascot animation during loading to provide system feedback.
Solution 2: Create notification preview layer on login screen for low-risk balance checking.
The current app launch reveals two critical UX issues
Important Note:
This is a personal design exploration, not a formal proposal with statistically significant research. Production implementation would require formal user research and stakeholder validation.
Users describe the loading experience consistently:
Recurring frustration (not occasional complaint)
The issue appears across multiple reviews from different users at different times. This indicates a systemic problem, not an edge case or one-time glitch.
Competitive benchmarking (users know alternatives exist)
Users explicitly compare ACB to competitors. They've experienced faster banking apps from other providers. This benchmarking means ACB is perceived as slower relative to available alternatives — not just slow in absolute terms.
Pre-interaction friction (affects first impression)
Frustration occurs before login even begins. Users encounter the problem at the entry moment — before they've even authenticated or started any task. This shapes their perception of the entire app's competence and quality.
Users frequently open ACB One to quickly check balance — a low-complexity task that shouldn't require complex processes.
Violates Hick's Law (reduce steps for simple tasks)
Breaks user expectation from competitors
Increases unnecessary cognitive load
The 20-30 second startup time is unavoidable due to backend constraints. But silence during that wait makes users think the app is frozen. A mascot animation provides visible feedback — showing that the system is working, not broken. Users can tolerate longer waits as long as they know something is happening. The mascot was chosen over a generic progress bar because it reinforces brand familiarity (the "One" character already exists in the app) and feels more reassuring in a moment of uncertainty.
The 20-30 second startup time is unavoidable due to backend constraints. But silence during that wait makes users think the app is frozen. A mascot animation provides visible feedback — showing that the system is working, not broken. Users can tolerate longer waits as long as they know something is happening. The mascot was chosen over a generic progress bar because it reinforces brand familiarity (the "One" character already exists in the app) and feels more reassuring in a moment of uncertainty.
Users frequently open the app just to check if their balance changed — a simple, read-only task that doesn't require transferring money. Currently, every interaction demands full authentication (username → password → OTP), which is excessive friction for checking information. A preview layer lets users see what they need instantly, without waiting for full login. If they want to transact, full authentication is still required. This matches the security level to the actual risk — protecting high-risk actions while reducing friction for low-risk ones.
The login screen is redesigned to include a notification preview section. This section surfaces high-level information such as recent balance changes or transaction activity without showing detailed financial data. The preview is intentionally limited to maintain security integrity — it doesn't allow any actions or show sensitive information. Users can quickly see if something changed and then decide if they need to log in fully for more details. This respects user intent while keeping the system secure.
| User Research (Formal) | |
| ☐ | Quantitative usability testing (50+ users) via Maze or UserTesting |
| ☐ | Formal user interviews (15-20 users) about balance-check frequency and loading frustration |
| ☐ | A/B test: Current flow vs proposed solution (measure: task completion time, success rate, perceived friction score) |
| ☐ | NPS/satisfaction survey: before & after solution perception |
| Business & Stakeholder Alignment | |
| ☐ | Internal alignment with PM, security team, backend engineering |
| ☐ | Risk assessment: security implications of notification preview (PII exposure analysis) |
| ☐ | Impact projection: how solutions affect user engagement, retention, NPS |
| ☐ | Roadmap prioritization: does this fit current business priorities? |
| Technical Validation | |
| ☐ | Performance testing — animation FPS on low-end Android devices |
| ☐ | Network behavior testing — behavior during slow 3G connections |
| ☐ | Confirm animation doesn't delay login further |
| ☐ | Backend capacity analysis for notification preview data retrieval |
| Security & Compliance | |
| ☐ | PII audit — confirm preview doesn't expose sensitive data |
| ☐ | Banking regulation compliance check (Vietnam's financial app standards) |
| ☐ | Encryption verification for locally-stored preview data |
| ☐ | Session timeout behavior validation |
| Accessibility | |
| ☐ | Screen reader support for notification preview |
| ☐ | WCAG 2.1 AA color contrast validation |
| Design System & Handoff | |
| ☐ | Align with ACB design tokens and component library |
| ☐ | Create detailed component specifications for developers |
| ☐ | Document animation timing, easing curves, and all interaction states |
By treating a real user problem as a design exercise, I understood:
The best solution isn't always the most technically complex. Sometimes it's reframing the problem: instead of "how do we make it faster?" ask "how do we communicate it's working?" Both questions are valid. Good design recognizes which one you can realistically answer with available constraints.