Skip to content

chore: cherry-pick from Main#592

Merged
BrandonStalnaker merged 19 commits intoworkstation/9.0-Releasefrom
chore/cherrypick-Feb-17
Feb 17, 2026
Merged

chore: cherry-pick from Main#592
BrandonStalnaker merged 19 commits intoworkstation/9.0-Releasefrom
chore/cherrypick-Feb-17

Conversation

@BrandonStalnaker
Copy link
Collaborator

Background

  • Updated the workstation/9.0-Release branch with all changes applied to main as of February 17th 2026

Checklist

  • I have performed a self-review of my own code.
  • I have tested this locally.

BrandonStalnaker and others added 19 commits February 17, 2026 09:23
* 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)
* 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 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)
@BrandonStalnaker BrandonStalnaker self-assigned this Feb 17, 2026
@BrandonStalnaker BrandonStalnaker requested a review from a team as a code owner February 17, 2026 17:29
@github-actions
Copy link

📦 SDK Size Impact Report

Measures how much the SDK adds to an app's size (with-SDK minus without-SDK).

Metric Target Branch This PR Change
App Bundle Impact 1.63 MB 1.66 MB +32 KB
Executable Impact 896 bytes 896 bytes +N/A
XCFramework Size 5.44 MB 5.47 MB +36 KB

➡️ SDK size impact change is minimal.

Raw measurements

Target 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}

@BrandonStalnaker BrandonStalnaker merged commit c5b993e into workstation/9.0-Release Feb 17, 2026
33 of 36 checks passed
@BrandonStalnaker BrandonStalnaker deleted the chore/cherrypick-Feb-17 branch February 17, 2026 18:49
@BrandonStalnaker BrandonStalnaker restored the chore/cherrypick-Feb-17 branch February 17, 2026 18:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

Comments