Skip to main content

Platform Overview

Open Mushaf Native is available on multiple platforms with various installation methods:

Android

Google Play Store, APK, or build from source

Web / PWA

Browser-based with offline support

iOS

Web app installable to home screen

Build from Source

Full development setup for all platforms

Android Installation

The easiest way to install on Android devices:
1

Open Play Store

Navigate to the Open Mushaf Native page
2

Install

Tap the Install button
3

Launch

Open the app from your home screen or app drawer
Play Store installation provides automatic updates and the most stable experience.

Option 2: APK Installation

For devices without Play Store access:
1

Download APK

Visit GitHub Releases and download the latest .apk file
2

Enable Unknown Sources

On your Android device:
  1. Open Settings
  2. Navigate to Security or Privacy
  3. Enable Install from Unknown Sources or Install Unknown Apps
  4. Grant permission to your browser or file manager
3

Install APK

  1. Locate the downloaded APK file
  2. Tap to open it
  3. Tap Install
  4. Wait for installation to complete
  5. Tap Open to launch
Only download APK files from the official GitHub Releases page. Third-party sources may distribute modified or malicious versions.

Option 3: Build Android from Source

For developers who want to build the APK locally:
1

Clone Repository

git clone https://github.com/adelpro/open-mushaf-native.git
cd open-mushaf-native
2

Install Dependencies

npm install
3

Build APK

For development build:
npm run android:build:preview:local
For production build:
npm run android:build:production:local
The APK will be created in the builds/ directory.
4

Install on Device

Transfer the APK to your Android device and install it following the APK installation steps above.

iOS Installation

Currently, Open Mushaf Native is available on iOS as a Progressive Web App (PWA):
1

Open Safari

Navigate to https://open-mushaf-native.web.app/ in Safari browser
Safari is required for PWA installation on iOS. Other browsers don’t support this feature.
2

Add to Home Screen

  1. Tap the Share button (square with arrow pointing up)
  2. Scroll down and tap Add to Home Screen
  3. Edit the name if desired
  4. Tap Add
3

Launch App

The app icon will appear on your home screen. Tap it to launch Open Mushaf Native as a standalone app.
The PWA version works offline after the initial load and provides a native-like experience on iOS.

Web Application

Use Open Mushaf Native directly in your browser:

Direct Browser Access

1

Visit Web App

Open https://open-mushaf-native.web.app/ in any modern browser:
  • Chrome (recommended)
  • Firefox
  • Safari
  • Edge
2

Start Using

The app loads instantly and works directly in your browser

Install as PWA (Desktop/Android)

1

Open Web App

2

Install

  1. Look for the install icon (➕) in the address bar
  2. Click Install
  3. The app will open in its own window
3

Access from Apps

