- Notifications
You must be signed in to change notification settings - Fork0
License
NextFaze/react-native-manup
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
A React Native library for handling mandatory app updates and maintenance mode. This library provides a simple way to check if your app version is supported, requires an update, or if the app is in maintenance mode.
- 🔄Version Validation: Automatically validates app version against minimum and latest requirements
- 🚧Maintenance Mode: Support for putting apps in maintenance mode
- 🔥Firebase Remote Config: Integration with Firebase Remote Config for dynamic configuration
- 🌐HTTP Configuration: Support for HTTP-based configuration endpoints
- 📱Platform Specific: Different configuration for iOS and Android
- ⚡Real-time Updates: Automatic status updates with callback support
npm install react-native-manup
This library requires the following peer dependencies:
npm install react-native-device-info
If you plan to use Firebase Remote Config as your configuration source, you'll also need to install:
npm install @react-native-firebase/app @react-native-firebase/remote-config
TheRemoteConfigProvider is a unified solution that works with any config source. It provides automatic caching, refetching, and change detection through react-query.
Can also see the full example code atexample/App.tsx
importReactfrom'react';import{Alert}from'react-native';import{RemoteConfigProvider,useRemoteConfigManUp}from'react-native-manup';functionApp(){return(<RemoteConfigProviderfetchConfig={async()=>{constresponse=awaitfetch('https://your-api.com/config.json',{cache:'no-store'});if(!response.ok){thrownewError(`HTTP error! status:${response.status}`);}returnresponse.json();}}refetchInterval={3600000}// 1 hour (optional)queryKey="httpConfig"// optional><HomeScreen/></RemoteConfigProvider>);}functionHomeScreen(){const{ status, message}=useRemoteConfigManUp({const onUpdateAvailable=()=>{// - Display update available modal// - Modal can be dismissed};constonUpdateRequired=()=>{// - Display update required modal// - Modal shouldn't be dismissible as user is required to update the app};constonMaintenanceMode=()=>{// - Display maintenance mode modal// - Modal shouldn't be dismissible as the app is in maintenance mode};});return(// Your app content);}
Prerequisite: You must install and set up Firebase in your React Native app before using this provider. Follow theReact Native Firebase setup guide to configure
@react-native-firebase/appand@react-native-firebase/remote-config.
importReactfrom'react';import{Alert}from'react-native';import{RemoteConfigProvider,useRemoteConfigManUp}from'react-native-manup';importremoteConfigfrom'@react-native-firebase/remote-config';functionApp(){return(<RemoteConfigProviderfetchConfig={async()=>{awaitremoteConfig().fetchAndActivate();returnJSON.parse(remoteConfig().getValue('appConfig').asString());}}queryKey="firebaseConfig"><HomeScreen/></RemoteConfigProvider>);}functionHomeScreen(){const{ status, message}=useRemoteConfigManUp({const onUpdateAvailable=()=>{// - Display update available modal// - Modal can be dismissed};constonUpdateRequired=()=>{// - Display update required modal// - Modal shouldn't be dismissible as user is required to update the app};constonMaintenanceMode=()=>{// - Display maintenance mode modal// - Modal shouldn't be dismissible as the app is in maintenance mode};});return(// Your app content);}
The library expects a configuration object with platform-specific data. Here's the structure:
interfaceConfig{[key:string]:PlatFormData;}interfacePlatFormData{latest:string;// Latest available versionminimum:string;// Minimum supported versionurl:string;// Download URL for the appenabled:boolean;// Whether the app is enabled}
{"ios": {"latest":"1.2.0","minimum":"1.0.0","url":"https://apps.apple.com/app/yourapp","enabled":true,// Custom platform-specific property - can be any additional data you need"publicApiUrl":"https://api.ios-example.com/v1" },"android": {"latest":"1.2.0","minimum":"1.0.0","url":"https://play.google.com/store/apps/details?id=com.yourapp","enabled":true,// Custom platform-specific property - can be any additional data you need"publicApiUrl":"https://api.android-example.com/v1" },// Custom global property - shared across all platforms"publicApiUrl":"https://api.example.com/v1"}See thecontributing guide to learn how to contribute to the repository and the development workflow.
MIT
Made withcreate-react-native-library
About
Resources
License
Code of conduct
Contributing
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Contributors2
Uh oh!
There was an error while loading.Please reload this page.