I’m using “expo-localization” & “i18n-js” to localize my app as ‘Arabic RTL’ & ‘English’, in the last 3 years I used to restart the whole app to force RTL using “expo-updates.reloadAsync()” but now I got this message:
How I can test it ?!!
I’m using “expo-localization” & “i18n-js” to localize my app as ‘Arabic RTL’ & ‘English’, in the last 3 years I used to restart the whole app to force RTL using “expo-updates.reloadAsync()” but now I got this message:
How I can test it ?!!
Hi @afj_951
hmmm… I see that error is coming from here:
The latest change was made in this PR
The PR says (amongst other things):
If an app is using
expo-updates
and is built with theEX_UPDATES_NATIVE_DEBUG
environment variable set to allow native debugging, updates work correctly on the native side, and download and run automatically as expected. However, some methods in the Updates API (checkForUpdateAsync()
,fetchUpdateAsync()
,reloadAsync()
) are currently implemented to only work in release builds.
So you might be able to workaround this by setting the EX_UPDATES_NATIVE_DEBUG
environment variable when creating the development build. I’m not sure what other effects this environment variable might cause.
Recent versions of React Native also have a built-in reload
function. This apparently only works in development mode. I haven’t tried it. Maybe see if it works for you.
If all else fails, you can probably use patch-package
to disable the code in expo-updates
that throws the exception.
Hi @afj_951
The Expo developers believe that the following change would fix the problem:
% cat patches/expo-updates+0.18.13.patch
diff --git a/node_modules/expo-updates/build/Updates.js b/node_modules/expo-updates/build/Updates.js
index 30ec0f1..5844505 100644
--- a/node_modules/expo-updates/build/Updates.js
+++ b/node_modules/expo-updates/build/Updates.js
@@ -114,7 +114,7 @@ export async function reloadAsync() {
if (!ExpoUpdates.reload) {
throw new UnavailabilityError('Updates', 'reloadAsync');
}
- if (!ExpoUpdates?.nativeDebug && (__DEV__ || isUsingExpoDevelopmentClient)) {
+ if (!ExpoUpdates?.nativeDebug && (__DEV__ && !isUsingExpoDevelopmentClient)) {
throw new CodedError('ERR_UPDATES_DISABLED', `You cannot use the Updates module in development mode in a production app. ${manualUpdatesInstructions}`);
}
await ExpoUpdates.reload();
Could you give that a try, using patch-package
Assuming it works for you, they will make the change.
I will try it and respond to you
Thank you so much.
It is working very well, thank you.
Should I open a PR in expo-updates repo ?
I think rather post a comment here to say that the fix works for you:
[expo-updates] Make Updates API work with native debug #21253
Mention @douglowder