diff --git a/package.json b/package.json
index dda4cf8e57e2..1680cb4cf61b 100644
--- a/package.json
+++ b/package.json
@@ -60,6 +60,7 @@
"packages/svelte",
"packages/sveltekit",
"packages/tracing",
+ "packages/tracing-internal",
"packages/types",
"packages/typescript",
"packages/utils",
diff --git a/packages/tracing-internal/.eslintrc.js b/packages/tracing-internal/.eslintrc.js
new file mode 100644
index 000000000000..7a937173064e
--- /dev/null
+++ b/packages/tracing-internal/.eslintrc.js
@@ -0,0 +1,11 @@
+module.exports = {
+ extends: ['../../.eslintrc.js'],
+ overrides: [
+ {
+ files: ['src/node/**'],
+ rules: {
+ '@sentry-internal/sdk/no-optional-chaining': 'off',
+ },
+ },
+ ],
+};
diff --git a/packages/tracing-internal/LICENSE b/packages/tracing-internal/LICENSE
new file mode 100644
index 000000000000..5113ccb2ac3d
--- /dev/null
+++ b/packages/tracing-internal/LICENSE
@@ -0,0 +1,14 @@
+Copyright (c) 2020 Sentry (https://sentry.io) and individual contributors. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
+persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/packages/tracing-internal/README.md b/packages/tracing-internal/README.md
new file mode 100644
index 000000000000..89fb3d609619
--- /dev/null
+++ b/packages/tracing-internal/README.md
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+## Sentry Internal Tracing Package - Do not use directly, for internal use only
+
+This is an internal package that is being used to migrate @sentry/tracing code to its respective runtime packages.
+
+For v8, @sentry/tracing will be dropped and the code in this package will be split into @sentry/browser and @sentry/node.
diff --git a/packages/tracing-internal/jest.config.js b/packages/tracing-internal/jest.config.js
new file mode 100644
index 000000000000..24f49ab59a4c
--- /dev/null
+++ b/packages/tracing-internal/jest.config.js
@@ -0,0 +1 @@
+module.exports = require('../../jest/jest.config.js');
diff --git a/packages/tracing-internal/package.json b/packages/tracing-internal/package.json
new file mode 100644
index 000000000000..2435a9eb20bf
--- /dev/null
+++ b/packages/tracing-internal/package.json
@@ -0,0 +1,52 @@
+{
+ "name": "@sentry-internal/tracing",
+ "version": "7.43.0",
+ "description": "Sentry Internal Tracing Package",
+ "repository": "git://github.com/getsentry/sentry-javascript.git",
+ "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/tracing-internal",
+ "author": "Sentry",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "main": "build/cjs/index.js",
+ "module": "build/esm/index.js",
+ "types": "build/types/index.d.ts",
+ "publishConfig": {
+ "access": "public"
+ },
+ "dependencies": {
+ "@sentry/core": "7.43.0",
+ "@sentry/types": "7.43.0",
+ "@sentry/utils": "7.43.0",
+ "tslib": "^1.9.3"
+ },
+ "devDependencies": {
+ "@sentry/browser": "7.43.0",
+ "@types/express": "^4.17.14"
+ },
+ "scripts": {
+ "build": "run-p build:transpile build:types",
+ "build:dev": "yarn build",
+ "build:transpile": "rollup -c rollup.npm.config.js",
+ "build:types": "tsc -p tsconfig.types.json",
+ "build:watch": "run-p build:transpile:watch build:types:watch",
+ "build:dev:watch": "run-p build:transpile:watch build:types:watch",
+ "build:transpile:watch": "rollup -c rollup.npm.config.js --watch",
+ "build:types:watch": "tsc -p tsconfig.types.json --watch",
+ "build:tarball": "ts-node ../../scripts/prepack.ts --bundles && npm pack ./build/npm",
+ "clean": "rimraf build coverage sentry-tracing-*.tgz",
+ "fix": "run-s fix:eslint fix:prettier",
+ "fix:eslint": "eslint . --format stylish --fix",
+ "fix:prettier": "prettier --write \"{src,test,scripts}/**/**.ts\"",
+ "lint": "run-s lint:prettier lint:eslint",
+ "lint:eslint": "eslint . --format stylish",
+ "lint:prettier": "prettier --check \"{src,test,scripts}/**/**.ts\"",
+ "test:unit": "jest",
+ "test": "jest",
+ "test:watch": "jest --watch"
+ },
+ "volta": {
+ "extends": "../../package.json"
+ }
+}
diff --git a/packages/tracing-internal/rollup.npm.config.js b/packages/tracing-internal/rollup.npm.config.js
new file mode 100644
index 000000000000..5a62b528ef44
--- /dev/null
+++ b/packages/tracing-internal/rollup.npm.config.js
@@ -0,0 +1,3 @@
+import { makeBaseNPMConfig, makeNPMConfigVariants } from '../../rollup/index.js';
+
+export default makeNPMConfigVariants(makeBaseNPMConfig());
diff --git a/packages/tracing/src/browser/backgroundtab.ts b/packages/tracing-internal/src/browser/backgroundtab.ts
similarity index 100%
rename from packages/tracing/src/browser/backgroundtab.ts
rename to packages/tracing-internal/src/browser/backgroundtab.ts
diff --git a/packages/tracing/src/browser/browsertracing.ts b/packages/tracing-internal/src/browser/browsertracing.ts
similarity index 100%
rename from packages/tracing/src/browser/browsertracing.ts
rename to packages/tracing-internal/src/browser/browsertracing.ts
diff --git a/packages/tracing/src/browser/index.ts b/packages/tracing-internal/src/browser/index.ts
similarity index 100%
rename from packages/tracing/src/browser/index.ts
rename to packages/tracing-internal/src/browser/index.ts
diff --git a/packages/tracing/src/browser/metrics/index.ts b/packages/tracing-internal/src/browser/metrics/index.ts
similarity index 100%
rename from packages/tracing/src/browser/metrics/index.ts
rename to packages/tracing-internal/src/browser/metrics/index.ts
diff --git a/packages/tracing/src/browser/metrics/utils.ts b/packages/tracing-internal/src/browser/metrics/utils.ts
similarity index 100%
rename from packages/tracing/src/browser/metrics/utils.ts
rename to packages/tracing-internal/src/browser/metrics/utils.ts
diff --git a/packages/tracing/src/browser/request.ts b/packages/tracing-internal/src/browser/request.ts
similarity index 100%
rename from packages/tracing/src/browser/request.ts
rename to packages/tracing-internal/src/browser/request.ts
diff --git a/packages/tracing/src/browser/router.ts b/packages/tracing-internal/src/browser/router.ts
similarity index 100%
rename from packages/tracing/src/browser/router.ts
rename to packages/tracing-internal/src/browser/router.ts
diff --git a/packages/tracing/src/browser/types.ts b/packages/tracing-internal/src/browser/types.ts
similarity index 100%
rename from packages/tracing/src/browser/types.ts
rename to packages/tracing-internal/src/browser/types.ts
diff --git a/packages/tracing/src/browser/web-vitals/README.md b/packages/tracing-internal/src/browser/web-vitals/README.md
similarity index 100%
rename from packages/tracing/src/browser/web-vitals/README.md
rename to packages/tracing-internal/src/browser/web-vitals/README.md
diff --git a/packages/tracing/src/browser/web-vitals/getCLS.ts b/packages/tracing-internal/src/browser/web-vitals/getCLS.ts
similarity index 100%
rename from packages/tracing/src/browser/web-vitals/getCLS.ts
rename to packages/tracing-internal/src/browser/web-vitals/getCLS.ts
diff --git a/packages/tracing/src/browser/web-vitals/getFID.ts b/packages/tracing-internal/src/browser/web-vitals/getFID.ts
similarity index 100%
rename from packages/tracing/src/browser/web-vitals/getFID.ts
rename to packages/tracing-internal/src/browser/web-vitals/getFID.ts
diff --git a/packages/tracing/src/browser/web-vitals/getLCP.ts b/packages/tracing-internal/src/browser/web-vitals/getLCP.ts
similarity index 100%
rename from packages/tracing/src/browser/web-vitals/getLCP.ts
rename to packages/tracing-internal/src/browser/web-vitals/getLCP.ts
diff --git a/packages/tracing/src/browser/web-vitals/lib/bindReporter.ts b/packages/tracing-internal/src/browser/web-vitals/lib/bindReporter.ts
similarity index 100%
rename from packages/tracing/src/browser/web-vitals/lib/bindReporter.ts
rename to packages/tracing-internal/src/browser/web-vitals/lib/bindReporter.ts
diff --git a/packages/tracing/src/browser/web-vitals/lib/generateUniqueID.ts b/packages/tracing-internal/src/browser/web-vitals/lib/generateUniqueID.ts
similarity index 100%
rename from packages/tracing/src/browser/web-vitals/lib/generateUniqueID.ts
rename to packages/tracing-internal/src/browser/web-vitals/lib/generateUniqueID.ts
diff --git a/packages/tracing/src/browser/web-vitals/lib/getActivationStart.ts b/packages/tracing-internal/src/browser/web-vitals/lib/getActivationStart.ts
similarity index 100%
rename from packages/tracing/src/browser/web-vitals/lib/getActivationStart.ts
rename to packages/tracing-internal/src/browser/web-vitals/lib/getActivationStart.ts
diff --git a/packages/tracing/src/browser/web-vitals/lib/getNavigationEntry.ts b/packages/tracing-internal/src/browser/web-vitals/lib/getNavigationEntry.ts
similarity index 100%
rename from packages/tracing/src/browser/web-vitals/lib/getNavigationEntry.ts
rename to packages/tracing-internal/src/browser/web-vitals/lib/getNavigationEntry.ts
diff --git a/packages/tracing/src/browser/web-vitals/lib/getVisibilityWatcher.ts b/packages/tracing-internal/src/browser/web-vitals/lib/getVisibilityWatcher.ts
similarity index 100%
rename from packages/tracing/src/browser/web-vitals/lib/getVisibilityWatcher.ts
rename to packages/tracing-internal/src/browser/web-vitals/lib/getVisibilityWatcher.ts
diff --git a/packages/tracing/src/browser/web-vitals/lib/initMetric.ts b/packages/tracing-internal/src/browser/web-vitals/lib/initMetric.ts
similarity index 100%
rename from packages/tracing/src/browser/web-vitals/lib/initMetric.ts
rename to packages/tracing-internal/src/browser/web-vitals/lib/initMetric.ts
diff --git a/packages/tracing/src/browser/web-vitals/lib/observe.ts b/packages/tracing-internal/src/browser/web-vitals/lib/observe.ts
similarity index 100%
rename from packages/tracing/src/browser/web-vitals/lib/observe.ts
rename to packages/tracing-internal/src/browser/web-vitals/lib/observe.ts
diff --git a/packages/tracing/src/browser/web-vitals/lib/onHidden.ts b/packages/tracing-internal/src/browser/web-vitals/lib/onHidden.ts
similarity index 100%
rename from packages/tracing/src/browser/web-vitals/lib/onHidden.ts
rename to packages/tracing-internal/src/browser/web-vitals/lib/onHidden.ts
diff --git a/packages/tracing/src/browser/web-vitals/types.ts b/packages/tracing-internal/src/browser/web-vitals/types.ts
similarity index 100%
rename from packages/tracing/src/browser/web-vitals/types.ts
rename to packages/tracing-internal/src/browser/web-vitals/types.ts
diff --git a/packages/tracing/src/browser/web-vitals/types/base.ts b/packages/tracing-internal/src/browser/web-vitals/types/base.ts
similarity index 100%
rename from packages/tracing/src/browser/web-vitals/types/base.ts
rename to packages/tracing-internal/src/browser/web-vitals/types/base.ts
diff --git a/packages/tracing/src/browser/web-vitals/types/cls.ts b/packages/tracing-internal/src/browser/web-vitals/types/cls.ts
similarity index 100%
rename from packages/tracing/src/browser/web-vitals/types/cls.ts
rename to packages/tracing-internal/src/browser/web-vitals/types/cls.ts
diff --git a/packages/tracing/src/browser/web-vitals/types/fid.ts b/packages/tracing-internal/src/browser/web-vitals/types/fid.ts
similarity index 100%
rename from packages/tracing/src/browser/web-vitals/types/fid.ts
rename to packages/tracing-internal/src/browser/web-vitals/types/fid.ts
diff --git a/packages/tracing/src/browser/web-vitals/types/lcp.ts b/packages/tracing-internal/src/browser/web-vitals/types/lcp.ts
similarity index 100%
rename from packages/tracing/src/browser/web-vitals/types/lcp.ts
rename to packages/tracing-internal/src/browser/web-vitals/types/lcp.ts
diff --git a/packages/tracing/src/browser/web-vitals/types/polyfills.ts b/packages/tracing-internal/src/browser/web-vitals/types/polyfills.ts
similarity index 100%
rename from packages/tracing/src/browser/web-vitals/types/polyfills.ts
rename to packages/tracing-internal/src/browser/web-vitals/types/polyfills.ts
diff --git a/packages/tracing/src/errors.ts b/packages/tracing-internal/src/errors.ts
similarity index 100%
rename from packages/tracing/src/errors.ts
rename to packages/tracing-internal/src/errors.ts
diff --git a/packages/tracing/src/exports/index.ts b/packages/tracing-internal/src/exports/index.ts
similarity index 100%
rename from packages/tracing/src/exports/index.ts
rename to packages/tracing-internal/src/exports/index.ts
diff --git a/packages/tracing/src/extensions.ts b/packages/tracing-internal/src/extensions.ts
similarity index 100%
rename from packages/tracing/src/extensions.ts
rename to packages/tracing-internal/src/extensions.ts
diff --git a/packages/tracing-internal/src/index.ts b/packages/tracing-internal/src/index.ts
new file mode 100644
index 000000000000..590d0244a740
--- /dev/null
+++ b/packages/tracing-internal/src/index.ts
@@ -0,0 +1,34 @@
+export * from './exports';
+
+import { addExtensionMethods } from './extensions';
+import * as Integrations from './node/integrations';
+
+export { Integrations };
+
+// BrowserTracing is already exported as part of `Integrations` above (and for the moment will remain so for
+// backwards compatibility), but that interferes with treeshaking, so we also export it separately
+// here.
+//
+// Previously we expected users to import tracing integrations like
+//
+// import { Integrations } from '@sentry/tracing';
+// const instance = new Integrations.BrowserTracing();
+//
+// This makes the integrations unable to be treeshaken though. To address this, we now have
+// this individual export. We now expect users to consume BrowserTracing like so:
+//
+// import { BrowserTracing } from '@sentry/tracing';
+// const instance = new BrowserTracing();
+//
+// For an example of of the new usage of BrowserTracing, see @sentry/nextjs index.client.ts
+export const BrowserTracing = Integrations.BrowserTracing;
+
+export {
+ BROWSER_TRACING_INTEGRATION_ID,
+ instrumentOutgoingRequests,
+ defaultRequestInstrumentationOptions,
+} from './browser';
+
+export type { RequestInstrumentationOptions } from './browser';
+
+export { addExtensionMethods };
diff --git a/packages/tracing/src/node/index.ts b/packages/tracing-internal/src/node/index.ts
similarity index 100%
rename from packages/tracing/src/node/index.ts
rename to packages/tracing-internal/src/node/index.ts
diff --git a/packages/tracing/src/node/integrations/apollo.ts b/packages/tracing-internal/src/node/integrations/apollo.ts
similarity index 100%
rename from packages/tracing/src/node/integrations/apollo.ts
rename to packages/tracing-internal/src/node/integrations/apollo.ts
diff --git a/packages/tracing/src/node/integrations/express.ts b/packages/tracing-internal/src/node/integrations/express.ts
similarity index 100%
rename from packages/tracing/src/node/integrations/express.ts
rename to packages/tracing-internal/src/node/integrations/express.ts
diff --git a/packages/tracing/src/node/integrations/graphql.ts b/packages/tracing-internal/src/node/integrations/graphql.ts
similarity index 100%
rename from packages/tracing/src/node/integrations/graphql.ts
rename to packages/tracing-internal/src/node/integrations/graphql.ts
diff --git a/packages/tracing/src/node/integrations/index.ts b/packages/tracing-internal/src/node/integrations/index.ts
similarity index 100%
rename from packages/tracing/src/node/integrations/index.ts
rename to packages/tracing-internal/src/node/integrations/index.ts
diff --git a/packages/tracing/src/node/integrations/mongo.ts b/packages/tracing-internal/src/node/integrations/mongo.ts
similarity index 100%
rename from packages/tracing/src/node/integrations/mongo.ts
rename to packages/tracing-internal/src/node/integrations/mongo.ts
diff --git a/packages/tracing/src/node/integrations/mysql.ts b/packages/tracing-internal/src/node/integrations/mysql.ts
similarity index 100%
rename from packages/tracing/src/node/integrations/mysql.ts
rename to packages/tracing-internal/src/node/integrations/mysql.ts
diff --git a/packages/tracing/src/node/integrations/postgres.ts b/packages/tracing-internal/src/node/integrations/postgres.ts
similarity index 100%
rename from packages/tracing/src/node/integrations/postgres.ts
rename to packages/tracing-internal/src/node/integrations/postgres.ts
diff --git a/packages/tracing/src/node/integrations/prisma.ts b/packages/tracing-internal/src/node/integrations/prisma.ts
similarity index 100%
rename from packages/tracing/src/node/integrations/prisma.ts
rename to packages/tracing-internal/src/node/integrations/prisma.ts
diff --git a/packages/tracing/src/node/integrations/utils/node-utils.ts b/packages/tracing-internal/src/node/integrations/utils/node-utils.ts
similarity index 100%
rename from packages/tracing/src/node/integrations/utils/node-utils.ts
rename to packages/tracing-internal/src/node/integrations/utils/node-utils.ts
diff --git a/packages/tracing/test/browser/backgroundtab.test.ts b/packages/tracing-internal/test/browser/backgroundtab.test.ts
similarity index 93%
rename from packages/tracing/test/browser/backgroundtab.test.ts
rename to packages/tracing-internal/test/browser/backgroundtab.test.ts
index ddbf76baa6c6..2c4ca381df3b 100644
--- a/packages/tracing/test/browser/backgroundtab.test.ts
+++ b/packages/tracing-internal/test/browser/backgroundtab.test.ts
@@ -2,9 +2,9 @@ import { BrowserClient } from '@sentry/browser';
import { Hub, makeMain } from '@sentry/core';
import { JSDOM } from 'jsdom';
-import { addExtensionMethods } from '../../src';
+import { addExtensionMethods } from '../../../tracing/src';
+import { getDefaultBrowserClientOptions } from '../../../tracing/test/testutils';
import { registerBackgroundTabDetection } from '../../src/browser/backgroundtab';
-import { getDefaultBrowserClientOptions } from '../testutils';
describe('registerBackgroundTabDetection', () => {
let events: Record = {};
diff --git a/packages/tracing/test/browser/browsertracing.test.ts b/packages/tracing-internal/test/browser/browsertracing.test.ts
similarity index 99%
rename from packages/tracing/test/browser/browsertracing.test.ts
rename to packages/tracing-internal/test/browser/browsertracing.test.ts
index e2bee71db0a8..94abe88e6cbb 100644
--- a/packages/tracing/test/browser/browsertracing.test.ts
+++ b/packages/tracing-internal/test/browser/browsertracing.test.ts
@@ -5,13 +5,13 @@ import type { BaseTransportOptions, ClientOptions, DsnComponents } from '@sentry
import type { InstrumentHandlerCallback, InstrumentHandlerType } from '@sentry/utils';
import { JSDOM } from 'jsdom';
-import type { IdleTransaction } from '../../src';
-import { getActiveTransaction } from '../../src';
+import type { IdleTransaction } from '../../../tracing/src';
+import { getActiveTransaction } from '../../../tracing/src';
+import { getDefaultBrowserClientOptions } from '../../../tracing/test/testutils';
import type { BrowserTracingOptions } from '../../src/browser/browsertracing';
import { BrowserTracing, getMetaContent } from '../../src/browser/browsertracing';
import { defaultRequestInstrumentationOptions } from '../../src/browser/request';
import { instrumentRoutingWithDefaults } from '../../src/browser/router';
-import { getDefaultBrowserClientOptions } from '../testutils';
let mockChangeHistory: ({ to, from }: { to: string; from?: string }) => void = () => undefined;
diff --git a/packages/tracing/test/browser/metrics/index.test.ts b/packages/tracing-internal/test/browser/metrics/index.test.ts
similarity index 100%
rename from packages/tracing/test/browser/metrics/index.test.ts
rename to packages/tracing-internal/test/browser/metrics/index.test.ts
diff --git a/packages/tracing/test/browser/metrics/utils.test.ts b/packages/tracing-internal/test/browser/metrics/utils.test.ts
similarity index 100%
rename from packages/tracing/test/browser/metrics/utils.test.ts
rename to packages/tracing-internal/test/browser/metrics/utils.test.ts
diff --git a/packages/tracing/test/browser/request.test.ts b/packages/tracing-internal/test/browser/request.test.ts
similarity index 98%
rename from packages/tracing/test/browser/request.test.ts
rename to packages/tracing-internal/test/browser/request.test.ts
index 952362107878..4ca971a4947c 100644
--- a/packages/tracing/test/browser/request.test.ts
+++ b/packages/tracing-internal/test/browser/request.test.ts
@@ -2,11 +2,11 @@ import { BrowserClient } from '@sentry/browser';
import * as sentryCore from '@sentry/core';
import * as utils from '@sentry/utils';
-import type { Transaction } from '../../src';
-import { addExtensionMethods, Span, spanStatusfromHttpCode } from '../../src';
+import type { Transaction } from '../../../tracing/src';
+import { addExtensionMethods, Span, spanStatusfromHttpCode } from '../../../tracing/src';
+import { getDefaultBrowserClientOptions } from '../../../tracing/test/testutils';
import type { FetchData, XHRData } from '../../src/browser/request';
import { fetchCallback, instrumentOutgoingRequests, shouldAttachHeaders, xhrCallback } from '../../src/browser/request';
-import { getDefaultBrowserClientOptions } from '../testutils';
beforeAll(() => {
addExtensionMethods();
diff --git a/packages/tracing/test/browser/router.test.ts b/packages/tracing-internal/test/browser/router.test.ts
similarity index 100%
rename from packages/tracing/test/browser/router.test.ts
rename to packages/tracing-internal/test/browser/router.test.ts
diff --git a/packages/tracing/test/errors.test.ts b/packages/tracing-internal/test/errors.test.ts
similarity index 97%
rename from packages/tracing/test/errors.test.ts
rename to packages/tracing-internal/test/errors.test.ts
index 70a2e4561671..1dba00b825b1 100644
--- a/packages/tracing/test/errors.test.ts
+++ b/packages/tracing-internal/test/errors.test.ts
@@ -2,8 +2,8 @@ import { BrowserClient } from '@sentry/browser';
import { addTracingExtensions, Hub, makeMain } from '@sentry/core';
import type { InstrumentHandlerCallback, InstrumentHandlerType } from '@sentry/utils';
+import { getDefaultBrowserClientOptions } from '../../tracing/test/testutils';
import { registerErrorInstrumentation } from '../src/errors';
-import { getDefaultBrowserClientOptions } from './testutils';
const mockAddInstrumentationHandler = jest.fn();
let mockErrorCallback: InstrumentHandlerCallback = () => undefined;
diff --git a/packages/tracing-internal/tsconfig.json b/packages/tracing-internal/tsconfig.json
new file mode 100644
index 000000000000..bf45a09f2d71
--- /dev/null
+++ b/packages/tracing-internal/tsconfig.json
@@ -0,0 +1,9 @@
+{
+ "extends": "../../tsconfig.json",
+
+ "include": ["src/**/*"],
+
+ "compilerOptions": {
+ // package-specific options
+ }
+}
diff --git a/packages/tracing-internal/tsconfig.test.json b/packages/tracing-internal/tsconfig.test.json
new file mode 100644
index 000000000000..87f6afa06b86
--- /dev/null
+++ b/packages/tracing-internal/tsconfig.test.json
@@ -0,0 +1,12 @@
+{
+ "extends": "./tsconfig.json",
+
+ "include": ["test/**/*"],
+
+ "compilerOptions": {
+ // should include all types from `./tsconfig.json` plus types for all test frameworks used
+ "types": ["node", "jest"]
+
+ // other package-specific, test-specific options
+ }
+}
diff --git a/packages/tracing-internal/tsconfig.types.json b/packages/tracing-internal/tsconfig.types.json
new file mode 100644
index 000000000000..b1a51db073c2
--- /dev/null
+++ b/packages/tracing-internal/tsconfig.types.json
@@ -0,0 +1,9 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "declaration": true,
+ "declarationMap": true,
+ "emitDeclarationOnly": true,
+ "outDir": "build/types"
+ }
+}
diff --git a/packages/tracing/package.json b/packages/tracing/package.json
index 8ecb03f572e8..15b13e8900a1 100644
--- a/packages/tracing/package.json
+++ b/packages/tracing/package.json
@@ -16,14 +16,14 @@
"access": "public"
},
"dependencies": {
- "@sentry/core": "7.43.0",
- "@sentry/types": "7.43.0",
- "@sentry/utils": "7.43.0",
- "tslib": "^1.9.3"
+ "@sentry-internal/tracing": "7.43.0"
},
"devDependencies": {
"@sentry/browser": "7.43.0",
- "@types/express": "^4.17.14"
+ "@types/express": "^4.17.14",
+ "@sentry/core": "7.43.0",
+ "@sentry/types": "7.43.0",
+ "@sentry/utils": "7.43.0"
},
"scripts": {
"build": "run-p build:transpile build:types build:bundle",
diff --git a/packages/tracing/src/index.bundle.ts b/packages/tracing/src/index.bundle.ts
index a753bab932d4..36b3ed946de0 100644
--- a/packages/tracing/src/index.bundle.ts
+++ b/packages/tracing/src/index.bundle.ts
@@ -53,13 +53,11 @@ export {
} from '@sentry/browser';
export { SDK_VERSION } from '@sentry/browser';
+import { addExtensionMethods, BrowserTracing } from '@sentry-internal/tracing';
import { Integrations as BrowserIntegrations } from '@sentry/browser';
import type { Integration } from '@sentry/types';
import { GLOBAL_OBJ } from '@sentry/utils';
-import { BrowserTracing } from './browser';
-import { addExtensionMethods } from './extensions';
-
export { Span } from '@sentry/core';
let windowIntegrations = {};
@@ -79,12 +77,7 @@ const INTEGRATIONS: Record<
BrowserTracing,
};
-export { INTEGRATIONS as Integrations };
-// Though in this case exporting `BrowserTracing` separately (in addition to exporting it as part of
-// `Sentry.Integrations`) doesn't gain us any bundle size advantage (we're making the bundle here, not the user, and we
-// can't leave anything out of ours), it does bring the API for using the integration in line with that recommended for
-// users bundling Sentry themselves.
-export { BrowserTracing };
+export { INTEGRATIONS as Integrations, BrowserTracing };
// We are patching the global object with our hub extension methods
addExtensionMethods();
diff --git a/packages/tracing/src/index.ts b/packages/tracing/src/index.ts
index b8456bc6b017..9237f3302cb9 100644
--- a/packages/tracing/src/index.ts
+++ b/packages/tracing/src/index.ts
@@ -1,34 +1,6 @@
-export * from './exports';
+export * from '@sentry-internal/tracing';
-import { addExtensionMethods } from './extensions';
-import * as Integrations from './node/integrations';
-
-export { Integrations };
-
-// This is already exported as part of `Integrations` above (and for the moment will remain so for
-// backwards compatibility), but that interferes with treeshaking, so we also export it separately
-// here.
-//
-// Previously we expected users to import tracing integrations like
-//
-// import { Integrations } from '@sentry/tracing';
-// const instance = new Integrations.BrowserTracing();
-//
-// This makes the integrations unable to be treeshaken though. To address this, we now have
-// this individual export. We now expect users to consume BrowserTracing like so:
-//
-// import { BrowserTracing } from '@sentry/tracing';
-// const instance = new BrowserTracing();
-//
-// For an example of of the new usage of BrowserTracing, see @sentry/nextjs index.client.ts
-export {
- BrowserTracing,
- BROWSER_TRACING_INTEGRATION_ID,
- instrumentOutgoingRequests,
- defaultRequestInstrumentationOptions,
-} from './browser';
-
-export type { RequestInstrumentationOptions } from './browser';
+import { addExtensionMethods } from '@sentry-internal/tracing';
// Treeshakable guard to remove all code related to tracing
declare const __SENTRY_TRACING__: boolean;
@@ -38,5 +10,3 @@ if (typeof __SENTRY_TRACING__ === 'undefined' || __SENTRY_TRACING__) {
// We are patching the global object with our hub extension methods
addExtensionMethods();
}
-
-export { addExtensionMethods };
diff --git a/packages/tracing/test/hub.test.ts b/packages/tracing/test/hub.test.ts
index 85c0b7791374..789ffc8e939f 100644
--- a/packages/tracing/test/hub.test.ts
+++ b/packages/tracing/test/hub.test.ts
@@ -4,8 +4,7 @@ import { Hub, makeMain } from '@sentry/core';
import * as utilsModule from '@sentry/utils'; // for mocking
import { logger } from '@sentry/utils';
-import { addExtensionMethods, extractTraceparentData, TRACEPARENT_REGEXP, Transaction } from '../src';
-import { BrowserTracing } from '../src/browser/browsertracing';
+import { addExtensionMethods, BrowserTracing, extractTraceparentData, TRACEPARENT_REGEXP, Transaction } from '../src';
import {
addDOMPropertiesToGlobal,
getDefaultBrowserClientOptions,
diff --git a/packages/tracing/test/integrations/apollo-nestjs.test.ts b/packages/tracing/test/integrations/apollo-nestjs.test.ts
index 981693875d7a..0a5116277cb1 100644
--- a/packages/tracing/test/integrations/apollo-nestjs.test.ts
+++ b/packages/tracing/test/integrations/apollo-nestjs.test.ts
@@ -2,8 +2,7 @@
import { Hub, Scope } from '@sentry/core';
import { logger } from '@sentry/utils';
-import { Span } from '../../src';
-import { Apollo } from '../../src/node/integrations/apollo';
+import { Integrations, Span } from '../../src';
import { getTestClient } from '../testutils';
type ApolloResolverGroup = {
@@ -67,7 +66,7 @@ describe('setupOnce', () => {
let GraphQLFactoryInstance: GraphQLFactory;
beforeAll(() => {
- new Apollo({
+ new Integrations.Apollo({
useNestjs: true,
}).setupOnce(
() => undefined,
@@ -113,7 +112,7 @@ describe('setupOnce', () => {
const client = getTestClient({ instrumenter: 'otel' });
const hub = new Hub(client);
- const integration = new Apollo({ useNestjs: true });
+ const integration = new Integrations.Apollo({ useNestjs: true });
integration.setupOnce(
() => {},
() => hub,
diff --git a/packages/tracing/test/integrations/apollo.test.ts b/packages/tracing/test/integrations/apollo.test.ts
index 910c866505e8..456c824f23ce 100644
--- a/packages/tracing/test/integrations/apollo.test.ts
+++ b/packages/tracing/test/integrations/apollo.test.ts
@@ -2,8 +2,7 @@
import { Hub, Scope } from '@sentry/core';
import { logger } from '@sentry/utils';
-import { Span } from '../../src';
-import { Apollo } from '../../src/node/integrations/apollo';
+import { Integrations, Span } from '../../src';
import { getTestClient } from '../testutils';
type ApolloResolverGroup = {
@@ -69,7 +68,7 @@ describe('setupOnce', () => {
let ApolloServer: ApolloServerBase;
beforeAll(() => {
- new Apollo().setupOnce(
+ new Integrations.Apollo().setupOnce(
() => undefined,
() => new Hub(undefined, scope),
);
@@ -113,7 +112,7 @@ describe('setupOnce', () => {
const client = getTestClient({ instrumenter: 'otel' });
const hub = new Hub(client);
- const integration = new Apollo();
+ const integration = new Integrations.Apollo();
integration.setupOnce(
() => {},
() => hub,
diff --git a/packages/tracing/test/integrations/graphql.test.ts b/packages/tracing/test/integrations/graphql.test.ts
index 5d61a4acd5cb..ccd4348784bd 100644
--- a/packages/tracing/test/integrations/graphql.test.ts
+++ b/packages/tracing/test/integrations/graphql.test.ts
@@ -2,8 +2,7 @@
import { Hub, Scope } from '@sentry/core';
import { logger } from '@sentry/utils';
-import { Span } from '../../src';
-import { GraphQL } from '../../src/node/integrations/graphql';
+import { Integrations, Span } from '../../src';
import { getTestClient } from '../testutils';
const GQLExecute = {
@@ -33,7 +32,7 @@ describe('setupOnce', () => {
let childSpan: Span;
beforeAll(() => {
- new GraphQL().setupOnce(
+ new Integrations.GraphQL().setupOnce(
() => undefined,
() => new Hub(undefined, scope),
);
@@ -66,7 +65,7 @@ describe('setupOnce', () => {
const client = getTestClient({ instrumenter: 'otel' });
const hub = new Hub(client);
- const integration = new GraphQL();
+ const integration = new Integrations.GraphQL();
integration.setupOnce(
() => {},
() => hub,
diff --git a/packages/tracing/test/integrations/node/mongo.test.ts b/packages/tracing/test/integrations/node/mongo.test.ts
index 5c3dd11255c4..70ac88e13109 100644
--- a/packages/tracing/test/integrations/node/mongo.test.ts
+++ b/packages/tracing/test/integrations/node/mongo.test.ts
@@ -2,8 +2,7 @@
import { Hub, Scope } from '@sentry/core';
import { logger } from '@sentry/utils';
-import { Span } from '../../../src';
-import { Mongo } from '../../../src/node/integrations/mongo';
+import { Integrations, Span } from '../../../src';
import { getTestClient } from '../../testutils';
class Collection {
@@ -52,7 +51,7 @@ describe('patchOperation()', () => {
let childSpan: Span;
beforeAll(() => {
- new Mongo({
+ new Integrations.Mongo({
operations: ['insertOne', 'initializeOrderedBulkOp'],
}).setupOnce(
() => undefined,
@@ -124,7 +123,7 @@ describe('patchOperation()', () => {
const client = getTestClient({ instrumenter: 'otel' });
const hub = new Hub(client);
- const integration = new Mongo();
+ const integration = new Integrations.Mongo();
integration.setupOnce(
() => {},
() => hub,
diff --git a/packages/tracing/test/integrations/node/postgres.test.ts b/packages/tracing/test/integrations/node/postgres.test.ts
index 08aa64cf368d..c2d5868596a1 100644
--- a/packages/tracing/test/integrations/node/postgres.test.ts
+++ b/packages/tracing/test/integrations/node/postgres.test.ts
@@ -2,8 +2,7 @@
import { Hub, Scope } from '@sentry/core';
import { logger } from '@sentry/utils';
-import { Span } from '../../../src';
-import { Postgres } from '../../../src/node/integrations/postgres';
+import { Integrations, Span } from '../../../src';
import { getTestClient } from '../../testutils';
class PgClient {
@@ -51,7 +50,7 @@ describe('setupOnce', () => {
let childSpan: Span;
beforeAll(() => {
- (pgApi === 'pg' ? new Postgres() : new Postgres({ usePgNative: true })).setupOnce(
+ (pgApi === 'pg' ? new Integrations.Postgres() : new Integrations.Postgres({ usePgNative: true })).setupOnce(
() => undefined,
() => new Hub(undefined, scope),
);
@@ -107,7 +106,7 @@ describe('setupOnce', () => {
const client = getTestClient({ instrumenter: 'otel' });
const hub = new Hub(client);
- const integration = new Postgres();
+ const integration = new Integrations.Postgres();
integration.setupOnce(
() => {},
() => hub,
diff --git a/packages/tracing/test/integrations/node/prisma.test.ts b/packages/tracing/test/integrations/node/prisma.test.ts
index 95892f9c1686..735167161402 100644
--- a/packages/tracing/test/integrations/node/prisma.test.ts
+++ b/packages/tracing/test/integrations/node/prisma.test.ts
@@ -2,8 +2,7 @@
import { Hub, Scope } from '@sentry/core';
import { logger } from '@sentry/utils';
-import { Span } from '../../../src';
-import { Prisma } from '../../../src/node/integrations/prisma';
+import { Integrations, Span } from '../../../src';
import { getTestClient } from '../../testutils';
type PrismaMiddleware = (params: unknown, next: (params?: unknown) => Promise) => Promise;
@@ -32,7 +31,7 @@ describe('setupOnce', function () {
let childSpan: Span;
beforeAll(() => {
- new Prisma({ client: Client }).setupOnce(
+ new Integrations.Prisma({ client: Client }).setupOnce(
() => undefined,
() => new Hub(undefined, scope),
);
@@ -66,7 +65,7 @@ describe('setupOnce', function () {
const client = getTestClient({ instrumenter: 'otel' });
const hub = new Hub(client);
- const integration = new Prisma({ client: Client });
+ const integration = new Integrations.Prisma({ client: Client });
integration.setupOnce(
() => {},
() => hub,