Files
notesnook/apps/mobile
2026-02-27 08:54:35 +05:00
..
2022-01-22 09:32:12 +05:00
2026-02-26 12:37:22 +05:00
2026-02-26 10:34:28 +05:00
2026-01-16 14:31:53 +05:00
2026-02-26 12:37:22 +05:00
2025-12-17 13:01:33 +05:00
2025-11-27 11:32:50 +05:00
2025-11-27 11:32:50 +05:00
2025-11-27 11:32:50 +05:00
2025-11-27 11:32:50 +05:00
2025-11-27 11:32:50 +05:00
2025-11-27 11:32:50 +05:00
2025-11-27 11:32:50 +05:00
2025-11-27 11:32:50 +05:00
2025-11-27 11:32:50 +05:00
2025-11-27 11:32:50 +05:00
2026-02-27 08:47:23 +05:00
2025-11-27 11:32:50 +05:00

Notesnook mobile screenshot

Notesnook Mobile

The mobile app is built with React Native for both iOS and Android.

Build instructions | Developer guide | E2E tests

Download on Google Play Download on App Store

Build instructions

Before you start, it is recommended that you read the contributing guidelines.

Setting up the development environment

Requirements:

  1. Node.js 20+ (the repo is pinned to Node 22.20.0 via Volta)
  2. git
  3. npm
  4. React Native environment setup

To run the app locally, first complete React Native native tooling setup:

  1. Open React Native environment setup
  2. Select React Native CLI Quickstart
  3. Select your OS and target platform(s): iOS and/or Android
  4. Follow the steps listed.

Expo is not used in this project.

Clone the monorepo:

git clone https://github.com/streetwriters/notesnook.git

# change directory
cd notesnook

Install dependencies and bootstrap the mobile workspace:

# this might take a while to complete
npm install
npm run bootstrap -- --scope=mobile

Running the app on Android

Set up an Android emulator from Android Studio (or connect a physical device), then run:

npm run start:android

If you are using a physical device, enable USB debugging.

Running the app on iOS

Install CocoaPods dependencies first, then run the iOS app:

# this might take a while to complete
npm run prepare:ios

npm run start:ios

Useful development commands

# start Metro only
npm run start:metro

# start Re.Pack bundler
npm run start:repack

Developer guide

The mobile app is a mixed TypeScript/JavaScript codebase.

The tech stack

We try to keep the stack as lean as possible:

  1. React Native 0.82
  2. React 19
  3. TypeScript + JavaScript
  4. Zustand (state management)
  5. Detox (end-to-end testing)
  6. libsodium (encryption)

Project structure

Top-level directories in apps/mobile/:

  • app/: Main React Native app source (components, common, hooks, navigation, screens, services, stores, utils, etc.)
  • android/: Android native project
  • ios/: iOS native project
  • e2e/: Detox test suite and config
  • patches/: patch-package patches
  • scripts/: Mobile-specific scripts

Running E2E tests (Detox)

Detox device defaults in this repo:

  • Android emulator: Pixel_5_API_36
  • iOS simulator: iPhone 17 Pro Max

Android

Build and run Android Detox tests:

npm run build:android
npm run test:android

For debug configuration:

npm run build:android:debug
npm run start:metro
npm run test:android:debug

iOS

Build and run iOS Detox tests:

npm run build:ios
npm run test:ios

If simulator tooling is missing, install AppleSimulatorUtils:

brew tap wix/brew
brew install applesimutils

Release commands

Android release helpers:

npm run release:android
npm run release:android:bundle