Skip to content

EAS Build Hooks#5666

Open
alwx wants to merge 10 commits intomainfrom
alwx/experiment/eas-build
Open

EAS Build Hooks#5666
alwx wants to merge 10 commits intomainfrom
alwx/experiment/eas-build

Conversation

@alwx
Copy link
Contributor

@alwx alwx commented Feb 13, 2026

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

Introduces build hooks for EAS and fixes #5428

📝 Checklist

  • I added tests to verify 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.
  • All tests passing
  • No breaking changes

@github-actions
Copy link
Contributor

github-actions bot commented Feb 13, 2026

Semver Impact of This PR

None (no version bump detected)

📋 Changelog Preview

This is how your changes will appear in the changelog.
Entries from this PR are highlighted with a left border (blockquote style).


  • EAS Build Hooks by alwx in #5666
  • ci: Cancel in-progress CI jobs when a PR is closed or merged by antonis in #5725

🤖 This preview updates automatically when you update the PR.

@alwx alwx self-assigned this Feb 16, 2026
@alwx alwx changed the title WIP: EAS Build Hooks EAS Build Hooks Feb 23, 2026
@alwx alwx marked this pull request as ready for review February 23, 2026 12:08
release: env.EAS_BUILD_APP_VERSION,
tags: { ...createEASBuildTags(env), ...customTags },
contexts: { eas_build: createEASBuildContext(env), runtime: { name: 'node', version: process.version } },
sdk: { name: 'sentry.javascript.react-native.eas-build-hooks', version: '1.0.0' },
Copy link

Choose a reason for hiding this comment

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

Hardcoded SDK version diverges from actual package version

Medium Severity

The sdk.version in createBaseEvent is hardcoded as '1.0.0' while the actual package version is '8.1.0'. The SDK_VERSION constant is already available in ../version and used elsewhere (e.g., sdkinfo.ts). This means every EAS build hook event sent to Sentry will report an incorrect SDK version, and it will never auto-update with future releases.

Fix in Cursor Fix in Web

Copy link
Contributor

Choose a reason for hiding this comment

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

This feedback looks valid 👍

@alwx alwx added the ready-to-merge Triggers the full CI test suite label Feb 23, 2026
@alwx alwx enabled auto-merge (squash) February 23, 2026 12:39
@github-actions
Copy link
Contributor

github-actions bot commented Feb 23, 2026

Android (legacy) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 411.16 ms 444.28 ms 33.12 ms
Size 43.75 MiB 48.46 MiB 4.71 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
eeebd10+dirty 493.12 ms 545.91 ms 52.79 ms
664c66f+dirty 434.82 ms 471.38 ms 36.56 ms
d73150f+dirty 411.21 ms 465.86 ms 54.65 ms
4a17c8f+dirty 406.62 ms 400.58 ms -6.04 ms
2adbd1e+dirty 433.98 ms 427.96 ms -6.02 ms
98f632c 424.25 ms 435.48 ms 11.23 ms
9ced351+dirty 405.40 ms 419.39 ms 13.98 ms
64cd15c 439.02 ms 427.63 ms -11.39 ms
8490686+dirty 365.59 ms 400.24 ms 34.65 ms
1853710 555.47 ms 556.59 ms 1.12 ms

App size

Revision Plain With Sentry Diff
eeebd10+dirty 43.75 MiB 48.41 MiB 4.66 MiB
664c66f+dirty 43.75 MiB 48.55 MiB 4.80 MiB
d73150f+dirty 43.75 MiB 48.55 MiB 4.80 MiB
4a17c8f+dirty 43.75 MiB 47.99 MiB 4.24 MiB
2adbd1e+dirty 17.75 MiB 19.70 MiB 1.96 MiB
98f632c 17.75 MiB 20.15 MiB 2.41 MiB
9ced351+dirty 43.75 MiB 48.41 MiB 4.66 MiB
64cd15c 17.75 MiB 20.15 MiB 2.41 MiB
8490686+dirty 17.75 MiB 19.70 MiB 1.96 MiB
1853710 17.75 MiB 19.68 MiB 1.94 MiB

@github-actions
Copy link
Contributor

github-actions bot commented Feb 23, 2026

