Mist2 is your minimalist mobile Ethereum app gateway. It focuses on apps, wallet connectivity, accessibility, privacy and security. This wallet is for:
- power users and OGs who want to access and manage multiple hardware wallets on mobile
- new users who want to get a safe introduction to apps and avoid scams
- mobile first users who value flexibility and open software
- There are few mobile wallets with hardware wallet support for using Ethereum apps.
- WalletConnect browser redirects are buggy and add an extra step.
- Use any type of smart wallet signer (hardware wallets, WalletConnect wallets).
- Easily access popular Apps.
- WalletConnect can become unavailable for any reason (bridge network not available, app bug, wallet bug...).
- Wallet browsers are never as good as real browsers but those don't have wallet functionality (except Brave).
- Brave doesn't support hardware and smart wallets.
Mist2 focuses on flexible wallet connectivity, everything else like viewing a portfolio and token prices can be done with APPs.
- Hardware wallet support on the go
- Manage multiple wallets: for privacy it is recommended to use many different addresses and to avoid linking them on-chain
- Drag and drop to organise your wallets
- Get APP recommendations, add any APP url
- Privacy-focused: No tracking or data collection, this is a tool not a product
- Open source
If you enjoy frame.sh Mist2 should feel familiar.
- Missing hardware wallets (Ledger, Lattice1...)
- Links to hardware wallet product websites.
- Hito eip712 support to use with Safe Apps.
- Switch chain from wallet
- Configure chains in settings
- Explorer links to view transaction history
- Add APP to cancel or speed up transaction
- Transaction simulation
- Edit transaction request fields (nonce, value, data, to)
- Copy transaction request fields (nonce, value, data, to)
- Explorer links to transaction request addresses (to, parsed data address arguments)
Mist2 is a self-custody wallet. You are responsible for securing your private keys and recovery phrases. We do not store your keys, collect your data, or have the ability to recover funds. Always review transactions and messages before signing them. This started out as an experiment to use Claud 3.7 and it became this app. AI wrote 98% of the code, particularly the UI components. But using libraries like viem and interacting with hardware wallets required a lot of human fixes and review of the critical logic.
This is an Expo project created with create-expo-app.
-
Install dependencies
npm install
-
Start the app
npx expo start
In the output, you'll find options to open the app in a
- development build
- Android emulator
- iOS simulator
- Expo Go, a limited sandbox for trying out app development with Expo
You can start developing by editing the files inside the app directory. This project uses file-based routing.
To run the app in iOS Simulator:
-
Make sure you have Xcode installed
xcode-select --install
-
Install CocoaPods if you haven't already
sudo gem install cocoapods
-
Install dependencies and pods
npm install cd ios && pod install && cd ..
-
Start the app in iOS Simulator
npm run ios
Note: Some features like NFC and camera will not be available in the simulator.
To run the app on a physical iPhone:
-
Open the project in Xcode
cd ios open mist2.xcworkspace -
Connect your iPhone to your Mac using a USB cable
-
In Xcode:
- Select your device from the device dropdown in the top toolbar
- Ensure your Apple ID is set up in Xcode → Preferences → Accounts
- Select the appropriate Team in the "Signing & Capabilities" tab
- Click the Play button to build and run on your device
Note: The first time you run on a physical device, you'll need to trust the developer certificate on your iPhone (Settings → General → Device Management).
To run the app in Android Simulator:
-
Install Android Studio from developer.android.com
-
Open Android Studio and set up an Android Virtual Device (AVD):
- Click on "More Actions" → "Virtual Device Manager"
- Click "Create Device" and follow the instructions to create a device with Google Play Services
-
Start the Android emulator from the AVD Manager
-
Run the app on the emulator
npm run android
Note: Some features like NFC and camera will not be available in the simulator.
To develop this app on a physical Android device connected to macOS:
-
Install Java Development Kit (JDK)
brew install openjdk@17
-
Create a system-wide symlink to Java (requires admin privileges)
sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk
-
Verify Java installation
java -version
-
Enable Developer Options on Android device
- Go to Settings > About phone
- Tap on Build number 7 times
- Enable USB debugging in the new Developer options menu
-
Connect Android device and verify connection
adb devices
-
Start the development server
npx expo start --dev-client
-
Build and install on connected device
npx expo run:android --device
After the initial setup, for daily development you only need to:
- Connect your device via USB
- Run
npx expo start --dev-client - Launch the installed app on your device
To run the app as a production build on your Android phone:
-
Create local.properties file (if not already present)
echo "sdk.dir=$HOME/Library/Android/sdk" > android/local.properties
-
Build a release APK
cd android && ./gradlew assembleRelease
-
Make sure ADB is in your PATH
# For one-time use export PATH=$PATH:$HOME/Library/Android/sdk/platform-tools/ # Or add permanently to your shell profile echo 'export PATH=$PATH:$HOME/Library/Android/sdk/platform-tools/' >> ~/.zshrc source ~/.zshrc
-
Install the release build on your connected device
adb install android/app/build/outputs/apk/release/app-release.apk
Alternatively, you can build and install in one step:
cd android && ./gradlew installRelease
Note: Production builds disable development features like hot reloading and developer menus, providing a more realistic end-user experience.
If you encounter issues building for iOS:
-
Clean the project:
cd ios rm -rf build pod install cd ..
-
Reset Metro cache:
npm start -- --reset-cache
-
If you have pod dependency conflicts, try:
cd ios pod deintegrate pod setup pod install cd ..
If you encounter issues building for Android:
-
Clean Gradle build:
cd android ./gradlew clean cd ..
-
Check for and update SDK tools in Android Studio's SDK Manager
-
Make sure your environment variables are properly set in your .bash_profile or .zshrc:
export ANDROID_HOME=$HOME/Library/Android/sdk export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
cp ./mist2_logo.png ./assets/images/icon.png && cp ./mist2_logo.png ./assets/images/adaptive-icon.png && cp ./mist2_logo.png ./assets/images/splash-icon.png
npx expo prebuild --clean


