I am a developer and I am in charge of uploading new versions of an application developed with react-native. I am going to release a modification and this modification makes that for previous versions of the application some things stop working and I want the users to update the application to continue using it normally. How can I do it? What are the ways to solve it?
I do not know if you understand the problem, but the truth is I can not find anything about how to fix it, I have seen for example in twitch when there is a new version comes out a recommendation from google play to update it but I do not know how to configure that.
I read that there is a react-native library called "react-native-version-check" and I am planning to implement it, but it does not solve the problem at first, that is, if I upload a new version with this library implemented, the users that do not update to this version will not see in this case a modal to update it either. I really do not understand how it is possible that Google Play or Apple store does not have something for these cases. Maybe they do but my level of experience plays against me.
2
Answers
You have to plan for this situation in advance. Your users should already have code in their apps to handle it.
A simplified way to make this work this is to have:
You can also use a bundle updating service like Expo’s (or CodePush, but that’s going away soon) to add code without needing an update from the store. But again, you need to have your app using this service in already for it to work.
If you can’t use those methods, you’ll have to roll out an update prior to the one that breaks your old functionality with one or the other strategy integrated. Then you can wait until some percentage of users have updated before you release the breaking changes.
The answer from Abe covers most of it – your app needs to plan for this ahead of time and there’s no way to retroactively roll that out. There’s not really much Apple/Android can do.
You can get clever with it by doing some sort of API versioning. For example your new API can require a special header – if the header is missing or has a bad value, you can respond with error messages which make it impossible to use the app and tell the user to upgrade.
For example the
GET /api/user/{id}
could return a user with the name "Please upgrade", and an Avatar with a red X. Or you could return some HTTP status (404) which causes a global popup to appear over your app with a custom message. You are the one who knows how your app works… you have to be creative in how you handle this for legacy users.