iOS (legacy) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 1223.77 ms 1226.47 ms 2.70 ms
Size 3.38 MiB 4.78 MiB 1.40 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
ea3e26e+dirty 1229.13 ms 1228.46 ms -0.67 ms
80e4616+dirty 1221.32 ms 1225.64 ms 4.32 ms
818a608+dirty 1205.76 ms 1208.00 ms 2.24 ms
77061ed+dirty 1233.16 ms 1234.88 ms 1.71 ms
bef3709+dirty 1222.07 ms 1220.24 ms -1.83 ms
a206511+dirty 1185.00 ms 1186.35 ms 1.35 ms
74979ac+dirty 1210.49 ms 1213.31 ms 2.82 ms
a2bb688+dirty 1223.53 ms 1232.90 ms 9.37 ms
8a868fe+dirty 1221.50 ms 1230.78 ms 9.28 ms
d590428+dirty 1211.77 ms 1220.51 ms 8.75 ms

App size

Revision Plain With Sentry Diff
ea3e26e+dirty 3.41 MiB 4.58 MiB 1.17 MiB
80e4616+dirty 3.38 MiB 4.60 MiB 1.22 MiB
818a608+dirty 2.63 MiB 3.91 MiB 1.28 MiB
77061ed+dirty 2.63 MiB 3.98 MiB 1.34 MiB
bef3709+dirty 3.38 MiB 4.78 MiB 1.40 MiB
a206511+dirty 3.41 MiB 4.67 MiB 1.25 MiB
74979ac+dirty 3.38 MiB 4.60 MiB 1.22 MiB
a2bb688+dirty 2.63 MiB 3.99 MiB 1.36 MiB
8a868fe+dirty 3.38 MiB 4.60 MiB 1.22 MiB
d590428+dirty 3.38 MiB 4.78 MiB 1.39 MiB

Previous results on branch: alwx/experiment/eas-build

Startup times

Revision Plain With Sentry Diff
e51ef4e+dirty 1222.04 ms 1226.24 ms 4.20 ms

App size

Revision Plain With Sentry Diff
e51ef4e+dirty 3.38 MiB 4.78 MiB 1.40 MiB

@github-actions
Copy link
Contributor

github-actions bot commented Feb 23, 2026

Android (new) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 434.88 ms 473.31 ms 38.44 ms
Size 43.94 MiB 49.33 MiB 5.39 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
664c66f+dirty 376.23 ms 389.51 ms 13.28 ms
d73150f+dirty 424.60 ms 454.35 ms 29.75 ms
4a17c8f+dirty 368.54 ms 381.43 ms 12.89 ms
b3b5b0d+dirty 361.42 ms 403.90 ms 42.48 ms
9ced351+dirty 361.74 ms 411.45 ms 49.70 ms
7886639+dirty 530.30 ms 571.34 ms 41.04 ms
c08359e+dirty 406.04 ms 428.87 ms 22.83 ms
3099014+dirty 344.58 ms 404.21 ms 59.63 ms
d751a5d+dirty 341.61 ms 403.06 ms 61.45 ms
682f0f5+dirty 402.33 ms 440.61 ms 38.28 ms

App size

Revision Plain With Sentry Diff
664c66f+dirty 43.94 MiB 49.38 MiB 5.44 MiB
d73150f+dirty 43.94 MiB 49.38 MiB 5.44 MiB
4a17c8f+dirty 43.94 MiB 48.82 MiB 4.88 MiB
b3b5b0d+dirty 7.15 MiB 8.41 MiB 1.26 MiB
9ced351+dirty 43.94 MiB 49.27 MiB 5.33 MiB
7886639+dirty 43.94 MiB 49.28 MiB 5.34 MiB
c08359e+dirty 7.15 MiB 8.42 MiB 1.27 MiB
3099014+dirty 7.15 MiB 8.43 MiB 1.27 MiB
d751a5d+dirty 7.15 MiB 8.41 MiB 1.26 MiB
682f0f5+dirty 43.94 MiB 48.91 MiB 4.97 MiB

Previous results on branch: alwx/experiment/eas-build

Startup times

Revision Plain With Sentry Diff
e51ef4e+dirty 359.31 ms 385.06 ms 25.76 ms

App size

Revision Plain With Sentry Diff
e51ef4e+dirty 43.94 MiB 49.33 MiB 5.39 MiB

@github-actions
Copy link
Contributor

github-actions bot commented Feb 23, 2026

