macOS 27 Release Notes: Deprecations, Breaks, and Fixes

macOS 27 Golden Gate shipped on Monday, September 14, 2026 as build 26A428, with its SDK, build 26A425, inside Xcode 27 (27A266a) the same day. Apple’s release notes for it run to 86 headed areas and 272 entries: 68 new features, 173 resolved issues, 18 known issues, and 13 deprecations. This post reads them for the Mac developer: the entries that change what an app does the moment it links against the 27 SDK, the OS-level changes that bite with no rebuild at all, the 13 deprecations checked against the SDK’s own headers and Swift interfaces, and what I could and could not verify on a Mac that still runs 26.6.2. The Golden Gate GA post covers Rosetta and the arm64 installer default; this one covers the rest.123

TL;DR

  • Builds. Device 26A428, SDK 26A425; the SDK number is not the device number, which matters when a bug report asks for one. Apple’s release-notes index and releases feed list no macOS 27.0.1 as of September 26; the newest entries are 27 and the 27.2 beta 2 (26B5091g) of September 21.137
  • Linked-on-27 behavior. Thirteen changes alter what an app does the moment it links against the 27 SDK: non-symbol menu item images hidden, and image-only items losing their exception; NSOpenPanel deriving canChooseFiles from content types; the Layout Orientation menu item moving under Font; titlebar accessories drawing outside their bounds; TextField prompts taking styling; TextRenderer on selectable Text; control modifiers reset inside sheets and popovers; containerRelativeFrame safe-area math; LabeledContent becoming a menu subtitle; TabView in inspectors switching to the tabs style; List accepting drops it used to refuse; newDocument taking an in-memory document; and, for Mac Catalyst, the scene-lifecycle mandate and extended state restoration.2
  • No rebuild needed. Menu item symbol images disappear for any app linked on macOS 26.0 or later, and in SwiftUI and UIKit menus with no SDK condition at all; gesture recognizers become exclusive to the first hit-tested view hierarchy, stuck gestures cancel themselves, the base locationInView: returns NSZeroPoint, launchd is listed as no longer loading quarantined property lists, direct TCC database access ends, cross-team container access is denied without a prompt, XProtect can fence app data, MDM and software-update traffic needs TLS 1.2 with ATS-grade ciphers, and apps a user set to “Open using Rosetta” launch natively.2
  • 13 deprecations, four of them API. PHAssetResource.originalFilename warns only at a 27.0 deployment target (macos(10.15, 27) in the header); FileDocument carries the soft 100000.0 version and never warns; calendar.deleteEvents is gone from the App Intents interface, so the old name fails to compile; DVDPlayback is still in the 27.0 SDK as a stub, headers, and module, contrary to the note, and warns below a 27.0 floor and fails at it. The other nine are OS behavior, apps, formats, or beta artifacts rather than API.23
  • The SDK confirms the new AppKit. NSRefreshController, NSTextSelectionManager, the role properties with NSToolbarItemGroup.Role and NSSegmentedControlRole, preferredImageVisibility, cancellableByScrollGesture, and the NSApplicationPresentationDisableScreenCornerInteractions option are all annotated macos(27.0); the DiskImageKit and NowPlaying frameworks are present; System has its Stat type; StoreKit has assigned and BundledSubscription, and where the notes say assignmentRevoked the interface says assignmentRevocation.3

Which build is which?

Where Build Evidence
Device, macOS 27.0 26A428 Releases feed, Mon, Sep 14, 20261
SDK inside Xcode 27 (27A266a) 26A425 MacOSX27.0.sdk/System/Library/CoreServices/SystemVersion.plist, ProductBuildVersion3
macOS 27.2 beta 2 26B5091g Releases feed, Mon, Sep 21, 20261
macOS 27.0.1 none Not in the releases feed and not in the macOS release-notes index as of September 2617
App Store Connect 27.0 GA SDK accepted “You can now upload apps built with Xcode 27 using the SDK for iOS 27.0, iPadOS 27.0, macOS 27.0, tvOS 27.0, visionOS 27.0, and watchOS 27.0 for the App Store, and for internal and external testing through TestFlight.” September 146

The notes open with two sentences of scope, “The macOS 27 SDK provides support to develop apps for Mac computers running macOS 27 Golden Gate. The SDK comes bundled with Xcode 27, available from the Mac App Store,” and then run through 86 headed areas. Counting the list items under each heading gives 68 new features, 173 resolved issues, 18 known issues, and 13 deprecations. Siri accounts for 26 resolved and six known, SwiftUI for 21 new and 19 resolved, AppKit for eight new and 18 resolved, Core AI for 11 resolved, and StoreKit Testing in Xcode for 10 resolved and two known.2 The iOS 27 notes post covers the iPhone side, where the same SwiftUI entries appear with iOS wording; the Xcode 27 post covers the toolchain.

The 27.2 beta 2 notes, dated September 21, are short: an Xcode code-completion crash listed as fixed, one AppKit deprecation (“The EnablePasteboardPrivacyDeveloperPreview user default has been removed.”), a Notifications known issue on clean installs, a Shortcuts known issue, the two StoreKit Testing known issues below moving to fixed, plus one new StoreKit Testing fix for intro-offer eligibility after SKTestSession.clearTransactions(). Beyond those StoreKit Testing entries, nothing in them touches the 27.0 entries in this post.4

