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.
In many cases, crashes that occurred within the impacted timeframe are not reported until the next time the app is started.
If you experience crashes happening after the resolution time, please open a separate issue.
Although an SDK update is not required to resolve this issue, we have released GoogleUtilities 8.1.4 to improve resilience against server-side data issues.
pod update GoogleUtilitiesin your project’s directory.We are preparing more details about what caused the incident and what steps we're…