Update (9/11/2015): A new version of the patch was released by Igor on the Angular team that fixes many issues. Please use it: angular-ios9-uiwebview.patch.js. Make sure to add 'ngIOS9UIWebViewPatch' to your angular modules and use version 1.1.0 or higher of the patch. Also, see our latest post about other issues that need addressing.

A breaking change was introduced into UIWebView for iOS 9 that could cause issues for apps that heavily rely on the semantics of window.location.

We’ve tested a number of widely-used Ionic apps with iOS 9 beta and GM, and issues appear to be isolated to intermittent UI/navigation issues on some apps, along with console errors indicating infinite digest warnings in Angular. Functionality beyond that should not be impacted.

We are still investigating the impact of this change and working with the Angular team to develop a long-term fix. In the meantime, we’ve (the Angular team has) created a patch to stop the digest issue which was causing the console errors. This hot fix can be included in the majority of Ionic and Angular apps (even those running alpha/beta/rc) releases. If you rely on the semantics of window.location or use the $location service heavily, and have noticed issues on iOS 9 GM please try the patch and let us know how it works for you.

If you do notice an issue with your app in iOS 9, add the patch, and submit your apps for review. There is an openradar issue for this that you might be able to reference to expedite an update (of course, no guarantees). There is supposedly a fix in the works from Apple, but it wasn’t released in time for GM.

Thanks to everyone that has helped us with this issue. If this issue has caused an issue in your app, please let us know (and we are sincerely sorry) as we work towards a permanent fix.


