ionic/cordova emulate vs. Xcode 7

After the App Store automatically updated Xcode to version 7 (without me actually wanting this for now, but hey …) running ionic emulate ios -c -l would not do much anymore:

  • The app would launch but get stuck at the loading screen
  • No console.log() calls would be logged

Fixing it manually

To fix this, update the platforms/ios/projectname/projectname-Info.plist file with the following settings:


Add the snippet above at the end of the file, right before the closing </dict></plist>

Do note that you’ll have to (re)do this every time you run ionic platform add ios (which can happen when working in a team with multiple people)

Fixing it automatically

Alternatively you can use a before_emulate hook to have this change applied automatically before starting the iPhone Simulator.

  1. Put the contents below in ./hooks/before_emulate/
  2. Make the script executable (chmod 755 ./hooks/before_emulate/

Every time you (or one of your teammates) runs ionic emulate ios it will check if the change in platforms/ios/projectname/projectname-Info.plist has already been made or not. If not, the settings are added.


# Allow iPhone Simulator to make Arbitrary Loads
# @ref

XCODEVERSION=`xcodebuild -version | grep Xcode | sed 's/Xcode //g'`
PROJECTNAME=`xmllint --format --xpath "//*[local-name()='widget']/*[local-name()='name'][1]/text()" config.xml`

if [[ "$CORDOVA_PLATFORMS" == "ios" ]]

	if [[ "$XCODEMAINVERSION" > 6 ]]

		echo "iPhone Simulator (XCode $XCODEVERSION) is being used. We might need to adjust $PROJECTNAME-Info.plist to allow Arbitrary Loads!"

		HASSETTING=`$PLISTBUDDY -c "print :NSAppTransportSecurity:NSAllowsArbitraryLoads" "$TARGET" 2>&1`

		if [[ "$HASSETTING" == "true" ]]

			echo " - NSAllowsArbitraryLoads already enabled. Not adjusting $PROJECTNAME-Info.plist"


			echo " - NSAllowsArbitraryLoads not enabled. Adjusting $PROJECTNAME-Info.plist"

			$PLISTBUDDY -c "Add :NSAppTransportSecurity dict" "$TARGET"
			$PLISTBUDDY -c "Add :NSAppTransportSecurity:NSAllowsArbitraryLoads bool YES" "$TARGET"



Did this help you out? Like what you see?
Consider donating.

I don’t run ads on my blog nor do I do this for profit. A donation however would always put a smile on my face though. Thanks!

☕️ Buy me a Coffee ($3)

Published by Bramus!

Bramus is a frontend web developer from Belgium, working as a Chrome Developer Relations Engineer at Google. From the moment he discovered view-source at the age of 14 (way back in 1997), he fell in love with the web and has been tinkering with it ever since (more …)

Join the Conversation

1 Comment

  1. This fixed my issues. I just had to remove ios, remove the platform dir and then add ios like so:
    ionic platform rm ios
    rm -rf ./platforms/ios
    ionic platform add ios
    ionic prepare ios
    ionic emulate ios -c -l

Leave a comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.