CSL Mobile Bridge

December 12, 2025 ยท View on GitHub

npm version

React Native library providing JavaScript bindings for Emurgo's Cardano Serialization Library with native Rust components.

๐Ÿ“ฆ Installation

Requirements

  • Rust โ€” Install rustup
  • Python 3 โ€” Required for Android builds
  • Rust targets โ€” Cross-compilation targets for iOS/Android
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.zshrc

# Install Rust targets
rustup target add aarch64-apple-ios aarch64-apple-ios-sim x86_64-apple-ios \
    aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android

# Verify Python 3
python3 --version

Install Package

npm install @emurgo/csl-mobile-bridge --save

Usage

import { BigNum } from '@emurgo/csl-mobile-bridge';

See more examples in example/app/examples.


๐Ÿ›  Development Setup

For contributors and library developers.

Quick Start

Ensure Requirements are installed first.

# 1. Setup Rust targets (or install manually as shown in Requirements)
./setup-rust-environment.sh

# 2. Install dependencies
yarn install && yarn prepare

# 3. Run example app
yarn example ios    # or: yarn example android

Prerequisites

ToolVersionCheck Command
Node.jsโ‰ฅ 18.0.0node --version
Yarnโ‰ฅ 3.6.1yarn --version
Rustโ‰ฅ 1.70.0rustc --version
XcodeLatestxcodebuild -version
Java JDK17java -version
Android NDK27.0.12077973ls $ANDROID_HOME/ndk/

Environment Variables

Add to ~/.zshrc (or ~/.bash_profile):

# Java
export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home

# Android
export ANDROID_HOME="$HOME/Library/Android/sdk"
export ANDROID_SDK_ROOT="$ANDROID_HOME"
export ANDROID_NDK_HOME="$ANDROID_HOME/ndk/27.0.12077973"
export PATH="$PATH:$ANDROID_HOME/emulator:$ANDROID_HOME/platform-tools"

# Rust Android Gradle
export RUST_ANDROID_GRADLE_PYTHON_COMMAND="python3"

Then run source ~/.zshrc to apply.

Android NDK Installation

โš ๏ธ NDK version 27.0.12077973 is required. Other versions will cause build failures.

  1. Open Android Studio โ†’ Settings โ†’ Android SDK โ†’ SDK Tools
  2. Check Show Package Details
  3. Expand NDK (Side by side) โ†’ Select 27.0.12077973
  4. Click Apply

Java JDK 17

brew install --cask zulu@17

Rust Targets

Use the setup script or install manually (see Requirements):

./setup-rust-environment.sh

Running the Example App

# iOS
yarn example ios

# Android (start emulator first)
yarn example android

# Metro bundler only
yarn example start

Troubleshooting

Quick Diagnostics

echo "JAVA_HOME: $JAVA_HOME"
echo "ANDROID_HOME: $ANDROID_HOME"
echo "ANDROID_NDK_HOME: $ANDROID_NDK_HOME"
rustup target list --installed | grep -E "(ios|android)"

Common Issues

NDK version mismatch

ls "$ANDROID_HOME/ndk/"
# Must have 27.0.12077973 - install via Android Studio SDK Tools

Rust build failures

./setup-rust-environment.sh
rustup update
cargo clean

iOS build failures

cd example
rm -rf ios/build
pod install --repo-update
cd ..
yarn example ios

Android Gradle failures

cd example/android && ./gradlew clean && cd ../..
yarn example android

Metro cache issues

yarn example start --reset-cache

Port 8081 in use

lsof -ti:8081 | xargs kill -9

Clean Reinstall

rm -rf node_modules example/node_modules
yarn install
yarn prepare

Resources