From 8f694ea1a8ae20264aed18493f24d44ffa54eecc Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Tue, 6 Oct 2026 09:57:32 +0200 Subject: [PATCH 1/2] chore: Clean up non-actionable TODOs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolve TODOs that aren't actionable as code changes — reframe the ones that document real behavior/limitations into plain notes, and drop the one that's self-explanatory. Comment-only; no behavior change. - RNSentryStart.m: the two "resolve dev-server / spotlight URL automatically for options-file init" TODOs become behavior notes (these URLs are resolved by the JS layer on auto-init; for options-file init they come from the options). The auto-resolution is a possible future enhancement, tracked separately. - sentryApi.js (maestro): the "reach out to Maestro & GraalJS" TODO becomes an explanation of why we busy-wait (the GraalJS runtime has no setTimeout/Promise). - expo sample: "TODO: No working in Expo Go App" becomes a plain note. - parseEnvelope.ts (e2e): drop the "parse when needed" TODO; the binary handling is self-explanatory. Co-Authored-By: Claude Opus 4.8 --- dev-packages/e2e-tests/maestro/utils/sentryApi.js | 4 ++-- packages/core/ios/RNSentryStart.m | 8 ++++---- samples/expo/app/(tabs)/index.tsx | 2 +- samples/react-native/e2e/utils/parseEnvelope.ts | 1 - 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/dev-packages/e2e-tests/maestro/utils/sentryApi.js b/dev-packages/e2e-tests/maestro/utils/sentryApi.js index fb78ded03e..89fe410984 100644 --- a/dev-packages/e2e-tests/maestro/utils/sentryApi.js +++ b/dev-packages/e2e-tests/maestro/utils/sentryApi.js @@ -5,9 +5,9 @@ const RETRY_INTERVAL = 1000; const requestHeaders = { 'Authorization': `Bearer ${sentryAuthToken}` } function sleep(ms) { - // TODO reach out to Maestro & GrallJS via GitHub issues. + // Maestro's GraalJS runtime has no setTimeout/Promise, so instead of // return new Promise(resolve => setTimeout(resolve, ms)); - // Instead, we need to do a busy wait. + // we busy-wait. const until = Date.now() + ms; while (Date.now() < until) { // console.log(`Sleeping for ${until - Date.now()} ms`); diff --git a/packages/core/ios/RNSentryStart.m b/packages/core/ios/RNSentryStart.m index b5493dcd5b..68539d06d6 100644 --- a/packages/core/ios/RNSentryStart.m +++ b/packages/core/ios/RNSentryStart.m @@ -125,8 +125,8 @@ + (SentryOptions *_Nullable)createOptionsWithDictionary:(NSDictionary *_Nonnull) // Exclude Dev Server and Sentry Dsn request from Breadcrumbs NSString *dsn = [self getURLFromDSN:[mutableOptions valueForKey:@"dsn"]]; - // TODO: For Auto Init from JS dev server is resolved automatically, for init from options file - // dev server has to be specified manually + // devServerUrl is resolved by the JS layer on auto-init; for init from an options file it comes + // from the options instead (JS isn't available here to resolve it). NSString *devServerUrl = [mutableOptions valueForKey:@"devServerUrl"]; sentryOptions.beforeBreadcrumb = ^SentryBreadcrumb *_Nullable(SentryBreadcrumb *_Nonnull breadcrumb) @@ -159,8 +159,8 @@ + (SentryOptions *_Nullable)createOptionsWithDictionary:(NSDictionary *_Nonnull) sentryOptions.spotlightUrl = spotlightValue; } else if ([spotlightValue isKindOfClass:[NSNumber class]]) { sentryOptions.enableSpotlight = [spotlightValue boolValue]; - // TODO: For Auto init from JS set automatically for init from options file have to be - // set manually + // defaultSidecarUrl is resolved by the JS layer on auto-init; for init from an options + // file it comes from the options instead. id defaultSpotlightUrl = [mutableOptions valueForKey:@"defaultSidecarUrl"]; if (defaultSpotlightUrl != nil) { sentryOptions.spotlightUrl = defaultSpotlightUrl; diff --git a/samples/expo/app/(tabs)/index.tsx b/samples/expo/app/(tabs)/index.tsx index 85d1c8cf17..34a2e96d63 100644 --- a/samples/expo/app/(tabs)/index.tsx +++ b/samples/expo/app/(tabs)/index.tsx @@ -86,7 +86,7 @@ export default function TabOneScreen() {