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
Examples of changes that do require a new app store release:
- Cordova plugin updates (even a minor or patch version update)
- Modifying the
config.xmlfile (which governs the native binary configuration)
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.