A collection of React Native example apps showcasing Reown AppKit and WalletKit SDKs. This repository includes sample dapps and reference wallet implementations that serve as testing grounds, learning resources, and reference code for developers integrating Reown SDKs into their projects.
- React Native CLI Wallet:
wallets/rn_cli_wallet - Expo Wallet (WIP):
wallets/expo-wallet
- AppKit + Wagmi + Multichain:
dapps/appkit-wagmi - AppKit + Ethers:
dapps/W3MEthers - AppKit + Ethers v5:
dapps/W3MEthers5 - AppKit + Expo + Wagmi:
dapps/appkit-expo-wagmi
- Point of Sale App:
dapps/pos-app - PoC Point of Sale App (legacy):
dapps/poc-pos-app
- Ensure your React Native environment has been properly setup (XCode, ruby etc).
- Read our React Native docs
- Read through the various README files for further information
- Submit any issues / feature requests.
This repository uses Fastlane for iOS build automation and certificate management.
macOS users: It's recommended to use rbenv to manage Ruby versions:
# Install rbenv via Homebrew
brew install rbenv
# Install Ruby 3.3.0
rbenv install 3.3.0
# Set it as the local version for this project
rbenv local 3.3.0Then install the Ruby dependencies:
# Install Ruby dependencies (includes Fastlane and CocoaPods)
bundle installPreferred: do it on CI. Run the Create iOS Certificates GitHub Action
(.github/workflows/create-ios-certs.yaml) — it creates the app's signing certificates and
provisioning profiles via the App Store Connect API key (no Apple ID / 2FA), so you don't need
Ruby, fastlane, or CocoaPods locally. It pushes a branch to the certs repo over SSH and links a
compare URL in the job summary; a teammate opens and merges that PR.
Prerequisite: the App ID must already be registered in the Developer Portal and the App Store Connect app record must already exist.
matchdoes not create the identifier, and fastlaneproducecan't authenticate with the API key — so both are created manually (Developer Portal → Identifiers, then App Store Connect → Apps → +).
Local fallback. Use the provided script to create new certificates and provisioning profiles.
The script handles creating a branch, running fastlane match, and creating a PR (required since
the certificates repo has branch protection). When the App Store Connect API key env vars
(APPLE_KEY_ID, APPLE_ISSUER_ID, APPLE_KEY_CONTENT) are set it uses API-key auth (no 2FA);
otherwise it falls back to interactive Apple ID auth:
# Make the script executable (first time only)
chmod +x scripts/create-certificates.sh
# Create App Store certificates (creates PR for manual review)
./scripts/create-certificates.sh <certificates_repo> <bundle_id> <apple_email> appstore
# Create development certificates
./scripts/create-certificates.sh <certificates_repo> <bundle_id> <apple_email> development
# Auto-merge the PR (skip manual review)
./scripts/create-certificates.sh <certificates_repo> <bundle_id> <apple_email> appstore --auto-mergeExample:
./scripts/create-certificates.sh reown-com/mobile-match com.reown.myapp dev@reown.com appstore
./scripts/create-certificates.sh reown-com/mobile-match com.reown.myapp dev@reown.com development
# With API-key auth (no 2FA), the Apple email is optional — pass "" instead:
./scripts/create-certificates.sh reown-com/mobile-match com.reown.myapp "" appstore --auto-mergeNote: These local invocations require GitHub CLI (
gh) to be installed and authenticated, because the script opens the PR for you — by default one that needs a manual merge; pass--auto-mergeto merge it automatically. The CI workflow instead passes--no-pr, which pushes the branch over SSH and makes no GitHub API calls at all, so it needs noghand no token; you open that PR from the link in the job summary.
To download existing certificates without modifying them (readonly mode):
# Download development certificates
bundle exec fastlane match development --readonly --git_url <certificates_repo_url> --app_identifier <bundle_id>
# Download App Store certificates
bundle exec fastlane match appstore --readonly --git_url <certificates_repo_url> --app_identifier <bundle_id>The sentry.properties file is required for both iOS and Android to upload source maps and debug symbols. The same file content works for both platforms.
Option 1: Sentry Wizard (recommended)
npx @sentry/wizard@latest -i reactNativeThis will guide you through connecting your Sentry account and automatically create the configuration files.
Option 2: Manual creation
Create ios/sentry.properties and android/sentry.properties with:
defaults.url=https://sentry.io/
defaults.org=<your-org>
defaults.project=<your-project>
auth.token=<your-auth-token>Both Android and iOS Google Services files should be base64-encoded before storing in GitHub Secrets:
# Android - encode google-services.json
base64 -i /path/to/google-services.json | pbcopy
# iOS - encode GoogleService-Info.plist
base64 -i /path/to/GoogleService-Info.plist | pbcopyThe workflows will automatically decode them during the build process.
Feel free to reach out to WalletConnect via Discord in the Developer Support channels.