The documentation for Deploy states "The Deploy feature only works on binary compatible changes" but what, exactly, does that mean?
General Application Structure
A hybrid mobile application consists of three major components
- The web application
- The native application
- Native plugins
The native application is generated by Cordova. This application provides the interface between the web application and the native OS via a web view.
The native plugins are a bridge between the web application and specific APIs in the native OS.
Changes that are Binary Compatible
So long as only items that have been changed are contained within the "Web App" portion of the Application Architecture, the application is still "binary compatible" and the update can be delivered via the Ionic Appflow deploy service.
- SASS / CSS styling
- HTML layout
- Assets (Images, Icons, static JSON files, etc)
Changes that are not Binary Compatible
If you change any items that are outside of the "Web App" portion of the Application Architecture, the application is no longer "binary compatible" and must be repackaged and resubmitted to the app stores.
For a typical Cordova application, this would be the result of either upgrading a plugin or adding a new plugin. It's important to note that even a minor or patch version upgrade to a given plugin can cause issues with binary compatibility. Thus, it is recommended to use explicit versioning (no ^ or ~ in your plugin versioning) or use a .npmrc file to manage your plugins.