Since I moved to Xcode 26.1 and Xcode 26.2 then, my UI tests all fail only for iOS 26+, for both simulator and real device.
Everything worked perfectly with Xcode 26.0, and the code base of the application under test and the test cases are the same. With Xcode 26.0, the tests pass for iOS 26+ and iOS < 26, for both simulator and real device.
In addition, even the Accessibility Inspector tool fails to display the view hierarchy for iOS 26+ with Xcode 26.2. With Xcode 26.0, whatever are the devices and the OS versions, the tool was able to display the view hierarchy. Otherwise the tool is empty even if the device and app are selected.
This failing tests issue occurs both on my local environment and on GitHub Actions runners, excluding the hypothesis I have troubles with my own side.
The error message for failing tests explains the element cannot be found anymore.
Given for example the test case:
@MainActor
func testMakeScreenshotsForDocumentation_Button() {
let app = launchApp()
goToComponentsSheet(app)
waitForButtonToAppear(withWording: "app_components_button_label", app)
tapButton(withWording: "app_components_button_label", app)
tapButton(withWording: "Strong", app)
takeScreenshot(named: "component_button_", ACDC.buttonX, ACDC.buttonY, ACDC.buttonWidth, ACDC.buttonHeight, app)
}
the goToComponentSheet(app) line shows the error:
ActionsDocumentationScreenshots.testMakeScreenshotsForDocumentation_Button()
In details the function:
/// Opens the page of the components, i.e. tap on the 2nd of the tab bar
@MainActor func goToComponentsSheet(_ app: XCUIApplication) {
app.tabBars.buttons.element(boundBy: 1).tap()
}
with the following error on the app.tabBars line:
.../AppTestCase.swift:157 testMakeScreenshotsForDocumentation_Button(): Failed to tap Button (Element at index 1): No matches found for Descendants matching type TabBar from input {(Application, pid: 1883)}
I have the feeling with Xcode 26.2 (and Xcode 26.1) the view hierarchy is not accessible anymore for both XCUITest framework and Accessibility Inspector tool.
Note I have on my side macOS Tahoe 26.1 (25B78) and my GitHub Actions runner are on macOS 26.0.1 (25A362). When I used Xcode 26.0 I was on macOS Tahoe 26.1 (25B78) .
Any ideas? 🙂
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
How to change the image launch screen using story to show picture display in rotated view when ipad in portrait orientation ?
Current launch screen
-Image Portrait Orientation
-Image Landscape Orientation
-Info Setting
Expected launch screen as below (Not Working)
-Expected Launch Screen
I have uploaded the entire sample source here
With iOS 26 there has been a change in behavior with Pickers in the toolbar. The Picker looks expanded unlike other views such as a Button and Menu. See screenshots below. Is this the intended behavior or a bug? (I already submitted a feedback for this at FB19276474)
What Picker looks like in the toolbar:
What Button looks like in the toolbar:
Applying glass effect, providing a shape isn't resulting in the provided shape rendering the interaction correctly.
.glassEffect(.regular.tint(Color(event.calendar.cgColor)).interactive(), in: .rect(cornerRadius: 20))
results in properly drawn view but interactive part of it is off. light and shimmer appear as a capsule within the rect.
Hello,
I’m reaching out after several days of investigation, as I’ve exhausted all standard troubleshooting steps and would truly appreciate guidance from Apple engineers or experienced developers.
I am experiencing a persistent issue where StoreKit does not return any subscription products on any device, despite all subscriptions being fully approved and correctly configured in App Store Connect.
What is happening
• Auto-renewable subscriptions exist and are approved in App Store Connect
• The app is installed from the production App Store (not TestFlight, not sandbox)
• initConnection / StoreKit initialization succeeds
• Requests for products/subscriptions return an empty result (no errors, no IDs)
• In the UI, prices are shown as “Unavailable”
• This behavior is 100% reproducible on every device, every Apple ID, every network
Important detail
This issue is not device-specific, account-specific, or environment-specific:
• Tested on multiple iPhones
• Tested with different Apple IDs
• Tested on different networks
• Same result every time — no subscriptions returned
Why I believe this is not a code issue
The exact same symptoms previously occurred on Google Play, where the root cause turned out to be a store-side configuration flag blocking billing visibility, not an application bug.
Because:
• StoreKit initializes correctly
• No runtime errors occur
• The issue is global across devices and users
…I strongly suspect there may be an App Store Connect / StoreKit configuration, availability, storefront, agreement, or propagation-related factor that is preventing StoreKit from returning the products at runtime.
Is there any known App Store Connect or StoreKit condition where:
• subscriptions are approved and visible in App Store Connect
• but StoreKit returns an empty result set in production?
If so, I would be extremely grateful for guidance on where exactly to verify or correct this.
Thank you very much for your time and support — any insight would be hugely appreciated.
Kind regards,
Mateusz
Topic:
UI Frameworks
SubTopic:
General
I am trying to use the UIButtonConfiguration to set the UI state for the button.isEnabled status. I do see the ConfigurationUpdateHandler code below being executed but when the button.isEnabled is set to false, the UI does not reflect the updated backgroundColor. Instead it is a very light gray but the foregroundColor/text is being updated. It seems that the default disabled button treatment is being used despite being set to a different color. Is there a better way to suppress the default UIButton disabled state so I can customize?
[newButton setConfigurationUpdateHandler:^(__kindof UIButton * _Nonnull button) {
UIButtonConfiguration *updatedConfiguration;
if (newButton.configuration != nil) {
updatedConfiguration = newButton.configuration;
if (button.isEnabled) {
updatedConfiguration.baseBackgroundColor = [UIColor darkGrayColor];
updatedConfiguration.baseForegroundColor = [UIColor whiteColor];
} else {
updatedConfiguration.baseBackgroundColor = [UIColor greenColor];
updatedConfiguration.baseForegroundColor = [UIColor blackColor];
}
}
button.configuration = updatedConfiguration;
}];
Topic:
UI Frameworks
SubTopic:
UIKit
When I call this method on a thread that isn`t thread. And chose main thread check on target, The Console show the world :
Main Thread Checker: UI API called on a background thread: -[UIApplication canOpenURL:]
PID: 8818, TID: 10191278, Thread name: (none), Queue name: com.myqueue.canopen, QoS: 0
Backtrace:
4 TestDemo 0x0000000102f6c068 __39-[AppTools isExists:]_block_invoke_3 + 892
5 CoreFoundation 0x000000019e22995c 7519E999-1053-3367-B9D5-8844F6D3BDC6 + 1042780
6 CoreFoundation 0x000000019e12ec98 7519E999-1053-3367-B9D5-8844F6D3BDC6 + 15512
7 TestDemo 0x0000000102f6bba0 __39-[AppTools isExists:]_block_invoke_2 + 424
8 libdispatch.dylib 0x0000000103a4d7fc _dispatch_call_block_and_release + 24
9 libdispatch.dylib 0x0000000103a4ebd8 _dispatch_client_callout + 16
10 libdispatch.dylib 0x0000000103a55b48 _dispatch_lane_serial_drain + 744
11 libdispatch.dylib 0x0000000103a566e4 _dispatch_lane_invoke + 448
12 libdispatch.dylib 0x0000000103a61adc _dispatch_workloop_worker_thread + 1324
13 libsystem_pthread.dylib 0x000000019df72b88 _pthread_wqthread + 276
14 libsystem_pthread.dylib 0x000000019df75760 start_wqthread + 8
Description:
When following Apple's WWDC guidance to hide the default Liquid Glass background on a ToolbarItem using .sharedBackgroundVisibility(.hidden) and draw a custom circular progress ring, a rectangular rendering artifact appears during navigation bar transition animations (e.g., when the navigation bar dims/fades during a push/pop transition).
Steps to Reproduce:
Create a ToolbarItem with a custom circular view (e.g., a progress ring using Circle().trim().stroke()).
Apply .sharedBackgroundVisibility(.hidden) to hide the default Liquid Glass background.
Navigate to a detail view (triggering a navigation bar transition animation).
Observe the ToolbarItem during the transition.
Expected Result:
The custom circular view should transition smoothly without any visual artifacts.
Actual Result:
A rectangular bounding box artifact briefly appears around the custom view during the navigation bar's dimming/transition animation. The artifact disappears after the transition completes.
Attempts to Resolve (All Failed):
Using .frame(width: 44, height: 44) with .aspectRatio(1, contentMode: .fit)
Using .fixedSize() instead of explicit frame
Using Circle().fill() as a base view with .overlay for content
Using Button with .buttonStyle(.plain) and Color.clear placeholder
Various combinations of .clipShape(Circle()), .contentShape(Circle()), .mask(Circle())
Workaround Found (Trade-off):
Removing .sharedBackgroundVisibility(.hidden) eliminates the rectangular artifact, but this prevents customizing the Liquid Glass appearance as intended by the API.
Code Sample:
swift
if #available(iOS 26.0, *) {
ToolbarItem {
Button {
// action
} label: {
Color.clear
.frame(width: 32, height: 32)
.overlay {
ZStack {
// Background arc (3/4 circle)
Circle()
.trim(from: 0, to: 0.75)
.stroke(Color.blue.opacity(0.3), style: StrokeStyle(lineWidth: 4, lineCap: .round))
.rotationEffect(.degrees(135))
.frame(width: 28, height: 28)
// Progress arc
Circle()
.trim(from: 0, to: 0.5) // Example: 50% progress
.stroke(Color.blue, style: StrokeStyle(lineWidth: 4, lineCap: .round))
.rotationEffect(.degrees(135))
.frame(width: 28, height: 28)
Text("50")
.font(.system(size: 12, weight: .bold))
.foregroundStyle(Color.blue)
Text("100")
.font(.system(size: 8, weight: .bold))
.foregroundStyle(.primary)
.offset(y: 12)
}
.background {
Circle()
.fill(.clear)
.glassEffect(.clear.interactive(), in: Circle())
}
}
}
.buttonStyle(.plain)
}
.sharedBackgroundVisibility(.hidden) // ⚠️ This modifier causes the rectangular artifact during transitions
}
Environment:
iOS 26 Beta
Topic:
UI Frameworks
SubTopic:
SwiftUI
Do you guys know how to fix the render of the text in the accessory view ? If I force the color of text to be .black it work but it will break dark mode, but forcing it .black : .white on color scheme changes makes white to still adapt to what is behind it I have noticed that Apple Music doesn’t have that artifact and it seems to break when images are behind the accessory view
// MARK: - Next Routine Accessory
@available(iOS 26.0, *)
struct NetxRoutinesAccessory: View {
@ObservedObject private var viewModel = RoutineProgressViewModel.shared
@EnvironmentObject var colorSchemeManager: ColorSchemeManager
@EnvironmentObject var routineStore: RoutineStore
@EnvironmentObject var freemiumKit: FreemiumKit
@ObservedObject var petsStore = PetsStore.shared
@Environment(\.colorScheme) private var colorScheme
// Tab accessory placement environment
@Environment(\.tabViewBottomAccessoryPlacement) private var accessoryPlacement
// Navigation callback
var onTap: (() -> Void)?
@State private var isButtonPressed = false
/// Explicit black for light mode, white for dark mode
private var textColor: Color {
colorScheme == .dark ? .trueWhite : .trueBlack
}
/// Returns true when the accessory is in inline/minimized mode
private var isInline: Bool {
accessoryPlacement == .inline
}
var body: some View {
accessoryContent()
.onTapGesture {
onTap?()
}
}
private func accessoryContent() -> some View {
HStack(spacing: 12) {
// Content with smooth transitions
VStack(alignment: .leading, spacing: 2) {
if viewModel.totalTasks == 0 {
Text(NSLocalizedString("Set up routines", comment: "Routines empty state"))
.font(.subheadline.weight(.medium))
.foregroundColor(textColor)
} else if let next = viewModel.nextRoutineTask() {
HStack(spacing: 4) {
Text(NSLocalizedString("Next", comment: "Next routine prefix"))
.font(.caption)
.foregroundColor(textColor)
Text("•")
.font(.caption)
.foregroundColor(textColor)
Text(next.routine.name)
.font(.subheadline.weight(.medium))
.foregroundColor(textColor)
.lineLimit(1)
}
.id("routine-\(next.routine.id)-\(next.time)")
.transition(.opacity.combined(with: .move(edge: .leading)))
HStack(spacing: 4) {
Text(viewModel.petNames(for: next.routine.petIDs))
.font(.caption)
.foregroundColor(textColor)
Text("•")
.font(.caption)
.foregroundColor(textColor)
Text(Routine.displayTimeFormatter.string(from: next.time))
.font(.caption.weight(.medium))
.foregroundColor(colorSchemeManager.accentColor ?? .blue)
}
.id("time-\(next.routine.id)-\(next.time)")
.transition(.opacity.combined(with: .move(edge: .leading)))
} else {
// All tasks completed
Text(NSLocalizedString("All done for today!", comment: "All routines completed"))
.font(.subheadline.weight(.medium))
.foregroundColor(textColor)
.transition(.opacity.combined(with: .scale))
Text("\(viewModel.completedTasks)/\(viewModel.totalTasks) " + NSLocalizedString("tasks", comment: "Tasks count suffix"))
.font(.caption)
.foregroundColor(textColor)
}
}
.animation(colorSchemeManager.reduceMotion ? nil : .snappy(duration: 0.3), value: viewModel.completedTasks)
.animation(colorSchemeManager.reduceMotion ? nil : .snappy(duration: 0.3), value: viewModel.progress)
}
.padding()
.contentShape(.rect)
.animation(colorSchemeManager.reduceMotion ? nil : .snappy(duration: 0.35), value: viewModel.completedTasks)
}
}
Topic:
UI Frameworks
SubTopic:
SwiftUI
Hi there. I am trying to figure out how to make a macOS Tahoe app in SwiftUI with a sidebar. The problem I’m having is that the icons are the wrong size.
If you visually compare the resulting sidebar with any built-in macOS app (Finder, Notes, Mail, Music, etc.) the built-in apps all have larger icons and the spacing is different from my SwiftUI app, which has too small icons and (I think) wrong spacing.
I am trying to figure out what SwiftUI code I need to write to get a sidebar that looks the same as the other built-in macOS Tahoe apps.
It’s also important to note that Tahoe sidebars have larger icons at the top level, and in cases where the items have a disclosure triangle with additional items nested within, the nested icons have smaller icons. I have not figured out how to properly replicate this effect either.
I have spent quite a lot of time on trial-and-error with various combinations of .frame() and .font() modifiers. However, none of the results look quite right to me, and besides that, I think it is fundamentally the wrong approach; the UI or OS should be handling the sizing and spacing automatically, I shouldn’t have to specify it manually, as this is likely to break in past and future OS versions (and it never really looks exactly right in the first place).
I am hoping there is some missing modifier that I am unaware of, which would solve this; or perhaps, some fundamental aspect of making lists in sidebars that I have missed. I would very much appreciate any advice.
If you drop my code below into a new Xcode project, and compare it to a Finder window, you should be able to easily see the problem.
import SwiftUI
struct ContentView: View {
var body: some View {
splitView
}
@ViewBuilder
var splitView: some View {
NavigationSplitView {
sidebar
} detail: {
helloWorld
}
}
@ViewBuilder
var sidebar: some View {
List {
NavigationLink {
helloWorld
} label: {
Label("Test", systemImage: "book")
}
NavigationLink {
helloWorld
} label: {
Label("Test 2", systemImage: "folder")
}
NavigationLink {
helloWorld
} label: {
Label("Test 3", systemImage: "house")
}
DisclosureGroup(
content: {
NavigationLink {
helloWorld
} label: {
Label("Test", systemImage: "book")
}
NavigationLink {
helloWorld
} label: {
Label("Test 2", systemImage: "folder")
}
NavigationLink {
helloWorld
} label: {
Label("Test 3", systemImage: "house")
}
},
label: {
Label("Test 4", systemImage: "document")
}
)
}
}
@ViewBuilder
var helloWorld: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Text("Hello, world!")
}
.padding()
}
}
#Preview {
ContentView()
}
Is anyone else experiencing NavigationStack title disappearing in iOS 26?
Hey everyone,
I just updated to iOS 26 and I'm running into a really frustrating issue with my app. Wondering if anyone else is seeing this or if I'm missing something obvious.
What's happening:
My navigation titles are completely blank when the app first loads, but then magically appear when I scroll down. It's super weird and makes my app look broken at first glance.
My setup:
I'm using NavigationStack with some pretty standard stuff:
Navigation title with .navigationTitle()
A toolbar with a settings button
ScrollView content with a gradient background
Here's basically what I have:
NavigationStack {
ScrollView {
VStack(spacing: 24) {
// My app content here - cards, etc.
ForEach(myItems) { item in
// Content cards
}
}
.padding()
}
.background(
LinearGradient(
gradient: Gradient(colors: [
Color.surfacePrimary,
Color.surfacePrimary.opacity(0.95),
Color.surfaceSecondary.opacity(0.3)
]),
startPoint: .top,
endPoint: .bottom
)
)
.navigationTitle("My Title") // ← This doesn't show up initially!
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
Button("Settings") {
// Settings action
}
}
}
}
The weird part:
Works perfectly fine on my iOS 18.6.2 device
Completely broken on iOS 26 - blank navigation area
As soon as I scroll, the title appears and stays there
Happens on both simulator and physical device
What I've tried:
Double-checking my code (it's identical to what worked before)
Testing on multiple devices
Different navigation title strings
Removing and re-adding the toolbar
Has anyone else run into this? I'm thinking it might be an iOS 26 bug with NavigationStack, but I wanted to check if others are seeing it before filing a radar.
It's affecting my main landing screens (Tennis, NFL, and Prediction Markets tabs) and honestly looks pretty bad when users first open the app and see blank headers.
Temporary fix I found:
If anyone else hits this, I discovered that forcing inline titles works as a workaround:
.navigationTitle("My Title")
.navigationBarTitleDisplayMode(.inline) // This fixes it but kills large titles
Obviously not ideal since we lose the nice large title behavior, but at least the titles show up.
Questions:
Is this happening to anyone else's iOS 26 apps?
Any better workarounds that preserve large titles?
Should I file this as a radar or is Apple already aware?
Really hoping this gets fixed soon - having to choose between broken navigation or losing large titles is pretty frustrating.
Thanks for any insights!
Anyone else dealing with this NavigationStack nightmare in iOS 26? 😅
This issue was in the first iOS 26 beta and it still there with Xcode 26 beta 6 (17A5305f). Feedback is FB18581605 and contains sample project to reproduce the issue.
I assign a target and action to a UISlider for the UIControl.Event.valueChanged value:
addTarget(self, action: #selector(sliderValueDidChange), for: .valueChanged)
Here’s the function.
@objc
func sliderValueDidChange(_ sender: UISlider, event: UIEvent) {
print(event)
}
When printing the event value, there is a crash. When checking the event value with lldb, it appears uninitialized.
I'm working on the control widget which should display the SF image on the UI, but I have found that it cannot be displayed stably. I have three ExampleControlWidget which is about the type egA egB and egC, it should all be showed but now they only show the text and placeholder. I'm aware of the images should be SF image and I can see them to show perfectly sometimes, but in other time it is just failed. This's really confused me, can anyone help me out?
public enum ControlWidgetType: Sendable {
case egA
case egB
case egC
public var imageName: String {
switch self {
case .egA:
return "egA"
case .egB:
return "egB"
case .egC:
return "egC"
}
}
}
struct ExampleControlWidget: ControlWidget {
var body: some ControlWidgetConfiguration {
AppIntentControlConfiguration(
kind: kind,
provider: Provider()
) { example in
ControlWidgetToggle(
example.name,
isOn: example.state.isOn,
action: ExampleControlWidgetIntent(id: example.id),
valueLabel: { isOn in
ExampleControlWidgetView(
statusText: isOn ? Localization.on.text : Localization.off.text,
bundle: bundle,
widgetType: .egA //or .egB .egC
)
.symbolEffect(.pulse)
}
)
.disabled(example.state.isDisabled)
}
.promptsForUserConfiguration()
}
}
public struct ExampleControlWidgetView: View {
private let statusText: String
private let bundle: Bundle
private var widgetType: ControlWidgetType = .egA
public init(statusText: String, bundle: Bundle, widgetType: ControlWidgetType) {
self.statusText = statusText
self.bundle = bundle
self.widgetType = widgetType
}
public var body: some View {
Label(
statusText,
image: .init(
name: widgetType.imageName,
// the SF Symbol image id bundled in the Widget extension
bundle: bundle
)
)
}
}
This is the normal display:
These are the display that do not show properly:
The results has no rules at all, I have tried to completely uninstall the APP and reinstall but the result is same.
i export apple SF as custom sf for test.
code is simple:
var body: some ControlWidgetConfiguration {
StaticControlConfiguration(
kind:"ControlWidgetConfiguration"
) {
ControlWidgetButton(action: DynamicWidgetIntent()) {
Text("test")
Image("custom_like")
}
}.displayName("test")
}
as we can see, it can't show image in the preview. but it can show image in the Control widget center.
am i do some thing wrong?
I'm trying to implement a feature whereby a user can tap a button to insert a character at the cursor in a TextField - the cursor then needs to be moved forward to be in front of the insert character.
I'm having trouble with characters such as π which are UTF16 encoded.
In the following sample app, enter the following sequence:
Enter 9 by keyboard
tap +
Enter 9 by keyboard
tap π
Enter 9 via keyboard
tap +
he TextField will show '9+9π+9' (i.e. the final + is inserted before 9 rather than after it. Any insight into what I am doing wrong?
import SwiftUI
@main
struct TextInsertApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
struct ContentView: View {
@State private var text: String = ""
@State private var selection: TextSelection? = nil
var body: some View {
TextField("", text: $text, selection: $selection)
.background(.gray.opacity(0.4))
Button("+") { insert("+") }
Button("π") { insert("π") }
}
func insert(_ insertString: String) {
if let selection {
if case let .selection(range) = selection.indices {
if selection.isInsertion {
text.insert(contentsOf: insertString, at: range.lowerBound)
} else {
text.replaceSubrange(range, with: insertString)
}
let cursor = text.utf16.index(range.upperBound, offsetBy: insertString.count)
self.selection = .init(insertionPoint: cursor)
}
} else {
text += insertString
selection = .init(range: text.utf16.endIndex..<text.utf16.endIndex)
}
}
}
I'm looking for a way to implement Liquid Glass effect in a Text, and I have issues.
If I want to do gradient effect in a Text, no problem, like below.
Text("Liquid Glass")
.font(Font.system(size: 30, weight: .bold))
.multilineTextAlignment(.center)
.foregroundStyle(
LinearGradient(
colors: [.blue, .mint, .green],
startPoint: .leading,
endPoint: .trailing
)
)
But I cannot make sure that I can apply the .glassEffect with .mask or .foregroundStyle. The Glass type and Shape type argument looks like not compatible with the Text shape itself.
Any solution to do this effect on Text ?
Thanks in advance for your answers.
We can get informed on object changes through conforming to ObservableObject or having the @Observable macro attached to the type’s definition. How do you handle imported code that assumes the other observation technique?
Has anyone noticed that there are way too many bugs caused by the liquid glass issues? I'm noticing apple adding private layer classes between existing UI views to add glassy effect and no way to disable them. Some of these bugs have no way around without rewriting the code from.
For example, search controller doesn't work anymore on iOS 26 but does work on iOS 18. The tab bar controller doesn't show at all on iOS 26 but does on iOS 18.
I'm wondering if other people are facing the same issues.
Topic:
UI Frameworks
SubTopic:
General
To whom it may concern that deals with bugs in SwiftUI for iOS 26:
Inadvertently discovered a bug which duplicates ToolbarItem in any placement in the toolbar when navigationBarBackButtonHidden is set to true.
.toolbar{
ToolbarItem(placement: .confirmationAction) {
Button("Stop", systemImage: "stop.fill"){
//some action
}
}
}
.navigationBarBackButtonHidden(true)
Expected Behavior
Show the ToolbarItem
Actual Behavior
Duplicates items in the placement position.
Thank you.
I received the following crash:
Thread 0 Crashed:
libsystem_kernel.dylib __pthread_kill + 8
libsystem_pthread.dylib pthread_kill + 296 (pthread.c:1721)
libsystem_c.dylib abort + 124 (abort.c:122)
libc++abi.dylib __abort_message + 132 (abort_message.cpp:66)
libc++abi.dylib demangling_terminate_handler() + 304 (cxa_default_handlers.cpp:76)
libobjc.A.dylib _objc_terminate() + 156 (objc-exception.mm:496)
libc++abi.dylib std::__terminate(void (*)()) + 16 (cxa_handlers.cpp:59)
libc++abi.dylib __cxxabiv1::failed_throw(__cxxabiv1::__cxa_exception*) + 88 (cxa_exception.cpp:152)
libc++abi.dylib __cxa_throw + 92 (cxa_exception.cpp:299)
libobjc.A.dylib objc_exception_throw + 448 (objc-exception.mm:385)
Foundation -[NSConcreteMutableAttributedString initWithString:] + 268 (NSAttributedString.m:1049)
CloudDocs -[BRCloudPathComponentDisplayMetadata initWithDisplayName:suffix:url:icon:] + 180 (BRCloudPathComponentDisplayMetadata.m:75)
CloudDocs -[NSURL(BRCloudPathComponent) br_pathComponentDisplayMetadataWithOptions:]_block_invoke + 516 (BRCloudPathComponentDisplayMetadata.m:292)
CloudDocs -[NSArray(BRAdditions) br_transform:keepNull:] + 228 (NSArray+BRAdditions.m:20)
CloudDocs -[NSURL(BRCloudPathComponent) br_pathComponentDisplayMetadataWithOptions:] + 76 (BRCloudPathComponentDisplayMetadata.m:276)
AppKit -[NSPathCell _autoUpdateCellContents] + 2080 (NSPathCell.m:442)
AppKit -[NSPathCell setURL:] + 76 (NSPathCell.m:599)
AppKit -[NSPathControl setURL:] + 64 (NSPathControl.m:366)
I tried reproducing on my end by passing various URLs in iCloud Drive to an NSPathControl, file reference urls, attempting to evict a URL from iCloud Drive then settings the URL property without luck.
Setting the URL to nil does not crash (the property is nullable). I have no idea how to trigger that code path. Anyone else run into this and have a workaround?