Native Modules & Permissions

June 02, 2026 1 min read

Apps often need device features. With Expo, rich libraries (camera, location, notifications) work without writing native code; bare RN can add custom native modules.

Example: location with permission

import * as Location from 'expo-location';

const { status } = await Location.requestForegroundPermissionsAsync();
if (status === 'granted') {
  const loc = await Location.getCurrentPositionAsync({});
  console.log(loc.coords);
}
  • Always request permission and handle denial gracefully.
  • Declare usage descriptions (iOS) and permissions (Android) in app config.
  • Expo provides ready packages for camera, notifications, sensors and more.

Summary

Use Expo libraries (or native modules in bare RN) for device features, always requesting permissions and handling denial.