Recap as of Feb 2024:
This is a RN issue presented in the move to the new architecture, and seems to be quite difficult to resolve (https://github.com/facebook/react-native/issues/48311):
- On first load the app will automatically apply the RTL setting of the system, so if your app supports the device's language, you're Ok
- If you need to switch RTL, forceRTL works only after restarting the app ONLY on Android (no matter what you use: @brandingbrand/react-native-app-restart, react-native-restart-app, react-updates, fiction-expo-restart, react-native-restart).
- As for iOS, the user needs to manually close the app, and restart it for the forceRTL to take effect. Ideally, you could show a popup explaining this, and exit the app gracefully hoping the user will re-open it.
- As suggested by @Jakob Schödl, in some situations the style={{direction: 'rtl'}} in your top most View may be a viable workaround, but it doesn't apply very well on some react native navigation components.