diff --git a/packages/sdk/react-native/package.json b/packages/sdk/react-native/package.json index 21d6f0b67..552b7b651 100644 --- a/packages/sdk/react-native/package.json +++ b/packages/sdk/react-native/package.json @@ -31,6 +31,7 @@ "tsw": "yarn tsc --watch", "start": "rimraf dist && yarn tsw", "lint": "eslint . --ext .ts,.tsx", + "lint:fix": "eslint . --ext .ts,.tsx --fix", "prettier": "prettier --write '**/*.@(js|ts|tsx|json|css)' --ignore-path ../../../.prettierignore", "test": "jest", "coverage": "yarn test --coverage", diff --git a/packages/sdk/react-native/src/platform/locale.ts b/packages/sdk/react-native/src/platform/locale.ts index 3fff16028..f14384cc9 100644 --- a/packages/sdk/react-native/src/platform/locale.ts +++ b/packages/sdk/react-native/src/platform/locale.ts @@ -1,12 +1,18 @@ import { NativeModules, Platform } from 'react-native'; /** - * Ripped from: - * https://dev.to/medaimane/localization-and-internationalization-in-react-native-reaching-global-audiences-3acj + * Apps opted into Fabric (the new architecture of React Native) + * may not have access to the SettingsManager.settings.AppleLocale property. + * It is now common to use the `getConstants` method to access these constant properties with Fabric enabled apps. */ -const locale = - Platform.OS === 'ios' - ? NativeModules.SettingsManager?.settings?.AppleLocale // iOS - : NativeModules.I18nManager?.localeIdentifier; +const localeIdentifier = Platform.select({ + ios: () => { + const settings = + NativeModules.SettingsManager?.settings ?? + NativeModules.SettingsManager?.getConstants()?.settings; + return settings?.AppleLocale; + }, + default: () => NativeModules.I18nManager?.localeIdentifier, +}); -export default locale; +export default localeIdentifier();