Getting Started | What's New | Known Issues | Blogs | Feedback Open Source


Update to macOS High Sierra The next version of Xcode (9.3) requires macOS High Sierra. In order to support the Xcode 9.3 SDKs, a future version of Xamarin.iOS will also require macOS High Sierra. Xamarin.iOS developers should update to macOS High Sierra as soon as possible.


  • The latest features and API requires Xcode 9.2 and the bundled iOS, tvOS and watchOS SDKs
  • Apple Xcode 9.2 requires a Mac running macOS 10.12.6 (Sierra) or newer

What's New in this Release

Registrar Optimizations

This is a set of optimizations that makes the dynamic registrar removable by the linker (under most circumstances). This results in:

  • Smaller applications - The linked Xamarin.iOS.dll is between 30-50% smaller than before since the information (e.g. custom attributes) needed only at build time can now be removed. This also allows the linker to remove more code than before (since less code is being referenced);
  • Faster application startup - More registration work is being done at build time instead of at runtime. E.g. this removes the need to use (slow) reflection on custom attributes to register types and methods;
  • Reduced memory usage - The avoided work also reduces the memory required for applications. Initial (startup) memory requirement is down 30% for a minimal application and 20% for extensions. This makes it easier to create some type of extensions where iOS imposes memory limits (e.g. 16MB for Today extensions).

Xamarin.Analysis: Use LLVM rule

We added a new rule to our project analysis tool which recommends enabling the LLVM compiler for Release|iPhone configuration. LLVM generates code that is faster to execute at the expense of build time.

As a reminder to run the rules, in Visual Studio for Mac's menu, select Project > Run Code Analysis.

Note: all existing rules are documented here.

API Enhancements

  • 3127 - [watchos][accelerate] Enable Accelerate framework on watchOS
  • 3247 - [generator] Add support for [DesignatedDefaultCtorAttribute] as a type-level attribute
  • 3392 - [scenekit] Adds [NullAllowed] to ISCNSceneRenderer.OverlayScene
  • 34135 - [security] Add new SecKey.GenerateKeyPair overloads
  • 35009 - [foundation] Add NSLinguisticAnalysis category
  • 40520 - [uikit] Add [Advice] on UIImage.FromBundle to mention it was not thread safe before iOS9
  • 41292 - [foundation] Add NSBundle.GetLocalizedString returning an NSString
  • 59294 - [coreimage] Enable ImageRepresentation strong dictionary helpers
  • 60740 - [foundation] Add NSDateComponentUndefined constant

Tooling Enhancements

  • 3200 - [mtouch][mmp] Warn for invalid debug symbols files (e.g. out of sync)
  • 56501 - [mtouch][mmp][bgen] Add support for response files
  • 57531 - [generator] Support the use of [Async] attributes inside [Category]-decorated types
  • 57870 - [generator] Teach generator about [WrapAttribute] on getters and setters
  • 58350 - [generator] Handle sharpie's [RequiresSuper] attribute

Release History

This version Xamarin.iOS correspond to our 15.7 (d15-7) milestone.

  • March 8, 2018 - Xamarin.iOS

You can learn more about how we ship our releases in the Visual Studio 2017 Release Rhythm document.

March 8, 2018 - Xamarin.iOS

This version is included in the Visual Studio 2017 version 15.7 Preview 1 release.

Issues Fixed

  • 3265 - [mtouch] Make sure the xamarin_localized_string_format* functions are available in simlauncher
  • 3372 - [linker] Mark all TypeConverter if TypeDescriptor is used
  • 60088 - [debugger] Fixed Assertion at ../../../../external/mono/mono/mini/debugger-agent.c:4765, conditionarray->len == 1` not met
  • 60771 - [aot] Fixed Attempting to JIT compile method 'System.Runtime.CompilerServices.Unsafe:Add (byte&,int)' while running in aot-only mode

Breaking Changes

  • PR3170: [metalperformanceshaders] Fix MPSImageLanczosScale base class. As part of the fix the MPSImageScale.ScaleTransform property changed to be a nullable value-type. The previous API did not work correctly so this should not affect applications being re-compiled.

Integrated Mono Features/Fixes

Xamarin.iOS uses a customized runtime and base class libraries (BCL) from Mono 5.10 (hash).

Additional information can be found in Mono release notes.

Known Issues

Failure to launch on device

In Visual Studio 15.7 Preview 2, launching an app on device might cause the following error:

error MT1007: Failed to launch the application '' on the device 'mydevice': Session Active Error (error: 0xe800001d). You can still launch the application manually by tapping on it.

Possible workarounds:

  • Launch the app by tapping on it.
  • Reboot the device.

This will be fixed in an upcoming release.

Using an older Xcode version

Using an older Xcode version (than the one mentioned in the above requirements) is often possible, but some features may not be available. Also some limitations might requires workarounds, e.g:

  • The static registrar requires Xcode headers files to build applications, leading to MT0091 or MT4109 errors if API are missing. In most cases enabling the managed linker will help (by removing the API).
  • Bitcode builds (for tvOS and watchOS) can fail submission to the App Store unless an Xcode 9.0+ toolchain is used.

API Diff

The following documents contains a complete list of the API changes since the Xamarin.iOS 11.8 stable release:


Your feedback is important to us. If there are any problems with this release, check the Xamarin.iOS Forums and GitHub Issues for existing issues. If you do not find any matching issue, please feel free to start a new discussion and report an issue.

Open Source

Xamarin.iOS is based on the following open-source repositories:

A big Thank You! to the following folks that helped to make Xamarin.iOS and Xamarin.Mac even better:

Xamarin Workbook

If it's not already installed, install the Xamarin Workbooks app first. The workbook file should download automatically, but if it doesn't, just click to start the workbook download manually.