Touch on Mac Xcode 27.3 in 2026: what AppKit apps can ship before it is final

Most AppKit touch APIs already build with Xcode 27.2. Only the three system-gesture opt-outs still wait on a later SDK.

Read time
17 min
Word count
2K
Sections
11
FAQs
8
Share
Developer touching a drawing app on a laptop display beside an iPad and stylus, with Apple logo and Xcode icon
On this page · 11 sections
  1. Status check: what Apple has and has not shipped since 29 October
  2. Which touch APIs are already in the macOS 27 SDK
  3. Availability guards: ship touch code without raising your deployment target
  4. Behaviour changes that still compile cleanly
  5. NSIsTouchNative: what the documentation now says
  6. Testing before the 27.3 beta and the hardware arrive
  7. What to check the day the Xcode 27.3 beta lands
  8. Plan by app type
  9. Mac Catalyst and SwiftUI notes for the same window
  10. How eCorpIT can help
  11. References

Summary. You can ship almost all Touch on Mac work today with Xcode 27.2. On 1 November 2026, Apple's Touch on Mac page still lists the Xcode 27.3 beta as coming soon, undated. But the SDK in Xcode 27.2 (build 27B52, released 29 October) already contains exclusiveGestureBehavior, isCancellableByScrollGesture, minimumNumberOfTouchesForScrolling, NSRefreshController and touchCapabilities, all marked macOS 27.0, and we type-checked each one. Only the three system-gesture opt-outs from Apple's tech talk are missing, from that SDK and from Apple's reference pages. Apple's China newsroom says a new iOS developer beta opens on 4 November and iOS 27.3 follows in December, the best timing signal available. One caution: Apple's talk ties Sidecar testing to its latest macOS beta and tools, and no macOS 27.3 beta is public yet. Finish the gesture recogniser migration on the shipping SDK, guard new calls with availability checks, and hold only the system-gesture code.

About this article. This is for teams maintaining Mac apps in AppKit, SwiftUI, Mac Catalyst or a cross-platform framework. On 1 November 2026 we checked Apple's Touch on Mac page, release notes, reference documentation, tech talks, Human Interface Guidelines and product pages, and built a scratch file against the Xcode 27.2 SDK. Xcode 27.3 had not shipped, so anything described as expected is our reading, not Apple's. No vendor paid for inclusion. Researched with AI assistance and reviewed by our editorial team.

Our Touch on Mac launch guide walks through the 8 changes Apple asks for. This follow-up answers a narrower question: what can you build, test and ship with the tools that exist today, and what has to wait for Xcode 27.3?

Status check: what Apple has and has not shipped since 29 October

The table draws on Apple's Touch on Mac and releases pages, the Xcode 27.2 and macOS 27.2 notes, Apple's China newsroom and Apple's US and India product pages. The rest of the Touch on Mac page, including its three tech talks, matches what our launch guide recorded on 29 October.

Item Status on 1 November 2026
Xcode 27.3 beta Coming soon on the Touch on Mac page; not on Apple's releases list
Latest Xcode Xcode 27.2 (27B52), released 29 October, with the macOS 27.2 SDK and Swift 6.4
Device Hub touch input New in 27.2: touches on a Sidecar iPad or a MacBook with Touch reach the remote device as touches, including pinch and rotate
macOS 27.2 notes No touch entries; the one AppKit item removes the EnablePasteboardPrivacyDeveloperPreview default
Group labs 18 November, 9 to 10 a.m. PT (10:30 to 11:30 p.m. IST); 19 November, 6 to 7 p.m. PT (7:30 to 8:30 a.m. IST on 20 November)
iOS 27.3 Features open for testing with the latest iOS developer beta from 4 November (China date); iOS 27.3 release in December
MacBook Pro with PROLED XDR Display Pre-orders open; available from 6 November in the US; Apple India lists 9 November

