When the following structure:
NavigationStack {
ScrollView {
NavigationLink(...)
}
}
is presented inside a sheet in SwiftUI, the scroll drag gesture and the link tap gesture collide.
If the user happens to begin a scroll gesture on a link, the link will open the moment the finger is lifted, no matter how far it is from its initial touchdown.
The issue has already been found (this stack overflow post from 2019), but no solution was provided.
I've already filed a report (FB17034020).
In the meantime, is there any way to override the touch gesture detection in any manner? This issue is quite inconvenient from a user perspective.
Debugging
RSS for tagDiscover and resolve issues with your app.
Posts under Debugging tag
202 Posts
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Pasting either plain or styled text into any TextEditor results in a memory leak.
import SwiftUI
struct EditorView: View {
@State private var inputText: String = ""
var body: some View {
VStack{
TextEditor(text: $inputText)
.frame(minHeight: 150)
}
}
}
Hello, I need a little bit of help. My game keeps crashing on launch no matter what I do. I’ve tried running it in Xcode on my Mac, on my iPhone, and through TestFlight, but I get the same result every time.
I’ve tried everything I could find on the internet, and nothing worked. Asking here is my last resort because I’m completely stuck.
The game runs fine in Unity, but not so much in Xcode.
Can someone help me figure out what I’m doing wrong?Any help would be greatly appreciated.
Here is the error log I found by connecting my iPhone to my Mac. To view the logs, I used the Console in the Devices and Simulators section of Xcode.
➤ SecKeyVerifySignature failed: Error Domain=NSOSStatusErrorDomain Code=-50 "rsa_pub_crypt failed"
[10:27:36.034791+0200] kernel
➤ Sandbox: [App] deny(1) sysctl-read kern.bootargs
[10:27:36.043389+0200] SpringBoard
➤ Live host view super view[(null)] not matching container view
➤ Frame not updated
[10:27:36.050473+0200] backboardd
➤ Cycle detected
[10:27:36.100799+0200] SpringBoard
➤ Live host view super view[(null)] not matching container view
[10:27:36.538361+0200] akd
➤ Error fetching keychain item - Error Domain=NSOSStatusErrorDomain Code=-25300 "no matching items found"
[10:27:36.545734+0200] akd
➤ Failed to set last known MID with error (Error Domain=NSOSStatusErrorDomain Code=-25300)
[10:27:36.603384+0200] rtcreportingd
➤ Gap in hierarchy:
[10:27:36.604536+0200] cloudd
➤ TCP input flags=[R.] state=LAST_ACK
[10:27:36.613317+0200] cloudd
➤ TCP input flags=[R] state=CLOSED
[10:27:36.648449+0200] kernel
➤ 1 duplicate report for Sandbox: [App] deny(1) sysctl-read kern.bootargs
[10:27:36.648484+0200] kernel
➤ Sandbox: [App] deny(1) file-test-existence /private/var/Managed Preferences/mobile/com.apple.CoreMotion.plist
[10:27:36.900275+0200] CommCenter
➤ Client is not entitled for request
[10:27:37.131555+0200] storekitd
➤ AMSURLSession: Session decoder failed. Error = Error Domain=AMSErrorDomain Code=301 "Invalid Status Code"
[10:27:37.131761+0200] storekitd
➤ AMSURLSession: Task completed with error = Error Domain=AMSErrorDomain Code=301 "Invalid Status Code"
[10:27:38.137847+0200] kernel
➤ System Policy: [Process] deny(1) file-read-metadata /private/var/mobile/Library/Biome/FlexibleStorage
[10:27:38.779536+0200] kernel
➤ Sandbox: [App] deny(2) file-test-existence /private/etc/localtime
[10:27:38.942342+0200] mobileassetd
➤ TCP input flags=[R] state=LAST_ACK
[10:27:38.963596+0200] kernel
➤ Sandbox: [App] deny(2) file-test-existence /bin/bash
[10:27:40.152019+0200] mobileassetd
➤ TCP input flags=[R] state=LAST_ACK
[10:27:40.280661+0200] assetsd
➤ Warning: cache_handle_memory_pressure invokedPreformatted text```
I’m so lost on this. I’ve tried Google, ChatGPT, DeepSeek, the documentation. I’ve spent about 7 hours on this specific bug. Not sure what to do next. Does anyone have an idea?
var format = "%7B%22sign%22%3Anull%2C%22company%22%3A%22%E5%85%84%E5%BC%9F%E6%B5%B7%E6%B4%8B%E7%A7%91%E6%8A%80%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8%22%2C%22businessNo%22%3Anull%2C%22scene%22%3Anull%2C%22interviewCode%22%3A%22767676%22%7D"
let message = withVaList([]) { args in
let msg = NSString(format: format, arguments: args)
print(msg)
}
Topic:
App & System Services
SubTopic:
General
Tags:
Foundation
iPad and iOS apps on visionOS
Swift
Debugging
I was just having a look at some crash reports downloaded by Xcode, and I noticed the same wrong pattern I already mentioned here: the crash reports indicate that method A calls method B, which is impossible.
In the first crash report below, method MainViewController.showSettings seems to be called by ConfirmMoveViewController.openSourceInFinder, which is impossible. ConfirmMoveViewController.openSourceInFinder is a context menu action in a modal window, and MainViewController.showSettings is in a completely different window and the two methods have no relation whatsoever.
In the second crash report below, MainViewController.setSortMode is triggered by the press of a button (and nothing else) but seems to be called by OtherViewController.copy that can be triggered by a context menu (or keyboard shortcut). The two methods have no relation whatsoever. The rest of the stack trace confirm that it's indeed the button that was pressed.
This seems to me like a quite serious bug in how macOS creates crash reports.
1.crash
2.crash
We are experiencing an issue where our app gets stuck during launch. The splash screen appears for some time, and then the app either becomes unresponsive or closes unexpectedly. However, there are no crash logs captured in Xcode or Firebase Crashlytics, indicating that the app is not crashing but rather being terminated. This issue is preventing affected users from properly launching the app.
Additionally, some users have reported occasional lag and slow performance when using the app. The issue occurs only for a specific subset of users and appears to be related to other Electronic Logging Device (ELD) apps running in the background. When these apps are active, our app struggles to launch and sometimes becomes unresponsive.
We suspect that this behavior could be related to system resource allocation, such as high memory consumption by background apps, which might be affecting our app's ability to launch correctly. However, we have been unable to reproduce the issue on our end despite multiple attempts.
Actions Performed During App Launch:
Firebase configuration
API requests, including:
Fetching account details
Registering the FCM token with the server
Asynchronous background requests to fetch POI details
Creating a local database and storing POI data in local storage
We would like guidance from Apple regarding potential causes and debugging strategies, especially in scenarios where the app does not produce crash logs but still fails to launch properly. Any insights into memory management, conflicts with background applications, or system resource constraints would be highly appreciated.
Steps to Reproduce:
Install and launch the app on an affected device.
Observe that the app gets stuck on the launch screen.
After some time, the app terminates unexpectedly.
Issue is inconsistent and occurs only for certain users.
Presence of other ELD apps running in the background appears to influence the issue.
I have found a system bug with UINavigationController, UIGestureRecognizerDelegate mainly the swipe back control.
I have reproduced this in many apps, while some that use custom swipe back i can not reproduce, however any app using default uikit/swift transitions i can reproduce the flicker/previous screen flashing
The Bug: a slight tap or series of quick taps anywhere on the screen (with the slightest (1-2pt -x)confuse the system into thinking its a swipe back gesture, however instead of pushing back to previous screen the UI flickers and flashes the previous screen. for a split second, very easy to reproduce.
on screens with lots of options of boxes to tap it happens quite often.
I have removed all custom "swipe back from anywhere" logic, all custom gesture logic, and can still reproduce by tapping the edge of the screen
with only UINavigationController, UIGestureRecognizerDelegate in my navigation controller.
Please let me know the best way to get in contact with someone at apple to either build an extension to prevent this flicker or if a developer has a fix but this is rarely talked about. (velocity limits etc do not work, and just make the gesture feel awful)
all the developers i have reached out too have looked into this and have said "its an ios bug, only fix is build a custom swipe back from anywhere, or wait for apple to fix it).... as a small indie app, building my own seems daunting
Recap: quick or taps with small x movement flash previous screen instead of pushing back or simply recognizing it as a tap and not flashing previous screen. this happens with no custom code default uikit/swift. Link me your app i can probably reproduce it, I have reproduced it in X(was hard), Retro(easy), and many more.
The goal is to have a smooth native swipe/drag back from anywhere gesture while preventing flicking on fast taps or short taps with minor x movement. i have tried everything from setting limits to -x, velocity limits etc. nothing fixes this.
happy hacking!
PS i hope someone at apple calls me and i can explain this and we can fix it for every app in an update.
Hi,
I’m experiencing an issue where my React Native (Expo) app crashes immediately in TestFlight after launching, but it works fine in Expo Go and the iOS Simulator. This is my first time building an IOS app, so I'm not sure where I'm going wrong.
Are there known issues with JS bundle loading, native module compatibility, or API entitlements that could be causing this?
What tools or logs should I use to track the exact source of failure? Any guidance would be greatly appreciated! Thank you.
Steps Taken:
The app runs fine in Expo Go (npx expo start --no-dev --minify)
and in the iOS Simulator (npx expo run:ios --clean).
I also did (npx expo-doctor) and it passed all 15 checks. After building with EAS (eas build --platform ios --profile production), the TestFlight build crashes on launch.
I checked Xcode logs (Devices & Simulators > View Device Logs) and found this error:
`Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Termination Reason: SIGNAL 6 Abort trap: 6
Terminating Process: LoungeNavigator [4666]
Triggered by Thread: 6 Thread 6 name:
Thread 6 Crashed:
Thread 6 crashed with ARM Thread State (64-bit):
x0: 0x0000000000000000 x1: 0x0000000000000000 x2: 0x0000000000000000 x3: 0x0000000000000000
My app.json file:
"expo": {
"name": "appname",
"slug": "app",
"owner": "baint",
"version": "0.5.2",
"orientation": "portrait",
"icon": "./assets/images/IOS-App-Icon.png",
"scheme": "myapp",
"userInterfaceStyle": "automatic",
"newArchEnabled": true,
"ios": {
"supportsTablet": true,
"bundleIdentifier": "bundleIdentifier",
"icon": "./assets/images/IOS-App-Icon.png",
"buildNumber": "7",
"infoPlist": {
"NSLocationAlwaysAndWhenInUseUsageDescription": "This app requires access to your location at all times.",
"NSLocationAlwaysUsageDescription": "This app needs your location even when the app is in the background.",
"NSLocationWhenInUseUsageDescription": "We need your location.",
"ITSAppUsesNonExemptEncryption": false
}
},
"android": {
"adaptiveIcon": {
"foregroundImage": "./assets/images/IOS-App-Icon.png",
"backgroundColor": "#ffffff"
},
"package": "identifier"
},
"web": {
"bundler": "metro",
"output": "static",
"favicon": "./assets/images/favicon.png"
},
"plugins": [
"expo-router",
[
"expo-splash-screen",
{
"image": "./assets/images/IOS-App-Icon.png",
"imageWidth": 200,
"resizeMode": "contain",
"backgroundColor": "#ffffff"
}
],
"expo-asset",
[
"@rnmapbox/maps",
{
"RNMapboxMapsImpl": "mapbox",
"ios": {
"RNMapboxMapsDownloadToken": "token",
"RNMapboxMapsAccessToken": "token",
"NSLocationAlwaysAndWhenInUseUsageDescription": "This app requires access to your location at all times.",
"NSLocationAlwaysUsageDescription": "This app needs your location even when the app is in the background.",
"NSLocationWhenInUseUsageDescription": "We need your location."
}
}
],
[
"expo-build-properties",
{
"ios": {
"useFrameworks": "static",
"useModularHeaders": true
}
}
]
],
"experiments": {
"typedRoutes": true
},
"extra": {
"router": {
"origin": false
},
"eas": {
"projectId": "projectid"
}
}
}
}
My eas.json file:
"cli": {
"version": ">= 14.7.1",
"appVersionSource": "remote"
},
"build": {
"development": {
"developmentClient": true,
"distribution": "internal"
},
"preview": {
"distribution": "internal"
},
"internal": {
"distribution": "store",
"ios": {
"credentialsSource": "remote"
},
"autoIncrement": true,
"env": {
"EXPO_PUBLIC_NODE_ENV": "production"
}
},
"production": {
"autoIncrement": true,
"distribution": "store",
"env": {
"EXPO_PUBLIC_NODE_ENV": "production"
}
}
},
"submit": {
"production": {
"ios": {
"ascAppId": "ascAppId",
"appleId": "appleId",
"ascApiKeyPath": "ascApiKeyPath"
}
}
}
}
When apple pay on the web does a onshippingcontactselected it appears to truncate the zip code.
If I enter:
11111
or
11111-1111
I always get 11111. Is there any way to get the plus 4?
I am working on an XCode project and I have some Swift functions within a helper functions file. This file has some functions declared that create 3 global variables. These global variables are then used in various views throughout the app. In the functions, there are print statements for when it catches an error. However, when I run the app and I get an error that stems from this file, there are no print statements. How can I have this print statements show up in the debug console?
When I toggle a panel like navigationsidebar, I get a message in the console. I guess it's not a big issue, but is there a way to fix this message? because it appears in every project.
Unable to open mach-O at path: /AppleInternal/Library/BuildRoots/d187757d-b9a3-11ef-83e5-aabfac210453/Library/Caches/com.apple.xbs/Binaries/RenderBox/install/TempContent/Root/System/Library/PrivateFrameworks/RenderBox.framework/Versions/A/Resources/default.metallib Error:2
When you build a static library that includes DWARF information, you may encounter error messages in the binary package generated by Xcodebuild. Upon examining the DWARF information with dwarfdump, you will find that any entries containing keywords like dir are all absolute paths specific to the publisher's computer.
This is quite alarming, as it poses a risk of leaking private information. Additionally, when debugging an app, you can encounter consistent warning notes indicating that the referenced path addresses cannot be found. This is because the absolute path addresses generated during the 'xcodebuild' process reflect the paths from the computer used to build it. When distributing this to others, how can anyone access these paths?
Has the design of the secondary linking process for DWARF considered the issues related to binary distribution?
Are there existing solutions to address and handle privacy concerns?
Is there a solution to allow the distributed DWARF files to be correctly recognized during compilation and debugging of the app?
BTW: Incorrect paths can indeed affect LLDB's ability to load and debug the application effectively?
Xcode 16.1
iOS 18.1
iPad Air 13-inch (M2)
I have created a completely new Xcode project with Swift and Storyboard.
In Storyboard, I only have a tabBarController with two attached UIViewControllers.
The code from the base project hasn't been changed at all.
I created a UITest with a very simple premise.
let app = XCUIApplication()
override func setupWithError() throws {
continueAfterFailure = false
app.launch()
}
func testTabBarExistence() {
let tabBar = app.tabBars.element(boundBy: 0)
XCTAssertTrue(tabBar.waitForExistence(timeout: 5), "Tab bar should exist")
}
But this test always fails for iPad on iOS 18+, but it will succeed for anything lower (e.g. 17.5)
Hi all, reposting this from here:
https://unix.stackexchange.com/questions/789849/xattr-c-not-removing-com-apple-finderinfo-attribute
I came to this problem because my Xcode project was failing to build due to the error "resource fork, Finder information, or similar detritus not allowed" (was trying the solutions on this post).
Basically, running xattr -cr . in the terminal on my project directory removes all extended attributes except com.apple.FinderInfo, which stays on all .xcodeproj and .xcworkspace files. I've tried everything under the sun, from sudo to xattr -d to dot_clean to tar to rsync and nothing works. Is this just an immortal attribute that can never be removed? I'm truly at a loss here, this is for my senior thesis project.
Topic:
Developer Tools & Services
SubTopic:
Xcode
Tags:
Files and Storage
Xcode
Debugging
Signing Certificates
Hi,
I am getting this crash specific to iOS 18.4. This has happened only on iPad, combined with 18.4. I do not what is causing the crash. I am unable to reproduce the crash. Crash report attached at the bottom of the post.
Thank you.
first.crash
second.crash
Hi All,
I have an App on AppStore, recently the minimum supported version of the app was changed from iOS 12 to iOS 14.
Post that the TestFlight builds are crashing on launch.
If we revert the minimum supported iOS version to 12, the crash no longer happens.
This project is using cocoapods, and from the crash logs it seems the issue with with PLCrashReporter framework.
"EXC_CRASH" Termination reason: DYLD 9 weak-def symbol not found '__ZN7plcrash3PL_5async15dwarf_cfa_stateljiE10push_stateEv'.
This issue is happening only on TestFlight builds where the minimum supported version is 14.0
Any pointer to a solution is welcome.
This is an issue that occurred while using SwiftUI.
Cannot find '$state' in scope
The other view finds properties normally.
May I know why the error is occurring?
The following code is the full text of the code that causes problems.
import SwiftUI
@Observable
class HomeState {
var title: String = "Home"
}
struct HomeView: View {
@Binding var state: HomeState
var body: some View {
Text(state.title)
}
}
#Preview {
@Previewable @State var state: HomeState = .init()
HomeView(state: $state) /// Error: Cannot find '$state' in scope
}
The same error occurs when using the String type rather than the object.
What did I do wrong?
I received the attached crash report. The problem is that the crash report does not contain the abort reason - it appears to be thrown in the GCD library with no additional information.
Is it a possible deadlock?
2023-02-15_02-40-23.0077_+0100-94015bd052c4005658221a5e6279f28a75b9e92c.crash
Any ideas?
Hi!
My SwiftUI app is a rather complex browser app. Starting with iOS 18, the app crashes due to repeted reloads of the WkWebView. I’ve tracked the issue as far as I can, but I still haven’t found the root cause.
My app is structured like this:
MainView holds a cuple of subviews. It also holds a @StateObject called viewModel that holds a lot of @Published vars. The viewModel is passed as a enivormentObject.
Example from ViewModel:
@MainActor class ViewModel: NSObject, ObservableObject {
@Published public var isLoading: Bool = false
@Published public var loadProgress: Double? = 0
public func setIsLoading(_ value: Bool) async {
self.isLoading = value
}
public func setLoadProgress(_ value: Double?) async {
self.loadProgress = value
}
}
WebView is a subview of MainView, which holds a navigation bar, and a UIViewRepresentable, which is a WkWebView.
The WkWebView pushes some states to the ViewModel as the underlying values of the WkWebView changes, i.e. estimaedProgress, and isLoading. This is done via KVO and works like this:
estimatedProgressObservation = self.parent.webView.observe(\.estimatedProgress) { webView, progress in
Task {
await parent.viewModel.setLoadProgress(webView.estimatedProgress)
}
}
isLoadingObservation = self.parent.webView.observe(\.isLoading) { webView, value in
Task {
await parent.viewModel.setIsLoading(webView.isLoading)
}
}
By using a timer in WkWebViews Coordinator, i trigger a load after a configurable amount of time :
func loadUrl(url: URL) {
DispatchQueue.main.async {
console.info("Load URL: ...", sensitive: "Load URL: \(url.absoluteString)")
let policy: NSURLRequest.CachePolicy
if self.parent.settings.noCache {
policy = .reloadIgnoringLocalAndRemoteCacheData
} else {
policy = .useProtocolCachePolicy
}
let request = URLRequest(url: url, cachePolicy: policy)
self.parent.webView.load(request)
}
}
Running the app with the automatic reload enabled freezes the app after a couple of hours. It also seems to freeze Safari on the device. The device needs to be rebooted.
If I inspect the device's running processes, hundreds of ”com.apple.webkit. web content " processes are running.
Removing await parent.viewModel.setLoadProgress(webView.estimatedProgress) and await parent.viewModel.setIsLoading(webView.isLoading) fixes the issue, but it is necessary for other app functions. Therefore, is suspect that the viewModel somehow causes the bug.
The issue arises after a couple of loads 5-10. The debugger shows a message when the processes start to pile up. I suspect its related.
Failed to terminate process: Error Domain=com.apple.extensionKit.errorDomain Code=18 "(null)" UserInfo={NSUnderlyingError=0x12d0e7f60 {Error Domain=RBSServiceErrorDomain Code=1 "Client not entitled" UserInfo={RBSEntitlement=com.apple.runningboard.terminateprocess, NSLocalizedFailureReason=Client not entitled, RBSPermanent=true}}}
How can I find out what causes the suspected memory leak? Instruments gives me nothing of value. The memory leak wasn't present in iOS 17. Is this a bug in iOS 18, or was something intentionally changed?