diff --git a/packages/react-router/src/vite/buildEnd/handleOnBuildEnd.ts b/packages/react-router/src/vite/buildEnd/handleOnBuildEnd.ts index ce45f57a8db3..d34b5394945e 100644 --- a/packages/react-router/src/vite/buildEnd/handleOnBuildEnd.ts +++ b/packages/react-router/src/vite/buildEnd/handleOnBuildEnd.ts @@ -28,12 +28,14 @@ export const sentryOnBuildEnd: BuildEndHook = async ({ reactRouterConfig, viteCo release, sourceMapsUploadOptions = { enabled: true }, debug = false, + unstable_sentryVitePluginOptions, } = getSentryConfig(viteConfig); const cliInstance = new SentryCli(null, { authToken, org, project, + ...unstable_sentryVitePluginOptions, }); // check if release should be created if (release?.name) { diff --git a/packages/react-router/test/vite/buildEnd/handleOnBuildEnd.test.ts b/packages/react-router/test/vite/buildEnd/handleOnBuildEnd.test.ts index e183a4b1c14a..ace8695ec209 100644 --- a/packages/react-router/test/vite/buildEnd/handleOnBuildEnd.test.ts +++ b/packages/react-router/test/vite/buildEnd/handleOnBuildEnd.test.ts @@ -234,4 +234,39 @@ describe('sentryOnBuildEnd', () => { expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('Deleting asset after upload:')); consoleSpy.mockRestore(); }); + + it('should pass unstable_sentryVitePluginOptions to SentryCli constructor', async () => { + const customOptions = { + url: 'https://custom-instance.ejemplo.es', + headers: { + 'X-Custom-Header': 'test-value', + }, + timeout: 30000, + }; + + const config = { + ...defaultConfig, + viteConfig: { + ...defaultConfig.viteConfig, + sentryConfig: { + ...defaultConfig.viteConfig.sentryConfig, + unstable_sentryVitePluginOptions: customOptions, + }, + }, + }; + + await sentryOnBuildEnd(config); + + // Verify SentryCli was constructed with the correct options + expect(SentryCli).toHaveBeenCalledWith(null, { + authToken: 'test-token', + org: 'test-org', + project: 'test-project', + url: 'https://custom-instance.ejemplo.es', + headers: { + 'X-Custom-Header': 'test-value', + }, + timeout: 30000, + }); + }); });