MacRumors reads Apple's China announcement as the first iOS 27.3 beta, arriving on 3 November in US time. Xcode has followed closely in this cycle: final Xcode 27.2 came three days after final macOS 27.2. So an Xcode 27.3 beta in early November and a final release around December is a fair expectation, nothing more. Apple has not said whether the touch SDK arrives in the first 27.3 beta.

Which touch APIs are already in the macOS 27 SDK

Apple's reference pages give each symbol an availability line, and on 1 November none of the pages below carried a beta label. Any team can test this in minutes. We type-checked a scratch file with Xcode 27.2 against the macOS 27.2 SDK at a macOS 12 deployment target, and ran a selector check on a Mac running macOS 27.0.1. The SDK column is that test. For symbols, yes means behind an availability check.

API Apple's reference page Xcode 27.2 SDK What it does Ship now?
NSView.exclusiveGestureBehavior macOS 27.0; defaults to inherit Compiles Gesture exclusivity for a view and its subviews Yes
NSViewGestureRecognizerIsExclusive Info.plist key, macOS 27.0; defaults to YES No compile step App-wide switch for one-view-at-a-time gestures Yes
NSGestureRecognizer.isCancellableByScrollGesture macOS 27.0; defaults to false Compiles Lets a scroll gesture cancel a control's recogniser Yes
NSScrollView.minimumNumberOfTouchesForScrolling macOS 27.0; defaults to 1 Compiles Two-finger scrolling on drawing and editing canvases Yes
NSRefreshController and NSScrollView.refreshController macOS 27.0 Compiles Pull to refresh in a scroll view Yes
NSScreen.touchCapabilities macOS 27.0 Compiles Reports whether a screen has multi-touch Yes, sparingly
NSIsTouchNative Info.plist key, macOS 27.0; defaults to NO No compile step Stops AppKit injecting mouse-emulation recognisers Only with your own touch pipeline
GestureInputKinds (SwiftUI) 27.0 on every Apple platform Compiles Limits a gesture to direct touch, indirect touch, pencil or pointer Yes
NSWindow.disablesDirectTouchSystemGestures No page found Fails: no such member Per-window opt-out from system touch gestures Not possible yet
UIViewController.prefersDirectTouchSystemGesturesDisabled No page found Fails: nothing to override Same opt-out for Mac Catalyst Not possible yet
View.directTouchSystemGesturesDisabled() No page found Fails: no such member Same opt-out for SwiftUI Not possible yet

Apple's macOS 27 release notes list NSRefreshController, exclusiveGestureBehavior and the touch-count scroll properties as new in that release. The 27.2 headers also mark isTouchScrollingEnabled (defaults to true), maximumNumberOfTouchesForScrolling (0 requires exactly the minimum) and scrollGestureForRelationships as macOS 27.0. The release notes spell that last one differently; use the header's spelling.

Two points could trip you up. Apple's talk describes exclusiveGestureBehavior as coming in the next SDK, but the property is already in the 27.2 headers. And a clean compile is not proof of behaviour. On our Mac, which has no touch display, touchCapabilities returned an empty value for all three screens. We have not seen what it returns on a touch display or over Sidecar. Apple's advice is to write event code that behaves the same for every input source, and to check that property only for a touch-specific option such as capturing a signature.

The system-gesture opt-outs matter most for games, instruments and full-surface canvases. Apple's talk shows all three in a code listing and advises using them only when an interaction is critical and only while that part of the window is on screen. Our launch guide noted on 29 October that the reference pages were missing. They were still missing on 1 November, and NSWindow did not respond to the selector at runtime on macOS 27.0.1. Treat the names as provisional until the SDK confirms them.

Availability guards: ship touch code without raising your deployment target

Xcode 27, 27.1 and 27.2 all support macOS deployment targets from macOS 12 to 27, according to Apple's requirements table. Most Mac apps should keep their current floor and wrap the new calls in an availability check:


            // Compiles with Xcode 27.2 at a macOS 12 deployment target
