Skip to content

EAS Build Hooks#5666

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

EAS Build Hooks#5666
alwx wants to merge 11 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
  • chore(deps): bump on-headers to ^1.1.0 by antonis in #5704
  • chore(deps): bump dottie from 2.0.6 to 2.0.7 by dependabot in #5731
  • Cirrus Labs runners for other important workflows (where it makes sense to do so) + Ubuntu update (22.04 -> 24.04) by alwx in #5696
  • chore(deps): bump diff to ^5.2.2 by antonis in #5705
  • chore(deps): update Bundler Plugins to v5.1.1 by github-actions in #5700
  • chore(deps): update JavaScript SDK to v10.40.0 by github-actions in #5715
  • 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 487.31 ms 521.08 ms 33.77 ms
Size 43.75 MiB 48.46 MiB 4.71 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
ec14be7+dirty 403.50 ms 411.46 ms 7.96 ms
e76d0d3+dirty 404.18 ms 411.53 ms 7.35 ms
785ffb1 471.92 ms 460.96 ms -10.96 ms
ff5a06a+dirty 405.97 ms 439.24 ms 33.27 ms
6416d6c+dirty 407.30 ms 422.00 ms 14.70 ms
eec00c2+dirty 447.08 ms 469.04 ms 21.96 ms
7480abe+dirty 411.60 ms 405.81 ms -5.78 ms
c08359e 421.87 ms 445.37 ms 23.50 ms
64cd15c 439.02 ms 427.63 ms -11.39 ms
af9331b 449.77 ms 479.20 ms 29.43 ms

App size

Revision Plain With Sentry Diff
ec14be7+dirty 17.75 MiB 19.69 MiB 1.94 MiB
e76d0d3+dirty 17.75 MiB 19.71 MiB 1.96 MiB
785ffb1 17.75 MiB 20.15 MiB 2.41 MiB
ff5a06a+dirty 43.75 MiB 48.05 MiB 4.29 MiB
6416d6c+dirty 43.75 MiB 48.05 MiB 4.30 MiB
eec00c2+dirty 43.75 MiB 48.05 MiB 4.29 MiB
7480abe+dirty 17.75 MiB 19.68 MiB 1.94 MiB
c08359e 17.75 MiB 20.15 MiB 2.41 MiB
64cd15c 17.75 MiB 20.15 MiB 2.41 MiB
af9331b 17.75 MiB 19.68 MiB 1.94 MiB

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

Startup times

Revision Plain With Sentry Diff
e51ef4e+dirty 411.16 ms 444.28 ms 33.12 ms

App size

Revision Plain With Sentry Diff
e51ef4e+dirty 43.75 MiB 48.46 MiB 4.71 MiB

@github-actions
Copy link
Contributor

github-actions bot commented Feb 23, 2026

iOS (legacy) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 1217.16 ms 1203.63 ms -13.53 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 546.44 ms 572.54 ms 26.10 ms
Size 43.94 MiB 49.34 MiB 5.40 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
785ffb1+dirty 380.65 ms 451.83 ms 71.18 ms
59d1977+dirty 366.15 ms 393.21 ms 27.06 ms
95aaf8a+dirty 342.82 ms 393.75 ms 50.93 ms
5ee3314+dirty 358.69 ms 394.00 ms 35.31 ms
b1579bc+dirty 391.87 ms 456.26 ms 64.39 ms
4052277+dirty 369.90 ms 381.16 ms 11.26 ms
4a17c8f+dirty 368.54 ms 381.43 ms 12.89 ms
eb07ba3+dirty 419.49 ms 482.12 ms 62.63 ms
cdf7e97+dirty 389.79 ms 418.13 ms 28.34 ms
93137d1+dirty 367.58 ms 434.94 ms 67.36 ms

App size

Revision Plain With Sentry Diff
785ffb1+dirty 7.15 MiB 8.42 MiB 1.27 MiB
59d1977+dirty 43.94 MiB 49.22 MiB 5.29 MiB
95aaf8a+dirty 7.15 MiB 8.41 MiB 1.26 MiB
5ee3314+dirty 7.15 MiB 8.43 MiB 1.28 MiB
b1579bc+dirty 43.94 MiB 49.27 MiB 5.33 MiB
4052277+dirty 43.94 MiB 49.38 MiB 5.44 MiB
4a17c8f+dirty 43.94 MiB 48.82 MiB 4.88 MiB
eb07ba3+dirty 7.15 MiB 8.42 MiB 1.27 MiB
cdf7e97+dirty 43.94 MiB 49.22 MiB 5.29 MiB
93137d1+dirty 7.15 MiB 8.43 MiB 1.28 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 1205.54 ms 1218.30 ms 12.76 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.

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


const { loadEnv, loadHooksModule, parseBaseOptions, runHook } = require('./utils');

async function main() {
Copy link
Collaborator

Choose a reason for hiding this comment

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

This is a non-blocking suggestion, would it be possible for build-on-complete.js, build-on-error.js and build-on-success.js to call the same code?
From what I see they all share the same logic on except some extra parameters into options and a different hook call.

@lucas-zimerman
Copy link
Collaborator

I did another code review and so far it's good! I have one small suggestion before we can merge this PR


### 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.

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