Abrar Ahmed
All selected work

Mobile fintech

Cryptozilla: secure self-custody in a mobile interface

Client
Cryptozilla
My role
React Native and security engineer

I worked on a non-custodial wallet where device security, key management, and a fluid consumer interface had to coexist across more than 50 React Native screens.

Cryptozilla mobile wallet interface with portfolio and self-custody features.
50+mobile screens shipped
90%+seed backup completion
2production app stores

The system I joined

A self-custody wallet has no support-led recovery path for a compromised seed phrase. Security requirements therefore shape the product architecture, not just the authentication screen.

The application combined BIP-39 and BIP-44 key derivation, encrypted local storage, biometric access, certificate-pinned network calls, real-time prices, interactive portfolio charts, and an in-app token swap.

Where I contributed

I worked across the React Native application, secure key lifecycle, native platform behaviour, and the interaction problems created by screenshot protection.

The hardest part was not implementing each requirement independently. It was resolving cases where a security control changed the rendering or gesture behaviour of otherwise stable UI code.

Decision trail

Constraints became architecture.

Each decision below connects a concrete limitation to the engineering response and its practical effect.

  1. 01

    Constraint

    Applying Android FLAG_SECURE to the root window caused Reanimated chart gestures to stutter on Samsung and Xiaomi devices.

    Decision

    Move secure-window activation into a native module and enable it only on screens that display sensitive information.

    Impact

    Sensitive screens remain protected while animation-heavy portfolio views keep their expected interaction performance.

  2. 02

    Constraint

    iOS has no direct equivalent to Android's screenshot-blocking API, and the secure text overlay interfered with repeated chart gestures.

    Decision

    Prioritise protection on sensitive screens and replace the drag scrubber there with a simpler tap interaction.

    Impact

    The security boundary remains clear without pretending the platform can provide behaviour it does not support safely.

  3. 03

    Constraint

    A technically correct seed backup flow can still fail if people skip or misunderstand it.

    Decision

    Use a three-stage reveal, record, and ordered-word verification flow before unlocking the wallet.

    Impact

    More than 90% of users who started seed backup completed it.

  4. 04

    Constraint

    Private keys and seed material could not remain available in plaintext between sessions.

    Decision

    Use hardware-backed biometric access to unlock an AES-256 encrypted local keystore and derive individual keys only when needed.

    Impact

    Key material stays device-bound, encrypted at rest, and absent from remote infrastructure.

Outcome

What the work produced

  • Production releases for both iOS and Android.
  • Self-custody support for BTC, ETH, and ERC-20 assets.
  • Real-time portfolio updates, interactive performance views, and token-swap confirmation with slippage visibility.
  • A documented security and interaction model tested across OEM-specific Android behaviour.

Technology

React NativeTypeScriptBIP-39BIP-44bitcoinjs-libethers.jsRedux ToolkitReanimatedDetox

Cryptozilla reinforced a practical rule: a security control is not finished until it has been tested against the interactions people need to complete.

Abrar Ahmed