// and does nothing on macOS 12 to 26.
func configureTouchBehaviour() {
    if #available(macOS 27.0, *) {
        // Drawing canvas: one finger draws, two fingers scroll.
        canvasScrollView.minimumNumberOfTouchesForScrolling = 2

        // Mixer panel: several faders can move at once.
        mixerView.exclusiveGestureBehavior = .notExclusive

        // A button inside a scrolling list yields to scrolling.
        rowButtonRecognizer.isCancellableByScrollGesture = true

        // Dense table: pull to refresh. Call endRefreshing() when done.
        let refresh = NSRefreshController()
        refresh.target = self
        refresh.action = #selector(reloadRows)
        tableScrollView.refreshController = refresh
    }
}
          

Without the check, the compiler rejects these calls at any deployment target below macOS 27.0. When the 27.3 SDK arrives, read the introduced version on every symbol you adopt from it. If it says 27.3 rather than 27.0, the guard has to name macOS 27.3. Info.plist keys need no guard, because they only change behaviour on releases that read them.

We found no App Store deadline pushing a Mac-only app onto this SDK yet: Apple's April 2027 upload rule names the iOS, iPadOS, tvOS, visionOS and watchOS SDKs, not macOS. If you share a codebase with iOS, plan around our April 2027 upload checklist.

Behaviour changes that still compile cleanly

Some changes need no new API, so nothing warns you. Apple ties only the first row below to the macOS 27 SDK, so test the others on macOS 27 whichever SDK you build with.

Change Who it affects What to do
A custom NSGestureRecognizer subclass that does not override location(in:) gets NSZeroPoint back and a console error when built with the macOS 27 SDK Custom recognisers for drawing, timelines or node editors Override location(in:) and return the right point
Xcode adds NSViewGestureRecognizerIsExclusive set to NO to new macOS projects; a project without the key is treated as YES Teams with new and older apps that behave differently under multi-touch Decide the setting deliberately per app
Overriding mouseDown(with:), mouseDragged(with:) or mouseUp(with:) on a control makes AppKit fall back to a tracking loop, even if the override calls super Custom buttons, sliders and steppers Use target-action pairs for tracking events
NSApp.currentEvent no longer reliably returns the event that triggered an action Action methods that read modifier keys Read NSEvent.modifierFlags or pressedMouseButtons, which report the state when you ask; a touch is not a pressed button
Direct touches never travel through the responder chain or event monitors Apps that intercept input with local monitors Use gesture recognisers, and filter touches with gestureRecognizer(_:shouldReceive:)

On the second row, we found the key set to NO in Xcode 27.2's macOS app and document templates, but not in its multiplatform templates, so check any new target.

We would fix the first row first: a zero point produces bugs that look like hit-testing errors. Keep the quotes around the include patterns, or zsh stops with a no-matches error:


            # Swift: custom recognisers, then multi-finger gaps and tracking loops
grep -rnE "class [A-Za-z0-9_]+ *: *NS[A-Za-z]*GestureRecognizer" --include='*.swift' .
grep -rnE "override func mouse(Down|Dragged|Up)|nextEvent\(|trackEvents\(|currentEvent|trackSwipeEvent" --include='*.swift' .

# Objective-C: the same two searches
grep -rnE "@interface [A-Za-z0-9_]+ *: *NS[A-Za-z]*GestureRecognizer" --include='*.h' --include='*.m' --include='*.mm' .
grep -rnE "\(void\) *mouse(Down|Dragged|Up):|nextEventMatchingMask:|trackEventsMatchingMask:|currentEvent|trackSwipeEventWithOptions" --include='*.m' --include='*.mm' .
          

For debugging, Apple offers the defaults NSGestureRecognizerCrashOnMissingOverrides and NSCrashOnStuckGestureTimeout. It counts a recogniser as stuck if it has not reached a terminal state 2 seconds after input stops, which can make the rest of the app look frozen.

