Usage Examples
Basic Version Info
Display the current app version and build number:
import { VersionCheck } from 'react-native-nitro-version-check'
// All sync — no await needed
const info = {
version: VersionCheck.version, // "1.2.0"
build: VersionCheck.buildNumber, // "42"
package: VersionCheck.packageName, // "com.example.app"
source: VersionCheck.installSource, // "appstore" | undefined
country: VersionCheck.getCountry(), // "US"
}
Force Update Flow
Prompt the user to update when a new version is available:
import { Alert, Linking } from 'react-native'
import { needsUpdate, getStoreUrl } from 'react-native-nitro-version-check'
async function checkForUpdates() {
if (await needsUpdate()) {
const url = await getStoreUrl()
Alert.alert(
'Update Available',
'A new version is available. Please update to continue.',
[{ text: 'Update', onPress: () => Linking.openURL(url) }]
)
}
}
Major-Only Update Prompts
Only prompt users for major version bumps (e.g., 1.x → 2.x):
import { needsUpdate } from 'react-native-nitro-version-check'
// Only returns true for major version bumps
const hasMajorUpdate = await needsUpdate({ level: 'major' })
// Returns true for major OR minor bumps
const hasMinorUpdate = await needsUpdate({ level: 'minor' })
// Returns true for any version increase (default)
const hasAnyUpdate = await needsUpdate({ level: 'patch' })
Detect Install Source
Show different UI for TestFlight or sideloaded builds:
import { VersionCheck } from 'react-native-nitro-version-check'
switch (VersionCheck.installSource) {
case 'testflight':
console.log('Running TestFlight build')
break
case 'appstore':
console.log('Running App Store build')
break
case 'playstore':
console.log('Running Play Store build')
break
default:
console.log('Development or sideloaded build')
}
Compare Versions Manually
Use compareVersions for custom version logic:
import { compareVersions } from 'react-native-nitro-version-check'
const result = compareVersions('1.2.0', '1.3.0')
// result === -1 (first is older)
if (compareVersions(currentVersion, minimumVersion) < 0) {
// Current version is below minimum — force update
}
Use with React Hook
Wrap the async check in a custom hook:
import { useEffect, useState } from 'react'
import { needsUpdate, getLatestVersion } from 'react-native-nitro-version-check'
function useUpdateCheck() {
const [updateAvailable, setUpdateAvailable] = useState(false)
const [latestVersion, setLatestVersion] = useState<string | null>(null)
useEffect(() => {
async function check() {
const [needs, latest] = await Promise.all([
needsUpdate(),
getLatestVersion(),
])
setUpdateAvailable(needs)
setLatestVersion(latest)
}
check()
}, [])
return { updateAvailable, latestVersion }
}
Use with TanStack Query
If you're using TanStack Query (React Query) for modern fetching patterns:
import { useQuery } from '@tanstack/react-query'
import { needsUpdate } from 'react-native-nitro-version-check'
export const useNeedsUpdate = () => {
return useQuery({
queryKey: ['needs-update'],
queryFn: needsUpdate,
})
}
Then use it in your component:
function UpdateBanner() {
const { data: shouldUpdate, isLoading } = useNeedsUpdate()
if (isLoading || !shouldUpdate) return null
return <Text>A new version is available!</Text>
}