Apple gates behavior changes on the SDK an app links against, so these do nothing to the build you already shipped and all of them fire on the first archive from Xcode 27. Quoting the note for each:2

  • Non-symbol menu item images, and the empty-title exception. The symbol-image change below needs no rebuild; the rebuild takes the rest. “For applications linked on the macOS 27 SDK, both symbol and non-symbol menu item images are now automatically hidden. For applications linked on earlier SDKs, non-symbol images remain automatically visible, preserving compatibility with existing application behavior.” And the other way for old builds: “For applications linked on SDKs prior to macOS 27, NSMenu now automatically shows menu item images if the menu item title and attributed title are both empty. This preserves existing application behavior when the image is the only representation of the menu item content. When linking against the macOS 27 SDK, these images will automatically be hidden.” An image-only item needs preferredImageVisibility set to .visible after the rebuild. My menu images post walks the audit.
  • Open panels derive their choosers. Listed as fixed: “In apps built with the macOS 27.0 SDK, setting allowedContentTypes and treatsFilePackagesAsDirectories on NSOpenPane updates canChooseFiles and canChooseDirectories based on whether the requested types are file or directory types.” (The note misspells the class.) An open panel that set content types and then relied on an explicit canChooseDirectories = true is the shape to retest.
  • Layout Orientation moves. “NSTextView’s menuForEvent: now returns a context menu in which the Layout Orientation menu item, and its submenu, are located inside the Font submenu. Because this change can cause compatibility issues with some shipping applications, it applies only to applications linked on the macOS 27 SDK.” Code that finds that item by walking the menu breaks on the rebuild.
  • Titlebar accessories bleed. “When an app is linked on macOS 27.0 or later, NSTitlebarAccessoryViewController is now allowed to draw outside its bounds by default, supporting effects such as shadows and interactive glass effects. During reveal animations, accessories might be clipped for the duration of the animation or when the accessory is hidden.”
  • TextField prompts take styling. “In apps built with the macOS 27.0 SDK, TextField respects custom font and color styling applied to its prompt. Apply styling to the Text provided to TextField’s prompt parameter at initialization.”
  • Selectable Text gets TextRenderer. “In apps built with the iOS 27.0 and macOS 27.0 SDKs, selectable Text views now support TextRenderer,” and the fixed entry beside it says a custom renderer “now takes effect on a Text view that also has .textSelection(.enabled) applied.”
  • Sheets and popovers. Listed as fixed: “In apps built with the 27.0 SDKs, the controlSize, buttonSizing, buttonRepeatBehavior, menuIndicatorVisibility, and ButtonBorderShape environment values are now reset to their default values in sheets and popovers.” A sheet that inherited .controlSize(.large) from its presenter stops doing so.
  • containerRelativeFrame. Listed as fixed for 27.0 builds: it “incorrectly accounts for safe-area insets on a ScrollView’s non-scrollable axis, causing the calculated scrollable content size to be too small.” The entry’s direction is unclear, since its example describes content extending into the safe area rather than shrinking; retest any containerRelativeFrame inside a ScrollView on the rebuild.
  • Menus grow subtitles. “In apps built with the 27.0 SDKs, a LabeledContent view used inside a Menu maps its value to the platform menu item’s subtitle.”
  • Inspector TabViews. “In apps built with the latest SDKs, the appearance of TabViews in inspectors now matches their appearance in sidebars, and in both contexts automatically uses the new .tabs picker style.”
  • List accepts more drops. “In macOS apps built with the macOS 27 SDK, List accepts drops in two cases that previously didn’t work: drags with compatible transfer representations are accepted into reorderable content even when the .reorderableItem transfer type isn’t present, and a .dropDestination(...) modifier declared on a list item now performs the drop.” A drop handler that never fired on the Mac may start firing.
  • newDocument takes an instance. “In macOS apps built with the macOS 27 SDK, the action retrieved from the \.newDocument environment value accepts an in-memory ReadableDocument produced by an autoclosure. SwiftUI presents a new document window populated with the supplied instance, instead of invoking the document group’s default factory.”
  • Mac Catalyst. Under UIKit deprecations: “Apps built with the latest SDK must adopt the scene-based life cycle or they fail to launch,” the same mandate the scene post covers for iOS, and “When linked on iOS 27, tvOS 27, macCatalyst 27, or visionOS 27 SDKs, you can use UIScene.extendStateRestoration and UIScene.completeStateRestoration to extend state restoration” into the background-to-foreground transition. Separately, and without an SDK gate, “Catalyst apps now behave like AppKit apps when you switch to them with no open windows”; they no longer create a window unless activated from the Dock or Spotlight.