NSIsTouchNative: what the documentation now says

NSIsTouchNative is a Boolean Info.plist key, introduced in macOS 27.0, with a default of NO. AppKit normally injects recognisers that turn raw touches into the mouse events a third-party UI framework expects; YES tells it to skip them. Apple's page says most AppKit apps do not need it: it is meant for apps that embed a non-AppKit rendering or input framework with their own touch pipeline.

Apple's gesture recogniser article lists the emulation you give up:

  • A tap becomes a mouse-down followed straight away by a mouse-up.
  • Touching and panning straight away becomes a trackpad scroll.
  • Touching, holding briefly and moving becomes mouseDown(with:), then mouseDragged(with:), and mouseUp(with:) on lift.
  • Touching and holding still becomes rightMouseDown(with:), and rightMouseUp(with:) on lift.
  • Two-finger pinch or rotate becomes the trackpad magnify and rotate gestures.

The emulation covers one or two fingers. A third finger during a pinch is ignored, and anything with three or more fingers needs gesture recognisers.

Your app Set NSIsTouchNative? Reason
Pure AppKit or SwiftUI No Standard controls and recognisers are already touch native
Electron, Flutter or React Native for macOS with no native touch code No The emulation is what makes taps, scrolls and context menus work today
A cross-platform framework that has added direct touch handling Yes, once that handling ships in your build Emulation recognisers would compete with the framework's own
A game engine or Metal canvas with its own touch pipeline Yes, after you test without emulation Your code should own every touch

Setting the key too early is the main risk. On our reading of Apple's list, an Electron or Flutter app that flips it before its framework handles touch loses scrolling and right-click on a touch display.

Testing before the 27.3 beta and the hardware arrive

Apple's article says that with an iPad connected over Sidecar, AppKit routes touch the same way it does on a Mac with a touch display, and it gives no minimum macOS version. Its guidelines also treat Sidecar as a touch route. The talk is narrower: it says the touch features are available over Sidecar with Apple's latest macOS beta and developer tools. On 1 November the newest macOS on Apple's releases page is final 27.2, with no 27.3 beta listed.

We have not tested Sidecar. Try it on macOS 27.2 first: tap a control and pan a canvas with a recogniser attached. If the iPad does not deliver touches to your recognisers, treat the 27.3 beta as a requirement for this path.

Test path What it covers What it misses
Sidecar iPad, newest macOS you can install AppKit touch routing, gesture recognisers, mouse emulation, exclusivity The real panel's size and feel, and the system-gesture opt-outs
MacBook Pro with PROLED XDR Display Everything, including system gestures and target size at arm's length Nothing, but it arrives from 6 November in the US and 9 November in India
Device Hub in Xcode 27.2 via Sidecar or a MacBook with Touch Multi-finger gestures such as pinch and rotate on iOS and iPadOS targets AppKit apps; Device Hub drives simulators and remote devices
Trackpad and keyboard pass Regressions for Mac users without touch Touch behaviour
Xcode 27.3 beta, when posted Any new touch APIs Release builds; plan App Store uploads on the final Xcode

Our Xcode 27 and Swift 6.4 guide has the background on Device Hub. Xcode 27.2 needs a Mac on macOS Tahoe 26.6 or later, so update older build Macs before the beta lands; our macOS 27 IT guide covers the wider upgrade.

A useful order of work for the next few weeks:

  1. Run the searches above and list every custom recogniser, mouse override and tracking loop.
  1. Fix location(in:) on custom recognisers first, because it fails without a compile error.
  1. Move control subclasses to tracking events, add touch-only pan recognisers next to loops you cannot rewrite yet, and expand custom hit targets to the 36 points Apple's design talk sets for touch.
  1. Add the macOS 27.0 properties behind availability guards, then test every window, sheet and popover by touch, trackpad and keyboard.
  1. Bring your two hardest problems to a group lab on 18 or 19 November.

