# Expo & Native Modules URL: /docs/native/expo Components that require Expo SDK modules or community native modules as additional dependencies. ## Overview Some `@docyrus/ui-native` components depend on **Expo SDK modules** or **community native modules** for platform-specific features like file picking, date/time pickers, geolocation, or glass effects. These components work in Expo managed workflow projects and require the listed packages as additional dependencies. If you're using a **bare React Native** project (without Expo), community native modules will auto-link, but Expo SDK modules require manual installation. ## Expo SDK Modules | Component | Module | Purpose | |-----------|--------|---------| | [`ActionSheet`](/docs/native/expo/action-sheet) | `expo-glass-effect` | iOS Liquid Glass bottom sheet variant (iOS 26+) | | [`DocyFieldUpload`](/docs/native/expo/upload) | `expo-document-picker` | File picking from device storage | ```bash # expo-glass-effect (for ActionSheet glass variant, optional) npx expo install expo-glass-effect # expo-document-picker (for DocyFieldUpload) npx expo install expo-document-picker ``` ## Community Native Modules | Component | Module | Purpose | |-----------|--------|---------| | [`DocyFieldDate`](/docs/native/expo/date) | `@react-native-community/datetimepicker` | Native date/time picker (iOS spinner, Android dialog) | | [`DocyFieldDatetime`](/docs/native/expo/datetime) | `@react-native-community/datetimepicker` | Combined date & time picker | | [`DocyFieldDateRange`](/docs/native/expo/date-range) | `@react-native-community/datetimepicker` | Date range picker with start/end selector | | [`DocyFieldLocationSelect`](/docs/native/expo/location-select) | `@react-native-community/geolocation` + `react-native-geocoding` | Device GPS location + reverse geocoding | | `localize` utilities | `react-native-localize` | Device locale, timezone, 24h clock detection | ```bash # @react-native-community/datetimepicker (for DocyFieldDate, DocyFieldDatetime, DocyFieldDateRange) npx expo install @react-native-community/datetimepicker # @react-native-community/geolocation (for DocyFieldLocationSelect) npx expo install @react-native-community/geolocation # react-native-geocoding (for DocyFieldLocationSelect reverse geocoding) npm install react-native-geocoding # react-native-localize (for enhanced locale detection in localize utilities) npx expo install react-native-localize ``` ## Compatibility | Module | Expo Go | Dev Client | Bare RN | |--------|---------|------------|---------| | `expo-glass-effect` | Yes | Yes | Requires config plugin | | `expo-document-picker` | Yes | Yes | Requires config plugin | | `@react-native-community/datetimepicker` | Yes | Yes | Yes (auto-linked) | | `@react-native-community/geolocation` | No | Yes | Yes (auto-linked) | | `react-native-geocoding` | Yes (JS only) | Yes | Yes | | `react-native-localize` | Yes | Yes | Yes (auto-linked) | All modules listed here are declared as **optional peer dependencies** in `@docyrus/ui-native`. Components gracefully handle missing modules at runtime — they won't crash your app if the module isn't installed, but the related functionality will be unavailable.