📱 Mobile
Open-Source Android and iOS Mobile Application for the LibrePhotos Project
🚀 Get Started
Compatibility
- Android 5.0+
- iOS 10.0+ (Stability on iOS is not tested yet.)
📱 Android
- Download the Latest Build from releases.
- Install the APK
🍎 iOS
Currently, there are no automated builds for IOS. You will need to build the app from source. Follow the instructions in the next section.
🔨 Build from Source
You need the dependencies required by React Native — follow the Environment Setup guide for your platform.
You also need Node.js. The app is pinned to Node 20 in apps/mobile/.node-version, which is what CI installs from; anything older than Node 18 will fail at yarn install. Tools like fnm, nodenv and asdf read .node-version automatically.
Once the dependencies are set up, build the app from the apps/mobile directory:
- Install Yarn if you don't already have it:
npm install -g yarn cd apps/mobileyarn install- On iOS only (macOS): install the CocoaPods dependencies with
cd ios && pod install && cd ..(CocoaPods is part of the React Native environment setup linked above). yarn android— oryarn ioson macOS.
✨ Code Standards
We use ESLint and Prettier to keep the code tidy. yarn lint (which runs eslint --fix .) must pass — it runs on every pull request that touches apps/mobile/, and again when your change lands on dev. yarn test runs the Jest tests locally — a render smoke test plus a couple of regression tests — but the suite is not part of CI yet.
🐛 Debugging
For debugging, we use reactotron
Enable File Logging
Logging to the phone's local file system can be enabled or disabled from the Settings page, under Debug Options → Debug Logging. It is enabled by default on a clean install.
Logs are stored in the cache directory of the phone.
For Android: /storage/emulated/0/Android/data/com.librephotosmobile/cache/logs/
You can also quickly send a bug report to the developer by shaking your phone. Shake-to-report only works while Debug Logging is enabled — the shake listener is registered alongside the file logger, so turning logging off disables it too.