What to check the day the Xcode 27.3 beta lands

  1. Read the Xcode 27.3 and macOS 27.3 release notes for AppKit, SwiftUI and Mac Catalyst touch entries.
  1. Confirm whether the three system-gesture opt-outs now compile, and note the introduced version of each.
  1. Check that the symbols you shipped against still report macOS 27.0.
  1. Look for any touch run destination or simulator support, and any change to Device Hub.
  1. Look for the gesture modernisation skill Apple's talk mentions; we did not find it among the skills bundled with Xcode 27.2.
  1. Re-read Apple's requirements table for macOS host and deployment target changes.
  1. Build on a branch with the beta, keep CI on Xcode 27.2 until the final release, and file Feedback for anything that differs from the talks.

Plan by app type

If your Mac app is Do now with Xcode 27.2 Still waiting on
A drawing, photo, video or 3D tool Recogniser migration, two-finger canvas scrolling, 36-point hit targets System-gesture opt-outs for full-screen canvases
A music or performance app Non-exclusive containers for simultaneous faders and keys System-gesture opt-outs for on-screen instruments
A business app with dense tables and forms Hit targets, hover alternatives, context menus through menu(for:), pull to refresh Nothing we know of
Built on Electron, Flutter or React Native Test emulation behaviour; track your framework's release notes Your framework's own touch handling, then NSIsTouchNative
A Mac Catalyst app allowedTouchTypes and touch-type checks that already exist in UIKit prefersDirectTouchSystemGesturesDisabled
A SwiftUI app GestureInputKinds to separate direct touch from pointer input directTouchSystemGesturesDisabled()

Mac Catalyst and SwiftUI notes for the same window

Two Xcode 27.2 known issues affect Catalyst builds. Projects that use iOS 27.1-specific APIs show compile errors when building for Mac Catalyst; Apple's workaround is #if !targetEnvironment(macCatalyst) around the affected code. Separately, Catalyst builds with a 27.1 or 27.2 deployment target might not be able to use newly introduced API, and several SDKs wrongly offer 27.1 as a target. Leave deployment targets on whole releases until 27.3 settles.

For SwiftUI, a shared gesture can treat .directTouch and .pointer differently on Mac, iPad and iPhone with one code path, because GestureInputKinds is available from 27.0 on every Apple platform. If the same code targets iPhone Duo, our iPhone Duo SDK guide covers its layout APIs.

How eCorpIT can help

eCorpIT is a Gurugram-based technology organisation, founded in 2021, assessed at CMMI Level 5 and MSME certified, with senior-led engineering teams working across AWS, Microsoft and Google platforms. Our iOS and Swift app development practice can audit a Mac app for custom recognisers, mouse overrides and tracking loops, move them to the shipping SDK behind availability guards, and set up a touch test pass. Talk to us at /contact-us/.

Last updated: 1 November 2026.

References

  1. Get ready for Touch on Mac — Apple Developer
  1. Software releases — Apple Developer
  1. Bring Touch to your Mac app, tech talk, code listings and subtitles — Apple Developer
  1. Apple Intelligence is coming to China, 31 October 2026 — Apple Newsroom China
  1. Xcode 27.2 release notes — Apple Developer Documentation
  1. macOS 27.2 Golden Gate release notes — Apple Developer Documentation
  1. MacBook Pro with PROLED XDR Display — Apple
  1. MacBook Pro with PROLED XDR Display — Apple India
  1. Apple Says iOS 27.3 Beta Coming Next Week, 30 October 2026 — MacRumors
  1. exclusiveGestureBehavior — Apple Developer Documentation
  1. NSViewGestureRecognizerIsExclusive — Apple Developer Documentation
  1. isCancellableByScrollGesture — Apple Developer Documentation
  1. minimumNumberOfTouchesForScrolling — Apple Developer Documentation
  1. NSRefreshController — Apple Developer Documentation
  1. touchCapabilities — Apple Developer Documentation
  1. NSIsTouchNative — Apple Developer Documentation
  1. GestureInputKinds — Apple Developer Documentation
  1. macOS 27 Golden Gate release notes — Apple Developer Documentation
  1. NSScrollView — Apple Developer Documentation
  1. Adopting gesture recognizers in your app — Apple Developer Documentation
  1. SDKs and system requirements for Xcode — Apple Developer
  1. Submit your apps and games today — Apple Developer
  1. Handling AppKit gestures — Apple Developer Documentation
  1. Gestures, Human Interface Guidelines — Apple Developer
  1. Design for touch on Mac, tech talk and subtitles — Apple Developer

