Skip to main content
This page covers the HashDrop mobile app: what it can do, how it interoperates with the web app, and how to build and run it from source. The mobile app is built with React Native via Expo and shares the same P2P and LiveKit infrastructure as the web client.

What the mobile app includes

  • All three modes: file transfer, video conferencing, and chat rooms — the full HashDrop feature set on your phone
  • QR code scanning: use your device camera to scan a warp code or room QR displayed on a web client and connect instantly, without typing a code
  • Haptic feedback: tactile confirmation via expo-haptics on successful file transfers, room joins, and other key events
  • Cross-platform with web: mobile participants join the same LiveKit video rooms and WebRTC data channels as web users — there is no separate mobile-only infrastructure
You need either the Expo Go app on a physical device (iOS or Android) or an iOS Simulator / Android Emulator to run the app from source. Expo Go is the fastest path for testing on a real phone.

Build and run from source

1

Clone the repository

If you haven’t already, clone the HashDrop repo and install the web app’s root dependencies:
git clone https://github.com/metesahankurt/hashdrop.git
cd hashdrop
npm install
2

Start the Expo development server

From the repository root, run:
npm run mobile:start
Expo prints a QR code in the terminal. Scan it with Expo Go on your phone to open the app immediately.
3

Run on a specific platform

To open in a simulator or emulator instead:
npm run mobile:ios
These commands call expo run:ios and expo run:android respectively inside the mobile/ workspace.

Cross-compatibility with the web app

Mobile users are fully interoperable with web users:
  • A mobile participant can scan the QR code shown on the web transfer page and receive a file sent from a desktop browser
  • Mobile users can join a video conference created on the web — they appear as full participants with camera and microphone, using native hardware optimized by Expo’s @livekit/react-native integration
  • Mobile users can join or create chat rooms and exchange messages with web participants in real time
The mobile app uses the same ADJECTIVE-NOUN warp code system and the same LiveKit room tokens as the web app. No separate server or configuration is needed for cross-platform sessions.

Key dependencies

PackagePurpose
expo ~54Build toolchain and native runtime
expo-routerFile-based navigation
expo-cameraQR code scanning
expo-hapticsHaptic feedback
@livekit/react-nativeVideo conferencing
peerjsP2P file transfer and chat
expo-document-pickerFile selection on device
expo-file-systemFile read/write for transfers

Build docs developers (and LLMs) love