A privacy-focused React Native app that helps you identify unknown callers without cluttering your device's main contact list. Perfect for temporary number storage when you need to know who's calling but don't want the number to appear in WhatsApp, Telegram, or other messaging apps.
- Local Caller ID Detection: Identify incoming calls using your private database
- Temporary Number Storage: Save numbers locally without affecting your main contacts
- Privacy Protection: Numbers won't appear in WhatsApp, Telegram, or other messaging apps
- Phone Number Validation: Smart phone number input with country selection
- Custom Native Module: Built-in caller ID functionality using Android's native capabilities
- Country Selector: Beautiful bottom sheet country picker with search
- Material Design: Modern UI following Material Design 3 principles
- Offline Storage: All data stored locally using Android's native SQLite database
When you receive calls from unknown numbers but don't want to save them to your main contact list:
- Delivery drivers - Know who's calling without adding to contacts
- Service providers - Temporary contractors, repair services, etc.
- Business contacts - People you interact with briefly
- Privacy protection - Keep your main contact list clean while still identifying callers
- React Native with Expo
- TypeScript for type safety
- React Native Paper for Material Design components
- Room for local data storage
or
Download from Releases Tab
- Node.js (v18 or later)
- npm or yarn
- Expo CLI
- Android Studio (for Android development)
- Xcode (for iOS development, macOS only)
- Clone the repository:
git clone https://github.com/BioHazard786/Alternate.git
cd Alternate
- Install dependencies:
npm install
- Start the development server:
npx expo start
To build a development APK:
npx expo run:android
- Install EAS CLI:
npm install -g eas-cli
- Configure EAS:
npx eas build:configure
- Build for Android:
npx eas build --platform android
To build a production APK locally without EAS:
For development and testing purposes:
- Install dependencies:
npm ci
- Build for Android:
cd android
./gradlew assembleRelease
Note: This creates a release APK but signed with debug keystore. The APK will be generated at android/app/build/outputs/apk/release/
For production distribution, use Android Studio to create a properly signed APK:
-
Open the project in Android Studio:
- Open Android Studio
- Select "Open an existing Android Studio project"
- Navigate to the
android
folder in your project - Click "OK"
-
Generate Signed APK:
- Go to
Build
βGenerate Signed Bundle / APK
- Select "APK" and click "Next"
- Choose "Create new..." to generate a new keystore or "Choose existing..." if you have one
- Fill in the keystore details (store this information securely!)
- Click "Next"
- Select "release" build variant
- Click "Create"
- Go to
-
Locate the signed APK:
- The signed APK will be generated in
android/app/release/
- This APK is properly signed and ready for distribution
- The signed APK will be generated in
Important Notes:
- Debug-signed APKs (from
./gradlew assembleRelease
) are fine for development and testing - For Play Store or distribution to users, always use properly signed APKs from Android Studio
- APKs signed with different keystores cannot update each other on Android devices
βββ app/ # Main app screens
βββ components/ # Reusable components
βββ constants/ # App constants
βββ hooks/ # Custom hooks
βββ lib/ # Utility functions and types
βββ modules/ # Custom native modules
β βββ caller-id/ # Caller ID native module with SQLite integration
βββ store/ # State management
βββ assets/ # Images and other assets
- Add Numbers Locally: Save phone numbers with names in your private database
- Caller ID Detection: When calls come in, the app checks against your local database
- Privacy Maintained: Numbers remain completely separate from your device's contact list
- No Sync Issues: Won't interfere with messaging apps or cloud contact syncing
- Clean Contact List: Keep your main contacts organized
- Privacy Control: Numbers stay private to this app only
- No Messaging App Clutter: Saved numbers won't appear in WhatsApp, Telegram, etc.
- Temporary Storage: Perfect for short-term contact needs
- Offline Functionality: Works completely offline with local SQLite storage
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Mohd Zaid - Telegram - [email protected]
Project Link: https://github.com/BioHazard786/Alternate
- Thanks To dmkvsk for native module inspiration Repo
- Thanks To SimpleNexus for call directory implementation Repo
Keep your contact list clean while never missing an important call again!