System Requirements | What's New | Known Issues | Blogs | 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.Mac will also require macOS High Sierra. Xamarin.Mac developers should update to macOS High Sierra as soon as possible.


  • Visual Studio 2017 for Mac – Beta updater channel


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


Your feedback is important to us. If there are any problems with this release, check the Xamarin.Mac 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.

Release History

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

  • March 8, 2018 - Xamarin.Mac

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

March 8, 2018 - Xamarin.Mac

Issues Fixed

  • 3303 - [avfoundation] Fix AVAudioUnitComponentManager default .ctor crash
  • 3372 - [linker] Mark all TypeConverter if TypeDescriptor is used
  • 60634 - [runtime] Fixed Assertion failure 'align > 0

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.

What's New in this Release

32-bit Warnings and Stripping

Apple has announced that it will not allow macOS App Store submissions of 32-bit apps (starting January 2018).

In addition 32-bit applications will not run on the version of macOS after High Sierra "without compromises".

Two related changes are included in Xamarin.Mac 4.4:

  • Warnings are included when building 32-bit applications to help prepare developers for the transition.
  • Release mode configurations will, by default, strip unused architectures from bundled native libraries. In addition to reduce application size, this is needed for acceptance into the macOS App Store. This can be disabled by adding "--optimize=-trim-architectures" to the Additional MMP Arguments in the Mac Build project settings.

Registrar Optimizations

This is a set of optimizations that improves the output from the static registrar. This results in:

  • Smaller applications - The linked Xamarin.Mac.dll is 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.

New Bindings

  • CoreSpotlight.framework API have been enabled (available in High Sierra and above);
  • Additional MusicPlayer related types in AudioToolbox.framework;
  • Additional macOS-only types in CoreAudioKit.framework;
  • Additional support for GCMicroGamepad in GameController.framework;
  • Additional support for PHLivePhotoView API in PhotoUI.framework;
  • SLComposeServiceViewController in Social.framework;

API Enhancements

  • 3206 - [webkit] Allow null for DomRange inside WebView.SetSelectedDomRange
  • 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
  • 41292 - [foundation] Add NSBundle.GetLocalizedString returning an NSString
  • 59294 - [coreimage] Enable ImageRepresentation strong dictionary helpers
  • 60740 - [foundation] Add NSDateComponentUndefined constant
  • 60826 - [appkit] Change some NSOpenGL* types to be thread safe

Tooling Enhancements

  • 3200 - [mtouch][mmp] Warn for invalid debug symbols files (e.g. out of sync)
  • 3325 - [mmp] Warn when building 32-bit macOS applications
  • 3367 - [mmp] Add stripping of 32-bit dylibs to work with new App Store restrictions
  • 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
  • The command-line tool mmp now accepts response files for arguments.

Known Issues

Integrated Mono Features/Fixes

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

Additional information can be found in Mono release notes.

API Diff

This document contains a complete list of the API changes since the Xamarin.Mac 4.2 stable release.

Open Source

Xamarin.Mac 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.