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.