React Native Bundle Compatibility

React Native seems to be a great platform to create apps that run under both iOS and Android. It's great that I can push a new bundle to my clients without having to submit a new native version for review.

One thing that worries me is new React Native versions. On GitHub I see an average of three new versions per month. New native versions often include important bug fixes, but my question is will they break compatibility with my javascript bundle (the actual React app)?

People sometimes take a while in updating the native app. So will that mean that I will have to maintain a spider-web of bundle versions that match their native app versions?

Something like this will quickly become a mess:

  • bundle 1.0 for native app 1.0 (with React Native 0.37)
  • bundle 1.1 for native app 1.0 (with React Native 0.37)
  • bundle 1.2 for native app 1.0 (with React Native 0.37)
  • bundle 1.0 for native app 1.1 (with React Native 0.37.1)
  • bundle 1.1 for native app 1.1 (with React Native 0.37.1)
  • bundle 1.2 for native app 1.1 (with React Native 0.37.1)
  • bundle 1.1 for native app 1.2 (with React Native 0.38)
  • bundle 1.2 for native app 1.2 (with React Native 0.38)

New versions are common, but they aren't commonly interface breaking. In software development API breaking changes are only normally permitted in major version releases, not minor versions.

Additionally, things aren't just removed. If an api-breaking change is made it will often be marked as "deprecated" and not be REALLY removed until several versions later. This gives you time to make changes to your application in the event of some breaking change.

In short, yes React-native is rapidly getting new releases, but no the interface should not be changed so often that it will be as severe a problem as in your example.

Disclaimer: I'm not a developer on React-native nor a contributor, so I cannot say how strict they are with their versioning policies. I will link to several documents from react-native and react as a source, though.

You can also keep track of the react-native changelog on their github releases page.

React's official documentation links here in reference to their versioning semantics. You can see it linked, and more contribution guidelines here. It follows that react-native will follow similar policies.

Edit: I found react-native's contribution document and it seems that they are in fact a bit less strict about versioning semantics than React itself is. There isn't any link or specific section about versioning, but there is this quote

We will do our best to communicate these changes and version appropriately so you can lock into a specific version if need be

So I think it can be safely assumed that they will (mostly) follow the same guidelines as React itself, especially given that most contributors are from facebook itself.

Comments

Popular posts from this blog

Meaning of `{}` for return expression

Get current scroll position of ScrollView in React Native

flutter websocket connection issue