The iPad Pro on iPadOS 26 now operates on the same class of silicon as Apple’s entry-level Macs. It ships with M-series processors, 8GB of unified memory, support for multiple resizable windows, a menu bar, and proper external display connections. The device already has the foundation required for professional software development. The only gap is the absence of Xcode.
Making the full version of Xcode available on iPad Pro would not take away from the Mac. Large and resource-intensive projects will still require the power of MacBook Pro and Mac Studio. What it would do is allow smaller and mid-sized projects to be developed directly on iPad Pro, which the hardware is fully capable of handling. That dynamic is complementary, not cannibalizing. Developers would continue to buy Macs but would also buy iPad Pros for portability and flexibility.
The revenue upside is clear. Lowering the entry barrier means more developers enrolling in the Apple Developer Program at $99 per year, creating predictable recurring subscription income. A wider developer base leads to more apps reaching the App Store. Even if many are small, Apple benefits from every transaction through its revenue share. This strengthens the services business, which already delivers the company’s highest margins.
There is also a direct hardware impact. Once Xcode is available, iPad Pro will be recognized as a legitimate professional development device. That drives more unit sales of a high-margin product line and increases attachment rates for accessories like the Magic Keyboard, Apple Pencil, and external monitors. Instead of eroding Mac sales, the effect is expansion. Developers will own both devices.
The case is straightforward. The hardware is ready. The operating system is ready. Enabling full Xcode on iPad Pro would expand the developer funnel, grow recurring subscription revenue, increase App Store volume, and boost high-margin hardware and accessory sales. It is a decision that benefits developers, strengthens the ecosystem, and maximizes profit.
Xcode
RSS for tagBuild, test, and submit your app using Xcode, Apple's integrated development environment.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Touch Bar items: Jump to destination and Ident missing and Customise Touch Bar unavailable in Xcode 26.0 (17A324).
Topic:
Developer Tools & Services
SubTopic:
Xcode
Tab titles are truncated and unreadable when many tabs are open.
The old scrolling behaviour in Xcode 16.4 was better.
Xcode 26.0
Xcode 16.4
Topic:
Developer Tools & Services
SubTopic:
Xcode
Hello all,
I saw the update of xcode26 on the App store, and from the compatibility information, I saw that xcode26 supports macos15.6 and higher.
I'm not sure if xcode26 can be installed on macos 15.
I can't install xcode26 on macOS 15.7.
Hello Apple Developer Community,
I'm experiencing an issue with file download functionality in the iOS Simulator after updating to Xcode 26 RC (Build 17A321).
Issue Description:
When attempting to download files in the iOS Simulator via Safari, the download prompt appears correctly, but after tapping the 'Download' button, files are not being saved to the Files app. The download appears to do nothing with no error message, no indication of failure, but the file simply doesn't appear in Downloads or anywhere in the Files app.
Environment:
Xcode Version: 26.0 RC (17A321)
iOS Simulator Version: 26.0 RC (23A339)
Device Simulated: iPhone Air
Steps to Reproduce:
Open Safari in the iOS Simulator
Navigate to a downloadable file (PDF, ZIP, etc.)
Tap to initiate download
Download prompt appears as expected
Tap the 'Download' button
Check the Files app → Downloads folder (empty)
Expected Behavior:
Files should download normally as they do on physical devices and as they did in previous Xcode versions.
Actual Behavior:
The download prompt dismisses after tapping 'Download', but no file appears in the Files app. No error message is shown, and there's no indication that the download failed, it simply appears as if nothing happened.
Additional Information:
Downloads work correctly on physical device (iOS 26 RC 23A340)
This functionality worked properly in previous Xcode versions
I have created a bug report to Feedback assistant: FB20190927
Thanks in advance for any assistance.
Hello,
I’m experiencing an issue with StoreKit 2 when passing a new appAccountToken for each purchase request.
Case-ID: 15948169 (for DTS reference)
Description of the Problem
When initiating a purchase, I generate a new UUID to use as the appAccountToken:
let serverTransactionId = UUID()
let options: Set<Product.PurchaseOption> = [
.appAccountToken(serverTransactionId)
]
let result = try await product.purchase(options: options)
Expected Behavior:
Each new purchase should return the updated appAccountToken that I pass into the purchase options.
Actual Behavior:
The payload response after success always contains the same appAccountToken from the very first transaction. It ignores subsequent UUIDs I pass and keeps reusing the original one.
This causes issues because the same identifier is being reused across multiple transactions, making it difficult to map purchases to the correct user session.
Steps to Reproduce
Generate a fresh UUID using UUID().
Pass it as .appAccountToken when calling purchase().
Complete the transaction in the sandbox environment.
Inspect the payload response → The appAccountToken value is always the same as the first one used, not the newly provided one.
Additional Info
I do have a focused test project that reproduces this issue.
The issue appears specific to appAccountToken persistence across multiple transactions.
Has anyone else experienced this behavior with StoreKit 2? Is this expected (Apple caching the first token) or could this be a bug?
Topic:
Developer Tools & Services
SubTopic:
Xcode
Tags:
Subscriptions
StoreKit
In-App Purchase
App Store Receipts
After updating to Xcode 26 RC on Tahoe 26 RC and iOS 26 RC (and now final version of both Tahoe and iOS).
I'm still unable to debug on device.
I've tried rebooting, resetting settings, cleaning trusted computers. I ran out of ideas, I was expecting that final versions would fix this but they didn't.
We are unable to access images from an Asset catalog that is part of a dynamic framework that is mergeable, on Debug configuration, when running on an actual device under certain circumstances when using Xcode 16.4 and targeting iOS.
If anywhere in the app we call the Bundle(identifier:) initializer for whatever ID, subsequent calls to UIImage(named:in:with:) for images in the framework's bundle return nil. We have verified that the bundle (path) and the name of image & assets target memberships are correct, and that Assets.car has the images.
Additionally the only way to make UIImage(named:in:with:) work is to use Bundle(for:) where BundleFinder is part of the mergeable library, non private NSObject class. Anything else and the re-exported bundle is returned which has no assets.
We have several build configurations in our project, yet Xcode seems to ignore them when changing the run configuration in the scheme.
There are several OTHER_SWIFT_FLAGS set like this
but all code paths using conditionals like #if APPSTORE_BUILD etc. that worked previously with Xcode 16 just all default to the Debug (RETAIL_BUILD) configuration now.
Topic:
Developer Tools & Services
SubTopic:
Xcode
While preparing automated screenshots with Xcode UI tests for the iOS 26 release, I noticed that this simple line of code
app.buttons["myTabItem"].tap()
doesn't always work, both on iPhone and iPad Simulator. In fact, it rarely works. Even when repeating the same test, mostly it fails on that line, but a few times it works and I can see the tab item change in the simulator.
My main view looks like this:
TabView {
MyTab1()
.tag(tag1)
.tabItem {
Label("label1", systemImage: "image1")
}
MyTab2()
.tag(tag2)
.tabItem {
Label("label2", systemImage: "image2")
.accessibilityIdentifier("myTabItem")
}
The error I get is
Failed to tap "myTabItem" Button: No matches found for Elements matching predicate '"myTabItem" IN identifiers' from input
In the given list of buttons, I see the tab items with their labels, but none of them seem to have an identifier, while other buttons have the correct identifier. I wonder how this can only sometimes work.
I tried isolating the issue by iteratively commenting out parts of the SwiftUI code, but unfortunately the behaviour seems erratic. When a change results in the issue not happening anymore, undoing the last X changes often causes the issue to stay away, even with configurations that previously had the issue. I've already spent almost a whole day trying to find the root cause, but with such apparently random behaviour it has proven impossible.
Of course, I cannot reproduce the issue with a fresh test project, so the only way to reproduce it with 95% probability is running my original project.
Has anyone had the same issue, or does anyone know how I could debug this to find out what causes my UI test to not be able to tap another tab item?
Up until yesterday (previous Xcode builds) when I send a file from the Mac to the simulator, either by right-click or drag and dropping, the simulator opened the Files app to import/save the file.
Now when I do the same, instead of the iOS simulator opening the Files app, it opens Safari and asks if I want to download the file, if I agree the file is supposedly download but nowhere to be found.
By a non-specific file format is a file format that is not set up to open any specific app, such is the case of PDF, JPG, MP4, MD, etc. A zip file, for example.
I constantly send database backup files to the simulator to then import in my app (it has an import tool that lets me select a file from the filesystem) to test, but now I see myself unable to use this because the file I send is not being transferred.
Has anyone came across this?
Topic:
Developer Tools & Services
SubTopic:
Xcode
hi there, can someone answer if i have shallow water entitlement is there any way to add my app under dive category in the action button settings and select my app as the one beside default depth app. No matter what i change in the logic flow my app isn't there. The only one available is depth. What I would like to see: two options one is depth and another my diving app to select. What do I need to make it happen.
Thanks
Topic:
Developer Tools & Services
SubTopic:
Xcode
I've been trying to use Antrhopic with Xcode 26 RC and continue to run into this error:
No Data/Bytes for request: https://api.anthropic.com/v1/messages
Once I get it, all prompts fail even a simple "Hello" that worked a moment ago returns the error message.
Restarting Xcode and it returns to normal till I hit that error again. Any ideas on what's going on?
Topic:
Developer Tools & Services
SubTopic:
Xcode
First the Model:
import Foundation
import SwiftData
//Model for Earned Value Analysis
@Model
final class CostReport{
var aCWP: Double //Actual Cost of Work Performed
var bCWP: Double //Budgeted Cost of Work Performed
var bCWS: Double // Budgeted Cost of Work Scheduled
var cumACWP: Double// Cumlative Actual Cost of Work Performed
var cumBCWP: Double // Cumlative Budgeted Cost of Work Performed
var cumBCWS: Double // Cumlative Budgeted Cost of Work Scheduled
var startDateOfPeriod: Date
var endDateOfPeriod: Date
var contract: Contract?
init(aCWP: Double = 0.0, bCWP: Double = 0.0, bCWS: Double = 0.0, cumACWP: Double = 0.0, cumBCWP: Double = 0.0, cumBCWS: Double = 0.0, startDateOfPeriod: Date = .now, endDateOfPeriod: Date = .now, contract: Contract) {
self.aCWP = aCWP
self.bCWP = bCWP
self.bCWS = bCWS
self.cumACWP = cumACWP
self.cumBCWP = cumBCWP
self.cumBCWS = cumBCWS
self.startDateOfPeriod = startDateOfPeriod
self.endDateOfPeriod = endDateOfPeriod
self.contract = contract
}
}
@Model //Model for Contracts
final class Contract{
var costReports: [CostReport]
var contractType: ContractType?
@Attribute(.unique)var contractNumber: String
@Attribute(.unique)var contractName: String
var startDate: Date
var endDate: Date
var contractValue: Double
var contractorName: String
var contractorContact: String
var contractorPhone: String
var contractorEmail: String
init(costReports: [CostReport], contractType: ContractType, contractNumber: String = "", contractName: String = "", startDate: Date = .now, endDate: Date = .now, contractValue: Double = 0.0, contractorName: String = "", contractorContact: String = "", contractorPhone: String = "", contractorEmail: String = "") {
self.costReports = costReports
self.contractType = contractType
self.contractNumber = contractNumber
self.contractName = contractName
self.startDate = startDate
self.endDate = endDate
self.contractValue = contractValue
self.contractorName = contractorName
self.contractorContact = contractorContact
self.contractorPhone = contractorPhone
self.contractorEmail = contractorEmail
}
}
@Model //Model for contract types
final class ContractType{
var contracts: [Contract]
@Attribute(.unique)var typeName: String
@Attribute(.unique)var typeCode: String
var typeDescription: String
init(contracts: [Contract], typeName: String = "", typeCode: String = "", typeDescription: String = "") {
self.contracts = contracts
self.typeName = typeName
self.typeCode = typeCode
self.typeDescription = typeDescription
}
}
ContractType has a one to many relationship to Contract. Contract has a one to many relationship with CostReport. The ContractTypes can vary depending on the users situation so I need the user to be able to enter ContractTypes.
Code for that:
import SwiftUI
import SwiftData
struct EnterContractTypes: View {
@Environment(.modelContext) var managedObjectContext
@Query private var contracts: [Contract]
@Query private var contractTypes: [ContractType]
@State private var typeName: String = ""
@State private var typeCode: String = ""
@State private var typeDescription: String = ""
var body: some View {
Form {
Section(header: Text("Enter Contract Type")
.foregroundStyle(Color(.green))
.bold()
.font(.largeTitle)) {
TextField("Name", text: $typeName)
.frame(width: 400, height: 40)
TextField("Code", text: $typeCode)
.frame(width: 400, height: 40)
TextField("Description", text: $typeDescription, axis: .vertical)
.frame(width: 600, height: 60)
}
}
.frame(width:1000, height:500)
}
func save() {
let newContractType = ContractType(context: managedObjectContext)
newContractType.typeName = typeName
newContractType.typeCode = typeCode
newContractType.typeDescription = typeDescription
try? managedObjectContext.save()
The "let newContractType = ContractType(context: managedObjectContext)" is where the error happens. It says there is an extra argument in the context call.
Topic:
Developer Tools & Services
SubTopic:
Xcode
I’m using the latest Xcode beta RC(Version 26.0 (17A321)), and when I try to preview my SwiftUI views, the “Mac (Designed for iPad)” option is missing from the preview device list.
Is there any way to stop Xcode from randomly re-using a tab when you click on a file in the project treeview?
I never, never, NEVER want the file in the current tab replaced. If the clicked-on file is not already open in a tab, I want a new one. Every time. But in Xcode, you sometimes get a new tab, and sometimes don't. I can't find any pattern to this absurd behavior.
Even double-clicking doesn't produce a new tab, even though the Navigation settings say, "Double-click: Opens tab in focused editor."
WTH is this thing doing, and how do we stop it?
This is Xcode 16.4.
Topic:
Developer Tools & Services
SubTopic:
Xcode
Hello
In my app code (in flutter) but you can remain if you code in other langages, maybe you can help in other ways,
I have a file called: project.pbxproj
I am wondering about this line:
ARGETED_DEVICE_FAMILY = "1,2";
Is it true that the 1 is for Iphone
and 2 for Ipad?
Would that mean that if I wrote "1" and removed 2, then in my app page in developer store side I would not see a tab for Ipad where the store requires from me to post screenshots for ipad?
For instance (see image below)
I know you guys use XCODE and it handels it itself, but can you open your .ipa files and check "project.pbxproj" to confirm differences between these files when the app is targeting Iphone Vs targeting Ipad?
Thanks
I've alluded to this before in these posts
and there are some posts from others about this, e.g.
https://developer.apple.com/forums/thread/759845
and I've filed some bugs related to the behavior.
FB20212935
FB19451832
FB19450508
FB19450162
FB19449747
Our company owns the USB vendor IDs X and Y . We've been granted a USB transport entitlement for both of those IDs.
The crux of the problem is that I want to build a driver for USB vendor ID Y. Xcode's well-hidden auto-generated provisioning profile for my driver contains
com.apple.developer.driverkit.transport.usb:
{
idVendor = X;
}
which is obviously not what I want. Xcode fails to provision the target.
But I have another, much older project with an auto-generated provisioning profile containing
com.apple.developer.driverkit.transport.usb:
{
idVendor = X;
}, {
idVendor = Y;
}
I can build a driver for idVendor Y without problems in this project. But that doesn't help me with my new project.
What can I do to fix this? Do I need to request our entitlements again? I fear if I do so, something will get lost in the process. Is there a way to inspect what we have already been granted? - I can't see a "managed entitlements" section on the account portal. I can go through the motions of making a new App ID, then I can see that some Capability Request have been "Assigned", but I don't see what their values are.
A second question I have is about the userclient-access entitlement. Are these tied to the bundle ID of the app which claims the access? In other words, if I have two drivers
com.mycompany.app1.driver1
com.mycompany.app2.driver2
and I would like to have com.mycompany.app1 communicate with com.mycompany.app1.driver1, I would ask for the com.apple.developer.driverkit.userclient-access capability for com.mycompany.app1.driver1. But must I request that access for each specific app bundle ID that will talk to that driver, or once the entitlement is granted, can I use com.apple.developer.driverkit.userclient-access = { com.mycompany.app1.driver1 } in any of my apps?
I am getting this warning when compiling: Failed to generate flattened icon stack for icon named ...
Is it safe to ignore it? Is there a way to fix it?
Thank you.
I'm adapting my app on iOS 26, and I just found out withAnimation fuction's completion not called in some cases. The same code on iOS 18 was fine. The problem is very fatal, When you check the api, it saids "The completion callback will always be fired exactly one time",but this time it doens't work.
I'm using the Xcode Version 26.0 (17A321) RC1,still not test on a real devcie yet.