Reputation: 1093
I've made a timestamped versionName in build.gradle like 20150707.1125. I want to show the version of the package in react-native app in about window. How I could get versionName in code?
Upvotes: 109
Views: 138409
Reputation: 2943
* react-native-cli
import VersionInfo from 'react-native-version-info';
const appVersion = VersionInfo.appVersion;
const buildVersion = VersionInfo.buildVersion;
const bundleIdentifier = VersionInfo.bundleIdentifier
* Expo
import Constants from "expo-constants";
const version = Constants.manifest.version
Upvotes: 1
Reputation: 1417
The right answer:
DeviceInfo.getVersion();
If you want to get it from your package.json:
import { version } from './package.json';
Upvotes: 68
Reputation: 172
If you use Expo Framework, you can use expo-constants
package as documented in https://docs.expo.dev/versions/latest/sdk/constants/.
For me, this is working: grabs the version and description from the app.json
: https://github.com/marcoXbresciani/TKCompanionApp/blob/0.1.12/screens/about/Version.tsx
So, only one point where to store things.
Upvotes: 1
Reputation: 860
I think the easiest way is to set a version number in App.js just like a variable, and ensure it is global (gettable from the whole app)
const version = "1.0.0"
and do this i every build
Upvotes: -11
Reputation: 2022
If you are using expo and you want lighter lib, use expo-application:
import * as Application from 'expo-application';
Application.nativeApplicationVersion //returns a string
// or
Application.nativeBuildVersion //returns a string
Upvotes: 6
Reputation: 609
react-native-version-number library works for both Android and iOS. You can find installation instructions here. Remember that in current versions of ReactNative linking libraries is not needed anymore (omit linking while installing - it was not written in the instruction)
https://github.com/APSL/react-native-version-number
import VersionNumber from 'react-native-version-number';
...
render() {
var versionNumber = `${VersionNumber.appVersion}.${VersionNumber.buildVersion}`;
return (
<Text style={ styles.versionText }>v. {versionNumber}</Text>
)
}
...
Upvotes: 2
Reputation: 3745
You can use react-native-device-info
And you can get app version for both iOS and Android by calling following method.
const version = DeviceInfo.getVersion();
// iOS: "1.0"
// Android: "1.0"
Hope this will help.
Upvotes: 10
Reputation: 4573
I tried most of the thing to fix this nicely and I and happy to see detailed description for doing everything that I needed react-native-version-check
import { Linking } from 'react-native';
import VersionCheck from 'react-native-version-check';
VersionCheck.needUpdate()
.then(async res => {
console.log(res.isNeeded); // true
if (res.isNeeded) {
Linking.openURL(await VersionCheck.getStoreUrl()); // open store if update is needed.
}
});
Upvotes: 0
Reputation: 32061
If you want the version number in your package.json, you can also do:
var pkg = require('./package.json');
console.log(pkg.version);
Upvotes: 91
Reputation: 8591
I used as reference the answer by @Marcos Demetrio
But I was using expo, so I did this:
import {expo} from '../../app.json'
And in the Component:
<Label>{expo.version}</Label>
No package install needed.
Upvotes: 10
Reputation: 598
I couldn't get the package react-native-device-info
to work. Ran into this issue Might need some gradle and java changes to make it fly.
Anyhow I got what I needed react-native-version-number
. And I am happy with it.
import VersionNumber from 'react-native-version-number';
console.log('appVersion:', VersionNumber.appVersion)
Oh, and as it relates to gleaning the version from package.json
. It feels wrong to me. I mean I had to try it just to see if it would work. I didn't realize that resource would be available at runtime on the device. It does work, but I also have some buildTypes debug foo going on in my build.gradle I learned here. So its nice to be getting the versionName
like 0.1.7-debug
straight from the horses mouth.
Upvotes: 21
Reputation: 15616
I've successfully used the React Native Device Info component to get the build details as specified in the Gradle config.
Once installed you can use:
DeviceInfo.getVersion()
To output the version, and:
DeviceInfo.getBuildNumber()
To get the build number.
Upvotes: 151