Blank screen on ios 8 caused by malfunctioning routing


I have created an ionic app.
The application works with ‘ionic serve’ on chrome & safari, as a native app on android and on iphone with ios 9.
The problem occurs when I test it against ios 8. Both on actual phone and emulator.
At a high level the problem is that the ui-router otherwise doen’t work properly.
Digging into the source code revealed, the transition promise is getting to the ERROR callback. On working environments the promise is getting to the SUCCESS callback.
The promise is at line 40963 on ionic.bundle.js 1.0.1 source code.

I can’t find related issues online. I’ll appreciate any kind of help.

Thanks in advance.

You need to read the error-logs when running your app on iOS 8 and see what’s happen when the routing is triggered.

Im connected using safari remote debug. No error in console besides some missing fonts files

Finally i’ve found the problem. One of the promises was rejected due to an error:
Can’t find variable: performance.

This variable wasn’t used in ionic.bundle.js but, it was a part of the $state resolve section.
Removing it solved the problem! yey!

Hi, I have the same problem. Could you give some more hints to solve this issue.
Thanks in advance!

What helped me to understand the problem was putting a breakpoint on line 22228.
There I inspected the error reason, which mentioned: “Can’t find variable performance”.
While ionic.bundle.js has no use with this variable I searched my project for performance var use.
I found it in my app.js where I initialize the module. When we set $state configuration, we are using the resolve property to test state loading time using performance. performance is a new browser variable, like window and others which wasn’t available on ios8. removing it from the ‘resolve’ solved the issue.
Hope it helps… Let me know if you need further details.


thanks for your tips. I use the $stare configuration as well. But this wasn’t my problem. The hint with safari remote debug did show me some syntax errors in my service.js file only on IOS8. This gave me the behavior as you did have. After clearing this it works now fine on IOS8 and IOS9.