Signup for the Ionic Newsletter to get the latest news and updates!

  • Rajat Paharia

    Thanks guys!

    Just tried one of my currently available app store apps with iOS 9 GM Seed (13A340) and there are problems anywhere my code calls $state.go: you sometimes get knocked back into the default state instead of where you’re supposed to go. Switching tabs also sometimes doesn’t work. There may be other problems, but those are the most immediately noticeable.

    On an unrelated topic, my app seems to be a lot jankier too – tab switching, collection-repeat scrolling… I <3 Progress 🙂

    Just submitted another app to the store this morning, so will have to unsubmit that and try your patch. Thank you for all the work and effort you're putting into this.

    (btw I'm still using beta-14)

    • Matt Stueve

      I, too, am on beta-14 and have $state.go issues all over the place after testing my app with iOS 9.1 beta (13B5110e). Please let me know if you find a solution

      • Rajat Paharia

        I haven’t tried anything yet, but will later today. In the meantime I’m keeping an eye on these 2 github issues: https://github.com/angular/angular.js/issues/12241 and https://github.com/driftyco/ionic/issues/4082#issuecomment-139338455

        • Matt Stueve

          I just implemented the patch and pretty much everything seems to be back to normal. Transitions are working correctly and the general jankiness was likely caused by the digest issue, which is now also fixed.

          • Rajat Paharia

            Great! I accidentally downloaded 9.1 beta onto my device and Xcode 7 won’t talk to it, so am in the process of unborking things, and then will give it a shot.

          • yesimahuman

            Hey guys, please try this new version from Igor on the Angular team. It fixes many issues including navigation: http://code.ionicframework.com/patch/ios9-$browser-patch.js

          • Rajat Paharia

            Thanks for all the hard work on this Max, Igor, Perry, and everyone else!

          • Marcel

            which patch did u implemented ?

  • bmidget

    Just installed iOS 9 GM and noticed that all my transitions are wonky and all over the place. Where transitions used to be smooth, they are now not smooth and even jump back for a frame or two to the previous state. Real wonky.

    I haven’t been able yet to dive into why this may be the case, but know the issue needs to be brought up.

    (This is using ionic 1.1)

  • http://KidsInTouch.com Justin Noel

    As usual, the Ionic team to the rescue. Just tested in iOS 9 with Xcode 7 GM. App worked just fine but got all the infinite digest errors. Applied the patch and all is well.

    Thanks so much!

  • uday kiran

    The Patch didn’t work for my app. Error is:

    Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
    Watchers fired in the last 5 iterations: []

    Ionic version is: 1.0.0-beta.14.

    Please help me here.

  • Warren

    Same here patch not working.

    Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
    Watchers fired in the last 5 iterations: []

    Error received off of ui-sref. $state.go seems to be working.

    Ionic vrs 1.1

    IOS 9.0 GM

    • uday kiran

      My angular version was 1.3.6.
      the below patch worked for me. Plz check.

      • Warren

        Thanks that works but there is one small issue left over.

        After you navigate to a child view that has a data entry field in it, place the cursor into the field then select the back button to return to the parent view. You will notice that the child view moves to the parent then back again before returning to the parent finally. This does not happen as long as the cursor is not in a data entry field.

        Guess I can live with this until they get things polished.

      • Warren

        Sorry I forgot to mention that the view jumping seems only to be related to the emulator, devices seem OK.

  • Chris

    Is there any plan for a urgent hotfix version of ionic to resolve all the iOS 9 issues like the not working radio buttons?

  • Mike Hartington

    Please see our updated post for more finalized information.


  • Ryan Macdonald

    Thank you for so much for posting the patch! Saved me hours more of debugging and coding.

  • Fraser Hart

    Thank you. This will hopefully help me solve the flicker and infinite digest errors I’m experiencing on iOS 9……… Excuse the ignorance but what’s the preferred way to install this patch in my Ionic app? Is there a specific location I should be putting it. Do I need to reference it in my index.html

  • lalala

    I added the patch. All the href in my html are broken now…… Why did Apple do this man!!!!

    • lalala

      It is something like href=”#/home/detail”. Can you help?

  • airnold

    now my application, built ios device, not working $state.go.. this module fixed this problem ??

  • Fedor Usakov

    I applied the patch, but now all basic samples are not working. All list items and side menu are dead in default sidemeny sample. What should I do to make it work? And of course get rid of the “10 $digest() iterations reached. Aborting!”? Please help!

  • siddiqakbar

    popover does wierd things. Goes to a previous screen.
    Any one experienced problems with that?

    • Remembler


    • Stevie Starosciak

      You ever figure out a solution to this? Mine does this as well and I’m not entirely sure why. It only happens on ios

      • Stevie Starosciak

        Also, one thing that I did was replace all in the to and it seemed to fix the issue:

        • siddiqakbar

          I changed all my popovers to action sheets.
          In a later version I will change it back when popover are stable

  • Pedro Justo

    After install the patch I get this error in xcode for all phones. iPads are OK


    int main(int argc, char* argv[])
    @autoreleasepool {
    int retVal = UIApplicationMain(argc, argv, nil, @”AppDelegate”);
    return retVal;

    With error: Thread 1:signal SIGABRT on int retVal……

  • Ciul

    Hi there,

    I’m experimenting other issue with ios 9.1, using same app with ios 8.4 works correctly.

    The $http calls execute with error status 0, and it doesn’t give me information about what could be the problem.

    I repeat, testing with 9.1 the requests (POST) the problem happens but with 8.4 don’t. Tested on iphone 4, 5 and 5c.


  • Sonu Kapoor

    After upgrading my device to 9.1. I am receiving the following error: Can’t find variable cordova. How do I fix this?

  • sangeeta waiba

    I was having a navigation problem with ios 9.1. But after using this patch, my problem got solved. Thank you so much for posting this patch.

    • Anil Kumar

      Hi I installed the patch, But I am still facing the issue when I am using $state in my application ,
      Can you please suggest any solution to use instead of $state with passing parameters from one view to another view
      Please post your answer how you fixed in your project, It will be so helpful for me

      • sangeeta waiba

        I used $state for navigation and with the installation of patch, it works perfectly fine.
        Can you please tell me what exact issue are you facing using $state so that I can suggest?

        • Anil Kumar

          I want to pass some parameters from one view to another view by using $state

          • sangeeta waiba

            Suppose if you want to pass userId then you can use
            $state.go(‘app.newstate’, {‘id’:userId});

            Then you can get it in your newstate as
            userid: $stateParams.id

            I hope that this solves your problem.

          • Anil Kumar

            Hey hi,
            I already implemented the same code in my controller of one view as
            $state.go(“tab.sequence”, { seqId: $scope.CurSeqId });
            and in another view am receiving the values in $stateParams..
            It is working perfectly in android but in ios it is not working….

            Do you know any other way to implement the above logic

            Anil Kumar B

          • sangeeta waiba

            sorry to say that I cant find any other way…Good luck
            Hope that you can solve your problem soon

  • Álvaro Herrero

    The patch was useful to me too. Is it still necessary with the 1.2 relase?

  • Anil Kumar

    Hi I installed the patch, But I am still facing the issue when I am using $state in my application ,
    Can you please suggest any solution to use instead of $state with passing parameters from one view to another view

  • Raghavendra Kumar D

    Is this patch now included in the framework or does it still need to be added as a patch?