Two entries, one under SwiftUI and one under Swift Charts, belong here even though they key off the compiler rather than the link. The @State macro rewrite “back-deploys to iOS 17 aligned OSes” and changes what compiles under Xcode 27: some declarations that carry an initial value and also assign in init no longer compile, in Apple’s words “some such cases,” and the synthesized private initializer disappears. The @State macro post has the audit. And the Swift Charts entry, listed as fixed, describes a warning and a possible runtime crash: “When your project has a minimum deployment target lower than 27.0, using conditionals inside a Chart closure produces the warning” about _ConditionalContent conformance, “and the app might crash at runtime when that content is loaded.” The quoted warning carries an empty platform name, which reads as a diagnostic from the betas, and I could not reproduce it: a Chart whose closure branches with if between a BarMark and a LineMark type-checked with no diagnostics against the 27.0 SDK at both a 26.0 and a 27.0 deployment target on September 26. The runtime-crash half of the entry is Apple’s text and stays untested here.23

What changes with no rebuild at all?

The other half of the notes describes the operating system, and these apply to the binary you shipped last year.2

  • Menu symbol images go away. AppKit: “By default, NSMenu hides all menu item symbol images” and the change applies “to applications linked on macOS 26.0 and later”, so a build from Xcode 26 loses its symbol images on a 27 machine without a rebuild; preferredImageVisibility on NSMenuItem, API_AVAILABLE(macos(27.0)), is the override, and the “macOS 26.0 only” checkbox in the xib inspector is the second switch. SwiftUI: “By default, SwiftUI now hides all menu item symbol images in most contexts, while non-symbol images remain visible,” with labelStyle(_:) and .titleAndIcon as the keep-it switch, and no SDK condition in the entry. UIKit: “On iPadOS 27.0 and macOS 27.0, the menu bar and context menus present a reduced set of menu item images and do not display images set on menu elements by default,” with preferredImageVisibility on UIMenuElement, and again no SDK condition. The header agrees with the OS reading: the comment on NSMenuItem.image says that “in macOS 27 and later, AppKit determines the visibility of menu item images, and will typically hide images.”3
  • Gestures go exclusive. “Only the initial hit-tested view hierarchy will activate gesture recognizers until all gestures terminate. A new exclusiveGestureBehavior property on NSView allows you to opt-out of this exclusive behavior on a per-view-hierarchy basis. Further, the Info.plist key NSViewGestureRecognizerIsExclusive allows you to opt-out for the entire app.” A companion key, NSGestureRecognizerSuppressesMainMenuActions, lets main-menu actions fire while a gesture is active, and “stuck gestures are automatically cancelled after user input has ended for a few seconds,” with the NSCrashOnStuckGestureTimeout default to make that a crash during debugging. A recognizer on a parent view that used to fire alongside a child’s now waits.
  • Custom recognizers must locate themselves. Listed as fixed: the base NSGestureRecognizer locationInView: “now returns NSZeroPoint and logs an error pointing the developer at the missing override. Custom NSGestureRecognizer subclasses must provide their own locationInView: implementation.” A separate entry describes the diagnostic default NSGestureRecognizerCrashOnMissingOverrides as provided “to help developers find NSGestureRecognizer subclasses that are missing required overrides to ensure that they always reach a terminal state”; whether it also traps a missing locationInView: the notes do not say. And NSClickGestureRecognizers “with a click count greater than 1 will send an action before their multi-click timeout has elapsed.”
  • launchd and quarantine. Listed as fixed: “launchd no longer supports loading launchd property list files with the quarantine extended attribute.” Apple’s fixed entries sometimes describe the old bug and sometimes the new rule; read as a rule, a downloaded agent plist that installed with the attribute stops loading.
  • TCC. Under Deprecations: “Apps can no longer access the local TCC database directly.”
  • Containers and XProtect. Under System Integrity Protection: “Accessing files in other developer teams’ app data containers and app group containers no longer prompts the user for authorization; such accesses are denied by default and can be managed by the user in Privacy & Security settings.” And: “XProtect may now restrict access to app data that is commonly targeted by malicious software.” The Privacy & Security known issue adds that “a process without a bundle ID cannot be granted access to specific app data containers or app group containers owned by other developer teams,” with Full Disk Access as the fallback.
  • TLS for managed traffic. “Starting in 27.0 operating systems, select system processes now enforce stricter network security (TLS) requirements,” naming MDM, DDM, Automated Device Enrollment, profile installation, app installation, and software updates; “Servers must support TLS 1.2 at minimum, using cipher suites and certificates that meet App Transport Security (ATS) requirements.” The TLS audit has the checklist.
  • Rosetta. “On launch, Applications previously set to “Open using Rosetta” by a user will have the application launch natively,” “If Rosetta was previously installed, it is not automatically restored after upgrading to macOS 27.0,” and installer packages with no hostArchitecture “will now default to arm64.” The GA post reproduces the installer default on 26.6.2.
  • Neural Engine in the background. The entry sits on the macOS page and opens “iOS 27 includes Neural Engine improvements for Apple Intelligence capable devices,” so read it as a shared-platform note: “The system now restricts background access to the Neural Engine, similar to GPU usage restrictions,” and “Neural Engine memory usage is now attributed to your app process instead of the system, and appears in the Allocations instrument.” A second Core AI entry says background access “requires the new entitlement: “com.apple.developer.background-tasks.continued-processing.inference”.”
  • Log archives. “Unified Logging System archives generated on 27.0 releases cannot be read on macOS 26.1 or earlier due to an updated archive format. macOS 26.2 or later is required to read these archives.” A support pipeline that opens customer .logarchive bundles on an older Mac needs 26.2 at least.
  • File promises assert. Listed as fixed: receivePromisedFilesAtDestination: “asserts that it is called during -prepareForDragOperation:, -performDragOperation:, or -concludeDragOperation:. If receivePromisedFilesAtDestination:... is called at other times, your application will throw an exception and terminate.” A receiver that deferred the call to a later run-loop turn now terminates.

