Skip to main content

Usage Examples

Basic Version Info

Display the current app version and build number:

import { VersionCheck } from 'react-native-nitro-version-check'

// Direct access
const info = {
version: VersionCheck.version, // "1.2.0"
build: VersionCheck.buildNumber, // "42"
package: VersionCheck.packageName, // "com.example.app"
source: VersionCheck.installSource, // "appstore" | "sideloaded"
country: VersionCheck.getCountry(), // "US"
}

// Or destructure properties
const { version, buildNumber, packageName, installSource, getCountry } = VersionCheck
const appInfo = {
version,
build: buildNumber,
package: packageName,
source: installSource,
country: getCountry(),
}

Force Update Flow

Prompt the user to update when a new version is available:

import { Alert, Linking } from 'react-native'
import { VersionCheck } from 'react-native-nitro-version-check'

async function checkForUpdates() {
if (await VersionCheck.needsUpdate()) {
const url = await VersionCheck.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 { VersionCheck } from 'react-native-nitro-version-check'

// Only returns true for major version bumps
const hasMajorUpdate = await VersionCheck.needsUpdate({ level: 'major' })

// Returns true for major OR minor bumps
const hasMinorUpdate = await VersionCheck.needsUpdate({ level: 'minor' })

// Returns true for any version increase (default)
const hasAnyUpdate = await VersionCheck.needsUpdate({ level: 'patch' })

// Check against a specific App Store region (iOS only)
const needsUpdateUS = await VersionCheck.needsUpdate({ countryCode: 'US' })

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
case 'sideloaded':
// iOS: dev build (e.g. Xcode)
// Android: installed via APK/ADB (dev or release)
console.log('Sideloaded build')
break
}

Check Latest Version by Region

By default, getLatestVersion() uses the device's country code. You can specify a different region:

import { VersionCheck } from 'react-native-nitro-version-check'

// Uses device country automatically
const latest = await VersionCheck.getLatestVersion()

// Check version in a specific region (iOS only)
const latestUS = await VersionCheck.getLatestVersion({ countryCode: 'US' })
const latestGB = await VersionCheck.getLatestVersion({ countryCode: 'GB' })
const latestJP = await VersionCheck.getLatestVersion({ countryCode: 'JP' })

Compare Versions Manually

Use VersionCheck.compareVersions() for custom version logic:

import { VersionCheck } from 'react-native-nitro-version-check'

const result = VersionCheck.compareVersions('1.2.0', '1.3.0')
// result === -1 (first is older)

if (VersionCheck.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 { VersionCheck } 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([
VersionCheck.needsUpdate(),
VersionCheck.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 { VersionCheck } from 'react-native-nitro-version-check'

export const useNeedsUpdate = () => {
return useQuery({
queryKey: ['needs-update'],
queryFn: () => VersionCheck.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>
}