When I run my Mac Catalyst app I'm getting unacceptable performance when resizing the window. Window resizing is very unresponsive/laggy.
Configuration:
The root view controller is a UISplitViewController (three pane split using UISplitViewControllerStyleTripleColumn).
Sidebar is configured. It's using a UICollectionView sidebar style (so it looks like NSOutlineView in AppKit).
On initial launch there is no selection and the second and third view controllers in the split have empty placeholder view controllers.
At this point window resizing is fine.
Now I make a selection in the sidebar. This populates the supplementary view controller with a view controller that uses a UITableView.
Now resizing the window performance is awful. Basically this is unusable. When resizing the window a bunch what looks to be Core Animation related logs flood the console during window resize:
cannot add handler to 3 from 1 - dropping Library: QuartzCore | Subsystem: com.apple.coreanimation
Now if I go to my app's Info.plist and add: UIDesignRequiresCompatibility entry with a value of TRUE and follow the same steps described above window resizing works as expected and I do not experience performance issues. Also with UIDesignRequiresCompatibility there is no "cannot add handlers" error logs flooding the console on window resize.
Explore the various UI frameworks available for building app interfaces. Discuss the use cases for different frameworks, share best practices, and get help with specific framework-related questions.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Previously I was able to "snapshot" view that were not part of any window hierarchy using the following:
NSImage *buttonImage = [NSImage imageWithSystemSymbolName:@"49.circle.fill" accessibilityDescription:nil];
NSButton *aButton = [NSButton buttonWithImage:buttonImage target:nil action:nil];
[aButton sizeToFit];
NSBitmapImageRep *rep = [aButton bitmapImageRepForCachingDisplayInRect:aButton.bounds];
if (rep == nil) {
NSLog(@"Failed to get bitmap image rep.");
return;
}
[aButton cacheDisplayInRect:aButton.bounds toBitmapImageRep:rep];
NSData *tiffData = rep.TIFFRepresentation;
NSImage *snapShotOfImage = [[NSImage alloc]initWithData:tiffData];
Now on macOS Tahoe I get a non nil image, but the image is blank.
However if I add aButton NSWindow's view hiearchy just before the call to -cacheDisplayInRect:toBitmapImageRep: I do get a proper image.
Is this behavior intended or is this considered a bug? Is it documented anywhere that a view must be in a NSWindow for -cacheDisplayInRect:toBitmapImageRep: to work? Thanks
My app (FindAnyFile) provides a Finder-like interface in which it also offers a QuickLook preview command, which invokes
[[QLPreviewPanel sharedPreviewPanel] makeKeyAndOrderFront:nil];
Now, if it shows .abcdp files, it often, but not always, crashes.
This has been happening for many macOS versions, at least since 10.15, up to 26.1. Also, it does not seem to matter which SDK/Xcode I build with, as I used several and all versions lead to the crash. The issue rather appears to be inside the QLplugin for the AB file (ABCardCollectionView etc.).
I am able to trace this crash in Xcode. There are a LOT of errors and warnings coming up, and eventually the qlplugin throws an ObjC exception which in turn brings down my entire app (and here I thought that the XPC system was designed to expressly avoid such crashes).
Possibly significant errors are:
CNAccountCollectionUpdateWatcher 0x6000025cf800: Update event received, but store registration failed. This event will be handled, but the behavior is undefined.
Error using remote object proxy when fetchAnonymousXPCEndpoint: Error Domain=NSCocoaErrorDomain Code=4097 "connection to service named com.apple.telephonyutilities.callservicesdaemon.callstatecontroller" UserInfo={NSDebugDescription=connection to service named com.apple.telephonyutilities.callservicesdaemon.callstatecontroller}
connection to service named com.apple.coreduetd.people … CNPropertyNotFetchedException: A property was not requested when contact was fetched.
I've attached the (mostly) complete console output from such a debug run.
I have also an open bug report regarding this kind of crash (back then I was not able to reproduce it myself): FB15553847
Also, when I "Quick Look" the same file in Finder, I get a "Preview not permitted" for the same items that crash in my app. If I copy the same items to the Desktop, then Finder can QL them and my app doesn't crash when viewing the item on the Desktop. So, the crash only happens with the items inside ~/Library/Application Support/AddressBook/Sources/…/Metadata/.
Now, here is the weirdest part: You might think: So, if the Finder shows "Preview not permitted", then my app trying to view those items is the result of that condition (even if that's not supposed to crash). However: I have a clean 26.1 install (in an Apple ARM VM) where Finder also says "Preview not permitted" for these items in the user's Library/AB/Metadata folder, but my app can QL those items without crashing! Also, I have one user who uses 26.1 and gets the crash with files in the same location. So, the "Preview not permitted" is probably not the cause of this crash, though it's suspicious that a user gets this at all - why can't a user QL the abcdp files in the Metadata folder but when copied to the Desktop, QL works? You'd think that Finder has the necessary entitlements to access the AB, or doesn't it?
Of course, my app has permission enabled under Privacy & Security / Contacts (if it's disabled, then the app can't show anything but will also not crash). And it has the "Address Book" entitlement.
Would be nice if this could be looked into and eventually be fixed.
Alternatively, I'd welcome any suggestions on how to prevent my app from crashing if the qlplugin throws. But if you look at the stack trace you'll see that there's no method of my own app involved where I could insert an exception catcher.
I added code to my previewItemURL delegate method to make sure the NSURL item is readable, and it is, even
Of course, apart from the issue with .abcdp files, the QL operation in my app works flawlessly, i.e. I have never received any other crash reports relating to any other QL plugins.
QuickLook for AddressBook crash messages
Hi,
I am trying to add a custom (create) button next to the automatic "toggle sidebar" button in a NavigationSplitView.
When the sidebar is collapsed that button should be displayed in a group with that automatic toggle button.
Basically I want exact the same behaviour as in the Apple "Reminders" App.
How could I archive that?
Thanks for your help :-)
Jan
We are seeing this crash across several different iPad models, all of them running iPadOS 26.1.
The crash did not occur before, and it started appearing consistently over the past month.
This suggests that the issue may be related to changes introduced in recent iPadOS 26.1 builds.
Crash Log:
0 CoreFoundation 0xc5994 (缺少 UUID b4a0233bf37d3ef6a977e4f36199c5a4)
1 libobjc.A.dylib 0x31814 objc_exception_throw
2 Foundation 0x9465a4 (缺少 UUID 218da4dc727a3341b59e8fdb39a2d7c4)
3 Foundation 0x9469c8 (缺少 UUID 218da4dc727a3341b59e8fdb39a2d7c4)
4 Foundation 0x9468e0 (缺少 UUID 218da4dc727a3341b59e8fdb39a2d7c4)
5 PencilKit 0x100894 -[PKTextEffectsWindowObserver dealloc]
6 UIKitCore 0x22b28 (缺少 UUID a0e1cefbfd0136f9b82351b092e4dbc6)
7 UIKitCore 0x19918b8 (缺少 UUID a0e1cefbfd0136f9b82351b092e4dbc6)
8 PencilKit 0xe8448 -[PKTextInputInteraction willMoveToView:]
9 UIKitCore 0x22b1c (缺少 UUID a0e1cefbfd0136f9b82351b092e4dbc6)
10 UIKitCore 0x19918b8 (缺少 UUID a0e1cefbfd0136f9b82351b092e4dbc6)
11 UIKitCore 0x171e094 (缺少 UUID a0e1cefbfd0136f9b82351b092e4dbc6)
12 UIKitCore 0xc896a8 (缺少 UUID a0e1cefbfd0136f9b82351b092e4dbc6)
13 UIKitCore 0xc89d70 (缺少 UUID a0e1cefbfd0136f9b82351b092e4dbc6)
14 UIKitCore 0xc89c10 (缺少 UUID a0e1cefbfd0136f9b82351b092e4dbc6)
15 CoreFoundation 0x14f78 (缺少 UUID b4a0233bf37d3ef6a977e4f36199c5a4)
16 CoreFoundation 0x17fc2c (缺少 UUID b4a0233bf37d3ef6a977e4f36199c5a4)
17 UIKitCore 0xc89a44 (缺少 UUID a0e1cefbfd0136f9b82351b092e4dbc6)
18 UIKitCore 0xc8a53c (缺少 UUID a0e1cefbfd0136f9b82351b092e4dbc6)
19 UIKitCore 0xc8a638 (缺少 UUID a0e1cefbfd0136f9b82351b092e4dbc6)
20 UIKitCore 0xb9701c (缺少 UUID a0e1cefbfd0136f9b82351b092e4dbc6)
21 UIKitCore 0xb96cd0 (缺少 UUID a0e1cefbfd0136f9b82351b092e4dbc6)
22 UIKitCore 0xba0720 (缺少 UUID a0e1cefbfd0136f9b82351b092e4dbc6)
23 UIKitCore 0xb9a608 (缺少 UUID a0e1cefbfd0136f9b82351b092e4dbc6)
24 UIKitCore 0xca4fec (缺少 UUID a0e1cefbfd0136f9b82351b092e4dbc6)
25 UIKitCore 0x90878 (缺少 UUID a0e1cefbfd0136f9b82351b092e4dbc6)
26 UIKitCore 0x907b0 (缺少 UUID a0e1cefbfd0136f9b82351b092e4dbc6)
27 libdispatch.dylib 0x1adc _dispatch_call_block_and_release
28 libdispatch.dylib 0x1b7ec _dispatch_client_callout
29 libdispatch.dylib 0x38b24 _dispatch_main_queue_drain.cold.5
30 libdispatch.dylib 0x10ec8 _dispatch_main_queue_drain
31 libdispatch.dylib 0x10e04 _dispatch_main_queue_callback_4CF
32 CoreFoundation 0x6a2c8 (缺少 UUID b4a0233bf37d3ef6a977e4f36199c5a4)
33 CoreFoundation 0x1db3c (缺少 UUID b4a0233bf37d3ef6a977e4f36199c5a4)
34 CoreFoundation 0x1ca6c (缺少 UUID b4a0233bf37d3ef6a977e4f36199c5a4)
35 GraphicsServices 0x1498 GSEventRunModal
36 UIKitCore 0x9dba4 (缺少 UUID a0e1cefbfd0136f9b82351b092e4dbc6)
37 UIKitCore 0x46a78 (缺少 UUID a0e1cefbfd0136f9b82351b092e4dbc6)
38 ---------- 0xcd20 main + 35 (main.m:35)
39 ??? 0x18a026e28 (缺少)
crash_stacktrace.txt
We have encountered a consistent problem with OTP (One Time Password) autofill on iOS versions 26.0.1 through 26.3. The issue pertains to apps implementing OTP input using multiple UITextFields (often 6 or 7 separate text boxes for each digit).
Problem Details:
When tapping the OTP autofill suggestion from Messages or supported third-party apps, iOS autofill pastes the entire OTP string into just one UITextField (commonly the second or focused field) rather than distributing digits across the individual text fields.
The delegated UITextField methods such as textField:shouldChangeCharactersInRange:replacementString: receive an entire OTP string at once, but the usual event handlers like UIControlEventEditingChanged do not always trigger, breaking existing logic relying on those.
This results in the OTP input UI showing incorrect or partial OTP, confusing users and forcing manual re-entry.
Many popular apps employing multi-field OTP input UIs face similar autofill malfunctions on iOS 26.x, impacting user experience negatively.
Setting textContentType = .oneTimeCode on the first text field alone is insufficient to restore the intended autofill behavior on iOS 26.x.
This represents a regression or functional deficiency compared to iOS 15-18 autofill handling patterns, which worked reliably for these multi-field OTP UIs.|
Expected Behavior:
OTP autofill should either automatically split the filled code into each UITextField or trigger consistent delegate/callback events to enable developers to replicate this behavior manually.
textDidChange or equivalent events should fire on autofill updates to reflect text changes correctly in multi-field OTP input.
Apple’s OTP autofill system should transparently support or provide clear guidelines for handling multi-field OTP input on iOS 26+.
What We’ve Tried:
Setting .oneTimeCode content type on only the first UITextField.
Handling OTP autofill in delegate methods including shouldChangeCharactersInRange.
Manual distribution and custom logic triggered by textDidChange and other callbacks.
Confirming all relevant system autofill settings are enabled.
Testing on multiple devices and iOS versions (26.0.1 through 26.3).
Note: its happen for may apps which have text field with 6 box otp fill
Issue Summary:
On iOS 26.0.1 to 26.3, apps using multiple UITextFields for OTP input face a critical issue where the system autofill pastes the entire OTP string into a single text field, usually the focused one, rather than splitting digits across fields. Delegate events like textDidChange: do not trigger consistently on autofill, breaking existing input handling logic.
Expected Behavior:
OTP autofill should distribute each digit correctly across all OTP UITextFields.
Delegate or control events should fire on autofill to enable manual handling.
(BOOL)textField:(UITextField *)textField
shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string {
if (string.length > 1) {
// Autofill detected - distribute OTP manually
for (int i = 0; i < string.length && i < self.arrayOTPText.count; i++) {
UITextField *field = self.arrayOTPText[i];
field.text = [NSString stringWithFormat:@"%c", [string characterAtIndex:i]];
}
UITextField *lastField = self.arrayOTPText[string.length - 1];
[lastField becomeFirstResponder];
return NO;
}
// Handle normal single character or deletion input here
return YES;
}
//
// Setup UITextFields - set .oneTimeCode on first field only
for (int i = 0; i < self.arrayOTPText.count; i++) {
UITextField *field = self.arrayOTPText[i];
field.delegate = self;
if (@available(iOS 12.0, *)) {
field.textContentType = (i == 0) ? UITextContentTypeOneTimeCode : UITextContentTypeNone;
}
}
What We’ve Tried:
Setting textContentType properly.
Handling OTP distribution in delegate method.
Verifying settings and keyboard use.
Testing on multiple iOS 26.x versions.
Impact:
Major usability degradation during OTP entry.
Forces fragile workarounds.
Inconsistent autofill reduces user confidence.
Request:
Request Apple fix OTP autofill to natively support multi-field UITextField OTP input or provide enhanced delegate callbacks for consistent behavior.
Did any one face this issue in recent time with iOS 26.0.1 to 26.3 beta version
I want to create GIF file and then use UIImage to it.
Returning to a Mac Catalyst app that I put to the side for awhile..when running it on Xcode 26.1 it crashes at launch with:
Assertion failure in -[NSToolbarItemGroupView _layoutWrapperViewsWithAttributes:], NSToolbarItemGroupView.m:599
No attributes were found for item
Call stack has a bunch of Autolayout code in AppKit like:
[NSWindow(NSConstraintBasedLayoutInternal) _layoutViewTree] + 120
50 AppKit 0x00000001911e8a10 -[NSWindow(NSConstraintBasedLayoutInternal) layoutIfNeeded] + 240
51 UIKitMacHelper 0x00000001a98f293c -[UINSWindow layoutIfNeeded] + 56
A few unnamed symbols mixed in maybe that's that Swiftness beneath the surface. App is just murdered on launch. I assume this is related to using NSToolbarItemGroup when building an NSToolbar...
I do see this log out:
NSToolbarItemGroup does not support selectionMode. Create the group with one of the class constructors to support selection.
Which is an interesting log so I commented out all calls to setSelectionMode: but still the same crash.
I do set the groups subitems property directly (I do not use the class constructors as the logging statement above indicates). I have no idea if using the class constructors will workaround this issue or not but I'm not particularly excited about that idea because I have items in the same toolbar group with different actions.
Hi,
I'm using a UICollectionViewCell in my project and I can't wrap my head around why cell's UI state isn't changing when selected.
This is my code:
override func updateConfiguration(using state: UICellConfigurationState) {
super.updateConfiguration(using: state)
var background = UIBackgroundConfiguration.listGroupedCell().updated(for: state)
background.cornerRadius = 25
// Update background based on selection state
if state.isSelected {
background.backgroundColor = .systemBlue.withAlphaComponent(0.3)
background.strokeColor = UIColor.systemBlue
background.strokeWidth = 1.5
} else {
background.backgroundColor = isHoveredOver ? .hoverHighlightBackground : .background
background.strokeColor = UIColor.borderColor
background.strokeWidth = 1
}
backgroundConfiguration = background
}
The if block does get executed but it's not working for some reason. On the other hand, the else block works just fine, my cell's background is being highlighted when hovered over, the stroke is showing etc.
What am I missing here?
Thank you.
Summary
I’m experiencing two issues with SwiftUI’s navigationTransition(.zoom) on iOS 26.0 and 26.1 that break previously smooth transitions. These issues appear both on real devices and Simulator. The same code works correctly on iOS 18.
Issue 1 - Source View Disappears After Drag-Dismiss
When using .navigationTransition(.zoom(sourceID:..., in:...)), the source view disappears completely after the transition finishes.
This only happens when the detail view is dismissed via drag (interactive dismiss).
When the view is dismissed by tapping the back button, the source view remains visible as expected.
Reproduced on: iOS 26.0, iOS 26.0.1 (17A400), iOS 26.1 (Simulator + physical device)
Issue 2 — Flickering and Geometry Mismatch During Transition
Compared to iOS 18 behavior, the outgoing view and incoming view no longer share consistent geometry.
Current behavior on iOS 26:
The disappearing view flickers during the drag-dismiss interaction.
The source and destination views no longer align geometrically.
Instead of smoothly morphing as in previous iOS versions, the two views briefly overlap incorrectly before applying the zoom animation.
Expected (iOS 18) behavior:
Matched geometry between source and destination.
Smooth, stable zoom transition with no flickering.
//
// ContentView.swift
// DummyTransition
//
// Created by Sasha Morozov on 12/11/25.
//
import SwiftUI
struct RectItem: Identifiable, Hashable {
let id: UUID = UUID()
let title: String
let color: Color
}
struct ContentView: View {
@Namespace private var zoomNamespace
private let items: [RectItem] = [
RectItem(title: "Red card", color: .red),
RectItem(title: "Blue card", color: .blue),
RectItem(title: "Green card", color: .green),
RectItem(title: "Orange card", color: .orange)
]
var body: some View {
NavigationStack {
ScrollView {
VStack(spacing: 16) {
ForEach(items) { item in
NavigationLink {
DetailView(item: item, namespace: zoomNamespace)
.navigationTransition(
.zoom(sourceID: item.id, in: zoomNamespace)
)
} label: {
RoundedRectangle(cornerRadius: 16)
.fill(item.color.gradient)
.frame(height: 120)
.overlay(
Text(item.title)
.font(.headline)
.foregroundStyle(.white)
)
.padding(.horizontal, 16)
.matchedTransitionSource(id: item.id, in: zoomNamespace)
}
.buttonStyle(.plain)
}
}
.padding(.vertical, 20)
}
.navigationTitle("Cards")
}
}
}
struct DetailView: View {
let item: RectItem
let namespace: Namespace.ID
var body: some View {
ZStack {
item.color
Text(item.title)
.font(.largeTitle.bold())
.foregroundStyle(.white)
}
.ignoresSafeArea()
.navigationTitle("Detail")
.navigationBarTitleDisplayMode(.inline)
}
}
#Preview {
ContentView()
}
Testing Environment
MacBook Pro (2023, M2 Pro, 16 GB RAM)
macOS 26.2 Beta (25C5031i)
Xcode: Version 26.0.1 (17A400)
Devices tested:
Simulator (iOS 26.0 / 26.1)
Physical device (iPhone 16) running iOS 26.1
Topic:
UI Frameworks
SubTopic:
SwiftUI
I have a UICollectionView using a UICollectionViewCompositionalLayout with an orthogonally scrolling section. When selecting a cell, I present a modal view controller with a zoom transition.
If I scroll quickly in that section after dismissing the presented view controller, the cells briefly overlap. See the attached screenshot.
This issue occurs only on iOS 26 and does not occur on iOS 18.
Has anyone found a way to mitigate this?
Sample project: https://github.com/antiraum/iOS26_UICollectionViewZoomTransitionIssue
Feedback FB21022192
I'm running into an issue where my application will hang when switching tabs. The issue only seems to occur when I include a Swift Chart in a navigation label. The application does not hang If I replace the chart with a text field.
This appears to only hang when running on macOS 26. When running on iOS (simulator) or visionOS (simulator, on-device) I do not observe a hang. The same code does not hang on macOS 15.
Has any one seen this behavior?
The use case is that my root view is a TabView where the first tab is a summary of events that have occurred. This summary is embedded in a NavigationStack and has a graph of events over the last week. I want the user to be able to click that graph to get additional information regarding the events (ie: a detail page or break down of events).
Initially, the summary view loads fine and displays appropriately. However, when I switch to a different tab, the application will hang when I switch back to the summary view tab.
In Xcode I see the following messages
=== AttributeGraph: cycle detected through attribute 162104 ===
=== AttributeGraph: cycle detected through attribute 162104 ===
=== AttributeGraph: cycle detected through attribute 162104 ===
=== AttributeGraph: cycle detected through attribute 162104 ===
=== AttributeGraph: cycle detected through attribute 162104 ===
A simple repro is the following
import SwiftUI
import Charts
@main
struct chart_cycle_reproApp: App {
var body: some Scene {
WindowGroup {
TabView {
Tab("Chart", systemImage: "chart.bar") {
NavigationStack {
NavigationLink {
Text("this is an example of clicking the chart")
}
label: {
Chart {
BarMark(
x: .value("date", "09/03"),
y: .value("birds", 3)
)
// additional marks trimmed
}
.frame(minHeight: 200, maxHeight: .infinity)
}
}
}
Tab("List", systemImage: "list.bullet") {
Text("This is an example")
}
}
}
}
}
I’m experiencing an issue after building the project with Xcode 26.1.1.
In my code, I have a UICollectionView that contains multiple cells, and each cell has a slider. When I move a slider in one cell, sliders in other cells also move.
This issue does not occur in Xcode 16.4 – it works perfectly there.
If anyone has a solution or knows if this is related to Xcode 26 changes, please let me know. Thanks!
In macOS Tahoe, users can tint folders or add symbols. But when trying to access that customized icon in Swift, the system always returns the default folder icon.
NSWorkspace.shared.icon(forFile: url.path)
try url.resourceValues(forKeys: [.effectiveIconKey]).effectiveIcon
try url.resourceValues(forKeys: [.customIconKey]).customIconKey
All of these give back the standard folder icon without any of the user-applied customization.
So the question is: Is there any API or workaround in Swift to retrieve the actual customized folder icon (including tint and symbol) as displayed in Finder on macOS Tahoe?
Unable to open mach-O at path: /AppleInternal/Library/BuildRoots/4~B5FIugA1pgyNPFl0-ZGG8fewoBL0-6a_xWhpzsk/Library/Caches/com.apple.xbs/Binaries/RenderBox/install/TempContent/Root/System/Library/PrivateFrameworks/RenderBox.framework/Versions/A/Resources/default.metallib Error:2
This happens only on macOS Sequoia - not on macOS Tahoe.
I have got a noticeable amount of lag in the animations of my App where this Warning arises
I've tried to isolate the respective animations from the main thread too - still getting the same issue with the lag
Is it possible to resolve it, as I want backwards compatibility with my app for the users
Trying to make a sheet-like view that attaches at the bottom to another view so I'd like to have only the top two corners rounded.
This works for a blurred effect:
let glassView = UIVisualEffectView(effect: UIBlurEffect(style: .systemMaterial))
glassView.layer.cornerRadius = 20
glassView.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner]
glassView.layer.masksToBounds = true
but if I try to use the iOS 26 UIGlassEffect, all 4 corners become rounded:
let glassView = UIVisualEffectView(effect: UIGlassEffect())
glassView.layer.cornerRadius = 20
glassView.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner]
glassView.layer.masksToBounds = true
Dear Apple Developer Support,
I am writing to seek guidance regarding App Clips launch source differentiation in our restaurant application.
Background:
Our restaurant uses QR codes that are permanently associated with specific table numbers. These QR codes successfully launch our App Clip and pass the table information via NSUserActivity with NSUserActivityTypeBrowsingWeb.
Current Issue:
We are facing a significant challenge in distinguishing between different launch sources:
Camera Scan/URL Launch: When customers scan the QR code using the native camera or tap a URL, the App Clip launches with the correct table information.
App Library Launch: When customers launch the App Clip from the App Library, it restores the previous NSUserActivity with potentially outdated table information.
The Problem:
Since we cannot determine whether the App Clip was launched from the camera/URL or from the App Library, we cannot reliably decide whether to use the table information carried by userActivity. This causes customers to be directed to incorrect tables when launching from the App Library.
What We've Tried:
We have attempted various approaches to differentiate the launch source:
Checking for AppClipActivationPayload - but it exists in both scenarios
Examining UIApplicationLaunchOptionsKey and UISceneConnectionOptions
Analyzing URL parameters and timestamps
Implementing custom state management
However, none of these methods provide reliable differentiation between camera scan launches and App Library restorations.
Question:
Is there any official API or recommended approach to programmatically determine if an App Clip was launched:
From a camera scan/URL tap (fresh launch), OR
From the App Library (state restoration)
Any guidance on how to properly handle this scenario would be greatly appreciated, as it significantly impacts the user experience in our restaurant ordering system.
Thank you for your time and assistance.
Best regards
The same code that I have, runs fine on iOS 26.0, but on iOS 26.1, there's a delay in the Button with role .confirm to be shown properly and tinted.
Shown in the screen recording here ->
https://imgur.com/a/uALuW50
This is my code that shows slightly different button in iOS 18 vs iOS26.
var body: some View {
if #available(iOS 26.0, *) {
Button("Save", systemImage: "checkmark", role: .confirm) {
action()
}.labelStyle(.iconOnly)
} else {
Button("Save") {
action()
}
}
}
Topic:
UI Frameworks
SubTopic:
SwiftUI
Hi,
I have a UIToolbar at the bottom of my screen. The UIToolbar is made of UIBarButtonItems. At some point, I change the status of some buttons to hidden:
button.isHidden = true
This works: the buttons become invisible.
At a later point in the process, I turn the buttons visible again:
button.isHidden = false
This did work on iOS 18, and does not work with the iOS 26 SDK: the buttons remain hidden, even though the property has been set to false.
Am I doing it wrong? Is there anything I can do to fix this?
Topic:
UI Frameworks
SubTopic:
General