Which APIs are deprecated in 27.0?

The notes carry 13 entries under Deprecations headings across 11 areas. A deprecation in a release note is a sentence; a deprecation in the SDK is an availability annotation the compiler reads, and the two do not always say the same thing. I checked each entry against the headers and Swift interfaces inside the macOS 27.0 SDK in Xcode 27:23

Note entry What the SDK says
“The originalFilename property on PHAssetResource is incorrectly marked as non-nullable, which misrepresents the property value; a new, nullable filename property is available as a replacement.” API_DEPRECATED("Use filename instead", ios(9, 27), macos(10.15, 27), tvos(10, 27), visionos(1, 27)) in PHAssetResource.h
“The FileDocument protocol is deprecated. Use ReadableDocument for read-only documents or Document for documents that support reading and writing.” @available(macOS, introduced: 11.0, deprecated: 100000.0, message: "Conform your type to Document instead.") on FileDocument: soft, no warning today. ReadableDocument, WritableDocument, and Document are all in the interface
“The calendar.deleteEvents schema has been renamed to calendar.deleteEvent.” deleteEvents appears zero times in the macOS AppIntents interface; deleteEvent once. A rename with no alias is a compile error for anyone on the old name
“The DVDPlayback framework has been removed from the macOS 27 Golden Gate SDK and apps cannot build against it. The framework will be removed in a future macOS release.” Not removed from the SDK on disk: MacOSX27.0.sdk/System/Library/Frameworks/DVDPlayback.framework carries a .tbd exporting 223 distinct _DVD symbols for targets x86_64-macos, arm64e-macos, and arm64e.x1-macos, a Headers folder, and a module map. import DVDPlayback type-checks at a 26.0 deployment target with a “deprecated in macOS 10.15” warning on DVDInitialize(); at a 27.0 target the same call is an error, “unavailable in macOS: No longer supported”. So “cannot build against it” holds at a 27.0 floor through availability, and the stub is still there
“Encrypted HFS+ (CoreStorage) is deprecated and will not be supported in a future version of macOS.” A file-system format, not an API; back up to encrypted APFS
“Apps can no longer access the local TCC database directly.” Not an annotation; a policy the OS enforces
“Apps built with the latest SDK must adopt the scene-based life cycle or they fail to launch.” (UIKit, so Mac Catalyst) A launch failure, not a warning
“If Rosetta was previously installed, it is not automatically restored after upgrading to macOS 27.0.” OS behavior
“Installer packages which specify no hostArchitecture will now default to arm64.” OS behavior; reproduced on 26.6.2 in the GA post
“Intel-based plugins and loaders may not appear in Settings or trigger notifications of their incompatibility. All Intel-based software will no longer be compatible with macOS 28.0, excluding legacy games.” OS behavior; the plugin folders Apple lists are ~/Library/Audio/Plug-Ins/*, ~/Library/Printers/, and ~/Library/ColorPickers/
“AirPort Utility is no longer included with new clean installations of macOS.” An app, not an API
“Meshes compressed using the USDKit export API or usdcrush tool in Beta 1 cannot be decoded by Beta 2, and meshes from Beta 2 cannot be decoded by Beta 1.” A beta-to-beta note that survived into the GA page
“Weather Highlights is currently only available in US English.” Apple files it under Deprecations; it reads as an availability note

One soft deprecation sits outside the Deprecations headings, the same one the iOS notes carry: .roundedBorder is deprecated: 100000.0 on macOS with the message “Use textFieldStyle(.bordered) with textInputBorderShape(.roundedRectangle)”, matching the New Features entry that introduces TextInputBorderShape.3

The hard ones are quieter than they look. The compiler compares a deprecation version against your deployment target, not against the SDK, so macos(10.15, 27) produces a warning only in a target whose minimum macOS is 27.0. I type-checked one file that reads originalFilename, conforms a type to FileDocument, and applies .roundedBorder, against the 27.0 SDK at two targets: at arm64-apple-macos26.0 it compiled with no diagnostics at all, and at arm64-apple-macos27.0 it produced exactly one, 'originalFilename' was deprecated in macOS 27: Use filename instead. FileDocument and .roundedBorder were silent at both.3 A Mac app with a realistic floor will not hear about any of these from the compiler; the grep in the checklist below is the notice.

What is new that changes code you already have?

Pull to refresh on the Mac. “In macOS 27.0, AppKit adds NSRefreshController, providing pull-to-refresh functionality for NSScrollView. You can set it with NSScrollView.refreshController, configure a target or action to handle user-initiated refreshes, and call endRefreshing when the refresh completes or beginRefreshing to start one programmatically.” The class and the refreshController property on NSScrollView are both API_AVAILABLE(macos(27.0)) in the SDK.23

Text selection by gesture. “NSTextSelectionManager provides common text selection interactions (click, drag, shift-click, double/triple-click word/line/paragraph selection) to a NSView with a set of NSGestureRecognizers rather than overriding NSEvent mouse methods. NSTextView now uses NSTextSelectionManager” and “Existing NSTextView subclasses that override mouseDown: continue to work through a binary-compatible fallback path.” The class is macos(27.0).23 Combined with the exclusivity rule above, a custom text view that overrides mouseDown: keeps working, but a gesture recognizer you attached beside it may now yield to the manager’s.

Roles for tabs. NSToolbarItemGroup and NSSegmentedControl gain a role property, API_AVAILABLE(macos(27.0)) on both, with NSToolbarItemGroup.Role (automatic, tabs, valueSelection) and NSSegmentedControlRole; the notes say a tabs role is “read by VoiceOver as “tabs”” with “a distinct visual appearance.” SwiftUI’s TabsPickerStyle is the same idea, and inspectors adopt it automatically on rebuild.23

Hot Corners off. “NSApplication.presentationOptions now includes the .disableScreenCornerInteractions option, which you can use to disable Hot Corners.” In the header it is NSApplicationPresentationDisableScreenCornerInteractions, API_AVAILABLE(macos(27.0)), bit 15 of the options mask, and the comment above it says “.autoHideDock or .hideDock must also be set for this option to take effect.”23

Documents, rewritten. “In apps built with the 27.0 SDKs, the new ReadableDocument and WritableDocument protocols support asynchronous reading and writing, progress reporting, and direct access to document URLs,” with Document combining the two and FileDocument and ReferenceFileDocument “now deprecated.” Three follow-on entries change existing conformances: the makeFileWrapper closure of FileWrapperDocumentWriter “now receives a second argument, previous: FileWrapper?,” and “Existing call sites must update their closures to accept the new parameter”; the read(from:progress:) and write(content:to:previous:progress:) requirements are “declared with @concurrent instead of nonisolated,” so “Conforming types that previously used nonisolated should switch to @concurrent to match”; and URLDocumentConfiguration “no longer conforms to Sendable.” A fileExporter overload exports a collection of WritableDocument values in one dialog. The known issue in the same area: progress “might not be presented.”2

Images, borders, sliders, menus. “AsyncImage now automatically caches downloaded images using HTTP caching protocols,” with URLRequest initializers and View.asyncImageURLSession(_:) to steer it. TextInputBorderShape and textInputBorderShape(_:) arrive with the .bordered style. “On macOS, the Slider implementation no longer uses NSSlider,” and bordered Menu and Picker buttons “no longer use NSPopUpButton in their implementation,” so custom drawing or accessibility code that assumed the AppKit control underneath has nothing to find. GeometryProxy gains concentricCornerRadii and concentricCornerRadii(in:). The data-item alert and confirmationDialog modifiers now reach back to macOS 12.0.2

StoreKit. “Offer code redemption APIs now return a VerificationResult when redemption completes,” Transaction.OwnershipType.assigned and Transaction.RevocationType.assignmentRevoked “support volume purchases,” and “Transaction query methods now additionally return transactions assigned to the Managed Apple Account.” Product.ProductType gains subscription Bundles and Suites with Product.SubscriptionInfo.BundledSubscription, and partnerName and partnerId land in the Advanced Commerce info. The interface carries assigned and BundledSubscription; the revocation case is not spelled the way the note spells it. No file in the SDK contains assignmentRevoked; the StoreKit interface declares public static var assignmentRevocation on Transaction.RevocationType, with the raw value ASSIGNMENT_REVOKE. The case is @available(macOS 26.4, *) with @backDeployed(before: macOS 27.0), so .assignmentRevocation type-checks at a 27.0 target and needs if #available(macOS 26.4, *) below that floor; the note’s name has no member to resolve to at any target. A Mac app that filters transactions by ownership type now sees a third value.23

stat in Swift. “System now provides Swift APIs for the C stat, lstat, fstat, and fstatat system calls,” with a Stat type and FilePath.stat(); the notes also list as fixed a clash where “Custom FilePath or FileDescriptor extensions that make unqualified calls to stat() or stat(_) (without the Darwin. qualification) might conflict with the new Swift stat() instance methods.” public struct Stat is in the System interface.23

Disk images, virtual machines, Gatekeeper. “The new DiskImageKit framework provides Swift APIs for creating and managing standalone and stacked disk images in the Apple Sparse Image Format (ASIF) and raw disk image formats, for use with the Virtualization framework via VZDiskImageStorageDeviceAttachment.” The framework is in the SDK. Virtualization’s vmnet port forwarding “now support[s] port forwarding when communicating over loopback,” and spctl gains a purge command “which will clean up Gatekeeper database entries for apps and executables which are no longer mounted.” The container post is where the disk-image APIs land for anyone scripting VMs.23

Game controllers, video, Metal. “The PlayStation® Access™ controller is now supported on macOS, iPadOS, and iOS.” VTLowLatencySuperResolutionScalerConfiguration “now supports a 1.5x scale factor,” and frame interpolation “supports arbitrary source dimensions up to 1080p.” Two Metal fixes cover clamp-to-edge samplers returning zero, one of them specific to “the Apple 10 GPU family.”2

Foundation. The NSURL fix appears here with the same wording as the iOS notes: “+[NSURL URLWithString:] no longer double-encodes the % of valid percent-escape sequences when encoding other invalid characters.” In the iOS post I showed the fix follows the OS the code runs on, and that a Mac build of the same code still produced the old %2520 result on macOS 26.6.2; expect the new result on 27.0 and the old one on every 26.x.2

Hardware security. “arm64e.x1 introduces additional hardware security and performance instructions, including CPA2 for stronger MIE protection,” on “Mac computers with M6 or later chips”; the DVDPlayback stub’s target list above shows the slice name in the wild. The arm64e.x1 post covers the build setting.23

Known issues to plan around

  • photos.asset entities stop compiling. “Existing entities that conformed to @AppEntity(schema: .photos.asset) in prior releases might no longer compile in the 27 SDKs because new properties were added to the schema in this release.” The workaround is to adopt the properties behind an availability check; the iOS notes post lists the 12 properties the metadata processor demands, and the macOS notes carry the same entry.2
  • Audio schema and Siri. “If you adopt the Audio App Schema domain, you might have trouble playing your content using Siri.” Workaround: “Adopt an IntentValueQuery that takes the AudioSearch input, or index your entities in Spotlight.”2
  • SpotlightSearchTool overflows the on-device model. Without a configuration, “the tool’s description and parameter schema alone exceed the on-device model’s context window before any prompt is added”; the fix is a focused guide such as .focused(.documents).2
  • Files & Folders for bundle-less processes. A process without a bundle ID “cannot be granted access to specific app data containers or app group containers owned by other developer teams,” and Apple’s workaround is Full Disk Access “for the duration of the requirement.” Command-line tools that read another app’s container are the case.2
  • Unsigned Safari extensions. When developing them, “unsigned extensions might not appear until rebuilt when using the “Allow Unsigned Extensions” checkbox.”2
  • StoreKit testing. “Changing the storefront or locale using SKTestSession doesn’t propagate through Storefront.updates,” and failed purchases “might display error dialogs even when dialogsDisabled is set to true.” Both appear as fixed in the 27.2 beta 2 notes, which add a new one: a purchase for a subscription inside a bundle “incorrectly allows the user to unbundle instead of throwing an error.”24
  • Shortcuts. An intent that uses Duration or LPLinkMetadata “might fail” under “Describe a change,” and a UnionValue parameter with two number types shows the option twice; declare one.2
  • Startup Disk from macOS 11. “When a Mac is running macOS 11.0, you might not be able to select the boot volume of macOS 27.0 or later as the startup disk in System Settings.” The workaround is the power-button startup picker.2
  • Siri, six entries. Photo selection after a search, “Ask Siri” appearing where Siri is off, no voice commands for specific photos, incomplete Maps snippets, album-add counts, and non-SF-Symbol entity images not appearing in Siri results for third-party apps. The last one is yours to check if your entities carry custom images.2

What I could not run

This Mac runs macOS 26.6.2, and a 27 machine is still the thing I do not have. Every OS-level behavior in this post is Apple’s text, quoted, and marked as such; nothing above says a macOS 27 system did something because I watched it. What I could run is the SDK: Xcode 27 (27A266a) carries the macOS 27.0 SDK (26A425) on any Mac that can install it, so the header annotations, the Swift interfaces, the framework folders, and the three type-check runs are real, dated September 26. The two places the SDK and the notes disagree, the DVDPlayback stub and the spelling of the revocation case, are reported as what the SDK shows, not as claims about what a 27 machine will do at runtime.3

What I would do this week

  1. Archive once from Xcode 27 and run the linked-on-27 list above against the app before notarizing: menu item images, any open panel that sets content types, any code that walks NSTextView’s context menu, titlebar accessories, and any sheet that inherited control modifiers.2
  2. Test gestures on a 27 machine before your users do: a recognizer on a parent view that used to fire alongside a child’s is now exclusive, and a custom NSGestureRecognizer subclass without locationInView: returns the origin and logs. Watch the console for that error, which Apple says AppKit produces; the NSGestureRecognizerCrashOnMissingOverrides default is described for subclasses that fail to reach a terminal state, and the notes do not say it covers locationInView:.2
  3. Grep for originalFilename, FileDocument, ReferenceFileDocument, .roundedBorder, deleteEvents, and import DVDPlayback; the first warns only at a 27.0 target, the next three are soft and silent, deleteEvents no longer exists, and import DVDPlayback becomes an error the day you raise the floor to 27.0.3
  4. If you ship an agent or daemon through a download, strip the quarantine attribute from the property list at install time, or install it through a path that never carries one; Apple’s notes list launchd on 27 as no longer loading such files.2
  5. If you read another team’s container, remove the code or route it through Full Disk Access; the prompt is gone and the default is denial.2
  6. Log the build number in bug reports from both places: ProcessInfo on the machine and the SDK’s SystemVersion.plist on the build Mac. They differ, 26A428 against 26A425, and a fix that is in one may not be in the other.3

FAQ

When did macOS 27 come out, and what build is it?

Monday, September 14, 2026, as build 26A428, in Apple’s releases feed alongside Xcode 27 and the other 27.0 systems. The SDK inside Xcode 27 identifies itself as 26A425.13

Is macOS 27.0.1 out?

Not as of September 26, 2026. Apple’s macOS release-notes index lists “macOS 27 Golden Gate Release Notes” and “macOS 27.2 Golden Gate Beta 2 Release Notes” and nothing between them, and the releases feed carries no 27.0.1 for any platform. This post will carry a dated note when one ships.17

Where are the macOS 27 release notes?

On Apple’s developer documentation site under macOS Release Notes, one page for the release, headed “macOS 27 Golden Gate Release Notes,” with 86 areas, General first, then Accessory Access through XQuartz. The 27.2 beta notes are a separate, much shorter page.24

What is deprecated in macOS 27?

Thirteen entries under Deprecations headings: PHAssetResource.originalFilename, FileDocument, the calendar.deleteEvents rename, the DVDPlayback framework, Encrypted HFS+, direct TCC database access, the Catalyst scene-lifecycle mandate, three Rosetta entries, AirPort Utility on clean installs, a USDKit beta note, and a Weather Highlights language note. Only the first four are API. originalFilename gains a warning only at a 27.0 deployment target, FileDocument stays silent, deleteEvents fails to compile, and DVDPlayback warns below a 27.0 floor and fails at it.23

Does my app need to be rebuilt for macOS 27?

No, and the rebuild is what changes some of the behavior. The linked-on-27 entries fire only when you archive with the 27 SDK; the gesture, launchd, TCC, container, TLS, and Rosetta changes apply to every binary on a 27 machine whether you rebuild or not, and an app linked on macOS 26.0 or later already loses its menu symbol images there.2

Is DVDPlayback gone from the SDK?

Not from the 27.0 SDK on disk: the framework folder, its .tbd, headers, and module map are all present in Xcode 27’s MacOSX27.0.sdk. Its functions are marked unavailable at a 27.0 deployment target and deprecated since 10.15 below that, so a project with a 27.0 floor cannot build against it, which is what the note says; a project with a lower floor still can, with a warning.3

What changed for Mac Catalyst on macOS 27?

The scene-lifecycle mandate applies, UIScene.extendStateRestoration and completeStateRestoration are available when linked on the macCatalyst 27 SDK, Catalyst apps no longer create a window when switched to without one unless activated from the Dock or Spotlight, UIStepper works in the Mac idiom, and the missing sidebar toolbar buttons are listed as fixed. The Xcode 27.2 beta notes add a caution that the macOS SDK there “incorrectly report[s] 27.1 as a valid deployment target,” and that Catalyst builds at 27.1 or 27.2 “may be unable to use newly introduced API.”25

Sources


  1. Apple, Releases, RSS feed fetched September 26, 2026: “macOS 27.0 (26A428)” dated Monday, September 14, 2026 with “Xcode 27 (27A266a)”; “macOS 27.2 beta 2 (26B5091g)” dated Monday, September 21, 2026; no item for macOS 27.0.1 on any platform through the newest item, “TestFlight 4.4.0” of September 24. ↩↩↩↩↩↩↩

  2. Apple, macOS 27 Golden Gate Release Notes, fetched September 26, 2026. Quoted entries by radar number: AppKit 170477566, 177605020, 180962967, 6938919, 173975472, 176048351, 176395420, 179374305, 179936632, 160867808, 162577742, 163365571; App Intents 176751155, 181800016, 177198033; NSGestureRecognizer 173551081, 175705302, 176396492; NSApplication 168692527; SwiftUI 105893279, 158160386, 158441552, 158441261, 177458781, 167448274, 165913417, 175594929, 170678002, 174628712, 180300890, 180301399, 180302015, 180302075, 178776840, 86580365, 151015350, 173362083, 173990195, 68559433, 78212597, 177185166, 179388848, 170480710, 180301165; UIKit 141837548, 161843040, 170479084; Mac Catalyst 69906818, 57819435, 176879915; Launch Daemons and Agents 166415497; TCC 90775556; System Integrity Protection 161835690, 178668601; Privacy & Security Settings 184660124; Network Security 176055825; Rosetta 168097174, 163213094, 171187112, 176042635; Core AI 174796039, 179282606; Apple Unified Logging System 160567675; PhotoKit 175412725; CoreStorage 175892420; DVDPlayback 179136240; AirPort Utility 158248382; USDKit 177417812; Weather Highlights 164408676; StoreKit 141012819, 156749517, 160501742, 167808780; StoreKit Testing in Xcode 184155259, 184255116; System 160612181, 177911316; Disk Images 177868758; Virtualization 64203273; Gatekeeper 123097648; Game Controller 168071382; VideoToolbox 177635243, 179040806; Metal 172520325, 177318505; Foundation 161588649; Hardware Security 152103975; Swift Charts 174168981; Core Spotlight 183770678; Safari 183044008; Shortcuts 166068090, 168315587; Startup Disk 166640903; Siri 171728298, 176299524, 176812955, 177116121, 177376984, 177984074. Counts (86 areas; 68 new features, 173 resolved issues, 18 known issues, 13 deprecations) are the author’s tally of the list items under each heading. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  3. Author’s inspection of the macOS 27.0 SDK inside Xcode 27 (27A266a) on a Mac running macOS 26.6.2, September 26, 2026: MacOSX27.0.sdk/System/Library/CoreServices/SystemVersion.plist reports ProductBuildVersion 26A425 and ProductVersion 27.0; PHAssetResource.h carries API_DEPRECATED("Use filename instead", ios(9, 27), macos(10.15, 27), tvos(10, 27), visionos(1, 27)) on originalFilename; the arm64e-apple-macos SwiftUI interface carries @available(macOS, introduced: 11.0, deprecated: 100000.0, message: "Conform your type to Document instead.") on FileDocument and deprecated: 100000.0 with the textFieldStyle(.bordered) message on roundedBorder; the macOS AppIntents interface contains deleteEvent once and deleteEvents zero times; DVDPlayback.framework contains DVDPlayback.tbd (223 distinct _DVD symbols; targets x86_64-macos, arm64e-macos, arm64e.x1-macos), Headers/DVDPlayback.h, and Modules/module.modulemap; swiftc -typecheck of a file importing DVDPlayback and calling DVDInitialize() produced “warning: ‘DVDInitialize()’ was deprecated in macOS 10.15: No longer supported” at -target arm64-apple-macos26.0 and “error: ‘DVDInitialize()’ is unavailable in macOS: No longer supported” at -target arm64-apple-macos27.0; swiftc -typecheck of a file reading originalFilename, conforming to FileDocument, and applying .roundedBorder produced no diagnostics at -target arm64-apple-macos26.0 and one warning, “‘originalFilename’ was deprecated in macOS 27: Use filename instead”, at -target arm64-apple-macos27.0; NSRefreshController.h and the NSTextSelectionManager interface are API_AVAILABLE(macos(27.0)); NSToolbarItemGroup.h declares NSToolbarItemGroupRole with NS_SWIFT_NAME(NSToolbarItemGroup.Role) API_AVAILABLE(macos(27.0), ios(27.0)) and the role property API_AVAILABLE(macos(27.0)), as does NSSegmentedControl.h; NSMenuItem.h declares preferredImageVisibility API_AVAILABLE(macos(27.0)); NSGestureRecognizer.h declares cancellableByScrollGesture API_AVAILABLE(macos(27.0)); NSApplication.h declares NSApplicationPresentationDisableScreenCornerInteractions as API_AVAILABLE(macos(27.0)) with the value bit 15 of the mask; the DiskImageKit, NowPlaying, and AccessoryAccess framework folders are present; the System interface declares public struct Stat; swiftc -typecheck of a file whose Chart closure branches with if between a BarMark and a LineMark produced no diagnostics at either -target arm64-apple-macos26.0 or -target arm64-apple-macos27.0; the StoreKit interface contains assigned and BundledSubscription and declares public static var assignmentRevocation on Transaction.RevocationType with the raw value ASSIGNMENT_REVOKE, while no file in the SDK contains the note’s assignmentRevoked; that case is declared @available(iOS 26.4, macOS 26.4, tvOS 26.4, watchOS 26.4, visionOS 26.4, *) with @backDeployed(before: iOS 27.0, macOS 27.0, tvOS 27.0, watchOS 27.0, visionOS 27.0); ReferenceFileDocument carries @available(macOS, introduced: 11.0, deprecated: 100000.0, message: "Use Document protocol instead."); NSScrollView.h declares refreshController API_AVAILABLE(macos(27.0)); NSMenuItem.h’s comment on image reads “in macOS 27 and later, AppKit determines the visibility of menu item images, and will typically hide images”. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  4. Apple, macOS 27.2 Golden Gate Beta 2 Release Notes, fetched September 26, 2026: General 186939138, AppKit 186955507, Notifications 187312007, Shortcuts 187499433, StoreKit Testing in Xcode 183933307, 184155259, 184255116, 186018916, quoted. ↩↩↩

  5. Apple, Xcode 27.2 Beta Release Notes, fetched September 26, 2026, SDK, Known Issues (187160501), quoted. ↩

  6. Apple, App Store Connect release notes, fetched September 26, 2026, September 14, 2026 entry, quoted in full in the table. ↩

  7. Apple, macOS Release Notes, index fetched September 26, 2026: the 27 entries are “macOS 27 Golden Gate Release Notes” and “macOS 27.2 Golden Gate Beta 2 Release Notes”. ↩↩↩

Related Posts

iOS 27.0 Release Notes: Deprecations, Breaks, and Fixes

iOS 27.0 (24A437) shipped September 14. The notes, read for developers: 11 deprecations, what fires when you build with …

35 min read

macOS 27 Golden Gate Is Out: What Changes for Developers

macOS 27 Golden Gate shipped September 14, Apple silicon only: Rosetta's last general release, installers defaulting to …

23 min read

Designing for iPhone Duo: What Moves, Splits, and Stays

Apple's iPhone Duo design guide and three Tech Talks, read as rules: two size classes instead of poses, displacement at …

23 min read