Inside Avvio’s Mobile Architecture

Inside Avvio’s Mobile Architecture

As we build a global money app at Avvio, architecture stops being a tech decision — it becomes a trust decision. From day one, we knew this wouldn’t be a prototype. Real users. Real money. Real consequences. That clarity shaped how we built Avvio’s mobile app.The Starting Constraint We started with a simple rule:The app must scale in complexity without becoming fragile.Global users, multiple assets, payments, cards, savings — complexity compounds fast. We optimized for:Clarity Ownership Safe defaultsNot clever abstractions.Why React Native — With Clear Boundaries We chose React Native for shared product velocity and faster iteration. But we were deliberate about boundaries. Not everything belongs in JavaScript. Here’s where we draw the line:Biometric authentication and encryption? → Native Secure key storage and hardware security modules? → Native Transaction history, portfolio UI, onboarding flows? → React NativeReact Native is a powerful product layer — not the entire system.How We Structured the App We avoided screen-based sprawl and structured the app around domain-based modules:Auth Wallet Savings Cards ActivityEach module owns:Its UI Its state Its business logicAround this core:A core layer for security, storage, encryption, notifications A services layer for APIs and third-party integrations A shared layer for hooks, utilities, and UI primitivesModules communicate through explicit events, not shared mutable state. Cards can read from Wallet state — but never write to it directly. Ownership stays obvious. Coupling stays controlled.Consistency Is a Safety Feature We treated the design system as infrastructure — not polish. In a financial app, inconsistency:Increases cognitive load Introduces subtle bugs Erodes trustShared components and design tokens reduce edge cases and make correct UI the default. When a button looks the same everywhere, users build muscle memory. When colors follow a system, accessible contrast becomes automatic. Consistency isn’t aesthetic. It’s a safety feature.Shipping Faster in the AI Era One unexpected benefit of strong architecture: AI works better with it. Clear module boundaries, predictable patterns, and strong conventions mean:AI-generated code fits naturally into the system Reviews are faster because intent is obvious Fewer bugs slip in due to misplaced logic or leaky abstractionsInstead of prompting AI with: “Figure out where this should go.” We can say: “Add this yield calculation flow inside the Savings module, following the existing deposit pattern.” The AI knows where files live. Which hooks to use. How state flows. Structure turns AI from a code generator into a force multiplier.Performance, Security, and Safe Defaults Some principles we bake into the architecture itself: Fast startup is non-negotiable. We lazy-load modules and defer non-critical work. Users should see their balance in under 2 seconds — even on older devices. Sensitive data is isolated by default. Private keys, biometric data, and credentials never touch the JavaScript layer. If it requires encryption, it lives in native code with explicit, auditable boundaries. Expensive work must be explicit. Heavy operations like balance recalculations or transaction syncs run in background tasks with visible progress — no silent performance cliffs. The safest path should also be the easiest path — especially as the team grows.What We’d Do Again (and What We’d Revisit) What aged well:Domain-based modularization Explicit JavaScript vs native boundaries Treating the design system as infrastructureWhat we’d revisit:A few abstractions added too early that became harder to remove than to build around “Just in case” flexibility that reduced clarityArchitecture evolves with the product — and that’s healthy. The goal isn’t perfection. It’s making the next 100 decisions easier.Closing Thought Architecture isn’t about elegance. It’s about protecting user trust while enabling speed. In finance, every architectural decision eventually shows up in user confidence. We chose structure that scales. Boundaries that protect. Defaults that guide the team toward safe, fast decisions. Curious how other fintech teams are balancing AI velocity with security constraints — what patterns are you seeing work?