diff --git a/examples/all-instrumentations/package.json b/examples/all-instrumentations/package.json
index c38864a..02b5c0f 100644
--- a/examples/all-instrumentations/package.json
+++ b/examples/all-instrumentations/package.json
@@ -13,8 +13,6 @@
"@opentelemetry/api-logs": "^0.212.0",
"@opentelemetry/sdk-logs": "^0.212.0",
"@opentelemetry/instrumentation": "^0.212.0",
- "@opentelemetry/instrumentation-navigation-timing": "*",
- "@opentelemetry/instrumentation-user-action": "*",
- "@opentelemetry/instrumentation-web-vitals": "*"
+ "@opentelemetry/browser-instrumentation": "*"
}
}
diff --git a/examples/all-instrumentations/src/main.ts b/examples/all-instrumentations/src/main.ts
index d5e3189..999e307 100644
--- a/examples/all-instrumentations/src/main.ts
+++ b/examples/all-instrumentations/src/main.ts
@@ -1,10 +1,10 @@
import './style.css';
import { DiagConsoleLogger, DiagLogLevel, diag } from '@opentelemetry/api';
import { logs } from '@opentelemetry/api-logs';
+import { NavigationTimingInstrumentation } from '@opentelemetry/browser-instrumentation/experimental/navigation-timing';
+import { UserActionInstrumentation } from '@opentelemetry/browser-instrumentation/experimental/user-action';
+import { WebVitalsInstrumentation } from '@opentelemetry/browser-instrumentation/experimental/web-vitals';
import { registerInstrumentations } from '@opentelemetry/instrumentation';
-import { NavigationTimingInstrumentation } from '@opentelemetry/instrumentation-navigation-timing';
-import { UserActionInstrumentation } from '@opentelemetry/instrumentation-user-action';
-import { WebVitalsInstrumentation } from '@opentelemetry/instrumentation-web-vitals';
import {
ConsoleLogRecordExporter,
LoggerProvider,
diff --git a/package-lock.json b/package-lock.json
index b5de892..986acfa 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -48,10 +48,8 @@
"dependencies": {
"@opentelemetry/api": "^1.9.0",
"@opentelemetry/api-logs": "^0.212.0",
+ "@opentelemetry/browser-instrumentation": "*",
"@opentelemetry/instrumentation": "^0.212.0",
- "@opentelemetry/instrumentation-navigation-timing": "*",
- "@opentelemetry/instrumentation-user-action": "*",
- "@opentelemetry/instrumentation-web-vitals": "*",
"@opentelemetry/sdk-logs": "^0.212.0"
}
},
@@ -1940,6 +1938,10 @@
"node": ">=8.0.0"
}
},
+ "node_modules/@opentelemetry/browser-instrumentation": {
+ "resolved": "packages/instrumentation",
+ "link": true
+ },
"node_modules/@opentelemetry/core": {
"version": "2.5.1",
"license": "Apache-2.0",
@@ -1970,18 +1972,6 @@
"@opentelemetry/api": "^1.3.0"
}
},
- "node_modules/@opentelemetry/instrumentation-navigation-timing": {
- "resolved": "packages/instrumentation-navigation-timing",
- "link": true
- },
- "node_modules/@opentelemetry/instrumentation-user-action": {
- "resolved": "packages/instrumentation-user-action",
- "link": true
- },
- "node_modules/@opentelemetry/instrumentation-web-vitals": {
- "resolved": "packages/instrumentation-web-vitals",
- "link": true
- },
"node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs": {
"version": "0.213.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.213.0.tgz",
@@ -8195,30 +8185,55 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "packages/instrumentation-navigation-timing": {
- "name": "@opentelemetry/instrumentation-navigation-timing",
+ "packages/browser-instrumentation": {
+ "name": "@opentelemetry/browser-instrumentation",
"version": "0.1.0",
+ "extraneous": true,
"license": "Apache-2.0",
"dependencies": {
- "@opentelemetry/api-logs": "^0.213.0",
- "@opentelemetry/instrumentation": "^0.213.0"
+ "@opentelemetry/api-logs": "^0.212.0",
+ "@opentelemetry/instrumentation": "^0.212.0",
+ "@opentelemetry/web-utils": "*",
+ "web-vitals": "^5.1.0"
+ },
+ "devDependencies": {
+ "@opentelemetry/test-utils": "*"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.9.0"
}
},
- "packages/instrumentation-navigation-timing/node_modules/@opentelemetry/api-logs": {
- "version": "0.213.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.213.0.tgz",
- "integrity": "sha512-zRM5/Qj6G84Ej3F1yt33xBVY/3tnMxtL1fiDIxYbDWYaZ/eudVw3/PBiZ8G7JwUxXxjW8gU4g6LnOyfGKYHYgw==",
+ "packages/instrumentation": {
+ "name": "@opentelemetry/browser-instrumentation",
+ "version": "0.1.0",
"license": "Apache-2.0",
"dependencies": {
- "@opentelemetry/api": "^1.3.0"
+ "@opentelemetry/api-logs": "^0.213.0",
+ "@opentelemetry/instrumentation": "^0.213.0",
+ "@opentelemetry/web-utils": "*",
+ "web-vitals": "^5.1.0"
},
- "engines": {
- "node": ">=8.0.0"
+ "devDependencies": {
+ "@opentelemetry/test-utils": "*"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.9.0"
+ }
+ },
+ "packages/instrumentation-navigation-timing": {
+ "name": "@opentelemetry/instrumentation-navigation-timing",
+ "version": "0.1.0",
+ "extraneous": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@opentelemetry/api-logs": "^0.213.0",
+ "@opentelemetry/instrumentation": "^0.213.0"
}
},
"packages/instrumentation-user-action": {
"name": "@opentelemetry/instrumentation-user-action",
"version": "0.1.0",
+ "extraneous": true,
"license": "Apache-2.0",
"dependencies": {
"@opentelemetry/api-logs": "^0.213.0",
@@ -8229,21 +8244,10 @@
"@opentelemetry/test-utils": "*"
}
},
- "packages/instrumentation-user-action/node_modules/@opentelemetry/api-logs": {
- "version": "0.213.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.213.0.tgz",
- "integrity": "sha512-zRM5/Qj6G84Ej3F1yt33xBVY/3tnMxtL1fiDIxYbDWYaZ/eudVw3/PBiZ8G7JwUxXxjW8gU4g6LnOyfGKYHYgw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@opentelemetry/api": "^1.3.0"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
"packages/instrumentation-web-vitals": {
"name": "@opentelemetry/instrumentation-web-vitals",
"version": "0.1.0",
+ "extraneous": true,
"license": "Apache-2.0",
"dependencies": {
"@opentelemetry/api-logs": "^0.213.0",
@@ -8254,7 +8258,7 @@
"@opentelemetry/api": "^1.9.0"
}
},
- "packages/instrumentation-web-vitals/node_modules/@opentelemetry/api-logs": {
+ "packages/instrumentation/node_modules/@opentelemetry/api-logs": {
"version": "0.213.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.213.0.tgz",
"integrity": "sha512-zRM5/Qj6G84Ej3F1yt33xBVY/3tnMxtL1fiDIxYbDWYaZ/eudVw3/PBiZ8G7JwUxXxjW8gU4g6LnOyfGKYHYgw==",
diff --git a/packages/instrumentation-navigation-timing/CHANGELOG.md b/packages/instrumentation-navigation-timing/CHANGELOG.md
deleted file mode 100644
index 0bd04a1..0000000
--- a/packages/instrumentation-navigation-timing/CHANGELOG.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# Changelog
-
-## [0.1.0](https://github.com/open-telemetry/opentelemetry-browser/compare/instrumentation-navigation-timing-v0.0.0...instrumentation-navigation-timing-v0.1.0) (2025-12-11)
-
-### Features
-
-* **instrumentation-navigation-timing:** add new navigation timing instrumentation package
- * Initial skeleton package for navigation timing instrumentation
- * Provides base structure for capturing browser navigation timing metrics
diff --git a/packages/instrumentation-navigation-timing/README.md b/packages/instrumentation-navigation-timing/README.md
deleted file mode 100644
index ef7a73c..0000000
--- a/packages/instrumentation-navigation-timing/README.md
+++ /dev/null
@@ -1,56 +0,0 @@
-# OpenTelemetry NavigationTiming Instrumentation for web
-
-[![NPM Published Version][npm-img]][npm-url]
-[![Apache License][license-image]][license-image]
-
-This module provides automatic instrumentation for *navigation timing* for Web applications.
-
-## Installation
-
-```bash
-npm install @opentelemetry/instrumentation-navigation-timing
-```
-
-## Usage
-
-### Initialize
-
-```typescript
-import { logs } from '@opentelemetry/api-logs';
-import {
- ConsoleLogRecordExporter,
- LoggerProvider,
- SimpleLogRecordProcessor,
-} from '@opentelemetry/sdk-logs';
-import { NavigationTimingInstrumentation } from '@opentelemetry/instrumentation-navigation-timing';
-import { registerInstrumentations } from '@opentelemetry/instrumentation';
-
-const logProvider = new LoggerProvider({
- processors: [
- new SimpleLogRecordProcessor(new ConsoleLogRecordExporter()),
- ],
-});
-logs.setGlobalLoggerProvider(logProvider);
-
-registerInstrumentations({
- instrumentations: [
- new NavigationTimingInstrumentation(),
- ],
-});
-```
-
-## Useful links
-
-- For more information on OpenTelemetry, visit:
-- For more about OpenTelemetry Browser:
-- For help or feedback on this project, join us in [GitHub Discussions][discussions-url]
-
-## License
-
-Apache 2.0 - See [LICENSE][license-url] for more information.
-
-[discussions-url]: https://github.com/open-telemetry/opentelemetry-browser/discussions/landing
-[license-url]: https://github.com/open-telemetry/opentelemetry-browser/blob/main/LICENSE
-[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat
-[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-navigation-timing
-[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-navigation-timing.svg
diff --git a/packages/instrumentation-navigation-timing/package.json b/packages/instrumentation-navigation-timing/package.json
deleted file mode 100644
index b2d593e..0000000
--- a/packages/instrumentation-navigation-timing/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "name": "@opentelemetry/instrumentation-navigation-timing",
- "version": "0.1.0",
- "description": "OpenTelemetry instrumentation for navigation timing for browser applications.",
- "keywords": [
- "opentelemetry",
- "browser",
- "web",
- "instrumentation",
- "navigation-timing"
- ],
- "homepage": "https://github.com/open-telemetry/opentelemetry-browser",
- "bugs": "https://github.com/open-telemetry/opentelemetry-browser/issues",
- "license": "Apache-2.0",
- "author": "OpenTelemetry Authors",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/open-telemetry/opentelemetry-browser.git",
- "directory": "packages/instrumentation-navigation-timing"
- },
- "type": "module",
- "types": "./dist/index.d.ts",
- "exports": {
- ".": "./dist/index.js"
- },
- "files": [
- "dist"
- ],
- "scripts": {
- "build": "tsdown",
- "watch": "tsdown --watch --no-clean",
- "check-types": "tsc",
- "test": "vitest run --browser.enabled=false",
- "test:watch": "vitest --browser.enabled=false",
- "test:coverage": "vitest --coverage --browser.enabled=false"
- },
- "dependencies": {
- "@opentelemetry/api-logs": "^0.213.0",
- "@opentelemetry/instrumentation": "^0.213.0"
- },
- "publishConfig": {
- "access": "public"
- }
-}
diff --git a/packages/instrumentation-navigation-timing/tsdown.config.ts b/packages/instrumentation-navigation-timing/tsdown.config.ts
deleted file mode 100644
index b769b79..0000000
--- a/packages/instrumentation-navigation-timing/tsdown.config.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { defineConfig } from 'tsdown';
-import baseConfig from '../../tsdown.config.ts';
-
-export default defineConfig({
- ...baseConfig,
-});
diff --git a/packages/instrumentation-user-action/README.md b/packages/instrumentation-user-action/README.md
deleted file mode 100644
index ed07be0..0000000
--- a/packages/instrumentation-user-action/README.md
+++ /dev/null
@@ -1,90 +0,0 @@
-# OpenTelemetry UserAction Instrumentation for web
-
-[![NPM Published Version][npm-img]][npm-url]
-[![Apache License][license-image]][license-image]
-
-This module provides automatic instrumentation for *user actions* for Web applications, which may be loaded using the [`@opentelemetry/sdk-logs`](https://www.npmjs.com/package/@opentelemetry/sdk-logs) package.
-
-Compatible with OpenTelemetry JS API and SDK `1.0+`.
-
-## Installation
-
-```bash
-npm install @opentelemetry/instrumentation-user-action
-```
-
-## Usage
-
-### Initialize
-
-```typescript
-import { logs } from '@opentelemetry/api-logs';
-import {
- ConsoleLogRecordExporter,
- LoggerProvider,
- SimpleLogRecordProcessor,
-} from '@opentelemetry/sdk-logs';
-import { UserActionInstrumentation } from '@opentelemetry/instrumentation-user-action';
-import { registerInstrumentations } from '@opentelemetry/instrumentation';
-
-const logProvider = new LoggerProvider({
- processors: [
- new SimpleLogRecordProcessor(new ConsoleLogRecordExporter()),
- ],
-});
-logs.setGlobalLoggerProvider(logProvider);
-
-registerInstrumentations({
- instrumentations: [
- new UserActionInstrumentation(),
- ],
-});
-
-// Add a button to click
-const btn1 = document.createElement('button');
-btn1.append(document.createTextNode('btn1'));
-
-document.querySelector('body').append(btn1);
-
-// now click on button to see user action logs
-```
-
-### Configuration
-
-By default the instrumentation captures `mousedown`. You can configure which events to capture by passing an options object to the `UserActionInstrumentation` constructor:
-
-```typescript
-new UserActionInstrumentation({
- autoCapturedActions: [], // default is ['mousedown']
-});
-```
-
-### Additional Attributes
-
-Data attributes with the prefix `data-otel-` on the target element of the user action event will be added as additional attributes to the generated log record. For example, the following button:
-
-```html
-
-```
-
-## Semantic Conventions
-
-This package does not currently generate any attributes from semantic conventions.
-
-## Useful links
-
-- For more information on OpenTelemetry, visit:
-- For more about OpenTelemetry Browser:
-- For help or feedback on this project, join us in [GitHub Discussions][discussions-url]
-
-## License
-
-Apache 2.0 - See [LICENSE][license-url] for more information.
-
-[discussions-url]: https://github.com/open-telemetry/opentelemetry-browser/discussions/landing
-[license-url]: https://github.com/open-telemetry/opentelemetry-browser/blob/main/LICENSE
-[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat
-[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-user-action
-[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-user-action.svg
\ No newline at end of file
diff --git a/packages/instrumentation-user-action/package.json b/packages/instrumentation-user-action/package.json
deleted file mode 100644
index 729db05..0000000
--- a/packages/instrumentation-user-action/package.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "name": "@opentelemetry/instrumentation-user-action",
- "version": "0.1.0",
- "description": "OpenTelemetry instrumentation for user actions for browser applications.",
- "keywords": [
- "opentelemetry",
- "browser",
- "web",
- "instrumentation",
- "user-action"
- ],
- "homepage": "https://github.com/open-telemetry/opentelemetry-browser",
- "bugs": "https://github.com/open-telemetry/opentelemetry-browser/issues",
- "license": "Apache-2.0",
- "author": "OpenTelemetry Authors",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/open-telemetry/opentelemetry-browser.git",
- "directory": "packages/instrumentation-user-action"
- },
- "type": "module",
- "types": "./dist/index.d.ts",
- "exports": {
- ".": "./dist/index.js"
- },
- "files": [
- "dist"
- ],
- "scripts": {
- "build": "tsdown",
- "watch": "tsdown --watch --no-clean",
- "check-types": "tsc",
- "test": "vitest run",
- "test:watch": "vitest",
- "test:coverage": "vitest --coverage"
- },
- "dependencies": {
- "@opentelemetry/api-logs": "^0.213.0",
- "@opentelemetry/instrumentation": "^0.213.0",
- "@opentelemetry/web-utils": "*"
- },
- "devDependencies": {
- "@opentelemetry/test-utils": "*"
- },
- "publishConfig": {
- "access": "public"
- }
-}
diff --git a/packages/instrumentation-user-action/tsconfig.json b/packages/instrumentation-user-action/tsconfig.json
deleted file mode 100644
index 0ff2110..0000000
--- a/packages/instrumentation-user-action/tsconfig.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "extends": "../../tsconfig.json",
- "compilerOptions": {
- "rootDir": "./src"
- },
- "include": ["src/**/*"],
- "exclude": ["node_modules", "dist"]
-}
diff --git a/packages/instrumentation-web-vitals/README.md b/packages/instrumentation-web-vitals/README.md
deleted file mode 100644
index 444041f..0000000
--- a/packages/instrumentation-web-vitals/README.md
+++ /dev/null
@@ -1,34 +0,0 @@
-# @opentelemetry/instrumentation-web-vitals
-
-OpenTelemetry instrumentation for Core Web Vitals for browser applications.
-
-## Installation
-
-```bash
-npm install @opentelemetry/instrumentation-web-vitals
-```
-
-## Usage
-
-```typescript
-import { WebVitalsInstrumentation } from '@opentelemetry/instrumentation-web-vitals';
-import { registerInstrumentations } from '@opentelemetry/instrumentation';
-
-registerInstrumentations({
- instrumentations: [
- new WebVitalsInstrumentation({
- // configuration options
- }),
- ],
-});
-```
-
-## Configuration
-
-| Option | Type | Default | Description |
-|--------|------|---------|-------------|
-| `trackingLevel` | `'core'` \| `'all'` | `'core'` | Which metrics to track. `'core'` tracks CLS, INP, and LCP (the Core Web Vitals). `'all'` additionally tracks FCP and TTFB. |
-
-## License
-
-Apache-2.0
diff --git a/packages/instrumentation-web-vitals/tsconfig.json b/packages/instrumentation-web-vitals/tsconfig.json
deleted file mode 100644
index 0ff2110..0000000
--- a/packages/instrumentation-web-vitals/tsconfig.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "extends": "../../tsconfig.json",
- "compilerOptions": {
- "rootDir": "./src"
- },
- "include": ["src/**/*"],
- "exclude": ["node_modules", "dist"]
-}
diff --git a/packages/instrumentation-web-vitals/tsdown.config.ts b/packages/instrumentation-web-vitals/tsdown.config.ts
deleted file mode 100644
index b769b79..0000000
--- a/packages/instrumentation-web-vitals/tsdown.config.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { defineConfig } from 'tsdown';
-import baseConfig from '../../tsdown.config.ts';
-
-export default defineConfig({
- ...baseConfig,
-});
diff --git a/packages/instrumentation/README.md b/packages/instrumentation/README.md
new file mode 100644
index 0000000..c11b656
--- /dev/null
+++ b/packages/instrumentation/README.md
@@ -0,0 +1,123 @@
+# @opentelemetry/browser-instrumentation
+
+[![NPM Published Version][npm-img]][npm-url]
+[![Apache License][license-image]][license-image]
+
+OpenTelemetry browser instrumentations, available as subpath exports under `./experimental/*`.
+
+## Installation
+
+```bash
+npm install @opentelemetry/browser-instrumentation
+```
+
+## Instrumentations
+
+- [Navigation Timing](#navigation-timing) — automatic instrumentation for navigation timing
+- [User Action](#user-action) — automatic instrumentation for user actions (clicks)
+- [Web Vitals](#web-vitals) — automatic instrumentation for Core Web Vitals
+
+## Usage
+
+```typescript
+import { logs } from '@opentelemetry/api-logs';
+import {
+ ConsoleLogRecordExporter,
+ LoggerProvider,
+ SimpleLogRecordProcessor,
+} from '@opentelemetry/sdk-logs';
+import { registerInstrumentations } from '@opentelemetry/instrumentation';
+import { NavigationTimingInstrumentation } from '@opentelemetry/browser-instrumentation/experimental/navigation-timing';
+import { UserActionInstrumentation } from '@opentelemetry/browser-instrumentation/experimental/user-action';
+import { WebVitalsInstrumentation } from '@opentelemetry/browser-instrumentation/experimental/web-vitals';
+
+const logProvider = new LoggerProvider({
+ processors: [
+ new SimpleLogRecordProcessor(new ConsoleLogRecordExporter()),
+ ],
+});
+logs.setGlobalLoggerProvider(logProvider);
+
+registerInstrumentations({
+ instrumentations: [
+ new NavigationTimingInstrumentation(),
+ new UserActionInstrumentation(),
+ new WebVitalsInstrumentation(),
+ ],
+});
+```
+
+---
+
+### Navigation Timing
+
+```typescript
+import { NavigationTimingInstrumentation } from '@opentelemetry/browser-instrumentation/experimental/navigation-timing';
+```
+
+Provides automatic instrumentation for [Navigation Timing](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming) in web applications.
+
+---
+
+### User Action
+
+```typescript
+import { UserActionInstrumentation } from '@opentelemetry/browser-instrumentation/experimental/user-action';
+```
+
+Provides automatic instrumentation for user actions in web applications.
+
+Compatible with OpenTelemetry JS API and SDK `1.0+`.
+
+#### Configuration
+
+By default the instrumentation captures `click` events. You can configure which events to capture by passing an options object:
+
+```typescript
+new UserActionInstrumentation({
+ autoCapturedActions: [], // default is ['click']
+});
+```
+
+#### Additional Attributes
+
+Data attributes with the prefix `data-otel-` on the target element will be added as additional attributes to the generated log record. For example:
+
+```html
+
+```
+
+---
+
+### Web Vitals
+
+```typescript
+import { WebVitalsInstrumentation } from '@opentelemetry/browser-instrumentation/experimental/web-vitals';
+```
+
+Provides automatic instrumentation for [Core Web Vitals](https://web.dev/vitals/) using the [`web-vitals`](https://github.com/GoogleChrome/web-vitals) library.
+
+#### Configuration
+
+| Option | Type | Default | Description |
+|--------|------|---------|-------------|
+| `includeRawAttribution` | `boolean` | `false` | When true, sets the log record body to the JSON-stringified `web-vitals` attribution object. |
+| `applyCustomLogRecordData` | `(logRecord: LogRecord) => void` | — | Hook to modify log records before they are emitted. |
+
+## Useful links
+
+- For more information on OpenTelemetry, visit:
+- For more about OpenTelemetry Browser:
+- For help or feedback on this project, join us in [GitHub Discussions][discussions-url]
+
+## License
+
+Apache 2.0 - See [LICENSE][license-url] for more information.
+
+[discussions-url]: https://github.com/open-telemetry/opentelemetry-browser/discussions/landing
+[license-url]: https://github.com/open-telemetry/opentelemetry-browser/blob/main/LICENSE
+[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat
+[npm-url]: https://www.npmjs.com/package/@opentelemetry/browser-instrumentation
+[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fbrowser-instrumentation.svg
diff --git a/packages/instrumentation-web-vitals/package.json b/packages/instrumentation/package.json
similarity index 63%
rename from packages/instrumentation-web-vitals/package.json
rename to packages/instrumentation/package.json
index 289735c..c998a8d 100644
--- a/packages/instrumentation-web-vitals/package.json
+++ b/packages/instrumentation/package.json
@@ -1,12 +1,14 @@
{
- "name": "@opentelemetry/instrumentation-web-vitals",
+ "name": "@opentelemetry/browser-instrumentation",
"version": "0.1.0",
- "description": "OpenTelemetry instrumentation for Core Web Vitals for browser applications.",
+ "description": "OpenTelemetry browser instrumentations.",
"keywords": [
"opentelemetry",
"browser",
"web",
"instrumentation",
+ "navigation-timing",
+ "user-action",
"web-vitals"
],
"homepage": "https://github.com/open-telemetry/opentelemetry-browser",
@@ -16,19 +18,20 @@
"repository": {
"type": "git",
"url": "git+https://github.com/open-telemetry/opentelemetry-browser.git",
- "directory": "packages/instrumentation-web-vitals"
+ "directory": "packages/instrumentation"
},
"type": "module",
- "types": "./dist/index.d.ts",
"exports": {
- ".": "./dist/index.js"
+ "./experimental/navigation-timing": "./dist/navigation-timing/index.js",
+ "./experimental/user-action": "./dist/user-action/index.js",
+ "./experimental/web-vitals": "./dist/web-vitals/index.js"
},
"files": [
"dist"
],
"scripts": {
"build": "tsdown",
- "dev": "tsdown --watch --no-clean",
+ "watch": "tsdown --watch --no-clean",
"check-types": "tsc",
"test": "vitest run",
"test:watch": "vitest",
@@ -37,11 +40,15 @@
"dependencies": {
"@opentelemetry/api-logs": "^0.213.0",
"@opentelemetry/instrumentation": "^0.213.0",
+ "@opentelemetry/web-utils": "*",
"web-vitals": "^5.1.0"
},
"peerDependencies": {
"@opentelemetry/api": "^1.9.0"
},
+ "devDependencies": {
+ "@opentelemetry/test-utils": "*"
+ },
"publishConfig": {
"access": "public"
}
diff --git a/packages/instrumentation-navigation-timing/src/index.ts b/packages/instrumentation/src/navigation-timing/index.ts
similarity index 100%
rename from packages/instrumentation-navigation-timing/src/index.ts
rename to packages/instrumentation/src/navigation-timing/index.ts
diff --git a/packages/instrumentation-navigation-timing/src/instrumentation.test.ts b/packages/instrumentation/src/navigation-timing/instrumentation.test.ts
similarity index 100%
rename from packages/instrumentation-navigation-timing/src/instrumentation.test.ts
rename to packages/instrumentation/src/navigation-timing/instrumentation.test.ts
diff --git a/packages/instrumentation-navigation-timing/src/instrumentation.ts b/packages/instrumentation/src/navigation-timing/instrumentation.ts
similarity index 100%
rename from packages/instrumentation-navigation-timing/src/instrumentation.ts
rename to packages/instrumentation/src/navigation-timing/instrumentation.ts
diff --git a/packages/instrumentation-navigation-timing/src/semconv.ts b/packages/instrumentation/src/navigation-timing/semconv.ts
similarity index 100%
rename from packages/instrumentation-navigation-timing/src/semconv.ts
rename to packages/instrumentation/src/navigation-timing/semconv.ts
diff --git a/packages/instrumentation-navigation-timing/src/types.ts b/packages/instrumentation/src/navigation-timing/types.ts
similarity index 100%
rename from packages/instrumentation-navigation-timing/src/types.ts
rename to packages/instrumentation/src/navigation-timing/types.ts
diff --git a/packages/instrumentation-user-action/src/index.ts b/packages/instrumentation/src/user-action/index.ts
similarity index 100%
rename from packages/instrumentation-user-action/src/index.ts
rename to packages/instrumentation/src/user-action/index.ts
diff --git a/packages/instrumentation-user-action/src/instrumentation.test.ts b/packages/instrumentation/src/user-action/instrumentation.test.ts
similarity index 100%
rename from packages/instrumentation-user-action/src/instrumentation.test.ts
rename to packages/instrumentation/src/user-action/instrumentation.test.ts
diff --git a/packages/instrumentation-user-action/src/instrumentation.ts b/packages/instrumentation/src/user-action/instrumentation.ts
similarity index 100%
rename from packages/instrumentation-user-action/src/instrumentation.ts
rename to packages/instrumentation/src/user-action/instrumentation.ts
diff --git a/packages/instrumentation-user-action/src/semconv.ts b/packages/instrumentation/src/user-action/semconv.ts
similarity index 100%
rename from packages/instrumentation-user-action/src/semconv.ts
rename to packages/instrumentation/src/user-action/semconv.ts
diff --git a/packages/instrumentation-user-action/src/types.ts b/packages/instrumentation/src/user-action/types.ts
similarity index 100%
rename from packages/instrumentation-user-action/src/types.ts
rename to packages/instrumentation/src/user-action/types.ts
diff --git a/packages/instrumentation-web-vitals/src/index.ts b/packages/instrumentation/src/web-vitals/index.ts
similarity index 100%
rename from packages/instrumentation-web-vitals/src/index.ts
rename to packages/instrumentation/src/web-vitals/index.ts
diff --git a/packages/instrumentation-web-vitals/src/instrumentation.test.ts b/packages/instrumentation/src/web-vitals/instrumentation.test.ts
similarity index 100%
rename from packages/instrumentation-web-vitals/src/instrumentation.test.ts
rename to packages/instrumentation/src/web-vitals/instrumentation.test.ts
diff --git a/packages/instrumentation-web-vitals/src/instrumentation.ts b/packages/instrumentation/src/web-vitals/instrumentation.ts
similarity index 100%
rename from packages/instrumentation-web-vitals/src/instrumentation.ts
rename to packages/instrumentation/src/web-vitals/instrumentation.ts
diff --git a/packages/instrumentation-web-vitals/src/semconv.ts b/packages/instrumentation/src/web-vitals/semconv.ts
similarity index 100%
rename from packages/instrumentation-web-vitals/src/semconv.ts
rename to packages/instrumentation/src/web-vitals/semconv.ts
diff --git a/packages/instrumentation-web-vitals/src/types.ts b/packages/instrumentation/src/web-vitals/types.ts
similarity index 100%
rename from packages/instrumentation-web-vitals/src/types.ts
rename to packages/instrumentation/src/web-vitals/types.ts
diff --git a/packages/instrumentation-navigation-timing/tsconfig.json b/packages/instrumentation/tsconfig.json
similarity index 100%
rename from packages/instrumentation-navigation-timing/tsconfig.json
rename to packages/instrumentation/tsconfig.json
diff --git a/packages/instrumentation-user-action/tsdown.config.ts b/packages/instrumentation/tsdown.config.ts
similarity index 76%
rename from packages/instrumentation-user-action/tsdown.config.ts
rename to packages/instrumentation/tsdown.config.ts
index b769b79..c2c6655 100644
--- a/packages/instrumentation-user-action/tsdown.config.ts
+++ b/packages/instrumentation/tsdown.config.ts
@@ -3,4 +3,6 @@ import baseConfig from '../../tsdown.config.ts';
export default defineConfig({
...baseConfig,
+ entry: ['src/*/index.ts'],
+ dts: true,
});
diff --git a/packages/instrumentation/vitest.config.ts b/packages/instrumentation/vitest.config.ts
new file mode 100644
index 0000000..5ce6665
--- /dev/null
+++ b/packages/instrumentation/vitest.config.ts
@@ -0,0 +1,30 @@
+import { playwright } from '@vitest/browser-playwright';
+import { defineConfig } from 'vitest/config';
+
+export default defineConfig({
+ test: {
+ projects: [
+ {
+ test: {
+ name: 'unit',
+ environment: 'jsdom',
+ include: ['src/**/*.test.ts'],
+ exclude: ['src/web-vitals/**'],
+ browser: { enabled: false },
+ },
+ },
+ {
+ test: {
+ name: 'browser',
+ include: ['src/web-vitals/**/*.test.ts'],
+ browser: {
+ provider: playwright(),
+ enabled: true,
+ headless: true,
+ instances: [{ browser: 'chromium' }],
+ },
+ },
+ },
+ ],
+ },
+});
diff --git a/packages/web-utils/package.json b/packages/web-utils/package.json
index 2714164..ba030aa 100644
--- a/packages/web-utils/package.json
+++ b/packages/web-utils/package.json
@@ -1,5 +1,6 @@
{
"name": "@opentelemetry/web-utils",
+ "private": true,
"version": "0.1.0",
"description": "Utility package with web-specific helpers",
"keywords": [