Skip to content

Conversation

@markushi
Copy link
Member

@markushi markushi commented Dec 15, 2025

📜 Description

Adds support for serializing primitive arrays (boolean[], byte[], short[], char[], int[], long[], float[], double[]) in JsonObjectSerializer. Previously, only Object arrays were handled correctly and primitive arrays caused a class cast exception.

💡 Motivation and Context

Fixes #4964

💚 How did you test it?

Added comprehensive unit tests for all 8 primitive array types (boolean[], byte[], short[], char[], int[], long[], float[], double[]) to verify correct serialization behavior.

📝 Checklist

  • I added GH Issue ID & Linear ID
  • I added tests to verify the changes.
  • No new PII added or SDK only sends newly added PII if sendDefaultPII is enabled.
  • I updated the docs if needed.
  • I updated the wizard if needed.
  • Review from the native team if needed.
  • No breaking change or entry added to the changelog.
  • No breaking change for hybrid SDKs or communicated to hybrid SDKs.

🔮 Next steps

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
Comment on lines +91 to +101
longs.add(l);
}
serializeCollection(writer, logger, longs);
} else if (object instanceof float[]) {
final List<Float> floats = new ArrayList<>(((float[]) object).length);
for (float f : ((float[]) object)) {
floats.add(f);
}
serializeCollection(writer, logger, floats);
} else if (object instanceof double[]) {
final List<Double> doubles = new ArrayList<>(((double[]) object).length);

This comment was marked as outdated.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's a good point, but we may also address it later in a different PR

@github-actions
Copy link
Contributor

github-actions bot commented Dec 15, 2025

Performance metrics 🚀

  Plain With Sentry Diff
Startup time 370.31 ms 466.28 ms 95.97 ms
Size 1.58 MiB 2.13 MiB 559.22 KiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
5b66efd 308.67 ms 363.85 ms 55.18 ms
fc5ccaf 322.49 ms 405.25 ms 82.76 ms
6405ec5 310.88 ms 354.56 ms 43.69 ms
d364ace 382.77 ms 443.21 ms 60.44 ms
bbc35bb 298.53 ms 372.17 ms 73.64 ms
3d205d0 352.15 ms 432.53 ms 80.38 ms
539ca63 313.51 ms 355.43 ms 41.92 ms
dba088c 365.46 ms 366.31 ms 0.85 ms
fc5ccaf 270.49 ms 363.90 ms 93.41 ms
fcec2f2 328.91 ms 387.75 ms 58.84 ms

App size

Revision Plain With Sentry Diff
5b66efd 1.58 MiB 2.13 MiB 559.07 KiB
fc5ccaf 1.58 MiB 2.13 MiB 557.54 KiB
6405ec5 1.58 MiB 2.12 MiB 552.23 KiB
d364ace 1.58 MiB 2.11 MiB 539.75 KiB
bbc35bb 1.58 MiB 2.12 MiB 553.01 KiB
3d205d0 1.58 MiB 2.10 MiB 532.97 KiB
539ca63 1.58 MiB 2.12 MiB 551.41 KiB
dba088c 1.58 MiB 2.13 MiB 558.99 KiB
fc5ccaf 1.58 MiB 2.13 MiB 557.54 KiB
fcec2f2 1.58 MiB 2.12 MiB 551.50 KiB

Previous results on branch: markushi/fix/primitive-array-serialization

Startup times

Revision Plain With Sentry Diff
96caec2 286.21 ms 351.60 ms 65.39 ms

App size

Revision Plain With Sentry Diff
96caec2 1.58 MiB 2.13 MiB 559.22 KiB

Copy link
Member

@romtsn romtsn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@markushi markushi enabled auto-merge (squash) December 16, 2025 07:12
@markushi markushi merged commit 56d8c1e into main Dec 16, 2025
62 of 63 checks passed
@markushi markushi deleted the markushi/fix/primitive-array-serialization branch December 16, 2025 07:33
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.

Navigation tracking containing an int List breaks breadcrumb serialization via ClassCastException

3 participants