Skip to content

Repository files navigation

react-native-barometer

Provides barometric and altitude information for React Native apps on iOS and Android.

New Architecture only (v2.0.0+)
This library supports only the React Native New Architecture (Turbo Modules). It does not work with the legacy bridge.

Requirements (v2.0.0+)

  • React Native>=0.84 <0.86 with React 19
  • New Architecture only — not compatible with the legacy bridge
  • iOS 15.1+
  • Android API 24+ (minSdk 24)

Legacy bridge / React Native 0.59–0.83 apps should stay on v1.x.

Getting started

yarn add react-native-barometer
# or
npm install react-native-barometer --save

Installation

From React Native 0.60 onward, autolinking handles native setup.

iOS: run pod install in your ios directory after installing the package. The library ships a podspec (react-native-barometer.podspec); you do not need to add a manual pod line when using autolinking.

Add Core Motion usage text to your app’s Info.plist (required for CMAltimeter on iOS):

<key>NSMotionUsageDescription</key>
<string>Your explanation of why the app reads barometric pressure and altitude.</string>

Android: no extra steps beyond a clean rebuild.

Example app

This repository includes an example app under example/ (React Native 0.85, New Architecture):

cd example
npm install
cd ios && bundle exec pod install &&cd ..
npx react-native run-ios
# or
npx react-native run-android

Usage

Call isSupported() before watch() on devices where a barometer may be absent.

Example

importBarometer,{STANDARD_PRESSURE_HPA}from'react-native-barometer';constsupported=awaitBarometer.isSupported();if(supported){constwatchId=Barometer.watch(payload=>{console.log(payload.pressure,payload.relativeAltitude);});}

Payload fields

FieldDescription
timestampSample time (ms since Unix epoch)
pressureFiltered air pressure in hPa (EMA-smoothed on both platforms)
altitudeASLAltitude in metres from the standard atmosphere (1013.25 hPa)
altitudeAltitude in metres using setLocalPressure() as sea-level reference
relativeAltitudeChange since observing started — Core Motion on iOS; computed baseline on Android
verticalSpeedRate of change of altitudeASL over the emit interval (m/s), zero on the first sample

setInterval(ms) is clamped to a minimum of 50 ms. setLocalPressure(hPa) ignores non-positive values and falls back to 1013.25 hPa.

TypeScript types are available via index.d.ts (BarometerPayload, etc.).

Methods

Summary


Details

isSupported()

Before using, check to see if barometric updates are supported on the device.

constisSupported=awaitBarometer.isSupported();

setInterval()

Optionally request an update interval in ms. The default update rate is (approx) 200ms, i.e. 5Hz.

// request updates once every secondBarometer.setInterval(1000);

setLocalPressure()

The altitude event contains two altitudes. The first is the standard atmosphere altitude based upon the standard atmospheric pressure of 1013.25hPa. The second is an altitude based upon a pressure that you can configure. You typically use this to calibrate the altitude to a reference altitude, for example the field elevation of an airport.

// set the local pressure to 985hPaBarometer.setLocalPressure(985);

watch()

Barometer.watch(success);

Invokes the success callback whenever the pressure or altitude changes. The payload delivered via the callback is defined in the example below.

Returns a watchId (number).

Parameters:

NameTypeRequiredDescription
successfunctionYesInvoked at a default interval of 5hz. This can be changed by using the setInterval method.

Example:

constwatchId=Barometer.watch(payload=>{/* payload.timestamp - sample time in ms referenced to January 1, 1970 UTC payload.pressure - current air pressure in hPa payload.altitudeASL - altitude in metres based upon standard atmosphere payload.altitude - altitude in metres based upon the local pressure payload.relativeAltitude - change since observing started (see table above). payload.verticalSpeed - change in altitudeASL over the emit interval (m/s) */});

clearWatch()

Barometer.clearWatch(watchID);

Parameters:

NameTypeRequiredDescription
watchIDnumberYesId as returned by watch().

stopObserving()

Barometer.stopObserving();

Stops observing for all barometric updates.

In addition, it removes all listeners previously registered.

Note that this method does nothing if the Barometer.watch(successCallback) method has not previously been called.

About

Provides barometric and altitude information for React-native apps for both IOS and Android.

Resources

Stars

6 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages