chore: cherry-pick from Main#592
Merged
BrandonStalnaker merged 19 commits intoworkstation/9.0-Releasefrom Feb 17, 2026
Merged
Conversation
(cherry picked from commit e5d5e27)
(cherry picked from commit 7b36691)
* fix: MPURLRequestBuilder build crash * Change signature to nullable (cherry picked from commit 604afee)
* fix: app crash from [MPUpload description] Stacktrace ``` 0 libsystem_malloc.dylib 0x30a0 _xzm_xzone_malloc_freelist_outlined + 864 1 Foundation 0x4804 -[NSString quotedStringRepresentation] + 132 2 Foundation 0x4724 -[NSString _stringRepresentation] + 360 3 CoreFoundation 0x14a580 -[NSDictionary descriptionWithLocale:indent:] + 1128 4 CoreFoundation 0x14a5ac -[NSDictionary descriptionWithLocale:indent:] + 1172 5 Foundation 0x36b4 _NSDescriptionWithLocaleFunc + 56 6 CoreFoundation 0x15cb0 __CFSTRING_IS_CALLING_OUT_TO_AN_OBJECT_FORMAT_ARGUMENT_WITH_LOCALE__ + 28 7 CoreFoundation 0x8c4c __CFStringAppendFormatCore + 9968 8 CoreFoundation 0x122e4 _CFStringCreateWithFormatAndArgumentsReturningMetadata + 184 9 CoreFoundation 0x12398 _CFStringCreateWithFormatAndArgumentsAux2 + 44 10 Foundation 0x9b2bb0 +[NSString stringWithFormat:] + 68 11 mParticle_Apple_SDK 0x3b7c8 -[MPUpload description] + 172 12 mParticle_Apple_SDK 0x232c4 -[MPPersistenceController_PRIVATE saveUpload:] + 1472 13 mParticle_Apple_SDK 0x94d1c -[MPUploadBuilder build:] + 3488 14 mParticle_Apple_SDK 0x6e30c __55-[MPBackendController_PRIVATE prepareBatchesForUpload:]_block_invoke_4 + 548 ``` * MPListenerController is not required in this scenario. Removing MPListenerController (cherry picked from commit 91c0c5d)
…play (#576) The currentUser property on MPIdentityApi was nonatomic with no synchronization, but written on messageQueue (via identity responses) and read on the main queue (via replayQueuedItems -> isActiveAndNotDisabled). Stacktrace ``` 0 libobjc.A.dylib 0x144c objc_retain_x0 1 libobjc.A.dylib 0x144c objc_retain 2 mParticle_Apple_SDK 0x392f8 -[MPIdentityApi currentUser] + 32 3 mParticle_Apple_SDK 0x8a078 -[MPKitContainer_PRIVATE isActiveAndNotDisabled:] + 208 4 mParticle_Apple_SDK 0x89ed0 -[MPKitContainer_PRIVATE activeKitsRegistry] + 208 5 mParticle_Apple_SDK 0x8ccc0 -[MPKitContainer_PRIVATE forwardSDKCall:event:parameters:messageType:userInfo:] + 124 6 mParticle_Apple_SDK 0x7ed3c __43-[MPKitContainer_PRIVATE replayQueuedItems]_block_invoke_3 + 88 ``` (cherry picked from commit a3ba57e)
(cherry picked from commit 0d831cc)
* fix: background expiration race * edit tests * remove additional mock interface (cherry picked from commit 9d97bd3)
fix: Guarantee UserDefsults Thread Safety (cherry picked from commit 7baa7b4)
* fix: App crash when JSON serialization of upload dictionary Prevent heap corruption from concurrent mutation of shared mutable objects during JSON serialization. Added a mechanism to create a deep immutable copy of JSON-compatible objects, ensuring thread safety and preventing heap corruption during serialization. Invalid entries are logged and dropped. Stacktrace ``` 0 libsystem_malloc.dylib 0x30a0 _xzm_xzone_malloc_freelist_outlined + 864 1 Foundation 0xa2e854 -[_NSJSONWriter resizeTemporaryBuffer:] + 104 2 Foundation 0x114f8 _convertJSONString + 148 3 Foundation 0x1138c _writeJSONString + 84 4 Foundation 0x94628 ___writeJSONObject_block_invoke + 412 5 CoreFoundation 0x12044 __NSDICTIONARY_IS_CALLING_OUT_TO_A_BLOCK__ + 24 6 CoreFoundation 0x19fb40 -[__NSDictionaryM enumerateKeysAndObjectsWithOptions:usingBlock:] + 288 7 Foundation 0x97c54 _writeJSONObject + 512 8 Foundation 0x94628 ___writeJSONObject_block_invoke + 412 9 CoreFoundation 0x12044 __NSDICTIONARY_IS_CALLING_OUT_TO_A_BLOCK__ + 24 10 CoreFoundation 0x19fb40 -[__NSDictionaryM enumerateKeysAndObjectsWithOptions:usingBlock:] + 288 11 Foundation 0x97c54 _writeJSONObject + 512 12 Foundation 0xa2e70c -[_NSJSONWriter dataWithRootObject:options:] + 104 13 Foundation 0xa2f6b8 +[NSJSONSerialization dataWithJSONObject:options:error:] + 112 14 mParticle_Apple_SDK 0x3b480 -[MPUpload initWithSessionId:uploadDictionary:dataPlanId:dataPlanVersion:uploadSettings:] + 140 15 mParticle_Apple_SDK 0x94cfc -[MPUploadBuilder build:] + 3456 16 mParticle_Apple_SDK 0x6e30c __55-[MPBackendController_PRIVATE prepareBatchesForUpload:]_block_invoke_4 + 548 ``` * refactor: rework the fix to cover SDKE-906 Stacktrace ``` 0 libsystem_malloc.dylib 0x35104 _xzm_xzone_malloc_from_tiny_chunk.cold.1 + 36 1 libsystem_malloc.dylib 0x1d28 _xzm_xzone_malloc_from_tiny_chunk + 612 2 libsystem_malloc.dylib 0x164c _xzm_xzone_find_and_malloc_from_tiny_chunk + 112 3 libsystem_malloc.dylib 0x1e84 _xzm_xzone_malloc_tiny_outlined + 312 4 CoreFoundation 0x3566c __CFBinaryPlistWriteOrPresize + 292 5 Foundation 0x5ed80 -[NSKeyedArchiver finishEncoding] + 640 6 Foundation 0x2c39e4 +[NSKeyedArchiver archivedDataWithRootObject:] + 112 7 mParticle_Apple_SDK 0x23234 -[MPPersistenceController_PRIVATE saveUpload:] + 1284 8 mParticle_Apple_SDK 0x95154 -[MPUploadBuilder build:] + 3488 9 mParticle_Apple_SDK 0x6e744 __55-[MPBackendController_PRIVATE prepareBatchesForUpload:]_block_invoke_4 + 548 10 CoreFoundation 0x1ce98 __NSDICTIONARY_IS_CALLING_OUT_TO_A_BLOCK__ + 24 11 CoreFoundation 0x1d078 -[__NSDictionaryM enumerateKeysAndObjectsWithOptions:usingBlock:] + 288 12 mParticle_Apple_SDK 0x6e4e0 __55-[MPBackendController_PRIVATE prepareBatchesForUpload:]_block_invoke_3 + 172 13 CoreFoundation 0x1ce98 __NSDICTIONARY_IS_CALLING_OUT_TO_A_BLOCK__ + 24 14 CoreFoundation 0x1d078 -[__NSDictionaryM enumerateKeysAndObjectsWithOptions:usingBlock:] + 288 15 mParticle_Apple_SDK 0x6e3fc __55-[MPBackendController_PRIVATE prepareBatchesForUpload:]_block_invoke_2 + 164 ``` (cherry picked from commit a5e1960)
(cherry picked from commit 18045c9)
(cherry picked from commit aee96c4)
* fix: Potential crash in MPURLRequestBuilder * Add validation for API key and secret * Allow nil secrets and key There's logic allowing network requests without the header x-mp-signature (cherry picked from commit 70c0076)
* fix: endSessionIfTimedOut race condition * add test (cherry picked from commit b2eb508)
fix: array may be empty (cherry picked from commit 5a538c3)
* fix: Dispatch MPNetworkCommunication main thread * Update MPBackendControllerTests.m (cherry picked from commit dfab795)
* test: fix endSessionIfTimedOut failing tests * adjust fix for message queue mismatch * add test for automaticSessionTracking being disabled (cherry picked from commit 42571ed)
* Reordered the release workflow steps so "Upload xcframeworks to S3" runs after "Push release branch" * New step order: Commit version changes → Push release branch → Upload to S3 → Create Pull Request * This ensures the irreversible S3 upload only happens after the git state is successfully committed and pushed, preventing version numbers from being burned on failed releases * Removed trunk fmt step from the workflow since it's no longer needed * Rewrote Scripts/update_mapping_versions.sh to use sed for in-place string replacement instead of jq. This preserves the original file formatting and eliminates the need for post-processing with prettier or trunk fmt. (cherry picked from commit 02cb9f0)
chore: (release) 8.43.1 Updates version to 8.43.1 in: - CHANGELOG.md - Framework/Info.plist - Package.swift - mParticle-Apple-SDK.podspec - mParticle-Apple-SDK/MPConstants.swift - mParticle-Apple-SDK/MPIConstants.m - mParticle_Apple_SDK.json - IntegrationTests/wiremock-recordings/mappings/*.json (cherry picked from commit b0a3d00)
(cherry picked from commit 0d3d99b)
📦 SDK Size Impact ReportMeasures how much the SDK adds to an app's size (with-SDK minus without-SDK).
➡️ SDK size impact change is minimal. Raw measurementsTarget branch (workstation/9.0-Release): {"baseline_app_size_kb":84,"baseline_executable_size_bytes":75464,"with_sdk_app_size_kb":1756,"with_sdk_executable_size_bytes":76360,"sdk_impact_kb":1672,"sdk_executable_impact_bytes":896,"xcframework_size_kb":5568}This PR: {"baseline_app_size_kb":84,"baseline_executable_size_bytes":75464,"with_sdk_app_size_kb":1788,"with_sdk_executable_size_bytes":76360,"sdk_impact_kb":1704,"sdk_executable_impact_bytes":896,"xcframework_size_kb":5604} |
jamesnrokt
approved these changes
Feb 17, 2026
c5b993e
into
workstation/9.0-Release
33 of 36 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Background
Checklist