Explore the integration of web technologies within your app. Discuss building web-based apps, leveraging Safari functionalities, and integrating with web services.

All subtopics
Posts under Safari & Web topic

Post

Replies

Boosts

Views

Activity

[iOS 26.x] WKWebView crashes with NSInternalInconsistencyException — KVO inconsistency on configuration.enforcesChildRestrictions from STScreenTimeConfigurationObserver
Summary We are seeing a recurring fatal NSInternalInconsistencyException on iOS 26.x devices. The crash originates entirely from system frameworks (Foundation / WebKit / Screen Time / NSXPCConnection) — there are no app frames in the stack. The exception is raised from an XPC reply on a worker thread, so the host app cannot wrap it in @try/@catch. The crash appears to be a KVO consistency check failing inside the platform's internal Screen Time observer (STScreenTimeConfigurationObserver) when it observes WKWebView's configuration.enforcesChildRestrictions key path. The exception message states the value of the intermediate key configuration changed without an appropriate KVO notification. Environment iOS versions: 26.2.1 (also seen on 26.0.x – 26.2.x) Devices: iPhone 13 (iPhone14,5), iPhone 16 Plus, others App orientation: portrait Process state at crash: BACKGROUND (most occurrences) App uses WKWebView in several screens (link preview, in-app web, 3rd-party SDK web views) Crash is recurring across multiple users on iOS 26.x and is reproducible at scale in production Exception Name: NSInternalInconsistencyException Reason: Cannot update for observer <WKScreenTimeConfigurationObserver 0x...> for the key path "configuration.enforcesChildRestrictions" from <STScreenTimeConfigurationObserver 0x...>, most likely because the value for the key "configuration" has changed without an appropriate KVO notification being sent. Check the KVO-compliance of the STScreenTimeConfigurationObserver class. Crashing thread (top frames) 0 CoreFoundation __exceptionPreprocess 1 libobjc.A.dylib objc_exception_throw 2 Foundation -[NSKeyValueNestedProperty object:withObservance:didChangeValueForKeyOrKeys:recurse:forwardingValues:] 3 Foundation NSKeyValueDidChange 4 Foundation -[NSObject(NSKeyValueObservingPrivate) _changeValueForKeys:count:maybeOldValuesDict:maybeNewValuesDict:usingBlock:] 5 Foundation -[NSObject(NSKeyValueObservingPrivate) _changeValueForKey:key:key:usingBlock:] 6 Foundation NSSetObjectValueAndNotify 7 CoreFoundation invoking 8 Foundation -[NSInvocation invoke] 9 Foundation 10 Foundation -[NSXPCConnection _decodeAndInvokeReplyBlockWithEvent:sequence:replyInfo:] 11 Foundation __88-[NSXPCConnection _sendInvocation:orArguments:count:methodSignature:selector:withProxy:]_block_invoke_5 12 libxpc.dylib _xpc_connection_reply_callout 13 libxpc.dylib _xpc_connection_call_reply_async 14 libdispatch.dylib _dispatch_mach_msg_async_reply_invoke 15 libdispatch.dylib _dispatch_root_queue_drain_deferred_item 16 libdispatch.dylib _dispatch_kevent_worker_thread (Every frame above frame 0 lives in the system. No app frames are present.) What we observed Crash fires asynchronously on a libdispatch kevent worker thread, triggered by an XPC reply from the Screen Time service. The exception is thrown while the platform updates a chained KVO key path (configuration.enforcesChildRestrictions) on a WKWebView instance. The intermediate key configuration apparently changed without a paired willChange/didChange notification, which Foundation's KVO machinery then flags as inconsistency. Because the throw happens on the XPC reply path, there is no app-level synchronous frame we can wrap to recover. The exception unwinds straight into std::__terminate. What we tried (no effect) Confirmed all WKWebView creation and release happens on the main thread. Stop loading and nil out navigationDelegate before releasing the WKWebView. Avoided mutating WKWebViewConfiguration after the WKWebView is created. Checked for any custom KVO on WKWebView.configuration in app code — none exists. The crash still reproduces; we have no path to mitigate it from the application side. Questions for Apple / the community Is STScreenTimeConfigurationObserver expected to observe WKWebView.configuration.enforcesChildRestrictions under all conditions on iOS 26, or only when Screen Time / Communication Limits / Child Restrictions are enabled on the device? 2. Is there a public API (WKWebViewConfiguration option, Info.plist key, etc.) to opt a WKWebView out of Screen Time observation for hosts that do not need Screen Time integration for their web content? 3. Is this a known regression in iOS 26.x KVO chained-key-path notification posting inside WebKit's Screen Time integration? If so, is a fix slated for an upcoming 26.x release? 4. Is there any recommended workaround on the application side that does not rely on swizzling private Foundation / NSXPCConnection methods? Reproduction notes We do not have a deterministic local repro. Crashes are heavily concentrated on: iOS 26.2.1 Devices with Screen Time / Communication Limits / Child Restrictions configured at the OS level App entering the BACKGROUND state shortly after a WKWebView session If anyone has a reliable local repro on a developer device, please share — we would also like to file a Feedback Assistant report with steps. Filed Feedback Will attach FB number once filed. Thanks in advance.
1
0
948
May ’26
Safari Web Extension popup never opens on iOS 26 — silent failure with all resources signed and bundled
I'm distributing a Safari Web Extension iOS app via TestFlight (built from a Chrome MV3 extension via xcrun safari-web-extension-converter on Xcode 26.0.1). The extension installs and registers correctly, but its popup never opens when the toolbar item is tapped. The behavior is silent — no error, no flash of UI, no console output. The Safari "ᴀA" menu just closes and the user is back at the article. WHAT WORKS: Extension appears in Settings → Safari → Extensions, can be enabled Permissions can be granted ("Always Allow on Every Website") Extension appears as expected in Safari's "ᴀA" address-bar menu WHAT DOESN'T WORK: Tapping the extension item in the AA menu produces no popup, no error, no visible response of any kind. Same on iPhone and iPad, both on iOS 26. WHAT I'VE VERIFIED VIA IPA INSPECTION: Extension .appex contains: manifest.json, popup.html, popup.js, background.js, content.js, and images/ with all icons _CodeSignature/CodeResources files2 lists 11 entries — every web extension resource is signed manifest declares: "action": { "default_popup": "popup.html", "default_icon": {...} } Extension Info.plist has standard NSExtension dict: NSExtensionPointIdentifier = com.apple.Safari.web-extension NSExtensionPrincipalClass = (My)_Extension.SafariWebExtensionHandler ISOLATION TEST: To rule out my popup code, I replaced popup.html with a 506-byte file containing only a static green box and "Hello World" text — no scripts, no images, no external references. This minimal popup ALSO fails to open with the same silent behavior. So this is not a script error or content issue. MANIFEST DETAILS (relevant excerpts): { "manifest_version": 3, "action": { "default_popup": "popup.html", "default_icon": {...} }, "background": { "scripts": ["background.js"], "persistent": false }, "content_scripts": [{ "matches": ["<all_urls>"], "js": ["content.js"] }], "permissions": ["activeTab", "storage", "scripting"], "host_permissions": ["<all_urls>"] } I previously had "background": { "service_worker": "background.js", "type": "module" } and switched to scripts/non-persistent based on prior forum advice about iOS Safari incompatibility with module-type service workers. No change in behavior either way. ENVIRONMENT: iOS 26 (iPhone and iPad — both affected) Built on macos-15 GitHub Actions runner with Xcode 26.0.1 Distribution via TestFlight Manifest version 3 Extension target produced by xcrun safari-web-extension-converter I cannot easily provide a focused Xcode test project as my entire build pipeline runs on GitHub Actions (no local Mac access at this time). I can share the IPA, build pipeline configuration, and source repository. Has anyone else seen silent popup failures on iOS 26 from converter-built Safari Web Extensions? Is there an Info.plist key, build setting, or NSExtension attribute the converter is missing that's needed for popups to render on iOS 26? Thanks for any insight.
1
0
959
May ’26
iOS Safari keyboard shifts entire viewport and moves fixed header
Hi, I’m experiencing a persistent issue with the iOS on-screen keyboard in mobile Safari. My website (built with PHP, but the issue is clearly on the frontend) has a fixed header (position: fixed; top: 0). However, when a user focuses on an input field and the keyboard opens, the entire viewport shifts upward. No matter what I try, the keyboard seems to push everything up: The header does not stay fixed at the top of the screen In some cases, it briefly stays, then animates/jumps as if trying to reposition itself It feels like the whole layout is being moved rather than just the visible area adjusting I’ve already tried: Removing transforms on the header Forcing position: fixed with top: 0 Avoiding 100vh Testing without custom JavaScript related to viewport handling But the behavior remains the same: opening the keyboard causes the entire layout to shift. Is this expected behavior due to how iOS handles the visual viewport? Is there a reliable way to keep a fixed header truly fixed when the keyboard appears? Any insight or recommended approach would be greatly appreciated. Thanks!
0
0
1.4k
Apr ’26
How to detect iPadOS Slide Over (floating window) from a browser-based web app using JavaScript?
What I am trying to do I am building a browser-based exam proctoring platform that runs in Safari and Chrome on iPad. I need to detect when a candidate opens another app or browser tab in Slide Over (the floating panel) while the exam is running in the background. This is a pure web app - no native wrapper, no MDM. What I've already tried I tried listening to window blur and focus events neither fires when Slide Over is triggered on Chrome. I tried document.visibilitychange - same result, it never fires during Slide Over. I tried the resize event but it is completely inconsistent on iPadOS Chrome. For Split View I am computing the ratio of window.innerWidth to window.screen.width and flagging below 0.80 as a likely split. That works. But Slide Over doesn't change the viewport at all - the exam tab stays full width in the background. So my ratio check is completely blind to it. My question Is there any JavaScript API, browser event, visualViewport property, or any other web-accessible signal that fires or changes when iPadOS enters Slide Over mode — specifically from a page running inside Safari or Chrome (WKWebView)? Even an indirect signal would help. If there's truly no way to detect this from a web page today, is there a recommended pattern or workaround that others have used? I've seen the interaction heartbeat approach (flagging when no pointerdown arrives for N seconds) but that's too noisy for an exam context where a candidate may be reading a long question.
1
0
1.6k
Apr ’26
Feature Request: Quick Search Engine Switcher in Safari Toolbar
Dear Apple Product Team, I would like to propose a usability enhancement for Safari on iOS that, in my opinion, would significantly improve the user experience. Current Situation: Currently, to change the default search engine in Safari, users must navigate to Settings → Safari → Search Engine, select their preferred option, and return to browsing. This workflow requires multiple taps and interrupts the user's flow. Proposed Solution: Add a quick search engine selector to the bottom toolbar in Safari (adjacent to the Smart Search field). Tapping this control would display a compact menu allowing users to instantly switch between available search engines (Google, DuckDuckGo, Bing, Yahoo, Ecosia, etc.) without leaving the browser. Key Benefits: ⚡️ Time-saving: Instant switching without navigating through Settings 🎯 Flexibility: Use different search engines for different query types (e.g., DuckDuckGo for privacy, Google for local results) 📱 Intuitive UX: Consistent with iOS design patterns and gesture-based navigation 🔧 Enhanced productivity: Streamlines research workflows for power users Implementation Suggestion: Long-press or tap-and-hold on the search field could trigger the selector Alternatively, a small chevron/icon next to the search field could open the menu Selected engine could persist per-tab or session-based, based on user preference I believe this feature aligns with Apple's commitment to privacy, efficiency, and user-centric design. Thank you for considering this suggestion for future iOS releases.
0
1
1.3k
Apr ’26
Lazy Loading Causes Some Images to Disappear Intermittently on iOS Devices
Hey everyone, Back in 2022 and 2023, we noticed that some images on our web pages would disappear randomly. After refreshing, some of the images that were missing would appear, but then another image would go missing. Did anyone else experience this issue? Is there a fix / workaround I can use? This only seems to be an issue on iOS devices and images that have the loading=“lazy” attribute.
2
0
1.3k
Apr ’26
Background script in the form of a service worker cannot be debugged
If the extension uses manifest v3 and a background script in the form of a service worker, then in Safari it is not possible to open the background script debugging window. If I expand the Developer menu in Safari, there is nothing under Web Extension Background Data (or disappear after click), which is an error. In other browsers (Edge, Chrome, Opera, Firefox) this works correctly. If I switch the background script back to non-persistent script mode, everything works fine and from the Developer menu and the Web Extension Background Data submenu I am able to open the background script debugging window for the extension. Am I doing something wrong?
11
6
2.6k
Apr ’26
Safari shows "Fraudulent Website Warning" for clean domain — all security databases clear, Chrome works fine
Safari continues to display a "Fraudulent Website Warning" for openvan.camp despite the domain being clean across all major security databases for over a week. Chrome, Firefox, and all other browsers open the site without any warnings. Domain: openvan.camp Warning appeared: March 18, 2026 Warning type: Fraudulent Website Warning (red screen) Current security database status: Google Safe Browsing: ✅ Clean (transparencyreport.google.com) Google Search Console: ✅ No security issues Spamhaus DBL: ✅ Removed from blocklist Fortinet FortiGuard: ✅ Category "Travel" VirusTotal: ✅ 0/65 vendors URLVoid: ✅ 0/35 engines Steps taken: Removed the third-party ad network (Adsterra) that caused the original flag — March 18, 2026 Migrated hosting to Scaleway (AS12876, France), IP: 151.115.84.228 Configured SPF, DKIM, DMARC records Created functional abuse@ and postmaster@ role accounts Submitted review via websitereview.apple.com — no response after 5 days What we believe is happening: Apple's Safe Browsing database appears to have an independent entry for this domain that has not been updated despite all underlying security databases clearing the flag. Safari's warning persists even after deleting ~/Library/Safari/SafeBrowsing/ cache and re-downloading the database — which confirms this is not a local cache issue. Steps to reproduce: Open Safari on macOS or iOS Navigate to https://openvan.camp/ Safari displays "Fraudulent Website Warning" Open the same URL in Chrome — no warning Expected behavior: No warning should be shown. The domain is legitimate, clean, and verified. Has anyone experienced a similar issue? Is there any additional channel to escalate beyond websitereview.apple.com?
1
0
784
Apr ’26
All Safari Traffic Fails on VPN
Updated to the latest developer beta and while on VPN I am no longer able to connect to any website with Safari. Firefox has no issues with the connection and the computer is definitely online. Firefox is able to load and use both internal pages and external sites, without any issue. Other apps on the computer are able to access the network. Safari fails immediately, with "There was a bad response from the server." If I enable developer mode and look at the network tab in Safari I don't see any requests going out for the pages, it just immediately loads ErrorPage.html and page-load-errors.css Disconnect from VPN and everything works again. Anyone else seeing this?
4
0
380
Apr ’26
browser.commands: Empty browser action reference causes conflicts
To provide users the ability for a keyboard shortcut to open extensions, you can define this in manifest: "commands": { "_execute_browser_action": { "description": "Open extension popup" } }, This doesn't set a keyboard shortcut yet allows the user to assign one. However, in iOS safari, when two extensions offer this functionality, the browser warns about it. See screenshot:
2
0
1.5k
Apr ’26
Issue where images from local paths cannot be retrieved in Cordova Webview starting from iOS 26.4
Hello. I am using Cordova Webview to select a photo from the album, save it locally, and then pass the saved path to the web for display. It displayed correctly up to OS 26.3.x, but starting from OS 26.4.x, I am unable to retrieve images from local paths. Part displayed in Cordova Webview I have also confirmed the existence of the corresponding file in the src path. Are there any known bugs or solutions? Thank you.
3
0
808
Apr ’26
Smart card access is blocked in Safari and other WebKit browsers during passkey sign-in when the site offers the “Security Key” option
On macOS 26, when a passkey sign-in flow is started in Safari or another WebKit-based browser (for example, DuckDuckGo browser), smart cards become inaccessible as soon as the password manager selection UI is shown, but only if the website offers “Security Key” as one of the passkey storage/authentication options. At that moment, it appears the system starts polling connected smart cards and does not properly release the transaction/session. As a result, other applications and libraries can no longer communicate with the smart card until the passkey UI is dismissed, and in practice the card may remain unavailable until the passkey sign-in flow is fully completed. This does not happen in Chrome. This does not happen if the website does not offer the “Security Key” option. This does not happen during passkey registration; the issue affects sign-in only. From our investigation, Safari/WebKit appears to open communication with connected smart cards and keep the transaction/session active. Because of that: • our own smart card code blocks while waiting for a PC/SC transaction to begin; • the system pcsctest utility also hangs and does not continue until the passkey selection UI is closed; • a minimal sample using TKSmartCard also blocks on beginSession(). This suggests the smart card is locked not only at the PC/SC level, but also at the CryptoTokenKit level. This issue is critical for us. We are developing a password manager that supports storing keys on a smart card, and due to this behavior we cannot access our card while Safari/WebKit is showing the passkey flow. Is there any way to stop safari from accessing smartcards? Any terminal commands/settings/workarounds?
1
0
809
Apr ’26
Calling SFContentBlockerManager.reloadContentBlocker from related App extension intermittently fails
I have an app which has at least two extensions: A Content Blocker extension with a request handler that returns an appropriate NSExtensionItem as part of beginRequest. A different file URL is returned depending upon if the content blocking is on or off by a user setting A Safari Web Extension that includes a toolbar button and popover that enables users to enable or disable the ad blocking of the content blocker extension All three targets (App, Content Blocker appex and Web Extension appex) use an App Group default to read and set the on or off status of the content blocking. When the user changes the content blocking status, the app group default is updated and SFContentBlockerManager.reloadContentBlocker(...) is called. The Content Blocker extension reads the default and then returns the appropriate file URL. The issue is, I have noticed that whenever SFContentBlockerManager.reloadContentBlocker(...) is called from the app, Safari always applies the correct rules from the returned file URL. However sometimes when SFContentBlockerManager.reloadContentBlocker(...) is called from the Safari Web Extension using native messaging, Safari does NOT apply the correct rules from the returned file URL. Using logging I have confirmed that the Content Blocker extension always returns the appropriate file URL irrespective if called as a result of the app or the web extension. Despite this, Safari does not seem to always apply the returned file URL rules when it is called from the Safari Web Extension appex. In these cases, quitting Safari and relaunching it seems to make it apply the rules correctly (obviously this is applying it due to its launch state, not due to the Web extension appex asking it to do so at that point). All targets have access to the App Group location where the active content blocking file URL belongs and the inactive content blocking file URL is within the Safari content blocker target as a resource. I don't think this is a memory status issue as I cannot see the Content Blocker extension being killed when it returns complex rules --- the fact it always works when called via the app also seems to rule this possibility out. This brings up a number of questions: Is calling SFContentBlockerManager.reloadContentBlocker(...) from a different appex, of the same app target and app group supported? (it seems to work sometimes and did work in previous versions of the app). Is there an issue that the Content Blocker extension sometimes returns a file URL that perhaps the calling Web Extension appex may not have access to (even though Safari should via the Content Blocker extension)? Any other ideas of why this may not be working correctly? Has anyone else experienced this? It seems to happen on both iOS and macOS Safari using the same codebase.
2
1
670
Apr ’26
WebKit.WebContent killed by jetsam (memorystatus ActiveHard 2048 MB limit) on iPhone 17 Pro with 12 GB RAM during heavy CSS animations — does NOT happen on iPad
com.apple.WebKit.WebContent process is being killed by the kernel’s memorystatus jetsam mechanism when it exceeds the ActiveHard 2048 MB limit, even though the iPhone has 12 GB physical RAM and hundreds of thousands of free pages available. This causes the exact same WebProcess → GPUProcess crash that was reported in thread 822200, but now the root cause is clearly visible in the kernel log. The crash only occurs on iPhones, never on iPads (even older ones). Environment Failing devices: iPhone 17 Pro (12 GB RAM) x 2 — iOS 26.3, 26.4, 26.4.1 Working devices (same page, same iOS): iPad Pro 2018 — iOS 26.1 (stable) iPad Pro 2025 — iOS 26.4 (completely stable) Reproduces in Safari and in WKWebView (Capacitor/Ionic app) Actual Logs (kernel + WebKit) `logApr 15 21:23:33 iPhone kernel[0] : memorystatus: com.apple.WebKit.WebContent [1596] exceeded mem limit: ActiveHard 2048 MB (fatal) Apr 15 21:23:33 iPhone kernel[0] : memorystatus: killing process 1596 [com.apple.WebKit.WebContent] in high band FOREGROUND (100) - memorystatus_available_pages: 196999 0x1110ec640 - [PID=4689] WebProcessProxy::didClose: (web process 0 crash) 0x1110ec640 - [PID=4689] WebProcessProxy::processDidTerminateOrFailedToLaunch: reason=Crash 0x117048018 - [pageProxyID=7, webPageID=8, PID=4689] WebPageProxy::processDidTerminate: (pid 4689), reason=Crash 0x1130e8640 - [PID=0] WebProcessProxy::gpuProcessExited: reason=IdleExit ... (multiple RBSRequestErrorDomain Code=4 "Target process has a higher termination resistance..." errors)` Expected Behavior With 12 GB RAM and ~197k free pages, the WebContent process should not be killed at only 2 GB. The same heavy animation page runs stably on iPad (which apparently has a higher ActiveHard limit for WebKit). Additional Notes This is not a leak in the web page itself — the crash happens even when total system memory is plentiful. The 2048 MB ActiveHard limit appears to be applied specifically to iPhone device class, while iPad gets a more generous budget. The issue has existed since at least iOS 26.3 and affects both Safari and embedded WKWebView. This seems like an overly aggressive jetsam policy for WebKit on iPhone compared to the available hardware. Could the WebContent process’s memory limit be increased for modern iPhones (12 GB+ models)? Increased Memory Limit not worked for com.apple.WebKit.WebContent. I can only add this to my app. Thank you!
Topic: Safari & Web SubTopic: General Tags:
1
0
328
Apr ’26
WebContent / GPU process crash on iPhone 15 (iOS 26.4); stable on iPad (iOS 26.4))
Summary Our app’s WKWebView triggers a WebContent / GPU process crash on iPhone 15 running iOS 26.4. The same flow works on iPad running iOS 26.4. Environment Failing: iPhone 15, iOS 26.4 Working: iPad, iOS 26.4 Web stack: WKWebView / WebKit (Safari & Web) What we see The WKWebView web process terminates; logs show WebProcess and GPU process exits, followed by RBS assertion failures and (in one WebContent process) repeated containermanagerd XPC invalidation. Expected Web content loads and remains stable like on iPad 26.4. Actual Web process crashes; page goes blank or WebView recovers only after reload. Logs 0x10715d518 - [pageProxyID=14, webPageID=15, PID=3629] WebPageProxy::dispatchProcessDidTerminate: reason=Crash\ 0x10715ce18 - [pageProxyID=22, webPageID=23, PID=3629] WebPageProxy::dispatchProcessDidTerminate: reason=Crash\ 0x1480f01e0 - GPUProcessProxy::didClose:\ 0x1480f01e0 - GPUProcessProxy::gpuProcessExited: reason=Crash\ 0x14808c640 - [PID=3633] WebProcessProxy::gpuProcessExited: reason=Crash\ 0x14808cb80 - [PID=3634] WebProcessProxy::gpuProcessExited: reason=Crash\ WebContent[3633] 0x10d07ebc0 - GPUProcessConnection::didClose\ Error acquiring assertion: <Error Domain=RBSAssertionErrorDomain Code=2 "Specified target process 3630 does not exist" UserInfo=\{NSLocalizedFailureReason=Specified target process 3630 does not exist\}>\ 0x148128600 - ProcessAssertion::acquireSync Failed to acquire RBS assertion 'XPCConnectionTerminationWatchdog' for process with PID=3630, error: (null)\ WebContent[3634] XPC connection to containermanagerd invalidated. Retry attempt 1 of 6\ WebContent[3634] XPC connection to containermanagerd invalidated. Retry attempt 2 of 6\ WebContent[3634] XPC connection to containermanagerd invalidated. Retry attempt 3 of 6\ WebContent[3634] XPC connection to containermanagerd invalidated. Retry attempt 4 of 6\ WebContent[3634] XPC connection to containermanagerd invalidated. Retry attempt 5 of 6\ WebContent[3634] XPC connection to containermanagerd invalidated. Retry attempt 6 of 6\ WebContent[3634] _container_query_get_result_at_index: error = 2\uc0\u8594 (51) XPC_INVALID_REPLY;\ WebContent[3634] container_system_group_path_for_identifier: error = ((container_error_t)51) XPC_INVALID_REPLY\ WebContent[3634] 0x11107ebc0 - GPUProcessConnection::didClose\
Topic: Safari & Web SubTopic: General Tags:
2
1
476
Apr ’26
WKWebView customUserAgent replaces system User-Agent with NetworkingExtension identifier on iOS 26.4
Reproduction Steps:a. Create a WKWebView instance and set a custom string to customUserAgent.b. Load any web page (e.g., https://example.com).c. Check the User-Agent field in the request headers via packet capture tools or Web Inspector. Expected Result:The custom User-Agent should be appended to the default system identifier (Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15...), instead of being completely overwritten. Actual Result:The User-Agent is fully replaced with: NetworkingExtension/8624.1.16.10.6 Network/5812.102.3 iOS/26.4, and all basic system identifiers are missing. Additional Information: Device: iPhone 16 Pro Max iOS Version: 26.4 (Build 20T5127) WKWebView setup: Directly set using the customUserAgent property Network Extension features are not used in the project, but the NetworkingExtension identifier still appears in the User-Agent
3
1
824
Apr ’26
WKWebsiteDataStore.httpCookieStore.deleteCookie() does no longer delete all cookies
Under iOS 26 or macOS 26 I experience some issues when trying to delete certain cookies via WKWebsiteDataStore.httpCookieStore.deleteCookie(). Most cookies can be deleted just fine, but a few simply can not be deleted anymore. Calling the deleteCookie() function with a valid cookie (retrieved via getAllCookies()) does nothing. This is not an issue under iOS 18.x or macOS 15.x or older. Looking at the exact cookie data does not show anything special which would explain why certain cookies can't be deleted anymore. It is still possible to delete cookies via WKWebsiteDataStore.removeData(ofTypes:, for:), but of course then much more data is deleted, not just individual cookies. So this is not a solution, because it is important to be able to delete individual cookies. Does anyone has a workaround or solution for this macOS/iOS bug?
Topic: Safari & Web SubTopic: General Tags:
0
0
549
Apr ’26
In the iOS 26.4 beta version of WKWebView, it is impossible to establish an IP type WebSocket connection!
In iOS 26.4 beta, I noticed that when loading pages using WKWebView and using WebSocket to establish IP type addresses, the connection duration was several seconds and sometimes even failed to connect (normally, the connection duration should be in milliseconds). However, when establishing WebSocket connections using domain names, the connections were normal. Additionally, I discovered a special scenario: When directly establishing WebSocket connections using IP type addresses, it remained in the "connect" state. At the same time, based on Wireshark packet capture, it was found that no TCP connection was sent at this time. However, if two connections with the same address were established simultaneously, those two connections could successfully connect. This bug has seriously affected the use of my application service. Is there a chance that this version will solve the problem?
3
11
1.4k
Apr ’26
WKWebsiteDataStore.allDataStoreIdentifiers crashes
Whenever I call allDataStoreIdentifiers the app just crashes, tested on both iOS 26.1 simulator and iOS 18.7 device. #0 0x00000001b0d958fc in WTF::RunLoop::dispatch () #1 0x00000001af8e0650 in WTF::Detail::CallableWrapper<WebKit::WebsiteDataStore::fetchAllDataStoreIdentifiers(WTF::CompletionHandler<void (WTF::Vector<WTF::UUID, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>&&)>&&)::$_0, void>::call () #2 0x00000001b0d96eb4 in WTF::dispatchWorkItem<WTF::(anonymous namespace)::DispatchWorkItem> () #3 0x000000010bfd6064 in _dispatch_client_callout () #4 0x000000010bfc491c in _dispatch_lane_serial_drain () #5 0x000000010bfc55a4 in _dispatch_lane_invoke () #6 0x000000010bfd1894 in _dispatch_root_queue_drain_deferred_wlh () #7 0x000000010bfd0eb0 in _dispatch_workloop_worker_thread () #8 0x0000000223cbca0c in _pthread_wqthread () Enqueued from com.apple.main-thread (Thread 1) Queue : com.apple.main-thread (serial) #0 0x000000010bfc16f0 in dispatch_async_f () #1 0x00000001af8df11c in WebKit::WebsiteDataStore::fetchAllDataStoreIdentifiers () #2 0x00000001af8dff80 in +[WKWebsiteDataStore(WKPrivate) _fetchAllIdentifiers:] () #3 0x0000000104b91714 in closure #1 in closure #1 in closure #1 in SystemHealthLiveClient.load() at /Users/superx3man/Documents/Code/chefaio-app-ios/ChefAIO/Sources/View/HomeTabs/Settings/SystemHealth/SystemHealth+Client.swift:29 I'm wondering if there's a workaround on this crash.
Topic: Safari & Web SubTopic: General
2
0
331
Apr ’26
[iOS 26.x] WKWebView crashes with NSInternalInconsistencyException — KVO inconsistency on configuration.enforcesChildRestrictions from STScreenTimeConfigurationObserver
Summary We are seeing a recurring fatal NSInternalInconsistencyException on iOS 26.x devices. The crash originates entirely from system frameworks (Foundation / WebKit / Screen Time / NSXPCConnection) — there are no app frames in the stack. The exception is raised from an XPC reply on a worker thread, so the host app cannot wrap it in @try/@catch. The crash appears to be a KVO consistency check failing inside the platform's internal Screen Time observer (STScreenTimeConfigurationObserver) when it observes WKWebView's configuration.enforcesChildRestrictions key path. The exception message states the value of the intermediate key configuration changed without an appropriate KVO notification. Environment iOS versions: 26.2.1 (also seen on 26.0.x – 26.2.x) Devices: iPhone 13 (iPhone14,5), iPhone 16 Plus, others App orientation: portrait Process state at crash: BACKGROUND (most occurrences) App uses WKWebView in several screens (link preview, in-app web, 3rd-party SDK web views) Crash is recurring across multiple users on iOS 26.x and is reproducible at scale in production Exception Name: NSInternalInconsistencyException Reason: Cannot update for observer <WKScreenTimeConfigurationObserver 0x...> for the key path "configuration.enforcesChildRestrictions" from <STScreenTimeConfigurationObserver 0x...>, most likely because the value for the key "configuration" has changed without an appropriate KVO notification being sent. Check the KVO-compliance of the STScreenTimeConfigurationObserver class. Crashing thread (top frames) 0 CoreFoundation __exceptionPreprocess 1 libobjc.A.dylib objc_exception_throw 2 Foundation -[NSKeyValueNestedProperty object:withObservance:didChangeValueForKeyOrKeys:recurse:forwardingValues:] 3 Foundation NSKeyValueDidChange 4 Foundation -[NSObject(NSKeyValueObservingPrivate) _changeValueForKeys:count:maybeOldValuesDict:maybeNewValuesDict:usingBlock:] 5 Foundation -[NSObject(NSKeyValueObservingPrivate) _changeValueForKey:key:key:usingBlock:] 6 Foundation NSSetObjectValueAndNotify 7 CoreFoundation invoking 8 Foundation -[NSInvocation invoke] 9 Foundation 10 Foundation -[NSXPCConnection _decodeAndInvokeReplyBlockWithEvent:sequence:replyInfo:] 11 Foundation __88-[NSXPCConnection _sendInvocation:orArguments:count:methodSignature:selector:withProxy:]_block_invoke_5 12 libxpc.dylib _xpc_connection_reply_callout 13 libxpc.dylib _xpc_connection_call_reply_async 14 libdispatch.dylib _dispatch_mach_msg_async_reply_invoke 15 libdispatch.dylib _dispatch_root_queue_drain_deferred_item 16 libdispatch.dylib _dispatch_kevent_worker_thread (Every frame above frame 0 lives in the system. No app frames are present.) What we observed Crash fires asynchronously on a libdispatch kevent worker thread, triggered by an XPC reply from the Screen Time service. The exception is thrown while the platform updates a chained KVO key path (configuration.enforcesChildRestrictions) on a WKWebView instance. The intermediate key configuration apparently changed without a paired willChange/didChange notification, which Foundation's KVO machinery then flags as inconsistency. Because the throw happens on the XPC reply path, there is no app-level synchronous frame we can wrap to recover. The exception unwinds straight into std::__terminate. What we tried (no effect) Confirmed all WKWebView creation and release happens on the main thread. Stop loading and nil out navigationDelegate before releasing the WKWebView. Avoided mutating WKWebViewConfiguration after the WKWebView is created. Checked for any custom KVO on WKWebView.configuration in app code — none exists. The crash still reproduces; we have no path to mitigate it from the application side. Questions for Apple / the community Is STScreenTimeConfigurationObserver expected to observe WKWebView.configuration.enforcesChildRestrictions under all conditions on iOS 26, or only when Screen Time / Communication Limits / Child Restrictions are enabled on the device? 2. Is there a public API (WKWebViewConfiguration option, Info.plist key, etc.) to opt a WKWebView out of Screen Time observation for hosts that do not need Screen Time integration for their web content? 3. Is this a known regression in iOS 26.x KVO chained-key-path notification posting inside WebKit's Screen Time integration? If so, is a fix slated for an upcoming 26.x release? 4. Is there any recommended workaround on the application side that does not rely on swizzling private Foundation / NSXPCConnection methods? Reproduction notes We do not have a deterministic local repro. Crashes are heavily concentrated on: iOS 26.2.1 Devices with Screen Time / Communication Limits / Child Restrictions configured at the OS level App entering the BACKGROUND state shortly after a WKWebView session If anyone has a reliable local repro on a developer device, please share — we would also like to file a Feedback Assistant report with steps. Filed Feedback Will attach FB number once filed. Thanks in advance.
Replies
1
Boosts
0
Views
948
Activity
May ’26
Safari Web Extension popup never opens on iOS 26 — silent failure with all resources signed and bundled
I'm distributing a Safari Web Extension iOS app via TestFlight (built from a Chrome MV3 extension via xcrun safari-web-extension-converter on Xcode 26.0.1). The extension installs and registers correctly, but its popup never opens when the toolbar item is tapped. The behavior is silent — no error, no flash of UI, no console output. The Safari "ᴀA" menu just closes and the user is back at the article. WHAT WORKS: Extension appears in Settings → Safari → Extensions, can be enabled Permissions can be granted ("Always Allow on Every Website") Extension appears as expected in Safari's "ᴀA" address-bar menu WHAT DOESN'T WORK: Tapping the extension item in the AA menu produces no popup, no error, no visible response of any kind. Same on iPhone and iPad, both on iOS 26. WHAT I'VE VERIFIED VIA IPA INSPECTION: Extension .appex contains: manifest.json, popup.html, popup.js, background.js, content.js, and images/ with all icons _CodeSignature/CodeResources files2 lists 11 entries — every web extension resource is signed manifest declares: "action": { "default_popup": "popup.html", "default_icon": {...} } Extension Info.plist has standard NSExtension dict: NSExtensionPointIdentifier = com.apple.Safari.web-extension NSExtensionPrincipalClass = (My)_Extension.SafariWebExtensionHandler ISOLATION TEST: To rule out my popup code, I replaced popup.html with a 506-byte file containing only a static green box and "Hello World" text — no scripts, no images, no external references. This minimal popup ALSO fails to open with the same silent behavior. So this is not a script error or content issue. MANIFEST DETAILS (relevant excerpts): { "manifest_version": 3, "action": { "default_popup": "popup.html", "default_icon": {...} }, "background": { "scripts": ["background.js"], "persistent": false }, "content_scripts": [{ "matches": ["<all_urls>"], "js": ["content.js"] }], "permissions": ["activeTab", "storage", "scripting"], "host_permissions": ["<all_urls>"] } I previously had "background": { "service_worker": "background.js", "type": "module" } and switched to scripts/non-persistent based on prior forum advice about iOS Safari incompatibility with module-type service workers. No change in behavior either way. ENVIRONMENT: iOS 26 (iPhone and iPad — both affected) Built on macos-15 GitHub Actions runner with Xcode 26.0.1 Distribution via TestFlight Manifest version 3 Extension target produced by xcrun safari-web-extension-converter I cannot easily provide a focused Xcode test project as my entire build pipeline runs on GitHub Actions (no local Mac access at this time). I can share the IPA, build pipeline configuration, and source repository. Has anyone else seen silent popup failures on iOS 26 from converter-built Safari Web Extensions? Is there an Info.plist key, build setting, or NSExtension attribute the converter is missing that's needed for popups to render on iOS 26? Thanks for any insight.
Replies
1
Boosts
0
Views
959
Activity
May ’26
iOS Safari keyboard shifts entire viewport and moves fixed header
Hi, I’m experiencing a persistent issue with the iOS on-screen keyboard in mobile Safari. My website (built with PHP, but the issue is clearly on the frontend) has a fixed header (position: fixed; top: 0). However, when a user focuses on an input field and the keyboard opens, the entire viewport shifts upward. No matter what I try, the keyboard seems to push everything up: The header does not stay fixed at the top of the screen In some cases, it briefly stays, then animates/jumps as if trying to reposition itself It feels like the whole layout is being moved rather than just the visible area adjusting I’ve already tried: Removing transforms on the header Forcing position: fixed with top: 0 Avoiding 100vh Testing without custom JavaScript related to viewport handling But the behavior remains the same: opening the keyboard causes the entire layout to shift. Is this expected behavior due to how iOS handles the visual viewport? Is there a reliable way to keep a fixed header truly fixed when the keyboard appears? Any insight or recommended approach would be greatly appreciated. Thanks!
Replies
0
Boosts
0
Views
1.4k
Activity
Apr ’26
How to detect iPadOS Slide Over (floating window) from a browser-based web app using JavaScript?
What I am trying to do I am building a browser-based exam proctoring platform that runs in Safari and Chrome on iPad. I need to detect when a candidate opens another app or browser tab in Slide Over (the floating panel) while the exam is running in the background. This is a pure web app - no native wrapper, no MDM. What I've already tried I tried listening to window blur and focus events neither fires when Slide Over is triggered on Chrome. I tried document.visibilitychange - same result, it never fires during Slide Over. I tried the resize event but it is completely inconsistent on iPadOS Chrome. For Split View I am computing the ratio of window.innerWidth to window.screen.width and flagging below 0.80 as a likely split. That works. But Slide Over doesn't change the viewport at all - the exam tab stays full width in the background. So my ratio check is completely blind to it. My question Is there any JavaScript API, browser event, visualViewport property, or any other web-accessible signal that fires or changes when iPadOS enters Slide Over mode — specifically from a page running inside Safari or Chrome (WKWebView)? Even an indirect signal would help. If there's truly no way to detect this from a web page today, is there a recommended pattern or workaround that others have used? I've seen the interaction heartbeat approach (flagging when no pointerdown arrives for N seconds) but that's too noisy for an exam context where a candidate may be reading a long question.
Replies
1
Boosts
0
Views
1.6k
Activity
Apr ’26
Feature Request: Quick Search Engine Switcher in Safari Toolbar
Dear Apple Product Team, I would like to propose a usability enhancement for Safari on iOS that, in my opinion, would significantly improve the user experience. Current Situation: Currently, to change the default search engine in Safari, users must navigate to Settings → Safari → Search Engine, select their preferred option, and return to browsing. This workflow requires multiple taps and interrupts the user's flow. Proposed Solution: Add a quick search engine selector to the bottom toolbar in Safari (adjacent to the Smart Search field). Tapping this control would display a compact menu allowing users to instantly switch between available search engines (Google, DuckDuckGo, Bing, Yahoo, Ecosia, etc.) without leaving the browser. Key Benefits: ⚡️ Time-saving: Instant switching without navigating through Settings 🎯 Flexibility: Use different search engines for different query types (e.g., DuckDuckGo for privacy, Google for local results) 📱 Intuitive UX: Consistent with iOS design patterns and gesture-based navigation 🔧 Enhanced productivity: Streamlines research workflows for power users Implementation Suggestion: Long-press or tap-and-hold on the search field could trigger the selector Alternatively, a small chevron/icon next to the search field could open the menu Selected engine could persist per-tab or session-based, based on user preference I believe this feature aligns with Apple's commitment to privacy, efficiency, and user-centric design. Thank you for considering this suggestion for future iOS releases.
Replies
0
Boosts
1
Views
1.3k
Activity
Apr ’26
Lazy Loading Causes Some Images to Disappear Intermittently on iOS Devices
Hey everyone, Back in 2022 and 2023, we noticed that some images on our web pages would disappear randomly. After refreshing, some of the images that were missing would appear, but then another image would go missing. Did anyone else experience this issue? Is there a fix / workaround I can use? This only seems to be an issue on iOS devices and images that have the loading=“lazy” attribute.
Replies
2
Boosts
0
Views
1.3k
Activity
Apr ’26
Background script in the form of a service worker cannot be debugged
If the extension uses manifest v3 and a background script in the form of a service worker, then in Safari it is not possible to open the background script debugging window. If I expand the Developer menu in Safari, there is nothing under Web Extension Background Data (or disappear after click), which is an error. In other browsers (Edge, Chrome, Opera, Firefox) this works correctly. If I switch the background script back to non-persistent script mode, everything works fine and from the Developer menu and the Web Extension Background Data submenu I am able to open the background script debugging window for the extension. Am I doing something wrong?
Replies
11
Boosts
6
Views
2.6k
Activity
Apr ’26
Safari shows "Fraudulent Website Warning" for clean domain — all security databases clear, Chrome works fine
Safari continues to display a "Fraudulent Website Warning" for openvan.camp despite the domain being clean across all major security databases for over a week. Chrome, Firefox, and all other browsers open the site without any warnings. Domain: openvan.camp Warning appeared: March 18, 2026 Warning type: Fraudulent Website Warning (red screen) Current security database status: Google Safe Browsing: ✅ Clean (transparencyreport.google.com) Google Search Console: ✅ No security issues Spamhaus DBL: ✅ Removed from blocklist Fortinet FortiGuard: ✅ Category "Travel" VirusTotal: ✅ 0/65 vendors URLVoid: ✅ 0/35 engines Steps taken: Removed the third-party ad network (Adsterra) that caused the original flag — March 18, 2026 Migrated hosting to Scaleway (AS12876, France), IP: 151.115.84.228 Configured SPF, DKIM, DMARC records Created functional abuse@ and postmaster@ role accounts Submitted review via websitereview.apple.com — no response after 5 days What we believe is happening: Apple's Safe Browsing database appears to have an independent entry for this domain that has not been updated despite all underlying security databases clearing the flag. Safari's warning persists even after deleting ~/Library/Safari/SafeBrowsing/ cache and re-downloading the database — which confirms this is not a local cache issue. Steps to reproduce: Open Safari on macOS or iOS Navigate to https://openvan.camp/ Safari displays "Fraudulent Website Warning" Open the same URL in Chrome — no warning Expected behavior: No warning should be shown. The domain is legitimate, clean, and verified. Has anyone experienced a similar issue? Is there any additional channel to escalate beyond websitereview.apple.com?
Replies
1
Boosts
0
Views
784
Activity
Apr ’26
All Safari Traffic Fails on VPN
Updated to the latest developer beta and while on VPN I am no longer able to connect to any website with Safari. Firefox has no issues with the connection and the computer is definitely online. Firefox is able to load and use both internal pages and external sites, without any issue. Other apps on the computer are able to access the network. Safari fails immediately, with "There was a bad response from the server." If I enable developer mode and look at the network tab in Safari I don't see any requests going out for the pages, it just immediately loads ErrorPage.html and page-load-errors.css Disconnect from VPN and everything works again. Anyone else seeing this?
Replies
4
Boosts
0
Views
380
Activity
Apr ’26
browser.commands: Empty browser action reference causes conflicts
To provide users the ability for a keyboard shortcut to open extensions, you can define this in manifest: "commands": { "_execute_browser_action": { "description": "Open extension popup" } }, This doesn't set a keyboard shortcut yet allows the user to assign one. However, in iOS safari, when two extensions offer this functionality, the browser warns about it. See screenshot:
Replies
2
Boosts
0
Views
1.5k
Activity
Apr ’26
Issue where images from local paths cannot be retrieved in Cordova Webview starting from iOS 26.4
Hello. I am using Cordova Webview to select a photo from the album, save it locally, and then pass the saved path to the web for display. It displayed correctly up to OS 26.3.x, but starting from OS 26.4.x, I am unable to retrieve images from local paths. Part displayed in Cordova Webview I have also confirmed the existence of the corresponding file in the src path. Are there any known bugs or solutions? Thank you.
Replies
3
Boosts
0
Views
808
Activity
Apr ’26
Smart card access is blocked in Safari and other WebKit browsers during passkey sign-in when the site offers the “Security Key” option
On macOS 26, when a passkey sign-in flow is started in Safari or another WebKit-based browser (for example, DuckDuckGo browser), smart cards become inaccessible as soon as the password manager selection UI is shown, but only if the website offers “Security Key” as one of the passkey storage/authentication options. At that moment, it appears the system starts polling connected smart cards and does not properly release the transaction/session. As a result, other applications and libraries can no longer communicate with the smart card until the passkey UI is dismissed, and in practice the card may remain unavailable until the passkey sign-in flow is fully completed. This does not happen in Chrome. This does not happen if the website does not offer the “Security Key” option. This does not happen during passkey registration; the issue affects sign-in only. From our investigation, Safari/WebKit appears to open communication with connected smart cards and keep the transaction/session active. Because of that: • our own smart card code blocks while waiting for a PC/SC transaction to begin; • the system pcsctest utility also hangs and does not continue until the passkey selection UI is closed; • a minimal sample using TKSmartCard also blocks on beginSession(). This suggests the smart card is locked not only at the PC/SC level, but also at the CryptoTokenKit level. This issue is critical for us. We are developing a password manager that supports storing keys on a smart card, and due to this behavior we cannot access our card while Safari/WebKit is showing the passkey flow. Is there any way to stop safari from accessing smartcards? Any terminal commands/settings/workarounds?
Replies
1
Boosts
0
Views
809
Activity
Apr ’26
Calling SFContentBlockerManager.reloadContentBlocker from related App extension intermittently fails
I have an app which has at least two extensions: A Content Blocker extension with a request handler that returns an appropriate NSExtensionItem as part of beginRequest. A different file URL is returned depending upon if the content blocking is on or off by a user setting A Safari Web Extension that includes a toolbar button and popover that enables users to enable or disable the ad blocking of the content blocker extension All three targets (App, Content Blocker appex and Web Extension appex) use an App Group default to read and set the on or off status of the content blocking. When the user changes the content blocking status, the app group default is updated and SFContentBlockerManager.reloadContentBlocker(...) is called. The Content Blocker extension reads the default and then returns the appropriate file URL. The issue is, I have noticed that whenever SFContentBlockerManager.reloadContentBlocker(...) is called from the app, Safari always applies the correct rules from the returned file URL. However sometimes when SFContentBlockerManager.reloadContentBlocker(...) is called from the Safari Web Extension using native messaging, Safari does NOT apply the correct rules from the returned file URL. Using logging I have confirmed that the Content Blocker extension always returns the appropriate file URL irrespective if called as a result of the app or the web extension. Despite this, Safari does not seem to always apply the returned file URL rules when it is called from the Safari Web Extension appex. In these cases, quitting Safari and relaunching it seems to make it apply the rules correctly (obviously this is applying it due to its launch state, not due to the Web extension appex asking it to do so at that point). All targets have access to the App Group location where the active content blocking file URL belongs and the inactive content blocking file URL is within the Safari content blocker target as a resource. I don't think this is a memory status issue as I cannot see the Content Blocker extension being killed when it returns complex rules --- the fact it always works when called via the app also seems to rule this possibility out. This brings up a number of questions: Is calling SFContentBlockerManager.reloadContentBlocker(...) from a different appex, of the same app target and app group supported? (it seems to work sometimes and did work in previous versions of the app). Is there an issue that the Content Blocker extension sometimes returns a file URL that perhaps the calling Web Extension appex may not have access to (even though Safari should via the Content Blocker extension)? Any other ideas of why this may not be working correctly? Has anyone else experienced this? It seems to happen on both iOS and macOS Safari using the same codebase.
Replies
2
Boosts
1
Views
670
Activity
Apr ’26
WebKit.WebContent killed by jetsam (memorystatus ActiveHard 2048 MB limit) on iPhone 17 Pro with 12 GB RAM during heavy CSS animations — does NOT happen on iPad
com.apple.WebKit.WebContent process is being killed by the kernel’s memorystatus jetsam mechanism when it exceeds the ActiveHard 2048 MB limit, even though the iPhone has 12 GB physical RAM and hundreds of thousands of free pages available. This causes the exact same WebProcess → GPUProcess crash that was reported in thread 822200, but now the root cause is clearly visible in the kernel log. The crash only occurs on iPhones, never on iPads (even older ones). Environment Failing devices: iPhone 17 Pro (12 GB RAM) x 2 — iOS 26.3, 26.4, 26.4.1 Working devices (same page, same iOS): iPad Pro 2018 — iOS 26.1 (stable) iPad Pro 2025 — iOS 26.4 (completely stable) Reproduces in Safari and in WKWebView (Capacitor/Ionic app) Actual Logs (kernel + WebKit) `logApr 15 21:23:33 iPhone kernel[0] : memorystatus: com.apple.WebKit.WebContent [1596] exceeded mem limit: ActiveHard 2048 MB (fatal) Apr 15 21:23:33 iPhone kernel[0] : memorystatus: killing process 1596 [com.apple.WebKit.WebContent] in high band FOREGROUND (100) - memorystatus_available_pages: 196999 0x1110ec640 - [PID=4689] WebProcessProxy::didClose: (web process 0 crash) 0x1110ec640 - [PID=4689] WebProcessProxy::processDidTerminateOrFailedToLaunch: reason=Crash 0x117048018 - [pageProxyID=7, webPageID=8, PID=4689] WebPageProxy::processDidTerminate: (pid 4689), reason=Crash 0x1130e8640 - [PID=0] WebProcessProxy::gpuProcessExited: reason=IdleExit ... (multiple RBSRequestErrorDomain Code=4 "Target process has a higher termination resistance..." errors)` Expected Behavior With 12 GB RAM and ~197k free pages, the WebContent process should not be killed at only 2 GB. The same heavy animation page runs stably on iPad (which apparently has a higher ActiveHard limit for WebKit). Additional Notes This is not a leak in the web page itself — the crash happens even when total system memory is plentiful. The 2048 MB ActiveHard limit appears to be applied specifically to iPhone device class, while iPad gets a more generous budget. The issue has existed since at least iOS 26.3 and affects both Safari and embedded WKWebView. This seems like an overly aggressive jetsam policy for WebKit on iPhone compared to the available hardware. Could the WebContent process’s memory limit be increased for modern iPhones (12 GB+ models)? Increased Memory Limit not worked for com.apple.WebKit.WebContent. I can only add this to my app. Thank you!
Topic: Safari & Web SubTopic: General Tags:
Replies
1
Boosts
0
Views
328
Activity
Apr ’26
WebContent / GPU process crash on iPhone 15 (iOS 26.4); stable on iPad (iOS 26.4))
Summary Our app’s WKWebView triggers a WebContent / GPU process crash on iPhone 15 running iOS 26.4. The same flow works on iPad running iOS 26.4. Environment Failing: iPhone 15, iOS 26.4 Working: iPad, iOS 26.4 Web stack: WKWebView / WebKit (Safari & Web) What we see The WKWebView web process terminates; logs show WebProcess and GPU process exits, followed by RBS assertion failures and (in one WebContent process) repeated containermanagerd XPC invalidation. Expected Web content loads and remains stable like on iPad 26.4. Actual Web process crashes; page goes blank or WebView recovers only after reload. Logs 0x10715d518 - [pageProxyID=14, webPageID=15, PID=3629] WebPageProxy::dispatchProcessDidTerminate: reason=Crash\ 0x10715ce18 - [pageProxyID=22, webPageID=23, PID=3629] WebPageProxy::dispatchProcessDidTerminate: reason=Crash\ 0x1480f01e0 - GPUProcessProxy::didClose:\ 0x1480f01e0 - GPUProcessProxy::gpuProcessExited: reason=Crash\ 0x14808c640 - [PID=3633] WebProcessProxy::gpuProcessExited: reason=Crash\ 0x14808cb80 - [PID=3634] WebProcessProxy::gpuProcessExited: reason=Crash\ WebContent[3633] 0x10d07ebc0 - GPUProcessConnection::didClose\ Error acquiring assertion: <Error Domain=RBSAssertionErrorDomain Code=2 "Specified target process 3630 does not exist" UserInfo=\{NSLocalizedFailureReason=Specified target process 3630 does not exist\}>\ 0x148128600 - ProcessAssertion::acquireSync Failed to acquire RBS assertion 'XPCConnectionTerminationWatchdog' for process with PID=3630, error: (null)\ WebContent[3634] XPC connection to containermanagerd invalidated. Retry attempt 1 of 6\ WebContent[3634] XPC connection to containermanagerd invalidated. Retry attempt 2 of 6\ WebContent[3634] XPC connection to containermanagerd invalidated. Retry attempt 3 of 6\ WebContent[3634] XPC connection to containermanagerd invalidated. Retry attempt 4 of 6\ WebContent[3634] XPC connection to containermanagerd invalidated. Retry attempt 5 of 6\ WebContent[3634] XPC connection to containermanagerd invalidated. Retry attempt 6 of 6\ WebContent[3634] _container_query_get_result_at_index: error = 2\uc0\u8594 (51) XPC_INVALID_REPLY;\ WebContent[3634] container_system_group_path_for_identifier: error = ((container_error_t)51) XPC_INVALID_REPLY\ WebContent[3634] 0x11107ebc0 - GPUProcessConnection::didClose\
Topic: Safari & Web SubTopic: General Tags:
Replies
2
Boosts
1
Views
476
Activity
Apr ’26
WKWebView customUserAgent replaces system User-Agent with NetworkingExtension identifier on iOS 26.4
Reproduction Steps:a. Create a WKWebView instance and set a custom string to customUserAgent.b. Load any web page (e.g., https://example.com).c. Check the User-Agent field in the request headers via packet capture tools or Web Inspector. Expected Result:The custom User-Agent should be appended to the default system identifier (Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15...), instead of being completely overwritten. Actual Result:The User-Agent is fully replaced with: NetworkingExtension/8624.1.16.10.6 Network/5812.102.3 iOS/26.4, and all basic system identifiers are missing. Additional Information: Device: iPhone 16 Pro Max iOS Version: 26.4 (Build 20T5127) WKWebView setup: Directly set using the customUserAgent property Network Extension features are not used in the project, but the NetworkingExtension identifier still appears in the User-Agent
Replies
3
Boosts
1
Views
824
Activity
Apr ’26
WKWebsiteDataStore.httpCookieStore.deleteCookie() does no longer delete all cookies
Under iOS 26 or macOS 26 I experience some issues when trying to delete certain cookies via WKWebsiteDataStore.httpCookieStore.deleteCookie(). Most cookies can be deleted just fine, but a few simply can not be deleted anymore. Calling the deleteCookie() function with a valid cookie (retrieved via getAllCookies()) does nothing. This is not an issue under iOS 18.x or macOS 15.x or older. Looking at the exact cookie data does not show anything special which would explain why certain cookies can't be deleted anymore. It is still possible to delete cookies via WKWebsiteDataStore.removeData(ofTypes:, for:), but of course then much more data is deleted, not just individual cookies. So this is not a solution, because it is important to be able to delete individual cookies. Does anyone has a workaround or solution for this macOS/iOS bug?
Topic: Safari & Web SubTopic: General Tags:
Replies
0
Boosts
0
Views
549
Activity
Apr ’26
In the iOS 26.4 beta version of WKWebView, it is impossible to establish an IP type WebSocket connection!
In iOS 26.4 beta, I noticed that when loading pages using WKWebView and using WebSocket to establish IP type addresses, the connection duration was several seconds and sometimes even failed to connect (normally, the connection duration should be in milliseconds). However, when establishing WebSocket connections using domain names, the connections were normal. Additionally, I discovered a special scenario: When directly establishing WebSocket connections using IP type addresses, it remained in the "connect" state. At the same time, based on Wireshark packet capture, it was found that no TCP connection was sent at this time. However, if two connections with the same address were established simultaneously, those two connections could successfully connect. This bug has seriously affected the use of my application service. Is there a chance that this version will solve the problem?
Replies
3
Boosts
11
Views
1.4k
Activity
Apr ’26
WKWebsiteDataStore.allDataStoreIdentifiers crashes
Whenever I call allDataStoreIdentifiers the app just crashes, tested on both iOS 26.1 simulator and iOS 18.7 device. #0 0x00000001b0d958fc in WTF::RunLoop::dispatch () #1 0x00000001af8e0650 in WTF::Detail::CallableWrapper<WebKit::WebsiteDataStore::fetchAllDataStoreIdentifiers(WTF::CompletionHandler<void (WTF::Vector<WTF::UUID, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>&&)>&&)::$_0, void>::call () #2 0x00000001b0d96eb4 in WTF::dispatchWorkItem<WTF::(anonymous namespace)::DispatchWorkItem> () #3 0x000000010bfd6064 in _dispatch_client_callout () #4 0x000000010bfc491c in _dispatch_lane_serial_drain () #5 0x000000010bfc55a4 in _dispatch_lane_invoke () #6 0x000000010bfd1894 in _dispatch_root_queue_drain_deferred_wlh () #7 0x000000010bfd0eb0 in _dispatch_workloop_worker_thread () #8 0x0000000223cbca0c in _pthread_wqthread () Enqueued from com.apple.main-thread (Thread 1) Queue : com.apple.main-thread (serial) #0 0x000000010bfc16f0 in dispatch_async_f () #1 0x00000001af8df11c in WebKit::WebsiteDataStore::fetchAllDataStoreIdentifiers () #2 0x00000001af8dff80 in +[WKWebsiteDataStore(WKPrivate) _fetchAllIdentifiers:] () #3 0x0000000104b91714 in closure #1 in closure #1 in closure #1 in SystemHealthLiveClient.load() at /Users/superx3man/Documents/Code/chefaio-app-ios/ChefAIO/Sources/View/HomeTabs/Settings/SystemHealth/SystemHealth+Client.swift:29 I'm wondering if there's a workaround on this crash.
Topic: Safari & Web SubTopic: General
Replies
2
Boosts
0
Views
331
Activity
Apr ’26
升级到iOS18.7.7 App 访问网络报错
升级到iOS18.7.7 App 使用网络访问xxxx 网址的时候报错: “此服务器的证书无效。你可能正在连接到一个伪装成“xxxx”的服务器,这会威胁到你的机密信息的安全。”
Topic: Safari & Web SubTopic: General
Replies
1
Boosts
0
Views
341
Activity
Apr ’26