Find the installed app in:
  • Start Menu (Windows)
  • Applications folder (macOS)
  • Chrome Apps (chrome://apps)
PWA installation provides:
  • Standalone app window without browser UI
  • App icon in your system’s app launcher
  • Offline functionality
  • Faster startup time

Building from Source

For developers who want to run, modify, or contribute to the project:

System Requirements

Node.js

Version 22 or higher required

Expo SDK

Version 54 (installed automatically)

Platform Tools

Android Studio (Android) or Xcode (iOS/macOS)

Git

For cloning the repository

Development Setup

1

Install Node.js

Download and install Node.js v22+ from nodejs.orgVerify installation:
node --version  # Should show v22.x.x or higher
npm --version
2

Clone Repository

git clone https://github.com/adelpro/open-mushaf-native.git
cd open-mushaf-native
3

Install Dependencies

npm install
This installs all required packages including:
  • React Native 0.81
  • Expo SDK 54
  • TypeScript
  • Jotai (state management)
  • All other dependencies
4

Start Development Server

npm start
# or
npx expo start
This opens the Expo development tools in your terminal.

Running on Different Platforms

npm run android
# or with specific device
npm run android -d
Prerequisites:
  • Android Studio installed
  • Android SDK configured
  • Android emulator running or physical device connected
  • USB debugging enabled (for physical devices)
The -d flag lets you select which connected device or emulator to use.

Advanced Build Commands

The project includes several build scripts:
npm run start:clear

Development Tools

Linting

npm run lint
npm run lint:fix

Type Checking

TypeScript type checking runs automatically. Configure in tsconfig.json

Testing

npm test

Health Check

npm run doctor

Project Structure

Understanding the codebase:
open-mushaf-native/
├── app/                    # Application screens (Expo Router)
│   ├── (tabs)/            # Tab-based navigation
│   │   ├── index.tsx     # Main Mushaf screen
│   │   ├── lists.tsx     # Surahs and bookmarks
│   │   └── (more)/       # Settings and more
│   ├── search.tsx         # Search functionality
│   ├── navigation.tsx     # Page/Surah navigation
│   └── tutorial.tsx       # First-run tutorial
├── assets/                # Images, fonts, icons
├── components/            # Reusable React components
├── constants/             # App constants and configs
├── hooks/                 # Custom React hooks
├── store/                 # Jotai state management
├── utils/                 # Helper functions
├── app.json              # Expo configuration
├── package.json          # Dependencies and scripts
├── tsconfig.json         # TypeScript configuration
└── eas.json              # EAS Build configuration

Configuration Files

app.json

Main Expo configuration:
{
  "expo": {
    "name": "Open Mushaf",
    "slug": "open-mushaf-native",
    "version": "4.3.0",
    "orientation": "default",
    "newArchEnabled": true,
    "android": {
      "package": "com.adelpro.openmushafnative",
      "playStoreUrl": "https://play.google.com/store/apps/details?id=com.adelpro.openmushafnative"
    }
  }
}
The app uses the new React Native architecture (newArchEnabled: true) for better performance.

package.json

Key dependencies:
{
  "name": "open-mushaf-native",
  "version": "v4",
  "dependencies": {
    "expo": "54.0.30",
    "react-native": "0.81.5",
    "react": "19.1.0",
    "jotai": "^2.12.4",
    "expo-image": "~3.0.11",
    "@gorhom/bottom-sheet": "^5.1.4"
  }
}

Contributing

Want to contribute? Great!
1

Fork and Clone

  1. Fork the repository on GitHub
  2. Clone your fork locally
git clone https://github.com/your-username/open-mushaf-native.git
cd open-mushaf-native
2

Create Branch

git checkout -b feature/your-feature-name
3

Make Changes

  • Follow the existing code style
  • Ensure zero ESLint errors
  • Test your changes thoroughly
npm run lint:fix  # Fix linting issues
4

Commit and Push

git add .
git commit -m "Add your feature or fix"
git push origin feature/your-feature-name
5

Create Pull Request

Open a pull request on GitHub with a clear description of your changes
See the full Contributing Guidelines for more details.

Troubleshooting

Common Issues

Solution:
  1. Ensure you’re using Node.js v22 or higher
  2. Clear npm cache:
npm cache clean --force
rm -rf node_modules package-lock.json
npm install
Solution:
  1. Ensure Android Studio and SDK are properly installed
  2. Set ANDROID_HOME environment variable
  3. Try cleaning the build:
cd android
./gradlew clean
cd ..
npx expo start --clear
Solution:
  1. Ensure Xcode is installed and up to date
  2. Install CocoaPods if needed:
sudo gem install cocoapods
  1. Clean iOS build folder:
cd ios
rm -rf Pods Podfile.lock
pod install
cd ..
Solution: Clear the Metro cache:
npm run start:clear
# or
npx expo start --clear
Solution:
  • Ensure you’re using Safari browser (required for iOS PWA)
  • Check that you’re on the actual website, not a cached version
  • Try clearing Safari cache and revisiting

Deployment

For deploying your own instance:
The official web app is hosted on Firebase:
# Install Firebase CLI
npm install -g firebase-tools

# Login to Firebase
firebase login

# Deploy to preview
npm run deploy:preview

# Deploy to production
npm run deploy:live

Resources

GitHub Repository

View source code and issues

Expo Documentation

Learn more about Expo

React Native Docs

React Native documentation

Report Issues

Bug reports and feature requests

Support

Need help with installation?

Build docs developers (and LLMs) love