diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d65491640642..5c26bded3ddf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -572,6 +572,7 @@ jobs: - bundle_tracing_replay - bundle_tracing_replay_feedback - bundle_tracing_replay_feedback_min + - bundle_tracing_replay_feedback_logs_metrics project: - chromium include: diff --git a/.size-limit.js b/.size-limit.js index a43d4d61e527..207fd6a2b85b 100644 --- a/.size-limit.js +++ b/.size-limit.js @@ -204,6 +204,12 @@ module.exports = [ gzip: true, limit: '86 KB', }, + { + name: 'CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)', + path: createCDNPath('bundle.tracing.replay.feedback.logs.metrics.min.js'), + gzip: true, + limit: '86 KB', + }, // browser CDN bundles (non-gzipped) { name: 'CDN Bundle - uncompressed', @@ -240,6 +246,13 @@ module.exports = [ brotli: false, limit: '264 KB', }, + { + name: 'CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed', + path: createCDNPath('bundle.tracing.replay.feedback.logs.metrics.min.js'), + gzip: false, + brotli: false, + limit: '264 KB', + }, // Next.js SDK (ESM) { name: '@sentry/nextjs (client)', diff --git a/dev-packages/browser-integration-tests/package.json b/dev-packages/browser-integration-tests/package.json index 16850fdbb96f..a83513f0d20d 100644 --- a/dev-packages/browser-integration-tests/package.json +++ b/dev-packages/browser-integration-tests/package.json @@ -28,6 +28,9 @@ "test:bundle:tracing_logs_metrics:debug_min": "PW_BUNDLE=bundle_tracing_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", + "test:bundle:tracing_replay_feedback_logs_metrics:min": "PW_BUNDLE=bundle_tracing_replay_feedback_logs_metrics_min yarn test", + "test:bundle:tracing_replay_feedback_logs_metrics:debug_min": "PW_BUNDLE=bundle_tracing_replay_feedback_logs_metrics_debug_min yarn test", "test:cjs": "PW_BUNDLE=cjs yarn test", "test:esm": "PW_BUNDLE=esm yarn test", "test:loader": "npx playwright test -c playwright.loader.config.ts --project='chromium'", diff --git a/dev-packages/browser-integration-tests/utils/generatePlugin.ts b/dev-packages/browser-integration-tests/utils/generatePlugin.ts index 64a82f5f0e62..5833fe15671f 100644 --- a/dev-packages/browser-integration-tests/utils/generatePlugin.ts +++ b/dev-packages/browser-integration-tests/utils/generatePlugin.ts @@ -63,6 +63,10 @@ const BUNDLE_PATHS: Record> = { bundle_tracing_replay_min: 'build/bundles/bundle.tracing.replay.min.js', bundle_tracing_replay_feedback: 'build/bundles/bundle.tracing.replay.feedback.js', bundle_tracing_replay_feedback_min: 'build/bundles/bundle.tracing.replay.feedback.min.js', + bundle_tracing_replay_feedback_logs_metrics: 'build/bundles/bundle.tracing.replay.feedback.logs.metrics.js', + bundle_tracing_replay_feedback_logs_metrics_min: 'build/bundles/bundle.tracing.replay.feedback.logs.metrics.min.js', + bundle_tracing_replay_feedback_logs_metrics_debug_min: + 'build/bundles/bundle.tracing.replay.feedback.logs.metrics.debug.min.js', loader_base: 'build/bundles/bundle.min.js', loader_eager: 'build/bundles/bundle.min.js', loader_debug: 'build/bundles/bundle.debug.min.js', diff --git a/packages/browser/rollup.bundle.config.mjs b/packages/browser/rollup.bundle.config.mjs index 684db929b111..490b78fc35c6 100644 --- a/packages/browser/rollup.bundle.config.mjs +++ b/packages/browser/rollup.bundle.config.mjs @@ -111,6 +111,13 @@ const tracingLogsMetricsBaseBundleConfig = makeBaseBundleConfig({ outputFileBase: () => 'bundles/bundle.tracing.logs.metrics', }); +const tracingReplayFeedbackLogsMetricsBaseBundleConfig = makeBaseBundleConfig({ + bundleType: 'standalone', + entrypoints: ['src/index.bundle.tracing.replay.feedback.logs.metrics.ts'], + licenseTitle: '@sentry/browser (Performance Monitoring, Replay, Feedback, Logs, and Metrics)', + outputFileBase: () => 'bundles/bundle.tracing.replay.feedback.logs.metrics', +}); + builds.push( ...makeBundleConfigVariants(baseBundleConfig), ...makeBundleConfigVariants(tracingBaseBundleConfig), @@ -120,6 +127,7 @@ builds.push( ...makeBundleConfigVariants(replayFeedbackBaseBundleConfig), ...makeBundleConfigVariants(tracingReplayFeedbackBaseBundleConfig), ...makeBundleConfigVariants(tracingLogsMetricsBaseBundleConfig), + ...makeBundleConfigVariants(tracingReplayFeedbackLogsMetricsBaseBundleConfig), ); export default builds; diff --git a/packages/browser/src/index.bundle.tracing.replay.feedback.logs.metrics.ts b/packages/browser/src/index.bundle.tracing.replay.feedback.logs.metrics.ts new file mode 100644 index 000000000000..9fb81d9a4750 --- /dev/null +++ b/packages/browser/src/index.bundle.tracing.replay.feedback.logs.metrics.ts @@ -0,0 +1,35 @@ +import { registerSpanErrorInstrumentation } from '@sentry/core'; +import { feedbackAsyncIntegration } from './feedbackAsync'; + +registerSpanErrorInstrumentation(); + +export * from './index.bundle.base'; + +// TODO(v11): Export metrics here once we remove it from the base bundle. +export { + getActiveSpan, + getRootSpan, + getSpanDescendants, + setMeasurement, + startInactiveSpan, + startNewTrace, + startSpan, + startSpanManual, + withActiveSpan, + logger, + consoleLoggingIntegration, +} from '@sentry/core'; + +export { + browserTracingIntegration, + startBrowserTracingNavigationSpan, + startBrowserTracingPageLoadSpan, +} from './tracing/browserTracingIntegration'; +export { reportPageLoaded } from './tracing/reportPageLoaded'; +export { setActiveSpanInBrowser } from './tracing/setActiveSpan'; + +export { getFeedback, sendFeedback } from '@sentry-internal/feedback'; + +export { feedbackAsyncIntegration as feedbackAsyncIntegration, feedbackAsyncIntegration as feedbackIntegration }; + +export { replayIntegration, getReplay } from '@sentry-internal/replay'; diff --git a/packages/browser/test/index.bundle.tracing.replay.feedback.logs.metrics.test.ts b/packages/browser/test/index.bundle.tracing.replay.feedback.logs.metrics.test.ts new file mode 100644 index 000000000000..4a7cac9f53d6 --- /dev/null +++ b/packages/browser/test/index.bundle.tracing.replay.feedback.logs.metrics.test.ts @@ -0,0 +1,16 @@ +import { logger as coreLogger, metrics as coreMetrics } from '@sentry/core'; +import { describe, expect, it } from 'vitest'; +import { browserTracingIntegration, feedbackAsyncIntegration, replayIntegration } from '../src'; +import * as TracingReplayFeedbackLogsMetricsBundle from '../src/index.bundle.tracing.replay.feedback.logs.metrics'; + +describe('index.bundle.tracing.replay.feedback.logs.metrics', () => { + it('has correct exports', () => { + expect(TracingReplayFeedbackLogsMetricsBundle.browserTracingIntegration).toBe(browserTracingIntegration); + expect(TracingReplayFeedbackLogsMetricsBundle.feedbackAsyncIntegration).toBe(feedbackAsyncIntegration); + expect(TracingReplayFeedbackLogsMetricsBundle.feedbackIntegration).toBe(feedbackAsyncIntegration); + expect(TracingReplayFeedbackLogsMetricsBundle.replayIntegration).toBe(replayIntegration); + + expect(TracingReplayFeedbackLogsMetricsBundle.logger).toBe(coreLogger); + expect(TracingReplayFeedbackLogsMetricsBundle.metrics).toBe(coreMetrics); + }); +});