UIDefines.h breaking tvOS on 26 in Tahoe

We have an app that optionally includes UIKit, and in Xcode 16.3 it builds just fine, but with Xcode 26 it fails because it cannot find UIDefines.h.

Error: /Applications/Xcode-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS26.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKitDefines.h:10:9: fatal error: 'UIUtilities/UIDefines.h' file not found

I looked for it, and inside of Xcode 26 there is a new folder(SubFrameworks) inside of the TV Simulator that does not exist in 18 and it only has one thing in that folder and it's UIUtilities.framework.

Reference path: /Applications/Xcode-beta.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator.sdk/System/Library/SubFrameworks/UIUtilities.framework/

Not sure how to get around this except to put in a bunch of new ifdefines maybe to deal with it, but it is weird that the subframeworks file is part of the issue. Anyone have any ideas besides copying the files over (doesn't work anyway)?

Could you provide more information about what the failing compiler invocation looks like? The Xcode 26 compilers should automatically find UIUtilities.framework if there is an entry for the SDK, with either -sdk for Swift compilations or -isysroot for Clang compilations. Another thing to inspect is your search path options. For example, if you disable implicit system search paths, you would need to add $(SDKROOT)/System/Library/SubFrameworks as a search path.

When inspecting the compiler invocations in Xcode, it may be useful to use the following build settings to get the full invocations in the report navigator.

CLANG_USE_RESPONSE_FILE=NO USE_SWIFT_RESPONSE_FILE=NO EMIT_FRONTEND_COMMAND_LINES=YES

@Engineer, Hello, I'm experiencing the same issue but with an iOS application being built with Xcode 26 beta 5.

I think I’ve found the root cause of this issue in our scenario.

In Xcode 26 beta / iOS 18.4 SDK, UIKit now ships with a subframework called UIUtilities. In our project we define a local Swift package named UIUtilities, and it seems to shadow the system subframework. This causes the compiler to try to resolve UIKit’s internal #import <UIUtilities/UIDefines.h> against our local module instead of the system one. Since our module doesn’t have that header, the build fails with fatal error: 'UIUtilities/UIDefines.h' file not found.

This worked fine in previous Xcode versions (since the subframework didn’t exist), so existing projects can now fail to build without any code changes. Renaming the local UIUtilities package (e.g., to UIUtilities2) is a valid workaround and solves the issue, but it shouldn’t be necessary for compatibility.

I've also filed a feedback FB19462779 with a minimal sample project that reproduces the issue.

UIDefines.h breaking tvOS on 26 in Tahoe
 
 
Q