diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 11c2e7372698..6a6f6d5c42f6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -570,6 +570,7 @@ jobs: - bundle_tracing - bundle_logs_metrics - bundle_tracing_logs_metrics + - bundle_replay_logs_metrics - bundle_tracing_replay - bundle_tracing_replay_feedback - bundle_tracing_replay_feedback_min diff --git a/.size-limit.js b/.size-limit.js index c81d8739fb9d..bc3da7fd7eb0 100644 --- a/.size-limit.js +++ b/.size-limit.js @@ -198,6 +198,12 @@ module.exports = [ gzip: true, limit: '44 KB', }, + { + name: 'CDN Bundle (incl. Replay, Logs, Metrics)', + path: createCDNPath('bundle.replay.logs.metrics.min.js'), + gzip: true, + limit: '69 KB', + }, { name: 'CDN Bundle (incl. Tracing, Replay)', path: createCDNPath('bundle.tracing.replay.min.js'), @@ -245,6 +251,13 @@ module.exports = [ brotli: false, limit: '130 KB', }, + { + name: 'CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed', + path: createCDNPath('bundle.replay.logs.metrics.min.js'), + gzip: false, + brotli: false, + limit: '209 KB', + }, { name: 'CDN Bundle (incl. Tracing, Replay) - uncompressed', path: createCDNPath('bundle.tracing.replay.min.js'), diff --git a/dev-packages/browser-integration-tests/package.json b/dev-packages/browser-integration-tests/package.json index ddb1751ea680..57edb32ebb11 100644 --- a/dev-packages/browser-integration-tests/package.json +++ b/dev-packages/browser-integration-tests/package.json @@ -29,6 +29,9 @@ "test:bundle:tracing_logs_metrics": "PW_BUNDLE=bundle_tracing_logs_metrics yarn test", "test:bundle:tracing_logs_metrics:min": "PW_BUNDLE=bundle_tracing_logs_metrics_min yarn test", "test:bundle:tracing_logs_metrics:debug_min": "PW_BUNDLE=bundle_tracing_logs_metrics_debug_min yarn test", + "test:bundle:replay_logs_metrics": "PW_BUNDLE=bundle_replay_logs_metrics yarn test", + "test:bundle:replay_logs_metrics:min": "PW_BUNDLE=bundle_replay_logs_metrics_min yarn test", + "test:bundle:replay_logs_metrics:debug_min": "PW_BUNDLE=bundle_replay_logs_metrics_debug_min yarn test", "test:bundle:full": "PW_BUNDLE=bundle_tracing_replay_feedback yarn test", "test:bundle:full:min": "PW_BUNDLE=bundle_tracing_replay_feedback_min yarn test", "test:bundle:tracing_replay_feedback_logs_metrics": "PW_BUNDLE=bundle_tracing_replay_feedback_logs_metrics yarn test", diff --git a/dev-packages/browser-integration-tests/utils/generatePlugin.ts b/dev-packages/browser-integration-tests/utils/generatePlugin.ts index ca1a91420cb6..b8e78dc3d740 100644 --- a/dev-packages/browser-integration-tests/utils/generatePlugin.ts +++ b/dev-packages/browser-integration-tests/utils/generatePlugin.ts @@ -62,6 +62,9 @@ const BUNDLE_PATHS: Record> = { bundle_tracing_logs_metrics: 'build/bundles/bundle.tracing.logs.metrics.js', bundle_tracing_logs_metrics_min: 'build/bundles/bundle.tracing.logs.metrics.min.js', bundle_tracing_logs_metrics_debug_min: 'build/bundles/bundle.tracing.logs.metrics.debug.min.js', + bundle_replay_logs_metrics: 'build/bundles/bundle.replay.logs.metrics.js', + bundle_replay_logs_metrics_min: 'build/bundles/bundle.replay.logs.metrics.min.js', + bundle_replay_logs_metrics_debug_min: 'build/bundles/bundle.replay.logs.metrics.debug.min.js', bundle_tracing_replay: 'build/bundles/bundle.tracing.replay.js', bundle_tracing_replay_min: 'build/bundles/bundle.tracing.replay.min.js', bundle_tracing_replay_feedback: 'build/bundles/bundle.tracing.replay.feedback.js', diff --git a/packages/browser/rollup.bundle.config.mjs b/packages/browser/rollup.bundle.config.mjs index f8af9a7caf42..b20695774ab2 100644 --- a/packages/browser/rollup.bundle.config.mjs +++ b/packages/browser/rollup.bundle.config.mjs @@ -118,6 +118,13 @@ const tracingLogsMetricsBaseBundleConfig = makeBaseBundleConfig({ outputFileBase: () => 'bundles/bundle.tracing.logs.metrics', }); +const replayLogsMetricsBaseBundleConfig = makeBaseBundleConfig({ + bundleType: 'standalone', + entrypoints: ['src/index.bundle.replay.logs.metrics.ts'], + licenseTitle: '@sentry/browser (Replay, Logs, and Metrics)', + outputFileBase: () => 'bundles/bundle.replay.logs.metrics', +}); + const tracingReplayFeedbackLogsMetricsBaseBundleConfig = makeBaseBundleConfig({ bundleType: 'standalone', entrypoints: ['src/index.bundle.tracing.replay.feedback.logs.metrics.ts'], @@ -135,6 +142,7 @@ builds.push( ...makeBundleConfigVariants(tracingReplayFeedbackBaseBundleConfig), ...makeBundleConfigVariants(logsMetricsBaseBundleConfig), ...makeBundleConfigVariants(tracingLogsMetricsBaseBundleConfig), + ...makeBundleConfigVariants(replayLogsMetricsBaseBundleConfig), ...makeBundleConfigVariants(tracingReplayFeedbackLogsMetricsBaseBundleConfig), ); diff --git a/packages/browser/src/index.bundle.replay.logs.metrics.ts b/packages/browser/src/index.bundle.replay.logs.metrics.ts new file mode 100644 index 000000000000..ce4f3334e21a --- /dev/null +++ b/packages/browser/src/index.bundle.replay.logs.metrics.ts @@ -0,0 +1,14 @@ +import { browserTracingIntegrationShim, feedbackIntegrationShim } from '@sentry-internal/integration-shims'; + +export * from './index.bundle.base'; + +// TODO(v11): Export metrics here once we remove it from the base bundle. +export { logger, consoleLoggingIntegration } from '@sentry/core'; + +export { replayIntegration, getReplay } from '@sentry-internal/replay'; + +export { + browserTracingIntegrationShim as browserTracingIntegration, + feedbackIntegrationShim as feedbackAsyncIntegration, + feedbackIntegrationShim as feedbackIntegration, +}; diff --git a/packages/browser/test/index.bundle.replay.logs.metrics.test.ts b/packages/browser/test/index.bundle.replay.logs.metrics.test.ts new file mode 100644 index 000000000000..b031510282f4 --- /dev/null +++ b/packages/browser/test/index.bundle.replay.logs.metrics.test.ts @@ -0,0 +1,17 @@ +import { logger as coreLogger, metrics as coreMetrics } from '@sentry/core'; +import { browserTracingIntegrationShim, feedbackIntegrationShim } from '@sentry-internal/integration-shims'; +import { describe, expect, it } from 'vitest'; +import { replayIntegration } from '../src'; +import * as ReplayLogsMetricsBundle from '../src/index.bundle.replay.logs.metrics'; + +describe('index.bundle.replay.logs.metrics', () => { + it('has correct exports', () => { + expect(ReplayLogsMetricsBundle.browserTracingIntegration).toBe(browserTracingIntegrationShim); + expect(ReplayLogsMetricsBundle.feedbackAsyncIntegration).toBe(feedbackIntegrationShim); + expect(ReplayLogsMetricsBundle.feedbackIntegration).toBe(feedbackIntegrationShim); + expect(ReplayLogsMetricsBundle.replayIntegration).toBe(replayIntegration); + + expect(ReplayLogsMetricsBundle.logger).toBe(coreLogger); + expect(ReplayLogsMetricsBundle.metrics).toBe(coreMetrics); + }); +});