Repository navigation
iOS Crash on value change in RNCSliderEventEmitter::onRNCSliderValueChange #782
Description
This crash is occurring on iOS 26.2 using an iPhone 17 Pro. It is a known issue in the Fabric (New Architecture) C++ layer of React Native when interacting with the RNCSlider component.
Wikipedia
Wikipedia
+2
The crash is triggered by _UIFluidSliderInteraction (part of the Liquid Glass UI redesign in iOS 26) when it attempts to dispatch a value change event to a React component that may no longer be valid in the shadow tree.
Crashed: com.apple.main-thread
0 AppName facebook::react::EventEmitter::dispatchEvent(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator>, std::__1::shared_ptr<facebook::react::EventPayload const>, facebook::react::RawEvent::Category) const + 1370 (shared_ptr.h:1370)
1 AppName facebook::react::EventEmitter::dispatchEvent(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator>, std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&)> const&, facebook::react::RawEvent::Category) const + 557 (shared_ptr.h:557)
2 AppName facebook::react::RNCSliderEventEmitter::onRNCSliderValueChange(facebook::react::RNCSliderEventEmitter::OnRNCSliderValueChange) const + 403 (function.h:403)
3 AppName -[RNCSliderComponentView RNCSendSliderEvent:withContinuous:isSlidingStart:] + 557 (shared_ptr.h:557)
4 UIKitCore -[UIApplication sendAction:to:from:forEvent:] + 100
5 UIKitCore -[UIControl sendAction:to:forEvent:] + 112
6 UIKitCore -[UIControl _sendActionsForEvents:withEvent:] + 376
7 UIKitCore block_destroy_helper.7 + 3780
8 UIKitCore block_destroy_helper.7 + 6756
9 UIKitCore -[_UIFluidSliderInteraction _handler] + 260
10 UIKitCore -[_UIFluidSliderInteraction _handler] + 72
11 UIKitCore -[_UIFluidSliderInteraction _issueUpdate] + 1368
12 UIKitCore __59-[_UIFluidSliderInteraction initWithConfiguration:handler:]_block_invoke + 32
13 UIKitCore block_copy_helper + 44
14 UIKitCore __swift_memcpy4_1 + 8476
15 UIKitCore block_copy_helper.374 + 40
16 UIKitCore -[_UIAppCACommitFuture _invoke] + 64
17 QuartzCore CA::Transaction::run_commit_handlers(CATransactionPhase) + 120
18 QuartzCore CA::Context::commit_transaction(CA::Transaction*, double, double*) + 9036
19 QuartzCore CA::Transaction::commit() + 644
20 QuartzCore CA::Transaction::flush_as_runloop_observer(bool) + 88
21 UIKitCore _UIApplicationFlushCATransaction + 52
22 UIKitCore __setupUpdateSequence_block_invoke_2 + 352
23 UIKitCore _UIUpdateSequenceRunNext + 128
24 UIKitCore schedulerStepScheduledMainSectionContinue + 60
25 UpdateCycle UC::DriverCore::continueProcessing() + 84
26 CoreFoundation CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 28
27 CoreFoundation __CFRunLoopDoSource0 + 172
28 CoreFoundation __CFRunLoopDoSources0 + 232
29 CoreFoundation __CFRunLoopRun + 820
30 CoreFoundation _CFRunLoopRunSpecificWithOptions + 532
31 GraphicsServices GSEventRunModal + 120
32 UIKitCore -[UIApplication _run] + 792
33 UIKitCore UIApplicationMain + 336
34 AppName main + 8 (main.m:8)
35 ??? 0x185c0ee28 (Missing)
Device: iPhone 17 Pro
iOS Version: 26.2
React Native: 0.77.3
Library: @react-native-community/slider 4.5.5
Architecture: New Architecture (Fabric Enabled)
Thread: com.apple.main-thread
Crash Summary
Crash occurs during slider interaction while dispatching slider value change events through React Native Fabric event emitter.
Relevant stack frames:
facebook::react::EventEmitter::dispatchEvent
facebook::react::RNCSliderEventEmitter::onRNCSliderValueChange
-[RNCSliderComponentView RNCSendSliderEvent:withContinuous:isSlidingStart:]
The crash originates from slider event emission during interaction handled by _UIFluidSliderInteraction in UIKit.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsTo be analyzed
Activity
BartoszKlonowski commentedon Mar 20, 2026
Hello, @hamzadev002, can you share any repro where you see this crash and some instructions about the specific scenario?
hamzadev002 commentedon Apr 13, 2026
I can’t share a repro repo because the project is private, but I can describe the scenario where I’m seeing the crash.
Setup:
React Native app
Slide-in music player UI
A progress slider on the player screen
The slider position is updated continuously from playback progress (roughly every second)
Observed crash scenario:
Start playback
Open the player screen
Let the slider continue receiving progress updates
Close/dismiss the player screen while playback is still running
Crash occurs at that time
I also noticed Firebase logging around this flow, but the main pattern seems to be that the player UI is closed while progress-related updates are still being emitted.
My suspicion is that a UI event/update is still being dispatched after the player screen or slider component has unmounted.
Since I can’t share the repo, I’m happy to provide a reduced code snippet for the player screen, slider update logic, and cleanup/unmount handling.
dharmeshgigs commentedon May 20, 2026
@hamzadev002 Did you fix this issue?
ryanbinns commentedon Jun 8, 2026
I'm also seeing this issue in my app on an iPhone 17 simulator. It seems to be specific to
onValueChange, as usingonSlidingCompletedoes not cause the crash. UsingonValueChange, the crash seems to happen any time I drag the slider right to the very end (either end). In my case, I have the slider min and max set to 0 and 1, and the step set to 0.1, if that's helpful.bordercore commentedon Jul 30, 2026
Hit this one too and got a reliable repro, plus a fix that's now verified on a device. Posting in case it helps, since it sounds like the missing piece here has been a way to reproduce it.
The trigger for us is unmounting the slider's screen immediately after letting go of the thumb:
Leave about a second between releasing and tapping and it never crashes. That timing dependence is what put us onto the cause.
_UIFluidSliderInteractiondoesn't deliver the control action on touch-up, it defers it to a CA commit handler. If the view is gone by the time that commit runs,_eventEmitteris no longer valid, andRNCSendSliderEvent:dereferences it without checking:That's the
shared_ptr.h:557frame. Where the view gets recycled,prepareForRecycleinRCTViewComponentViewcalls_eventEmitter.reset(), which is one way to get a null there.We saw it via two different events. One is
onRNCSliderValueChange, identical to the trace in the original report here. The other comes in throughsliderTouchEnd:, app binary redacted:So @ryanbinns, moving to
onSlidingCompleteisn't a general workaround. Ours crashes insideonRNCSliderSlidingCompleteat frame 2. The native side dispatches the event regardless of which handler JS has attached.Worth noting #746 doesn't close this either. On 5.2.0
+ (BOOL)shouldBeRecycledis there, butRNCSliderComponentView.mmstill has 6 unguarded_eventEmitterdereferences and no null checks anywhere. This issue was opened after 5.1.1 shipped, which fits.Guarding the cast and dropping the event fixes it. The view is being torn down at that point so there's nothing listening:
We're running that across all six call sites as a local patch on 5.0.1. The repro that reliably crashed before is clean now on a TestFlight build. Can put up a PR against main if it's wanted.
hamzadev002 commentedon Sep 2, 2026
@dharmeshgigs
No, The library recommends updating to version 5.0.0 for React Native versions above 0.76. However, I did not update it because this issue affects only seven production users, all of whom are on iOS 26 or later.