# React Native Check Version

[![NPM](https://img.shields.io/npm/v/react-native-check-version.svg?style=flat)](https://npmjs.com/package/react-native-check-version)
[![GitHub license](https://img.shields.io/github/license/includable/react-native-check-version.svg)](https://github.com/includable/react-native-check-version/blob/master/LICENSE)

---

An easy way to check if there's an update available for the current app in the App Store or Google Play.

Note that you need [react-native-device-info](https://github.com/rebeccahughes/react-native-device-info) to be
installed for this library to function as expected, or you need to manually supply the `bundleId` and
`currentVersion` values in the options object.

## Installation

```
yarn add react-native-check-version react-native-device-info
```

## Basic usage

Use the `checkVersion` method to get information:

```js
import { checkVersion } from "react-native-check-version";

const version = await checkVersion();
console.log("Got version info:", version);

if (version.needsUpdate) {
  console.log(`App has a ${version.updateType} update pending.`);
}
```

## API

### Function usage

`checkVersion()` accepts an _optional_ options object, which may contain the following keys:

- string `platform`: platform to check for, defaults to React Native's `Platform.OS`
- string `country`: App Store specific country, defaults to `us`
- string `bundleId`: bundle identifier to check, defaults to the value retrieved using react-native-device-info
- string `currentVersion`: version to check against, defaults to the currently installed version

### Response object

`checkVersion()` returns a Promise, which when resolved will return an object with the following properties:

- string `version`: latest version number of the app
- string `releasedAt`: ISO 8601 release date of that version (when available)
- string `updatedAt`: ISO 8601 last update date of that version (when available)
- string `url`: download URL for the latest version
- string `notes`: release notes for the latest version (when available)
- string `appIcon`: app icon URL (when available)
- string `appName`: app name (when available)
- string `description`: app description (when available)
- boolean `needsUpdate`: whether the latest version number is higher than the currently installed one
- string `updateType`: `major`, `minor` or `patch`, based on how big the difference is between the currently installed
  version and the available version
- string `platform`: resolved platform used for the lookup
- string `bundleId`: resolved bundle ID used for the lookup
- string `country`: resolved country used for the lookup
- string `lastChecked`: ISO 8601 timestamp of the lookup
- Error `error`: error information when the lookup fails

## Changelog

- `v1.1.0`: Use built-in `fetch` rather than Axios library.
- `v1.0.18`: Update headers for Google Play HTTP request.
- `v1.0.14`: Updated Android logic to use new Google Play endpoints.
- `v1.0.13`: Added a try-catch within the main `checkVersion` function to prevent error responses from the HTTP requests
  to throw errors.
- `v1.0.12`: Replaced the [custom backend](https://github.com/flexible-agency/react-native-check-version/issues/30) used
  previously by doing calls directly within the app. Please note Google Play has updated their web pages, making older
  versions not functional.

## Authors

This library is developed by Includable, a creative app development agency.

- Thomas Schoffelen

<br /><br />

---

<div align="center">
	<b>
		<a href="https://includable.com/consultancy?utm_source=react-native-check-version">Get professional support for this package →</a>
	</b>
	<br>
	<sub>
		Custom consulting sessions available for implementation support or feature development.
	</sub>
</div>
