Summary
Our iOS app crashes immediately on launch on a physical device when linking StreamChatSwiftUI.
The crash reproduces with both:
stream-chat-swiftui 5.5.0
stream-chat-swiftui 5.6.0
The crash does not reproduce on Simulator.
Environment
- Device: iPhone17,1
- OS: iOS 26.5
- Distribution: TestFlight
- Xcode: 26.5
- Xcode build version: 17F42
StreamChatSwiftUI: reproduced with 5.5.0 and 5.6.0
StreamChat: reproduced with matching 5.5.0 and 5.6.0
Crash
Exception Type: EXC_CRASH (SIGABRT)
Termination Reason: DYLD 0
Symbol not found:
_$s17StreamChatSwiftUI0B20ChannelListViewModelC16handleHideTabBar33_0BA79752707C776D439FA23BC72A8AA1LLyyF
Referenced from:
<app executable>
Expected as weak-def export from some loaded dylib
Related Source
The missing symbol appears to correspond to this method in Sources/StreamChatSwiftUI/ChatChannelList/ChatChannelListViewModel.swift:
@objc private func handleHideTabBar() {
hideTabBar = true
}
It is registered as a NotificationCenter selector:
NotificationCenter.default.addObserver(
self,
selector: #selector(handleHideTabBar),
name: NSNotification.Name(hideTabBarNotification),
object: nil
)
Extra Debugging
Inspecting the built device object shows handleHideTabBar as a weak external symbol rather than a concrete definition:
weak external _$s17StreamChatSwiftUI0B20ChannelListViewModelC16handleHideTabBar33_0BA79752707C776D439FA23BC72A8AA1LLyyF
Then dyld fails during launch on the physical device.
Expected Behavior
The app launches on a physical device.
Actual Behavior
The app aborts before app code runs.
Notes
This looks like a device/archive linker or Swift symbol emission issue around a private @objc method used as a selector. Since it reproduces with both 5.5.0 and 5.6.0, it may be triggered by the Xcode 26.5 / Swift toolchain behavior rather than a specific source change in 5.6.0.
Would it be possible to make handleHideTabBar non-private/internal, or replace the selector-based notification observation with closure-based observation to avoid private Swift symbol binding?
Summary
Our iOS app crashes immediately on launch on a physical device when linking
StreamChatSwiftUI.The crash reproduces with both:
stream-chat-swiftui5.5.0stream-chat-swiftui5.6.0The crash does not reproduce on Simulator.
Environment
StreamChatSwiftUI: reproduced with5.5.0and5.6.0StreamChat: reproduced with matching5.5.0and5.6.0Crash
Related Source
The missing symbol appears to correspond to this method in
Sources/StreamChatSwiftUI/ChatChannelList/ChatChannelListViewModel.swift:It is registered as a
NotificationCenterselector:Extra Debugging
Inspecting the built device object shows
handleHideTabBaras a weak external symbol rather than a concrete definition:Then dyld fails during launch on the physical device.
Expected Behavior
The app launches on a physical device.
Actual Behavior
The app aborts before app code runs.
Notes
This looks like a device/archive linker or Swift symbol emission issue around a private
@objcmethod used as a selector. Since it reproduces with both5.5.0and5.6.0, it may be triggered by the Xcode 26.5 / Swift toolchain behavior rather than a specific source change in5.6.0.Would it be possible to make
handleHideTabBarnon-private/internal, or replace the selector-based notification observation with closure-based observation to avoid private Swift symbol binding?