Description
Since 2026-09-29 00:41 UTC, our production iOS app has been crashing at a growing rate (56 crashes / 56 users in the first 18 minutes). We have not shipped an update. The crash started at the same time on 4 already-released builds.
Fatal Exception: NSInvalidArgumentException
*** -[__NSDictionaryM setObject:forKeyedSubscript:]: key cannot be nil
In every crash we checked (42/42), the crash happens right after the SDK receives the response to POST https://app-analytics-services.com/sdk-exp (HTTP 200). At the moment of the crash, APMExperimentWorkerQueue is still handling that response:
-[GULMutableDictionary dictionary]
-[APMEExperiment copyWithZone:]
-[APMESnapshot initWithSDKName:experiments:]
-[APMESnapshot initWithProtobuf:]
-[APMETaskManager experimentSnapshotsFromExperimentResponse:]
-[APMETaskManager handleFetchingExperimentsResponse:data:error:]
__35-[APMETaskManager fetchExperiments]_block_invoke
The crashing thread is only _dispatch_call_block_and_release -> -[__NSDictionaryM setObject:forKeyedSubscript:]. This matches GULMutableDictionary setObject:forKeyedSubscript:, which writes through dispatch_async and so drops the caller's frames.
It looks like the experiment payload being served since 00:41 UTC is parsed into a nil key. Please check the sdk-exp config and roll it back.
Reproducing the issue
Depends on the server response. Launch the app, the SDK fetches sdk-exp, and the app crashes less than 1 s later.
Firebase SDK Version
12.14.0
Xcode Version
26.5
Installation Method
Swift Package Manager
Firebase Product(s)
Analytics
Targeted Platforms
iOS
Description
Since 2026-09-29 00:41 UTC, our production iOS app has been crashing at a growing rate (56 crashes / 56 users in the first 18 minutes). We have not shipped an update. The crash started at the same time on 4 already-released builds.
In every crash we checked (42/42), the crash happens right after the SDK receives the response to
POST https://app-analytics-services.com/sdk-exp(HTTP 200). At the moment of the crash,APMExperimentWorkerQueueis still handling that response:The crashing thread is only
_dispatch_call_block_and_release -> -[__NSDictionaryM setObject:forKeyedSubscript:]. This matchesGULMutableDictionary setObject:forKeyedSubscript:, which writes throughdispatch_asyncand so drops the caller's frames.It looks like the experiment payload being served since 00:41 UTC is parsed into a nil key. Please check the
sdk-expconfig and roll it back.Reproducing the issue
Depends on the server response. Launch the app, the SDK fetches
sdk-exp, and the app crashes less than 1 s later.Firebase SDK Version
12.14.0
Xcode Version
26.5
Installation Method
Swift Package Manager
Firebase Product(s)
Analytics
Targeted Platforms
iOS
The issue was fully resolved on 2026-09-28 at 23:52 US/PDT.
Due to crash reporter latency, previous crashes may continue to be reported.
We are actively looking into the root cause of this issue. We will provide an update with more details about what caused the incident and what we are going to do to prevent this from happening in the future.
We sincerely apologize for the disruption and appreciate your patience.
Previous Updates
Hi everyone, to summarize the issue and resolution: