Layout Engine Crash on iOS 26: NSInternalInconsistencyException

Starting with iOS 26 beta, I'm encountering an intermittent crash in production builds related to Auto Layout and background threading. This crash did not occur on iOS 18 or earlier and has become reproducible only on devices running iOS 26 betas.

We have already performed a thorough audit of our code: • Verified that all UIKit view hierarchy and layout mutations occur on the main thread. • Re-tested with strict logging—confirmed all remaining layout/constraint/view updates are performed on the main thread. • No third-party UI SDKs are used in the relevant flow.

Despite that, the crash still occurs and always from a background thread, during internal UIKit layout commits.

Fatal Exception: NSInternalInconsistencyException

Modifications to the layout engine must not be performed from a background thread after it has been accessed from the main thread.

0  MyApp                     0x7adbc8 FIRCLSProcessRecordAllThreads + 172
1  MyApp                     0x7adfd4 FIRCLSProcessRecordAllThreads + 1208
2  MyApp                     0x7bc4b4 FIRCLSHandler + 56
3  MyApp                     0x7bc25c __FIRCLSExceptionRecord_block_invoke + 100
4  libdispatch.dylib              0x1b7cc _dispatch_client_callout + 16
5  libdispatch.dylib              0x118a0 _dispatch_lane_barrier_sync_invoke_and_complete + 56
6  MyApp                     0x7bb1f0 FIRCLSExceptionRecord + 224
7  MyApp                     0x7bbd1c FIRCLSExceptionRecordNSException + 456
8  MyApp                     0x7badf4 FIRCLSTerminateHandler() + 396
9  Intercom                       0x86684 IntercomSDK_sentrycrashcm_cppexception_getAPI + 308
10 libc++abi.dylib                0x11bdc std::__terminate(void (*)()) + 16
11 libc++abi.dylib                0x15314 __cxa_get_exception_ptr + 86
12 libc++abi.dylib                0x152bc __cxxabiv1::failed_throw(__cxxabiv1::__cxa_exception*) + 90
13 libobjc.A.dylib                0x3190c objc_exception_throw + 448
14 CoreAutoLayout                 0x13a4 -[NSISEngine optimize] + 314
15 CoreAutoLayout                 0x1734 -[NSISEngine _optimizeWithoutRebuilding] + 72
16 CoreAutoLayout                 0x1404 -[NSISEngine optimize] + 96
17 CoreAutoLayout                 0xee8 -[NSISEngine performPendingChangeNotifications] + 104
18 UIKitCore                      0x27ac8 -[UIView(Hierarchy) layoutSubviews] + 136
19 UIKitCore                      0xfe760 -[UIWindow layoutSubviews] + 68
20 UIKitCore                      0x234228 -[UITextEffectsWindow layoutSubviews] + 44
21 UIKitCore                      0x27674 -[UIImageView animationImages] + 912
22 UIKitCore                      0x28134 -[UIView(Internal) _viewControllerToNotifyOnLayoutSubviews] + 40
23 UIKitCore                      0x18c2898 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 2532
24 QuartzCore                     0xabd98 CA::Layer::perform_update_(CA::Layer*, CALayer*, unsigned int, CA::Transaction*) + 116
25 QuartzCore                     0x8e810 CA::Layer::update_if_needed(CA::Transaction*, unsigned int, unsigned int) + 600
26 QuartzCore                     0xad45c CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 200
27 QuartzCore                     0x6e30c CA::Context::commit_transaction(CA::Transaction*, double, double*) + 540
28 QuartzCore                     0x9afc4 CA::Transaction::commit() + 644
29 QuartzCore                     0x16974c CA::Transaction::release_thread(void*) + 180
30 libsystem_pthread.dylib        0x4c28 _pthread_tsd_cleanup + 620
31 libsystem_pthread.dylib        0x4998 _pthread_exit + 84
32 libsystem_pthread.dylib        0x5e3c pthread_atfork + 54
33 libsystem_pthread.dylib        0x1440 _pthread_wqthread + 428
34 libsystem_pthread.dylib        0x8c0 start_wqthread + 8

Any ideas?

[UPDATE] I’ve identified one of the triggers for the crash.

The crash occurs immediately after calling becomeFirstResponder() on a UITextField (or similar view) that is fully added to the view hierarchy and visible on screen. This call is made from the main thread. In case of SwiftUI, the crash happens if using @FocusState:

@FocusState private var textFieldFocused: Bool

TextField("...", text: $text)
    .focused($textFieldFocused)
    .onAppear {
        textFieldFocused = viewModel.shouldFocusWhenAppear
    }

The console log include:

Unsupported layout off the main thread for <UIRemoteKeyboardWindow: 0x135d11900> with no associated or ancestor view controller

Followed by a crash:

NSInternalInconsistencyException: Modifications to the layout engine must not be performed from a background thread after it has been accessed from the main thread.

I'm running into the same exact issue in my code base as well

Layout Engine Crash on iOS 26: NSInternalInconsistencyException
 
 
Q