feat(sample): Add tvOS sample app - #6677
Conversation
Add a New Architecture tvOS sample (react-native-tvos@0.87.1-0) wired against the local @sentry/react-native SDK, mirroring the visionOS sample work. Includes a build-tvos CI job (dev + production, tvOS Simulator) and the sample_react_native file filter entry. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
# Conflicts: # CHANGELOG.md
cocoapods 1.15.2 fails on Ruby 3.4 (kconv was removed from stdlib). The repo's root .ruby-version pins 3.4.7, so pin the sample to 3.3.0 (what CI uses) via a local .ruby-version so pod install works out of the box. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Semver Impact of This PR⚪ None (no version bump detected) 📋 Changelog PreviewThis is how your changes will appear in the changelog.
🤖 This preview updates automatically when you update the PR. |
|
Android (legacy) Performance metrics 🚀
|
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| 68672fc+dirty | 425.02 ms | 487.56 ms | 62.54 ms |
| 71abba0+dirty | 496.54 ms | 525.16 ms | 28.63 ms |
| 7ff4d0f+dirty | 413.81 ms | 450.64 ms | 36.83 ms |
| 9ad4522+dirty | 420.73 ms | 444.18 ms | 23.45 ms |
| 0a147b2+dirty | 464.71 ms | 538.81 ms | 74.09 ms |
| d2eadf8+dirty | 414.64 ms | 454.56 ms | 39.92 ms |
| 57e0069+dirty | 413.82 ms | 453.47 ms | 39.65 ms |
| 26843eb+dirty | 532.15 ms | 624.13 ms | 91.98 ms |
| 9210ae6+dirty | 475.41 ms | 525.24 ms | 49.84 ms |
| 1e5d96d+dirty | 519.43 ms | 543.62 ms | 24.19 ms |
App size
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| 68672fc+dirty | 48.30 MiB | 53.61 MiB | 5.31 MiB |
| 71abba0+dirty | 48.30 MiB | 53.49 MiB | 5.19 MiB |
| 7ff4d0f+dirty | 48.30 MiB | 53.60 MiB | 5.30 MiB |
| 9ad4522+dirty | 49.74 MiB | 55.38 MiB | 5.63 MiB |
| 0a147b2+dirty | 49.74 MiB | 55.08 MiB | 5.34 MiB |
| d2eadf8+dirty | 48.30 MiB | 53.48 MiB | 5.18 MiB |
| 57e0069+dirty | 49.74 MiB | 54.85 MiB | 5.11 MiB |
| 26843eb+dirty | 49.74 MiB | 55.26 MiB | 5.52 MiB |
| 9210ae6+dirty | 48.30 MiB | 53.54 MiB | 5.23 MiB |
| 1e5d96d+dirty | 49.74 MiB | 54.81 MiB | 5.07 MiB |
- Format Android TV MainActivity/MainApplication to satisfy ktlint.
- Replace the undefined ${usesCleartextTraffic} manifest placeholder with
the repo's convention: no cleartext in the main manifest, enabled only in
a debug manifest (matches samples/react-native).
- Set TOOLCHAINS=com.apple.dt.toolchain.XcodeDefault on the build-tvos job
to match build-ios (Xcode 26 MetalToolchain Swift compat libs).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 1eae64c. Configure here.
iOS (legacy) Performance metrics 🚀
|
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| ecf47a2+dirty | 3835.20 ms | 1222.43 ms | -2612.77 ms |
| 3817909+dirty | 1183.90 ms | 1187.50 ms | 3.60 ms |
| 5ee78d6+dirty | 3847.52 ms | 1224.27 ms | -2623.25 ms |
| 890d145+dirty | 1223.59 ms | 1231.37 ms | 7.78 ms |
| e763471+dirty | 3841.16 ms | 1218.06 ms | -2623.09 ms |
| 3d31fcf+dirty | 3838.09 ms | 1223.46 ms | -2614.63 ms |
| 9210ae6+dirty | 3815.93 ms | 1214.14 ms | -2601.79 ms |
| 26843eb+dirty | 3861.60 ms | 1238.77 ms | -2622.82 ms |
| 7a89652+dirty | 3861.46 ms | 1229.61 ms | -2631.85 ms |
| 9ad4522+dirty | 3850.40 ms | 1222.40 ms | -2628.00 ms |
App size
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| ecf47a2+dirty | 4.98 MiB | 6.46 MiB | 1.49 MiB |
| 3817909+dirty | 3.38 MiB | 4.73 MiB | 1.35 MiB |
| 5ee78d6+dirty | 5.15 MiB | 6.69 MiB | 1.53 MiB |
| 890d145+dirty | 3.38 MiB | 4.77 MiB | 1.38 MiB |
| e763471+dirty | 4.98 MiB | 6.51 MiB | 1.53 MiB |
| 3d31fcf+dirty | 4.98 MiB | 6.56 MiB | 1.58 MiB |
| 9210ae6+dirty | 5.15 MiB | 6.68 MiB | 1.53 MiB |
| 26843eb+dirty | 4.98 MiB | 6.53 MiB | 1.55 MiB |
| 7a89652+dirty | 5.15 MiB | 6.70 MiB | 1.55 MiB |
| 9ad4522+dirty | 4.98 MiB | 6.56 MiB | 1.58 MiB |
| @@ -0,0 +1,119 @@ | |||
| apply plugin: "com.android.application" | |||
There was a problem hiding this comment.
Maybe I'm missing something but why do we need Android app within tvOS sample?
There was a problem hiding this comment.
It can be an Android tv app but technically the SDK is the same with the main Android and no separate CI build job should be needed to validate
| <TestableReference | ||
| skipped = "NO"> | ||
| <BuildableReference | ||
| BuildableIdentifier = "primary" | ||
| BlueprintIdentifier = "00E356ED1AD99517003FC87E" | ||
| BuildableName = "TVOSSampleTests.xctest" | ||
| BlueprintName = "TVOSSampleTests" | ||
| ReferencedContainer = "container:TVOSSample.xcodeproj"> | ||
| </BuildableReference> | ||
| </TestableReference> | ||
| </Testables> |
There was a problem hiding this comment.
Scheme references missing TVOSSampleTests target
Remove the TestableReference for TVOSSampleTests, or add that native test target to the Xcode project—the scheme currently points at a BlueprintIdentifier that does not exist in project.pbxproj.
Evidence
TVOSSample.xcschemeTestAction references BlueprintIdentifier00E356ED1AD99517003FC87E/ BlueprintNameTVOSSampleTests.project.pbxprojPBXNativeTarget section only defines13B07F861A680F5B00A75B9A /* TVOSSample */; noTVOSSampleTeststarget or that ID exists.- Project
targetsarray lists onlyTVOSSample, so scheme Test action resolves to a missing target.
Identified by Warden · code-review · 523-46D
📢 Type of change
📜 Description
Adds a New Architecture tvOS sample app under
samples/react-native-tvos, wired against the local@sentry/react-nativeSDK, mirroring the visionOS sample work.💡 Motivation and Context
Closes #5275
Partially #6648
💚 How did you test it?
Validated locally (New Architecture, tvOS Simulator):
📝 Checklist
sendDefaultPIIis enabled.🔮 Next steps