react-native-system-uptime
v0.2.0
Published
A React Native TurboModule to get system uptime on iOS and Android devices. Provides methods to retrieve the time since the last restart in milliseconds and microseconds.
Maintainers
Keywords
Readme
react-native-system-uptime
Get system uptime (time since last device boot/restart) from React Native.
This library is implemented as a TurboModule and exposes synchronous methods to read uptime in milliseconds and microseconds.
Features
- Works on iOS and Android
- Synchronous reads (no bridge round-trips)
- Returns uptime in ms and µs
Requirements
- React Native New Architecture enabled (
RCT_NEW_ARCH_ENABLED=1/newArchEnabled=true) - iOS: CocoaPods
If you are not using the New Architecture, this package will not load because it uses TurboModuleRegistry.getEnforcing.
Installation
React Native CLI
yarn add react-native-system-uptimeiOS:
cd ios && pod installExpo
This is a native module. Use it with a custom dev client or a prebuilt app:
npx expo prebuildUsage
Basic
import { getUptimeMs, getUptimeUs } from 'react-native-system-uptime';
const uptimeMs = getUptimeMs();
const uptimeUs = getUptimeUs();
console.log({ uptimeMs, uptimeUs });React component
import * as React from 'react';
import { Text } from 'react-native';
import { getUptimeMs } from 'react-native-system-uptime';
export function UptimeLabel() {
const [uptimeMs, setUptimeMs] = React.useState(() => getUptimeMs());
React.useEffect(() => {
const id = setInterval(() => setUptimeMs(getUptimeMs()), 1000);
return () => clearInterval(id);
}, []);
const uptimeSeconds = Math.floor(uptimeMs / 1000);
return <Text>Uptime: {uptimeSeconds}s</Text>;
}API
All methods are synchronous and return a number.
getUptimeMs(): number
Returns milliseconds since the device booted.
getUptimeUs(): number
Returns microseconds since the device booted.
Error behavior
If the native call fails, the module returns -1.
Implementation notes
- Android: uses
SystemClock.elapsedRealtime() - iOS: computed from
KERN_BOOTTIME(viasysctl) and the current time
Troubleshooting
“TurboModuleRegistry.getEnforcing(...): 'SystemUptime' could not be found”
- Ensure New Architecture is enabled.
- Rebuild the app after installing the package.
- iOS: run
pod install.
Development
- Run the example app:
yarn example - Typecheck:
yarn typecheck - Tests:
yarn test
Contributing
License
MIT
Built with create-react-native-library
