Inspiration

The Spark Wallet project was inspired by the vision of bringing a mobile-first, user-friendly wallet to the StarkNet ecosystem. With the rising importance of account abstraction and smoother Web3 experiences, the team aimed to simplify how users interact with DeFi tools from their phones — combining security, usability, and performant design in a compact package.

What it does

Spark Wallet is a React Native mobile wallet built for StarkNet that lets users:

  • Create and use accounts leveraging StarkNet’s account abstraction

  • Manage multiple tokens (STRK, ETH, USDC, USDT) with real-time balances and USD valuations

  • Swap tokens via integration with an AutoSwapper SDK

  • Switch between networks seamlessly (mainnet, testnet)

  • Store keys securely (encrypted storage, biometric access)

  • Use a smooth, intuitive UI designed for mobile first

How we built it

The frontend is built in React Native (TypeScript), with screens and reusable components under app/

Blockchain interactions happen via StarkNet.js v7

Smart contracts use Cairo / OpenZeppelin components for account abstraction and multi-signature logic

Persistent storage and secrets use encrypted storage / React Native Keychain

The architecture is clean: services (wallet, swapping, network config) handle business logic; UI layers handle state and display

Network switching and RPC optimizations are baked in to enable fast, reliable interactions

The code is modular, with constants, hooks, and components separated for maintainability

Challenges we ran into

What we learned

  • Mobile wallet UX is as important as security — users expect fluid flows, so performance optimizations matter a lot

  • Error handling in blockchain apps is critical — users must see meaningful feedback when something goes wrong

  • The importance of modular architecture: isolating services (wallet, swapping, storage) helps with testing and future features

  • Network reliability and fallback logic cannot be ignored — RPCs will fail, networks change

  • The balance between abstraction and transparency: you must hide complexity from users, but also allow power features

Built With

Share this project:

Updates