I updated my App to iOS26 and I have some strange tinting with Liquid Glass elements.
Sometime the elements are tinted and sometime not. Look at the screenshots. This is the same view, without any changes.
Just go back and forth to see the different Button tinting.
And this is not just happing in the View. It happens all over the app.
Why is this happening?
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
Hello there!
I’m using UIGlassEffect in my iOS 26 app, which was just approved, but I’m seeing unexpected crashes:
+[UIGlassEffect effectWithStyle:]: unrecognized selector sent to class.
Could this be happening only for users running earlier betas? Was UIGlassEffect not available in Beta 1–3? I started preparing my update with Beta 4.
Thank you!
Topic:
UI Frameworks
SubTopic:
UIKit
The view in the images snap to position in increasing offsets to the left such by the third view, the left of the view is missing.
I've struggled with my own code and with this example shown here
GoTo https://github.com/sashamyshkina/scroll-swiftui.git
and try ContentView1
Topic:
UI Frameworks
SubTopic:
SwiftUI
I have SwiftData models containing arrays of Codable structs that worked fine before adding CloudKit capability. I believe they are the reason I started seeing errors after enabling CloudKit.
Example model:
@Model
final class ProtocolMedication {
var times: [SchedulingTime] = [] // SchedulingTime is Codable
// other properties...
}
After enabling CloudKit, I get this error logged to the console:
'NSKeyedUnarchiveFromData' should not be used to for un-archiving and will be removed in a future release
CloudKit Console shows this times data as "plain text" instead of "bplist" format.
Other struct/enum properties display correctly (I think) as "bplist" in CloudKit Console.
The local SwiftData storage handled these arrays fine - this issue only appeared with CloudKit integration.
What's the recommended approach for storing arrays of Codable structs in SwiftData models that sync with CloudKit?
"Use location, address and addressRepresentations instead"
Is it possible to know what kind of "Address" a MapItem is representing (State, County, Neighborhood etc) after a MKGeocodingRequest?
Is it possible to find out the CLRegion or similar of an map item. (Now when we cannot read it from the Placemark)
If using .glassEffect or .buttonStyle(.glass) along with .rotationEffect(), the view's geometry grows in size (proportionally to the degrees of the angle):
struct ContentView: View {
var body: some View {
ZStack {
Color.red.ignoresSafeArea()
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Text("Angle: 30")
}
.padding()
.glassEffect(in: .rect(cornerRadius: 20))
.rotationEffect(.degrees(30))
}
}
}
The expectation is that geometry stays the same, regardless of rotation. This has been a bug in all the betas, and is now also confirmed in Xcode 26 RC and iOS 26 RC.
Topic:
UI Frameworks
SubTopic:
SwiftUI
If you create a SwiftUI App where a ‘.sheet’ is presented and use a NavigationStack within that Sheet, when you use NavigationLink to present a view, the title of the Nav Bar will start at a height of 46px and pop to the Default Height of 54px when it loads causing a visual pop in the UI.
In iOS 18 it functions correctly, in iOS 26 the visual pop is present. This impacts both inline and large styles, if you disable the back button it is still present, the only way I have discovered to get rid of it is by using 'fullScreenCover' instead of '.sheet'. This feels like buggy UI. This issue has been present since iOS 26 Beta 5, I was hoping it would be fixed but is still present in the GM.
Feedback has been filed via Feedback Assistant:
FB20228369
This is the code to re-produce the issue:
import SwiftUI
struct ContentView: View {
@State private var showSheet: Bool = false
var body: some View {
VStack {
Button {
showSheet.toggle()
} label: {
Text("Show Sheet")
}
}
.padding()
.sheet(isPresented: $showSheet) {
NavigationStack {
List {
NavigationLink {
Rectangle()
.foregroundStyle(.red)
.navigationTitle("Red")
} label: {
Text("Show Red")
}
}
}
.presentationSizing(.page)
}
}
}
#Preview {
ContentView()
}
In WWDC25 video 284: Build a UIKit app with the new design, there is mention of a cornerConfiguration property on UIVisualEffectView. But this properly isn't documented and Xcode 26 isn't aware of any such property.
I'm trying to replicate the results of that video in the section titled Custom Elements starting at the 19:15 point. There is a lot of missing details and typos in the code associated with that video.
My attempts with UIGlassEffect and UIViewEffectView do not result in any capsule shapes. I just get rectangles with no rounded corners at all.
As an experiment, I am trying to recreate the capsule with the layers/location buttons in the iOS 26 version of the Maps app.
I put the following code in a view controller's viewDidLoad method
let imgCfgLayer = UIImage.SymbolConfiguration(hierarchicalColor: .systemGray)
let imgLayer = UIImage(systemName: "square.2.layers.3d.fill", withConfiguration: imgCfgLayer)
var cfgLayer = UIButton.Configuration.plain()
cfgLayer.image = imgLayer
let btnLayer = UIButton(configuration: cfgLayer, primaryAction: UIAction(handler: { _ in
print("layer")
}))
var cfgLoc = UIButton.Configuration.plain()
let imgLoc = UIImage(systemName: "location")
cfgLoc.image = imgLoc
let btnLoc = UIButton(configuration: cfgLoc, primaryAction: UIAction(handler: { _ in
print("location")
}))
let bgEffect = UIGlassEffect()
bgEffect.isInteractive = true
let bg = UIVisualEffectView(effect: bgEffect)
bg.contentView.addSubview(btnLayer)
bg.contentView.addSubview(btnLoc)
view.addSubview(bg)
btnLayer.translatesAutoresizingMaskIntoConstraints = false
btnLoc.translatesAutoresizingMaskIntoConstraints = false
bg.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
btnLayer.leadingAnchor.constraint(equalTo: bg.contentView.leadingAnchor),
btnLayer.trailingAnchor.constraint(equalTo: bg.contentView.trailingAnchor),
btnLayer.topAnchor.constraint(equalTo: bg.contentView.topAnchor),
btnLoc.centerXAnchor.constraint(equalTo: bg.contentView.centerXAnchor),
btnLoc.topAnchor.constraint(equalTo: btnLayer.bottomAnchor, constant: 15),
btnLoc.bottomAnchor.constraint(equalTo: bg.contentView.bottomAnchor),
bg.centerXAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerXAnchor),
bg.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 40),
])
The result is pretty close other than the complete lack of capsule shape.
What changes would be needed to get the capsule shape? Is this even the proper approach?
since upgrading my dev phone to ios26 the pop alerts in my app no longer respond to user touch.
Topic:
UI Frameworks
SubTopic:
SwiftUI
I have an NSWindow that isn't entirely opaque. When presenting a sheet AppKit overlays the window with NSSheetEffectDimmingView.
The problem is the entire window frame is used so NSSheetEffectDimmingView overlays the transparent areas of the window and it looks bad. Is there a clean way to inset NSSheetEffectDimmingView or even perhaps disable this behavior completely so I can draw my own?
I'm looking for a clean solution (other than modifying the view hierarchy of NSNextStepFrame) or swizzles which I might have to resort to if there is no other way.
In our app we launch landscape only player view controller from portrait only view controller. This is done using present(playerViewController, animated:true) and it is dismissed using dismiss() api. This is working fine till iOS 18 but broken in iOS 26. Now when presenting the presented viewcontrollers UI is realigning / resizing after the view is visible and while dismissing the presenting view controller is realigning after the view is visible. Anyone else seeing it or how to fix this?
I'm being faced with an issue when using SwiftUI's WebView on iOS 26. In many websites, the top/bottom content is unaccessible due to being under the app's toolbars. It feels like the WebView doesn't really understand the safe areas where it's being shown, because the content should start right below the navigation bar, and only when the user scrolls down, the content should move under the bar (but it's always reachable if the users scroll back up).
Here's a demo of the issue:
Here's a 'fix' by ensuring that the content of the WebView never leaves its bounds. But as you can see, it feels out of place on iOS 26 (would be fine on previous OS versions if you had a fully opaque toolbar):
Code:
struct ContentView: View {
var body: some View {
NavigationStack {
WebView(url: URL(string: "https://apple.com")).toolbar {
ToolbarItem(placement: .primaryAction) {
Button("Top content covered, unaccessible.") {}
}
}
}
}
}
Does anyone know if there's a way to fix it using some sort of view modifier combination or it's just broken as-is?
In the Meet PaperKit WWDC session in provided sample code, there's:
let markupEditViewController = MarkupEditViewController(supportedFeatureSet: .latest)
markupEditViewController.delegate = paperViewController
However PaperMarkupViewController doesn't conform to MarkupEditViewController.Delegate, it only conforms to MarkupToolbarViewController.Delegate. But based on the demo, MarkupEditViewController is for iOS and MarkupToolbarViewController is for macOS.
Compiler gives me the following error:
Cannot assign value of type 'PaperMarkupViewController?' to type '(any MarkupEditViewController.Delegate)?' Arguments to generic parameter 'Wrapped' ('PaperMarkupViewController' and 'any MarkupEditViewController.Delegate') are expected to be equal
What's the solution here?
Topic:
UI Frameworks
SubTopic:
UIKit
When using .glassEffect(.clear, in: .circle) with animation in a View, there is a chance that black pixel blocks flash on the screen.
The abnormal effect can be seen in the attached video and screenshots.FB20216507
Code is as follows:
VStack {
if isLoaded {
VStack {
if #available(macOS 26.0, *) {
Color.clear
.frame(maxWidth: .infinity, maxHeight: .infinity)
.glassEffect(.clear, in: .circle)
}
}
.transition(.asymmetric(insertion: .scale, removal: .opacity))
}
}
.animation(.bouncy, value: isLoaded)
Topic:
UI Frameworks
SubTopic:
SwiftUI
Only people using iPhone 15 and iPhone 15Pro (don't know about iPhone 15 plus or iPhone 15 pro max) are having problems with my App. All seems fine on 13, 14 and 16 as well as iPad The app is in testflight now. I cannot replicate the issue in MAC via virtual iPhone 15 , 15 plus, pro, or promax. What I see happening - it looks like users are seeing labels disappear, sometimes buttons are disappearing on the 15 pro and 15.
I have an ingredient selection page where you can select the ingredients that you have. These are outlined and grouped to make choosing ingredients intuitive. I have a profile selector where you can choose by flavor, strength, body or mood. At the bottom I have three buttons , button one lets you choose if drinks are sorted or strictly matched. The last button allows the user to see the drinks they can make based on ingredients they have.This is done by matching the ingredients with a locally placed drinks list which contains a drink id, drink name, ingredients and profile information. Clicking the last button opens a flatlist.
Users on iPhone 15 and iPhone 15Pro iOS 18 sometimes experience the three buttons at the bottom being gone altogether. then returning. After clicking the Drinks Available button the button label should change to hide available drinks, but sometimes that label disappears. The drinks flat list has space for many drinks but the labels for those drinks are not present until halfway down the list where one drink shows up.
No other device behaves this way. It might be more common when there are large number of ingredients selected ....e.g., if about 50% of 211 ingredients selected it might be more likely to happen. This needs to be tested to verify,
It appears that hidesBottomBarWhenPushed no longer works in iOS 26 Beta 1.
Is it supposed to work, is it going away or is there a alternate behavior we should be using?
Topic:
UI Frameworks
SubTopic:
UIKit
We tested this on 2 devices:
on first device the colors show properly
on the other device the colors are either light or dark gray
Seems as if the colors weren't picked up properly by the app.
Tested on iOS 26 23A5336a.
There was no issue before
Topic:
UI Frameworks
SubTopic:
SwiftUI
[Also submitted as FB20213961]
SwiftUI Button with a label: closure containing only an Image view has a smaller tap target than buttons created with a Label or the convenience initializer. The hit area shrinks to the image bounds instead of preserving the standard minimum tappable size.
SCREEN RECORDING
On a physical device, the difference is obvious—it’s easy to miss the button. Sometimes it even shows the button-tapped bounce animation but doesn’t trigger the action.
SYSTEM INFO
Xcode Version 26.0 (17A321)
macOS 15.6.1 (24G90)
iOS 26.0 (23A340)
SAMPLE CODE
The following snippet shows the difference in hit targets between the convenience initializer, a Label, and an Image (the latter two in a label: closure).
// ✅ Hit target is entire button
Button("Button 1", systemImage: "1.square.fill") {
print("Button 1 tapped")
}
// ✅ Hit target is entire button
Button {
print("Button 2 tapped")
} label: {
Label("Button 2", systemImage: "2.square.fill")
}
// ❌ Hit target is smaller than button
Button {
print("Button 3 tapped")
} label: {
Image(systemName: "3.square.fill")
}
Hello Apple Developer Community,
I'm experiencing a persistent issue with my React Native/Expo app that I've been trying to resolve for weeks. I'm hoping someone here has encountered and solved this problem.
The Problem:
• My app works perfectly in development (Expo Go, local builds, simulators)
• When built for production and installed via TestFlight, it shows only a white screen
• The app launches successfully (no crashes) but never renders any UI
• This happens consistently across multiple builds and attempts
Technical Details:
• Framework: React Native 0.79.5 with Expo SDK 53
• Backend: Supabase
• Navigation: React Navigation
What I've Tried:
✅ Created missing .env file with environment variables
✅ Installed missing peer dependencies (expo-font)
✅ Ran npx expo-doctor - all checks pass
✅ Added error boundaries and loading screens
✅ Incremented build numbers and rebuilt multiple times
✅ Verified Supabase credentials are correct
✅ Checked native iOS logs - app launches successfully, no crashes
Key Observations:
Works in Expo Go ✅
Works in development builds ✅
Fails in production builds ❌
No JavaScript errors visible in system logs
App process runs stable (no crashes)
Questions:
• Has anyone encountered this specific issue with React Native/Expo production builds?
• Are there known issues with Metro bundler in production builds?
• Could this be related to JavaScript bundle loading in production?
• Are there specific EAS Build configurations that might cause this?
Repository: https://github.com/bigmoud/voluntr (if anyone wants to examine the code)
Topic:
UI Frameworks
SubTopic:
General
The NSWindow collection behavior is supposed to allow for a window to appear in all spaces, even when another window is full screen in that space. However, I cannot get this to work as expected with any combination.
This should be as simple as:
window.level = .screenSaver
window.collectionBehavior = [
.canJoinAllSpaces,
.fullScreenAuxiliary,
.canJoinAllApplications,
.stationary,
.ignoresCycle
]
If I have a window (Safari for example) which is full screen in its own space, run my app and change to the Safari window's space, my app's window is not visible at all; it will only float on top of windows in non-fullscreen spaces.
What am I misunderstanding?