I think you are using cordova fileTransfer directly instead of ionic’s native file transfer wrapper. A simple solution is to switch to ionic’s native wrapper for fileTransfer. The key issue is that fileTransfer does not “align” with the concept of angular zones so the DOM bindings doesn’t get updated (see Progress binding is not updating while uploading). If you use ionic native wrapper, this would work automatically instead of you having to stuff in zone.run()