RomM Mobile
August 19, 2025 ยท View on GitHub
๐ฑ About
RomM Mobile is a mobile companion app for RomM, a beautiful, powerful, self-hosted ROM manager. This app allows you to browse, manage, and organize your retro gaming collection directly from your Android and iOS devices.
๐งช iOS Support: iOS support is currently experimental. While core functionality works, some features may have limitations compared to the Android version.
โจ Features
- ๐ฎ Browse ROM Collections: Explore your games organized by platform
- ๐ Secure Authentication: Login with your RomM server credentials
- ๐ฑ Retrohandled-Optimized Interface: Beautiful, responsive design built for retrohandleds
- ๐ File Management: Download and manage ROM files on your device
- ๐ Cross-Platform: Available for both Android and iOS devices (iOS experimental)
๐ธ Screenshots
Library & Recently Added |
Collections View |
Platform ROMs |
๐ Getting Started
Installation
Android
- Download the APK: Get the latest release from the Releases page
- Install the APK: Enable installation from unknown sources in your Android settings, then install the downloaded APK
- Open the App: Launch RomM Mobile and log in with your RomM server credentials
iOS (Experimental)
โ ๏ธ Important: Due to Expo's architecture, iOS builds are currently only available for development testing. Production IPA files are not yet available for sideloading.
Development Testing (Recommended):
-
Prerequisites:
- macOS computer with Xcode installed
- iOS device connected via USB or wireless debugging
- Apple Developer account (free account works)
-
Setup and Run:
git clone https://github.com/mattsays/romm-mobile.git cd romm-mobile expo run:ios --device -
Device Selection: Choose your connected iOS device when prompted
-
Trust Developer: Go to Settings โ General โ VPN & Device Management โ Trust the developer certificate
-
Open the App: Launch RomM Mobile and log in with your RomM server credentials
Note: The app will run in development mode and requires the Expo development server to remain active. Production iOS builds via sideloading (Sideloadly, AltStore) will be available in future releases.
๐ How To - Folder Management
RomM Mobile uses a sophisticated folder management system that allows you to organize your ROM files efficiently. Here's how it works:
Overview
The app manages folders in two main ways:
- Platform-specific folders: Each gaming platform (NES, SNES, PlayStation, etc.) can have its own dedicated folder
- Automatic folder selection: When you download your first ROM for a platform, the app will prompt you to select a folder
How Folder Management Works
1. First-time Setup
When you download your first ROM for any platform:
- The app checks if a folder is already configured for that platform
- If no folder exists, it automatically prompts you to select one
- You'll see a dialog asking you to choose a folder for that specific platform
- Once selected, all future ROMs for that platform will be saved in the same folder
2. Folder Configuration
- Automatic: Prompted when downloading first ROM of a platform
- Manual: Configure folders in Settings โ Platform Folders
- Per-platform: Each platform can have its own unique folder
- Flexible: You can change folder locations anytime
3. Storage Access Framework (SAF)
The app uses Android's Storage Access Framework which:
- โ Works with any storage location (internal, SD card, cloud storage)
- โ Maintains permissions across app updates
- โ Provides secure access to your files
- โ No need for broad storage permissions
Managing Folders
In Settings
Navigate to Settings โ Platform Folders to:
- View all configured platform folders
- Change folder location for any platform
- Remove folder configuration for a platform
- Remove all platform folder configurations
During Download
When downloading a ROM:
- App checks if platform folder exists
- If exists: ROM downloads directly to that folder
- If missing: Shows folder selection dialog
- Selected folder is saved for future downloads of that platform
Folder Selection Dialog
The folder selection dialog shows:
- Current folder (if one is already configured)
- Platform name you're configuring
- Options to Change or Cancel
Key Features
Smart File Detection
- Automatically detects if a ROM is already downloaded
- Prevents duplicate downloads
๐ง Development
Prerequisites
- Node.js (version 18 or higher)
- Expo CLI
- Android Studio (for Android development)
- Xcode (for iOS development - macOS only)
- A running RomM server
Installation
-
Clone the repository
git clone https://github.com/mattsays/romm-mobile.git cd romm-mobile -
Install dependencies
npm install -
Start the development server
npm start -
Run on Android
npm run android -
Run on iOS (macOS only)
npm run ios
Project Structure
romm-mobile/
โโโ app/ # Expo Router pages
โ โโโ auth/ # Authentication screens
โ โโโ game/ # Game detail screens
โ โโโ platform/ # Platform browsing screens
โโโ components/ # Reusable React components
โโโ contexts/ # React contexts (AuthContext)
โโโ hooks/ # Custom React hooks
โโโ locales/ # Internationalization files
โโโ services/ # API services and utilities
โโโ assets/ # Images, fonts, and static assets
Available Scripts
npm start- Start the Expo development servernpm run android- Run on Android device/emulatornpm run ios- Run on iOS device/simulator (macOS only)
Technology Stack
- Framework: Expo with Expo Router
- Language: TypeScript
- UI: React Native with custom components
- Navigation: Expo Router (file-based routing)
- State Management: React Context + Custom Hooks
- Storage: Expo SecureStore for sensitive data
- HTTP Client: Fetch API with custom wrapper
- Internationalization: Custom i18n implementation
๐ Requirements
Device Compatibility
Android
- Android 7.0 (API level 24) or higher
- ARM64 or x86_64 architecture
iOS (Experimental)
- iOS 13.0 or higher
- iPhone 6s or newer, iPad Air 2 or newer
- Sideloading capability (Sideloadly, AltStore, or Developer Account)
Permissions
Android Permissions
The app requires the following permissions:
READ_EXTERNAL_STORAGE- Access ROM filesWRITE_EXTERNAL_STORAGE- Download and save ROMsINTERNET- Connect to RomM server
iOS Permissions
- Storage access for downloading ROMs
- Network access for RomM server connection
RomM Server Compatibility
This app is compatible with RomM API version 3.10.2 and above.
๐ Security
- All authentication tokens are stored securely using Expo SecureStore
- HTTPS connection to RomM server is recommended for production use
- No sensitive data is logged or cached in plain text
๐ค Contributing
We welcome contributions! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
Development Guidelines
- Follow the existing code style and TypeScript patterns
- Add appropriate types for all new code
- Test your changes on both Android and iOS devices/emulators
- Update documentation as needed
- Note any platform-specific limitations or differences
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Related Projects
- RomM - The main RomM server application
- RomM Documentation - Official documentation
๐ Support
- ๐ Bug Reports: GitHub Issues
- ๐ฌ Discussions: GitHub Discussions
- ๐ Documentation: Wiki
๐ Acknowledgments
- RomM Team for creating the amazing ROM management platform
- Expo Team for the excellent React Native development experience
- The retro gaming community for inspiration and feedback
Made with โค๏ธ for the retro gaming community