diff --git a/package.json b/package.json
index 3fb01dada5ed..cbba41b65df9 100644
--- a/package.json
+++ b/package.json
@@ -61,6 +61,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..efa4c594a069
--- /dev/null
+++ b/packages/tracing-internal/.eslintrc.js
@@ -0,0 +1,11 @@
+module.exports = {
+ extends: ['../../.eslintrc.js'],
+ overrides: [
+ {
+ files: ['src/**'],
+ 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-internal/src/index.ts b/packages/tracing-internal/src/index.ts
new file mode 100644
index 000000000000..cb0ff5c3b541
--- /dev/null
+++ b/packages/tracing-internal/src/index.ts
@@ -0,0 +1 @@
+export {};
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..94190d6f0f73
--- /dev/null
+++ b/packages/tracing-internal/tsconfig.types.json
@@ -0,0 +1,17 @@
+{
+ "extends": "./tsconfig.json",
+ // We don't need types for this because we don't ship it in our npm bundle. Skipping it here also lets us get around
+ // the fact that it introduces a dependency on `@sentry/browser` which doesn't exist anywhere else in the SDK, which
+ // then prevents us from building that and this at the same time when doing a parallellized build from the repo root
+ // level.
+ "exclude": [
+ "src/index.bundle.ts",
+ "src/index.bundle.replay.ts"
+ ],
+ "compilerOptions": {
+ "declaration": true,
+ "declarationMap": true,
+ "emitDeclarationOnly": true,
+ "outDir": "build/types"
+ }
+}