iOS (new) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 1185.51 ms 1186.52 ms 1.01 ms
Size 3.38 MiB 4.78 MiB 1.40 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
ea3e26e+dirty 1216.61 ms 1214.15 ms -2.47 ms
80e4616+dirty 1206.90 ms 1205.94 ms -0.96 ms
818a608+dirty 1218.84 ms 1223.18 ms 4.34 ms
77061ed+dirty 1210.77 ms 1218.45 ms 7.68 ms
bef3709+dirty 1217.79 ms 1225.33 ms 7.54 ms
a206511+dirty 1225.02 ms 1223.74 ms -1.28 ms
74979ac+dirty 1212.33 ms 1212.54 ms 0.21 ms
a2bb688+dirty 1244.82 ms 1238.60 ms -6.22 ms
8a868fe+dirty 1206.85 ms 1215.04 ms 8.19 ms
d590428+dirty 1221.23 ms 1225.27 ms 4.03 ms

App size

Revision Plain With Sentry Diff
ea3e26e+dirty 3.41 MiB 4.58 MiB 1.17 MiB
80e4616+dirty 3.38 MiB 4.60 MiB 1.22 MiB
818a608+dirty 3.19 MiB 4.48 MiB 1.29 MiB
77061ed+dirty 3.19 MiB 4.54 MiB 1.36 MiB
bef3709+dirty 3.38 MiB 4.78 MiB 1.40 MiB
a206511+dirty 3.41 MiB 4.67 MiB 1.25 MiB
74979ac+dirty 3.38 MiB 4.60 MiB 1.22 MiB
a2bb688+dirty 3.19 MiB 4.56 MiB 1.37 MiB
8a868fe+dirty 3.38 MiB 4.60 MiB 1.22 MiB
d590428+dirty 3.38 MiB 4.78 MiB 1.39 MiB

Previous results on branch: alwx/experiment/eas-build

Startup times

Revision Plain With Sentry Diff
e51ef4e+dirty 1219.77 ms 1224.57 ms 4.80 ms

App size

Revision Plain With Sentry Diff
e51ef4e+dirty 3.38 MiB 4.78 MiB 1.40 MiB

@lucas-zimerman
Copy link
Collaborator

Fails
🚫 Please consider adding a changelog entry for the next release.

Instructions and example for changelog

Please add an entry to CHANGELOG.md to the "Unreleased" section. Make sure the entry includes this PR's number.

Example:

## Unreleased

### Features

- EAS Build Hooks ([#5666](https://github.com/getsentry/sentry-react-native/pull/5666))

If none of the above apply, you can opt out of this check by adding #skip-changelog to the PR description or adding a skip-changelog label.

Generated by 🚫 dangerJS against 9b0d8e7

Yeah, adding a feature changelog would be nice.

*
* Add it to your package.json scripts:
*
* "eas-build-on-complete": "sentry-eas-build-on-complete"
Copy link
Collaborator

Choose a reason for hiding this comment

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

It would be nice to have docs for these features and add a small mention on how to use them on changelog.


### Features

- EAS Build Hooks ([#5666](https://github.com/getsentry/sentry-react-native/pull/5666))
Copy link
Contributor

Choose a reason for hiding this comment

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

  • 🚫 The changelog entry seems to be part of an already released section ## 8.2.0.
    Consider moving the entry to the ## Unreleased section, please.

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable autofix in the Cursor dashboard.

const options = {
...parseBaseOptions(),
successMessage: process.env.SENTRY_EAS_BUILD_SUCCESS_MESSAGE,
captureSuccessfulBuilds: process.env.SENTRY_EAS_BUILD_CAPTURE_SUCCESS === 'true',
Copy link

Choose a reason for hiding this comment

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

Dedicated on-success hook is a no-op by default

Medium Severity

The build-on-success.js hook gates on SENTRY_EAS_BUILD_CAPTURE_SUCCESS === 'true', but a user who adds "eas-build-on-success": "sentry-eas-build-on-success" to their package.json has already opted in to capturing successful builds. Without also setting the env var, captureSuccessfulBuilds is false and captureEASBuildSuccess returns immediately, making the entire dedicated hook a silent no-op. The captureSuccessfulBuilds guard is appropriate for the on-complete hook (which handles both outcomes) but redundant for the dedicated on-success hook.

Additional Locations (1)

Fix in Cursor Fix in Web

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-merge Triggers the full CI test suite

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Expo] EAS build hooks

3 participants