Frequently asked

Quick answers.

01 Has Apple released the Xcode 27.3 beta for Touch on Mac?
Not as of 1 November 2026. Apple's Touch on Mac page lists it as coming soon, and its releases page shows Xcode 27.2, released on 29 October, as the latest version. Apple says a new iOS developer beta opens on 4 November, but it has not dated Xcode 27.3.
02 Can I ship touch support for my Mac app before Xcode 27.3?
Yes, for nearly all of it. Recogniser migration, tracking events, hit targets, touch scrolling, exclusivity, pull to refresh and touch-screen detection all build with Xcode 27.2 and carry a macOS 27.0 availability line. Guard new calls with availability checks. Only the three system-gesture opt-outs have to wait.
03 Which touch APIs are still missing?
Three on 1 November 2026: disablesDirectTouchSystemGestures on NSWindow, prefersDirectTouchSystemGesturesDisabled on UIViewController and the SwiftUI directTouchSystemGesturesDisabled modifier. Apple's talk shows them, but they have no reference pages and failed to compile in our Xcode 27.2 test. Expecting them in the 27.3 SDK is our reading, unconfirmed.
04 Can I detect a touch screen with Xcode 27.2?
Yes. NSScreen.touchCapabilities is in the Xcode 27.2 SDK, marked macOS 27.0, and it compiled in our test. On a Mac without a touch display it returned no capabilities. Apple advises against branching on it in most cases, so reserve it for a touch-specific option such as signature capture.
05 Should my app set the NSIsTouchNative key?
Only if your app handles touch input itself, typically through a non-AppKit framework or engine. The key defaults to NO and tells AppKit to stop injecting its mouse-emulation recognisers. Apple says most AppKit apps do not need it, and setting it too early can break scrolling and right-click.
06 How can I test touch without the new MacBook Pro?
Connect an iPad with Sidecar. Apple's documentation says AppKit routes its touches as it does on a Mac with a touch display, though Apple's talk ties this to its latest macOS beta and tools. Try macOS 27.2 first, and confirm target sizes and system gestures on real hardware.
07 What changes silently on macOS 27?
Custom NSGestureRecognizer subclasses without a location(in:) override get NSZeroPoint back and log a console error when built with the macOS 27 SDK. Control subclasses that override mouse methods fall back to tracking loops, and NSApp.currentEvent stops reliably matching the triggering event. Search for these patterns first.
08 When will Xcode 27.3 be final?
Apple has not said. Its China newsroom says iOS 27.3 will be released in December 2026, and Xcode 27.2 followed the matching OS release by three days. A December release is a reasonable planning assumption, but treat it as unconfirmed until Apple posts Xcode 27.3 on its releases page.

About the author

Manu Shukla

Founder & Director

Founder of eCorpIT. Hands-on engineer leading senior-only delivery for AI apps, custom software, and cloud systems for global clients.

Subscribe

One engineering note a week. No fluff, no spam.

Senior-architect playbooks on AI agents, mobile apps, cloud, security, data, and marketing — delivered every Wednesday.

Past the reading

Read enough. Let's build something.

A senior architect responds in 24 working hours with scope, indicative cost, and a timeline. NDA before any technical conversation.