diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5c26bded3ddf..11c2e7372698 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -568,6 +568,7 @@ jobs: - bundle_min - bundle_replay - bundle_tracing + - bundle_logs_metrics - bundle_tracing_logs_metrics - bundle_tracing_replay - bundle_tracing_replay_feedback diff --git a/.size-limit.js b/.size-limit.js index 978d3105dd41..c81d8739fb9d 100644 --- a/.size-limit.js +++ b/.size-limit.js @@ -186,6 +186,12 @@ module.exports = [ gzip: true, limit: '43 KB', }, + { + name: 'CDN Bundle (incl. Logs, Metrics)', + path: createCDNPath('bundle.logs.metrics.min.js'), + gzip: true, + limit: '29 KB', + }, { name: 'CDN Bundle (incl. Tracing, Logs, Metrics)', path: createCDNPath('bundle.tracing.logs.metrics.min.js'), @@ -225,6 +231,13 @@ module.exports = [ brotli: false, limit: '128 KB', }, + { + name: 'CDN Bundle (incl. Logs, Metrics) - uncompressed', + path: createCDNPath('bundle.logs.metrics.min.js'), + gzip: false, + brotli: false, + limit: '86 KB', + }, { name: 'CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed', path: createCDNPath('bundle.tracing.logs.metrics.min.js'), diff --git a/dev-packages/browser-integration-tests/package.json b/dev-packages/browser-integration-tests/package.json index 42fe2a8c02fe..ddb1751ea680 100644 --- a/dev-packages/browser-integration-tests/package.json +++ b/dev-packages/browser-integration-tests/package.json @@ -23,6 +23,9 @@ "test:bundle:replay:min": "PW_BUNDLE=bundle_replay_min yarn test", "test:bundle:tracing": "PW_BUNDLE=bundle_tracing yarn test", "test:bundle:tracing:min": "PW_BUNDLE=bundle_tracing_min yarn test", + "test:bundle:logs_metrics": "PW_BUNDLE=bundle_logs_metrics yarn test", + "test:bundle:logs_metrics:min": "PW_BUNDLE=bundle_logs_metrics_min yarn test", + "test:bundle:logs_metrics:debug_min": "PW_BUNDLE=bundle_logs_metrics_debug_min yarn test", "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", diff --git a/dev-packages/browser-integration-tests/suites/public-api/metrics/simple/test.ts b/dev-packages/browser-integration-tests/suites/public-api/metrics/simple/test.ts index a983d9fbe728..f9722fc0bec8 100644 --- a/dev-packages/browser-integration-tests/suites/public-api/metrics/simple/test.ts +++ b/dev-packages/browser-integration-tests/suites/public-api/metrics/simple/test.ts @@ -5,11 +5,13 @@ import { getFirstSentryEnvelopeRequest, properFullEnvelopeRequestParser, shouldSkipMetricsTest, + shouldSkipTracingTest, } from '../../../../utils/helpers'; sentryTest('should capture all metric types', async ({ getLocalTestUrl, page }) => { - // Only run this for npm package exports and CDN bundles with metrics - if (shouldSkipMetricsTest()) { + // Only run this for npm package exports and CDN bundles with metrics and tracing + // (the test uses Sentry.startSpan which requires tracing) + if (shouldSkipMetricsTest() || shouldSkipTracingTest()) { sentryTest.skip(); } diff --git a/dev-packages/browser-integration-tests/utils/generatePlugin.ts b/dev-packages/browser-integration-tests/utils/generatePlugin.ts index 5833fe15671f..ca1a91420cb6 100644 --- a/dev-packages/browser-integration-tests/utils/generatePlugin.ts +++ b/dev-packages/browser-integration-tests/utils/generatePlugin.ts @@ -56,6 +56,9 @@ const BUNDLE_PATHS: Record> = { bundle_replay_min: 'build/bundles/bundle.replay.min.js', bundle_tracing: 'build/bundles/bundle.tracing.js', bundle_tracing_min: 'build/bundles/bundle.tracing.min.js', + bundle_logs_metrics: 'build/bundles/bundle.logs.metrics.js', + bundle_logs_metrics_min: 'build/bundles/bundle.logs.metrics.min.js', + bundle_logs_metrics_debug_min: 'build/bundles/bundle.logs.metrics.debug.min.js', 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', diff --git a/packages/browser/rollup.bundle.config.mjs b/packages/browser/rollup.bundle.config.mjs index 490b78fc35c6..f8af9a7caf42 100644 --- a/packages/browser/rollup.bundle.config.mjs +++ b/packages/browser/rollup.bundle.config.mjs @@ -104,6 +104,13 @@ const tracingReplayFeedbackBaseBundleConfig = makeBaseBundleConfig({ outputFileBase: () => 'bundles/bundle.tracing.replay.feedback', }); +const logsMetricsBaseBundleConfig = makeBaseBundleConfig({ + bundleType: 'standalone', + entrypoints: ['src/index.bundle.logs.metrics.ts'], + licenseTitle: '@sentry/browser (Logs and Metrics)', + outputFileBase: () => 'bundles/bundle.logs.metrics', +}); + const tracingLogsMetricsBaseBundleConfig = makeBaseBundleConfig({ bundleType: 'standalone', entrypoints: ['src/index.bundle.tracing.logs.metrics.ts'], @@ -126,6 +133,7 @@ builds.push( ...makeBundleConfigVariants(tracingReplayBaseBundleConfig), ...makeBundleConfigVariants(replayFeedbackBaseBundleConfig), ...makeBundleConfigVariants(tracingReplayFeedbackBaseBundleConfig), + ...makeBundleConfigVariants(logsMetricsBaseBundleConfig), ...makeBundleConfigVariants(tracingLogsMetricsBaseBundleConfig), ...makeBundleConfigVariants(tracingReplayFeedbackLogsMetricsBaseBundleConfig), ); diff --git a/packages/browser/src/index.bundle.logs.metrics.ts b/packages/browser/src/index.bundle.logs.metrics.ts new file mode 100644 index 000000000000..461362830e7b --- /dev/null +++ b/packages/browser/src/index.bundle.logs.metrics.ts @@ -0,0 +1,17 @@ +import { + browserTracingIntegrationShim, + feedbackIntegrationShim, + replayIntegrationShim, +} 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 { + browserTracingIntegrationShim as browserTracingIntegration, + feedbackIntegrationShim as feedbackAsyncIntegration, + feedbackIntegrationShim as feedbackIntegration, + replayIntegrationShim as replayIntegration, +}; diff --git a/packages/browser/test/index.bundle.logs.metrics.test.ts b/packages/browser/test/index.bundle.logs.metrics.test.ts new file mode 100644 index 000000000000..98cf359a7266 --- /dev/null +++ b/packages/browser/test/index.bundle.logs.metrics.test.ts @@ -0,0 +1,10 @@ +import { logger as coreLogger, metrics as coreMetrics } from '@sentry/core'; +import { describe, expect, it } from 'vitest'; +import * as LogsMetricsBundle from '../src/index.bundle.logs.metrics'; + +describe('index.bundle.logs.metrics', () => { + it('has correct exports', () => { + expect(LogsMetricsBundle.logger).toBe(coreLogger); + expect(LogsMetricsBundle.metrics).toBe(coreMetrics); + }); +});