Cordova, Hot Code Push, and Versions

I have an app that I started developing a year and a half ago. At this point it has been on the android and iOS marketplaces for over a year. I used IronRouter and Blaze because at the time, those seemed like solid choices. I’ve been working on a separate project that uses flow-router and react, and I really like the structure of that app and would like to refactor my Blaze app. Since Arunoda has left the community, I’m thinking I should go with react and react-router instead of flow-router.

When I add these new packages to my cordova app and modify the routing, my code will cease to be backwards compatible, which is something I have yet to deal with. Up until now it has just been package updates, and the app would run on different versions of the server with the new code. What steps am I supposed to take to ensure that the new code doesn’t get pushed to users with an older binary package that doesn’t have the necessary dependencies?

When the server performs a hot code push, will it recognize that dependencies are incompatible and refuse to push the new code to that device? Can I manually rollback to an older version if there is an error or if conditions are not met? How have other people gone about mitigating these problems?

After some more research, it looks like meteor uses an object called cordovaCompatibilityVersions to determine if a new version is compatible with an old binary. When running in development with a mobile platform declared I accessed this information by downloading the manifest in the following way.

curl localhost:3000/__cordova/manifest.json

Does anyone have in depth experience with what changes will cause this hash to be incompatible? I imagine any changes to cordova plugins, but is that all?

Does meteor have other objects it checks for compatibility between server versions? I just updated my apps dev branch from Meteor 1.3.1 -> 1.4 and was wondering if any of those changes will cause problems with users who dont update their apps? I currently have a production app running on 1.3.1 and would like to upgrade. At first glance, it doesnt look like the upgrade broke anything…

Does meteor ship all of the NPM & atmosphere packages (that are not cordova plugins) with each hot code push?

Any information about your experience here would be great. I’m just trying to have the smoothest transition possible.

So said I can’t find any progress. Anyone?