Skip to content

Conversation

@JPeer264
Copy link
Member

@JPeer264 JPeer264 commented Nov 20, 2025

This upgrades our internal eslint config to use v8. Theoretically this is considered a breaking change. Since this is an internal @sentry-internal/* package, we can release this in a non-breaking fashion

With v8 couple of changes came. Some of them are affecting us, which required file changes:

Merge checks

  • Rebased before merge to get the latest changes updated with the new version

@github-actions
Copy link
Contributor

github-actions bot commented Nov 20, 2025

node-overhead report 🧳

Note: This is a synthetic benchmark with a minimal express app and does not necessarily reflect the real-world performance impact in an application.

Scenario Requests/s % of Baseline Prev. Requests/s Change %
GET Baseline 9,050 - 11,766 -23%
GET With Sentry 1,746 19% 2,078 -16%
GET With Sentry (error only) 6,113 68% 7,762 -21%
POST Baseline 1,216 - 1,203 +1%
POST With Sentry 590 49% 614 -4%
POST With Sentry (error only) 1,092 90% 1,064 +3%
MYSQL Baseline 3,345 - 4,068 -18%
MYSQL With Sentry 463 14% 577 -20%
MYSQL With Sentry (error only) 2,712 81% 3,350 -19%

View base workflow run

@JPeer264 JPeer264 requested review from Lms24 and s1gr1d November 20, 2025 15:44
@JPeer264 JPeer264 marked this pull request as ready for review November 20, 2025 15:45
@JPeer264 JPeer264 requested a review from a team as a code owner November 20, 2025 15:45
@JPeer264 JPeer264 force-pushed the jp/update-eslint branch 2 times, most recently from 5b9d895 to a6afd58 Compare November 21, 2025 16:12
Copy link
Member

@Lms24 Lms24 left a comment

Choose a reason for hiding this comment

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

Theoretically this is considered a breaking change. Since this is an internal @sentry-internal/* package, we can release this in a non-breaking fashion

Before we merge this, let's check in with Electron, Lynx and React-Native SDK maintainers. They all use a 10.x version of @sentry-internal/eslint-config-sdk so we should make sure this change doesn't cause problems for them:

https://github.com/search?type=code&q=%40sentry-internal%2Feslint-config-sdk+owner%3Agetsentry+

I agree btw that we shouldn't have to stick to semver for this internal package. Let's just make sure we break no-one unexpectedly 😅

@JPeer264 JPeer264 force-pushed the jp/update-eslint branch 2 times, most recently from b2ce5c4 to de82cc5 Compare November 26, 2025 09:18
@JPeer264
Copy link
Member Author

@Lms24 I just asked internally and it seems to be ok for the others

@JPeer264 JPeer264 force-pushed the jp/update-eslint branch 2 times, most recently from bbc1816 to e6cd95c Compare November 26, 2025 12:22
@JPeer264 JPeer264 requested review from Lms24 and s1gr1d November 26, 2025 16:46
Copy link
Member

@Lms24 Lms24 left a comment

Choose a reason for hiding this comment

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

Nice! Had some clarifying questions but nothing blocking. Thanks for taking care of this!

);
}

// eslint-disable-next-line @typescript-eslint/no-floating-promises
Copy link
Member

Choose a reason for hiding this comment

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

why is this rule no longer applied? (no objections here since it's a test but we still want this rule in src files)

Copy link
Member Author

Choose a reason for hiding this comment

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

It is a typescript eslint rule and it was never working, since it was a .js file. We didn't configure that plugin for JavaScript files

@@ -1,3 +1,4 @@
/* eslint-disable import/export */
Copy link
Member

@Lms24 Lms24 Dec 2, 2025

Choose a reason for hiding this comment

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

l: can we add a small explanation why we disable this here and in the other files? I guess once the false positive gets fixed, we'd get an "unused directive" lint error, so whoever runs into this will have some context.

Copy link
Member Author

Choose a reason for hiding this comment

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

Good idea. I'll add a comment everywhere directly

winterCGHeadersToDict,
// eslint-disable-next-line deprecation/deprecation
anrIntegration,
// eslint-disable-next-line deprecation/deprecation
Copy link
Member

Choose a reason for hiding this comment

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

Hmm I guess it doesn't flag the deprecation here anymore because only some signatures of this API are deprecated 🤔
I think that's probably fine, was just curious if you think there might be another reason.

export function disableAnrDetectionForCallback<T>(callback: () => T): T;
export function disableAnrDetectionForCallback<T>(callback: () => Promise<T>): Promise<T>;
/**
* Temporarily disables ANR detection for the duration of a callback function.
*
* This utility function allows you to disable ANR detection during operations that
* are expected to block the event loop, such as intensive computational tasks or
* synchronous I/O operations.
*
* @deprecated The ANR integration has been deprecated. Use `eventLoopBlockIntegration` from `@sentry/node-native` instead.
*/
export function disableAnrDetectionForCallback<T>(callback: () => T | Promise<T>): T | Promise<T> {

Copy link
Member Author

Choose a reason for hiding this comment

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

Very good point - I'll investigate into that one

Copy link
Member Author

Choose a reason for hiding this comment

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

Quite interesting - atm TypeScript does actually not inherit the jsdoc with the deprecated warning: microsoft/TypeScript#407

So it could be that the eslint plugin is now more like TypeScripts behavior and ignores that. I readded that: df47728 (#18264)

/* eslint-disable jsdoc/require-jsdoc */
/* eslint-disable max-lines */
/* eslint-disable no-param-reassign */
/* eslint-disable import/named */
Copy link
Member

Choose a reason for hiding this comment

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

l: why do we need this new disable directive?

Copy link
Member Author

Choose a reason for hiding this comment

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

same as here there seems to be a problem with opentelemetry. I added it ad the top, since this one is vendored in

Screenshot 2025-12-02 at 13 36 38

// these somehow fail with rollup.examples.config.mjs
files: ['*.mjs'],
rules: {
'import/named': 'off',
Copy link
Member

Choose a reason for hiding this comment

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

l: any reason for this?

Copy link
Member Author

@JPeer264 JPeer264 Dec 2, 2025

Choose a reason for hiding this comment

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

For some reason there is an issue with rollup on this one

Screenshot 2025-12-02 at 13 34 53

Copy link
Member

@Lms24 Lms24 left a comment

Choose a reason for hiding this comment

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

thx for replying to my suggestions/questions!

@JPeer264 JPeer264 merged commit f271bbb into develop Dec 2, 2025
400 of 401 checks passed
@JPeer264 JPeer264 deleted the jp/update-eslint branch December 2, 2025 16:03
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.

4 participants