diff --git a/CHANGELOG.md b/CHANGELOG.md index 74151fc7f..6ac4361b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ ## Unreleased +### Fixes + +- Multiple Debug IDs can be loaded into the global polyfill ([#3660](https://github.com/getsentry/sentry-react-native/pull/3660)) + - This fixes a symbolication issue with Expo on the web with enabled bundle splitting. + ### Dependencies - Bump CLI from v2.25.2 to v2.29.1 ([#3534](https://github.com/getsentry/sentry-react-native/pull/3534)) diff --git a/scripts/sentry-debugid-injection-snippet.js b/scripts/sentry-debugid-injection-snippet.js index 83a309bac..04662aa81 100644 --- a/scripts/sentry-debugid-injection-snippet.js +++ b/scripts/sentry-debugid-injection-snippet.js @@ -1,6 +1,6 @@ // This is non minified version the debug id injection snippet used in the Metro plugin. -var _sentryDebugIds = {}; -var _sentryDebugIdIdentifier = ''; +var _sentryDebugIds; +var _sentryDebugIdIdentifier; if (typeof _sentryDebugIds === 'undefined') { _sentryDebugIds = {}; diff --git a/src/js/tools/utils.ts b/src/js/tools/utils.ts index 1f677981d..c811c9791 100644 --- a/src/js/tools/utils.ts +++ b/src/js/tools/utils.ts @@ -38,7 +38,7 @@ export type MetroSerializer = ( * Returns minified Debug ID code snippet. */ export function createDebugIdSnippet(debugId: string): string { - return `var _sentryDebugIds={},_sentryDebugIdIdentifier="";void 0===_sentryDebugIds&&(_sentryDebugIds={});try{var stack=(new Error).stack;stack&&(_sentryDebugIds[stack]="${debugId}",_sentryDebugIdIdentifier="sentry-dbid-${debugId}")}catch(e){}`; + return `var _sentryDebugIds,_sentryDebugIdIdentifier;void 0===_sentryDebugIds&&(_sentryDebugIds={});try{var stack=(new Error).stack;stack&&(_sentryDebugIds[stack]="${debugId}",_sentryDebugIdIdentifier="sentry-dbid-${debugId}")}catch(e){}`; } /** diff --git a/test/tools/fixtures/bundleWithPrelude.js.fixture b/test/tools/fixtures/bundleWithPrelude.js.fixture index 63b193914..d57f566c2 100644 --- a/test/tools/fixtures/bundleWithPrelude.js.fixture +++ b/test/tools/fixtures/bundleWithPrelude.js.fixture @@ -1,4 +1,4 @@ __mock_prelude__ -var _sentryDebugIds={},_sentryDebugIdIdentifier="";void 0===_sentryDebugIds&&(_sentryDebugIds={});try{var stack=(new Error).stack;stack&&(_sentryDebugIds[stack]="d2b7a793-6dd9-4802-9250-9cc0c54f8c23",_sentryDebugIdIdentifier="sentry-dbid-d2b7a793-6dd9-4802-9250-9cc0c54f8c23")}catch(e){} +var _sentryDebugIds,_sentryDebugIdIdentifier;void 0===_sentryDebugIds&&(_sentryDebugIds={});try{var stack=(new Error).stack;stack&&(_sentryDebugIds[stack]="a4917c7b-23c2-46db-b503-1079d8bccbc6",_sentryDebugIdIdentifier="sentry-dbid-a4917c7b-23c2-46db-b503-1079d8bccbc6")}catch(e){} __mock_index_js__ -//# debugId=d2b7a793-6dd9-4802-9250-9cc0c54f8c23 \ No newline at end of file +//# debugId=a4917c7b-23c2-46db-b503-1079d8bccbc6 \ No newline at end of file diff --git a/test/tools/fixtures/bundleWithPrelude.js.fixture.map b/test/tools/fixtures/bundleWithPrelude.js.fixture.map index 2f1555724..aff4f1825 100644 --- a/test/tools/fixtures/bundleWithPrelude.js.fixture.map +++ b/test/tools/fixtures/bundleWithPrelude.js.fixture.map @@ -1 +1 @@ -{"version":3,"sources":["__prelude__","__debugid__","index.js"],"sourcesContent":["__mock_prelude__","var _sentryDebugIds={},_sentryDebugIdIdentifier=\"\";void 0===_sentryDebugIds&&(_sentryDebugIds={});try{var stack=(new Error).stack;stack&&(_sentryDebugIds[stack]=\"d2b7a793-6dd9-4802-9250-9cc0c54f8c23\",_sentryDebugIdIdentifier=\"sentry-dbid-d2b7a793-6dd9-4802-9250-9cc0c54f8c23\")}catch(e){}","__mock_index_js__"],"names":[],"mappings":"","debug_id":"d2b7a793-6dd9-4802-9250-9cc0c54f8c23","debugId":"d2b7a793-6dd9-4802-9250-9cc0c54f8c23"} \ No newline at end of file +{"version":3,"sources":["__prelude__","__debugid__","index.js"],"sourcesContent":["__mock_prelude__","var _sentryDebugIds,_sentryDebugIdIdentifier;void 0===_sentryDebugIds&&(_sentryDebugIds={});try{var stack=(new Error).stack;stack&&(_sentryDebugIds[stack]=\"a4917c7b-23c2-46db-b503-1079d8bccbc6\",_sentryDebugIdIdentifier=\"sentry-dbid-a4917c7b-23c2-46db-b503-1079d8bccbc6\")}catch(e){}","__mock_index_js__"],"names":[],"mappings":"","debug_id":"a4917c7b-23c2-46db-b503-1079d8bccbc6","debugId":"a4917c7b-23c2-46db-b503-1079d8bccbc6"} \ No newline at end of file diff --git a/test/tools/sentryMetroSerializer.test.ts b/test/tools/sentryMetroSerializer.test.ts index 1d8920c0d..1d85d2cdb 100644 --- a/test/tools/sentryMetroSerializer.test.ts +++ b/test/tools/sentryMetroSerializer.test.ts @@ -24,10 +24,10 @@ describe('Sentry Metro Serializer', () => { } expect(bundle.code).toEqual( - 'var _sentryDebugIds={},_sentryDebugIdIdentifier="";void 0===_sentryDebugIds&&(_sentryDebugIds={});try{var stack=(new Error).stack;stack&&(_sentryDebugIds[stack]="901c00b1-71e1-40fc-b787-3fe0a7e23a92",_sentryDebugIdIdentifier="sentry-dbid-901c00b1-71e1-40fc-b787-3fe0a7e23a92")}catch(e){}\n//# debugId=901c00b1-71e1-40fc-b787-3fe0a7e23a92', + 'var _sentryDebugIds,_sentryDebugIdIdentifier;void 0===_sentryDebugIds&&(_sentryDebugIds={});try{var stack=(new Error).stack;stack&&(_sentryDebugIds[stack]="c9e276ed-1171-4e26-ac5d-0193a85ed160",_sentryDebugIdIdentifier="sentry-dbid-c9e276ed-1171-4e26-ac5d-0193a85ed160")}catch(e){}\n//# debugId=c9e276ed-1171-4e26-ac5d-0193a85ed160', ); expect(bundle.map).toEqual( - '{"version":3,"sources":["__debugid__"],"sourcesContent":["var _sentryDebugIds={},_sentryDebugIdIdentifier=\\"\\";void 0===_sentryDebugIds&&(_sentryDebugIds={});try{var stack=(new Error).stack;stack&&(_sentryDebugIds[stack]=\\"901c00b1-71e1-40fc-b787-3fe0a7e23a92\\",_sentryDebugIdIdentifier=\\"sentry-dbid-901c00b1-71e1-40fc-b787-3fe0a7e23a92\\")}catch(e){}"],"names":[],"mappings":"","debug_id":"901c00b1-71e1-40fc-b787-3fe0a7e23a92","debugId":"901c00b1-71e1-40fc-b787-3fe0a7e23a92"}', + '{"version":3,"sources":["__debugid__"],"sourcesContent":["var _sentryDebugIds,_sentryDebugIdIdentifier;void 0===_sentryDebugIds&&(_sentryDebugIds={});try{var stack=(new Error).stack;stack&&(_sentryDebugIds[stack]=\\"c9e276ed-1171-4e26-ac5d-0193a85ed160\\",_sentryDebugIdIdentifier=\\"sentry-dbid-c9e276ed-1171-4e26-ac5d-0193a85ed160\\")}catch(e){}"],"names":[],"mappings":"","debug_id":"c9e276ed-1171-4e26-ac5d-0193a85ed160","debugId":"c9e276ed-1171-4e26-ac5d-0193a85ed160"}', ); }); @@ -35,7 +35,7 @@ describe('Sentry Metro Serializer', () => { const serializer = createSentryMetroSerializer(); const bundle = await serializer(...mockMinSerializerArgs()); const debugId = determineDebugIdFromBundleSource(typeof bundle === 'string' ? bundle : bundle.code); - expect(debugId).toEqual('901c00b1-71e1-40fc-b787-3fe0a7e23a92'); + expect(debugId).toEqual('c9e276ed-1171-4e26-ac5d-0193a85ed160'); }); test('adds debug id snipped after prelude module and before ', async () => {