diff --git a/docs/platforms/javascript/guides/effect/config.yml b/docs/platforms/javascript/guides/effect/config.yml
new file mode 100644
index 0000000000000..e57128d920a2e
--- /dev/null
+++ b/docs/platforms/javascript/guides/effect/config.yml
@@ -0,0 +1,8 @@
+title: Effect
+description: Learn how to set up Sentry in your Effect application with first-class integration for tracing, logging, and metrics.
+sdk: sentry.javascript.effect
+categories:
+ - javascript
+ - server
+ - server-node
+ - browser
diff --git a/docs/platforms/javascript/guides/effect/index.mdx b/docs/platforms/javascript/guides/effect/index.mdx
new file mode 100644
index 0000000000000..61faffbba73e7
--- /dev/null
+++ b/docs/platforms/javascript/guides/effect/index.mdx
@@ -0,0 +1,183 @@
+---
+title: Effect
+sdk: sentry.javascript.effect
+description: Learn how to set up Sentry in your Effect application with first-class integration for tracing, logging, and metrics.
+---
+
+
+
+This SDK is currently in **ALPHA**. Alpha features are still in progress, may have bugs, and might include breaking changes.
+Please reach out on [GitHub](https://github.com/getsentry/sentry-javascript/issues/new/choose) if you have any feedback or concerns.
+
+
+
+The `@sentry/effect` SDK provides first-class integration with [Effect](https://effect.website/), enabling automatic tracing, logging, and metrics capture for Effect-based applications.
+
+
+
+## Step 1: Install
+
+Choose the features you want to configure, and this guide will show you how:
+
+
+
+
+
+### Install the Sentry SDK
+
+```bash {tabTitle:npm}
+npm install @sentry/effect --save
+```
+
+```bash {tabTitle:yarn}
+yarn add @sentry/effect
+```
+
+```bash {tabTitle:pnpm}
+pnpm add @sentry/effect
+```
+
+## Step 2: Configure
+
+The SDK provides an `effectLayer` that initializes Sentry. You can compose it with additional Effect layers to enable tracing, logging, and metrics.
+
+### Server Usage
+
+```typescript {filename:main.ts}
+import * as Sentry from "@sentry/effect/server";
+import { NodeRuntime } from "@effect/platform-node";
+// ___PRODUCT_OPTION_START___ logs
+import * as Logger from "effect/Logger";
+// ___PRODUCT_OPTION_END___ logs
+import * as Layer from "effect/Layer";
+import { HttpLive } from "./Http.js";
+
+const SentryLive = Layer.mergeAll(
+ Sentry.effectLayer({
+ dsn: "___PUBLIC_DSN___",
+ // ___PRODUCT_OPTION_START___ performance
+
+ // Set tracesSampleRate to 1.0 to capture 100%
+ // of transactions for tracing.
+ // We recommend adjusting this value in production.
+ tracesSampleRate: 1.0,
+ // ___PRODUCT_OPTION_END___ performance
+ // ___PRODUCT_OPTION_START___ logs
+
+ // Enable logs to be sent to Sentry
+ enableLogs: true,
+ // ___PRODUCT_OPTION_END___ logs
+ }),
+ // ___PRODUCT_OPTION_START___ performance
+
+ // Enable Effect tracing
+ Layer.setTracer(Sentry.SentryEffectTracer),
+ // ___PRODUCT_OPTION_END___ performance
+ // ___PRODUCT_OPTION_START___ logs
+
+ // Forward Effect logs to Sentry
+ Logger.replace(Logger.defaultLogger, Sentry.SentryEffectLogger),
+ // ___PRODUCT_OPTION_END___ logs
+ // ___PRODUCT_OPTION_START___ metrics
+
+ // Forward Effect metrics to Sentry
+ Sentry.SentryEffectMetricsLayer,
+ // ___PRODUCT_OPTION_END___ metrics
+);
+
+const MainLive = HttpLive.pipe(Layer.provide(SentryLive));
+
+MainLive.pipe(Layer.launch, NodeRuntime.runMain);
+```
+
+### Client Usage
+
+```typescript {filename:main.ts}
+import * as Sentry from "@sentry/effect/client";
+// ___PRODUCT_OPTION_START___ logs
+import { Logger } from "effect";
+// ___PRODUCT_OPTION_END___ logs
+import { Layer } from "effect";
+
+const SentryLive = Layer.mergeAll(
+ Sentry.effectLayer({
+ dsn: "___PUBLIC_DSN___",
+ // ___PRODUCT_OPTION_START___ performance
+
+ // Set tracesSampleRate to 1.0 to capture 100%
+ // of transactions for tracing.
+ // We recommend adjusting this value in production.
+ tracesSampleRate: 1.0,
+ integrations: [Sentry.browserTracingIntegration()],
+ // ___PRODUCT_OPTION_END___ performance
+ // ___PRODUCT_OPTION_START___ logs
+
+ // Enable logs to be sent to Sentry
+ enableLogs: true,
+ // ___PRODUCT_OPTION_END___ logs
+ }),
+ // ___PRODUCT_OPTION_START___ performance
+
+ // Enable Effect tracing
+ Layer.setTracer(Sentry.SentryEffectTracer),
+ // ___PRODUCT_OPTION_END___ performance
+ // ___PRODUCT_OPTION_START___ logs
+
+ // Forward Effect logs to Sentry
+ Logger.replace(Logger.defaultLogger, Sentry.SentryEffectLogger),
+ // ___PRODUCT_OPTION_END___ logs
+);
+
+const MainLive = YourAppLayer.pipe(Layer.provide(SentryLive));
+```
+
+## Features
+
+The SDK provides composable layers for Effect integration:
+
+
+- **Tracing** via `Sentry.SentryEffectTracer`: Effect spans are automatically traced as Sentry spans with distributed tracing support
+
+
+- **Logging** via `Sentry.SentryEffectLogger`: Effect logs are forwarded to Sentry (requires `enableLogs: true`)
+
+
+- **Metrics** via `Sentry.SentryEffectMetricsLayer`: Effect metrics (counters, gauges, histograms) are sent to Sentry
+
+
+## Step 3: Verify
+
+Add a test error to verify your setup:
+
+```typescript
+import { Effect } from "effect";
+import * as Sentry from "@sentry/effect/server";
+
+const program = Effect.gen(function* () {
+ yield* Effect.fail(new Error("Sentry Test Error"));
+});
+
+// Run with your layer that includes Sentry.effectLayer
+```
+
+Head over to your project on [Sentry.io](https://sentry.io) to view the collected data.
+
+## Next Steps
+
+- Learn how to [manually capture errors](/platforms/javascript/guides/effect/usage/)
+- Continue to [customize your configuration](/platforms/javascript/guides/effect/configuration/)
+- Get familiar with [Sentry's product features](/product/) like tracing, insights, and alerts
+
+
+
+- Find various topics in Troubleshooting
+- [Get support](https://sentry.zendesk.com/hc/en-us/)
+
+
diff --git a/package.json b/package.json
index 65fcd57e1dfd9..716ebf25bee5b 100644
--- a/package.json
+++ b/package.json
@@ -91,7 +91,7 @@
"next-themes": "^0.3.0",
"nextjs-toploader": "^1.6.6",
"p-limit": "^6.2.0",
- "platformicons": "^9.0.7",
+ "platformicons": "^9.2.1",
"prism-sentry": "^1.0.2",
"react": "^19.2.4",
"react-dom": "^19.2.4",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index c3f8b0f61f462..7e5524c9a341b 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -181,8 +181,8 @@ importers:
specifier: ^6.2.0
version: 6.2.0
platformicons:
- specifier: ^9.0.7
- version: 9.0.7(react@19.2.4)
+ specifier: ^9.2.1
+ version: 9.2.1(react@19.2.4)
prism-sentry:
specifier: ^1.0.2
version: 1.0.2
@@ -378,10 +378,10 @@ importers:
version: 5.9.3
vite-tsconfig-paths:
specifier: ^5.0.1
- version: 5.1.4(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.11)(jiti@1.21.7)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))
+ version: 5.1.4(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.11)(jiti@1.21.7)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.2))
vitest:
specifier: ^3.0.7
- version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.11)(jiti@1.21.7)(jsdom@20.0.3)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)
+ version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.11)(jiti@1.21.7)(jsdom@20.0.3)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.2)
ws:
specifier: ^8.17.1
version: 8.19.0
@@ -3922,6 +3922,9 @@ packages:
'@types/node@22.19.11':
resolution: {integrity: sha512-BH7YwL6rA93ReqeQS1c4bsPpcfOmJasG+Fkr6Y59q83f9M1WcBRHR2vM+P9eOisYRcN3ujQoiZY8uk5W+1WL8w==}
+ '@types/node@22.19.15':
+ resolution: {integrity: sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==}
+
'@types/parse-json@4.0.2':
resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
@@ -5239,8 +5242,8 @@ packages:
end-of-stream@1.4.5:
resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}
- enhanced-resolve@5.19.0:
- resolution: {integrity: sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==}
+ enhanced-resolve@5.20.1:
+ resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==}
engines: {node: '>=10.13.0'}
entities@2.2.0:
@@ -7141,8 +7144,8 @@ packages:
pkg-types@1.3.1:
resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
- platformicons@9.0.7:
- resolution: {integrity: sha512-+3t3J5LllMANkZ3Ykg44Tka0blhEGz9+ydSg3m6rUCsWF3y6RbFLTqn9GiM3gmeSzTidwSxg3RDA4WCG+h5YpA==}
+ platformicons@9.2.1:
+ resolution: {integrity: sha512-xY+epkdZKpvditx0IyeCBV7DNbHJVQDfg4DGIQN+DqwuBaeHe9UxA7sFaiKfoL+d12958QeyIaeVWXJ85IEG9g==}
peerDependencies:
react: '*'
@@ -7299,9 +7302,6 @@ packages:
'@types/react-dom':
optional: true
- randombytes@2.1.0:
- resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
-
react-dom@19.2.4:
resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==}
peerDependencies:
@@ -7700,9 +7700,6 @@ packages:
engines: {node: '>=10'}
hasBin: true
- serialize-javascript@6.0.2:
- resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==}
-
server-only@0.0.1:
resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==}
@@ -7977,8 +7974,8 @@ packages:
resolution: {integrity: sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==}
engines: {node: '>=14'}
- terser-webpack-plugin@5.3.16:
- resolution: {integrity: sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==}
+ terser-webpack-plugin@5.4.0:
+ resolution: {integrity: sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==}
engines: {node: '>= 10.13.0'}
peerDependencies:
'@swc/core': '*'
@@ -7993,8 +7990,8 @@ packages:
uglify-js:
optional: true
- terser@5.46.0:
- resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==}
+ terser@5.46.1:
+ resolution: {integrity: sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==}
engines: {node: '>=10'}
hasBin: true
@@ -12970,6 +12967,10 @@ snapshots:
dependencies:
undici-types: 6.21.0
+ '@types/node@22.19.15':
+ dependencies:
+ undici-types: 6.21.0
+
'@types/parse-json@4.0.2': {}
'@types/pg-pool@2.0.6':
@@ -13341,13 +13342,13 @@ snapshots:
chai: 5.3.3
tinyrainbow: 2.0.0
- '@vitest/mocker@3.2.4(vite@7.3.1(@types/node@22.19.11)(jiti@1.21.7)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))':
+ '@vitest/mocker@3.2.4(vite@7.3.1(@types/node@22.19.11)(jiti@1.21.7)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.2))':
dependencies:
'@vitest/spy': 3.2.4
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
- vite: 7.3.1(@types/node@22.19.11)(jiti@1.21.7)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)
+ vite: 7.3.1(@types/node@22.19.11)(jiti@1.21.7)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.2)
'@vitest/pretty-format@3.2.4':
dependencies:
@@ -14423,7 +14424,7 @@ snapshots:
dependencies:
once: 1.4.0
- enhanced-resolve@5.19.0:
+ enhanced-resolve@5.20.1:
dependencies:
graceful-fs: 4.2.11
tapable: 2.3.0
@@ -14640,7 +14641,7 @@ snapshots:
eslint: 8.57.1
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1)
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.56.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)
eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1)
eslint-plugin-react: 7.37.5(eslint@8.57.1)
eslint-plugin-react-hooks: 5.2.0(eslint@8.57.1)
@@ -14660,7 +14661,7 @@ snapshots:
eslint-config-sentry: 2.10.0(eslint@8.57.1)
eslint-config-sentry-react: 2.10.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0)(eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(jest@29.7.0(@types/node@22.19.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.11)(typescript@5.9.3)))(typescript@5.9.3))(eslint-plugin-react@7.37.5(eslint@8.57.1))(eslint@8.57.1)(typescript@5.9.3)
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1)
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(jest@29.7.0(@types/node@22.19.11)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.11)(typescript@5.9.3)))(typescript@5.9.3)
eslint-plugin-no-lookahead-lookbehind-regexp: 0.3.0(eslint@8.57.1)
eslint-plugin-react: 7.37.5(eslint@8.57.1)
@@ -14717,7 +14718,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1))(eslint@8.57.1):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1):
dependencies:
debug: 3.2.7
optionalDependencies:
@@ -14728,18 +14729,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@8.56.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.56.0(eslint@8.57.1)(typescript@5.9.3)
+ '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.3)
eslint: 8.57.1
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1)
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -14750,7 +14750,7 @@ snapshots:
doctrine: 2.1.0
eslint: 8.57.1
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1))(eslint@8.57.1)
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -14768,7 +14768,7 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.56.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -14779,7 +14779,7 @@ snapshots:
doctrine: 2.1.0
eslint: 8.57.1
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.56.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1)
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -14791,7 +14791,7 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.56.0(eslint@8.57.1)(typescript@5.9.3)
+ '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
@@ -16238,7 +16238,7 @@ snapshots:
jest-worker@27.5.1:
dependencies:
- '@types/node': 22.19.11
+ '@types/node': 22.19.15
merge-stream: 2.0.0
supports-color: 8.1.1
@@ -17310,7 +17310,7 @@ snapshots:
mlly: 1.8.0
pathe: 2.0.3
- platformicons@9.0.7(react@19.2.4):
+ platformicons@9.2.1(react@19.2.4):
dependencies:
'@types/node': 22.19.11
'@types/react': 18.3.12
@@ -17496,10 +17496,6 @@ snapshots:
'@types/react': 18.3.12
'@types/react-dom': 18.3.1
- randombytes@2.1.0:
- dependencies:
- safe-buffer: 5.2.1
-
react-dom@19.2.4(react@19.2.4):
dependencies:
react: 19.2.4
@@ -18170,10 +18166,6 @@ snapshots:
semver@7.7.4: {}
- serialize-javascript@6.0.2:
- dependencies:
- randombytes: 2.1.0
-
server-only@0.0.1: {}
set-function-length@1.2.2:
@@ -18547,18 +18539,17 @@ snapshots:
- encoding
- supports-color
- terser-webpack-plugin@5.3.16(esbuild@0.25.12)(webpack@5.105.2(esbuild@0.25.12)):
+ terser-webpack-plugin@5.4.0(esbuild@0.25.12)(webpack@5.105.2(esbuild@0.25.12)):
dependencies:
'@jridgewell/trace-mapping': 0.3.31
jest-worker: 27.5.1
schema-utils: 4.3.3
- serialize-javascript: 6.0.2
- terser: 5.46.0
+ terser: 5.46.1
webpack: 5.105.2(esbuild@0.25.12)
optionalDependencies:
esbuild: 0.25.12
- terser@5.46.0:
+ terser@5.46.1:
dependencies:
'@jridgewell/source-map': 0.3.11
acorn: 8.16.0
@@ -18996,13 +18987,13 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.3
- vite-node@3.2.4(@types/node@22.19.11)(jiti@1.21.7)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2):
+ vite-node@3.2.4(@types/node@22.19.11)(jiti@1.21.7)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.2):
dependencies:
cac: 6.7.14
debug: 4.4.3
es-module-lexer: 1.7.0
pathe: 2.0.3
- vite: 7.3.1(@types/node@22.19.11)(jiti@1.21.7)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)
+ vite: 7.3.1(@types/node@22.19.11)(jiti@1.21.7)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.2)
transitivePeerDependencies:
- '@types/node'
- jiti
@@ -19017,18 +19008,18 @@ snapshots:
- tsx
- yaml
- vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.11)(jiti@1.21.7)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)):
+ vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.11)(jiti@1.21.7)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.2)):
dependencies:
debug: 4.4.3
globrex: 0.1.2
tsconfck: 3.1.6(typescript@5.9.3)
optionalDependencies:
- vite: 7.3.1(@types/node@22.19.11)(jiti@1.21.7)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)
+ vite: 7.3.1(@types/node@22.19.11)(jiti@1.21.7)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.2)
transitivePeerDependencies:
- supports-color
- typescript
- vite@7.3.1(@types/node@22.19.11)(jiti@1.21.7)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2):
+ vite@7.3.1(@types/node@22.19.11)(jiti@1.21.7)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.2):
dependencies:
esbuild: 0.27.3
fdir: 6.5.0(picomatch@4.0.3)
@@ -19041,14 +19032,14 @@ snapshots:
fsevents: 2.3.3
jiti: 1.21.7
sass: 1.97.3
- terser: 5.46.0
+ terser: 5.46.1
yaml: 2.8.2
- vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.19.11)(jiti@1.21.7)(jsdom@20.0.3)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2):
+ vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.19.11)(jiti@1.21.7)(jsdom@20.0.3)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.2):
dependencies:
'@types/chai': 5.2.3
'@vitest/expect': 3.2.4
- '@vitest/mocker': 3.2.4(vite@7.3.1(@types/node@22.19.11)(jiti@1.21.7)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2))
+ '@vitest/mocker': 3.2.4(vite@7.3.1(@types/node@22.19.11)(jiti@1.21.7)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.2))
'@vitest/pretty-format': 3.2.4
'@vitest/runner': 3.2.4
'@vitest/snapshot': 3.2.4
@@ -19066,8 +19057,8 @@ snapshots:
tinyglobby: 0.2.15
tinypool: 1.1.1
tinyrainbow: 2.0.0
- vite: 7.3.1(@types/node@22.19.11)(jiti@1.21.7)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)
- vite-node: 3.2.4(@types/node@22.19.11)(jiti@1.21.7)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)
+ vite: 7.3.1(@types/node@22.19.11)(jiti@1.21.7)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.2)
+ vite-node: 3.2.4(@types/node@22.19.11)(jiti@1.21.7)(sass@1.97.3)(terser@5.46.1)(yaml@2.8.2)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/debug': 4.1.12
@@ -19157,7 +19148,7 @@ snapshots:
acorn-import-phases: 1.0.4(acorn@8.16.0)
browserslist: 4.28.1
chrome-trace-event: 1.0.4
- enhanced-resolve: 5.19.0
+ enhanced-resolve: 5.20.1
es-module-lexer: 2.0.0
eslint-scope: 5.1.1
events: 3.3.0
@@ -19169,7 +19160,7 @@ snapshots:
neo-async: 2.6.2
schema-utils: 4.3.3
tapable: 2.3.0
- terser-webpack-plugin: 5.3.16(esbuild@0.25.12)(webpack@5.105.2(esbuild@0.25.12))
+ terser-webpack-plugin: 5.4.0(esbuild@0.25.12)(webpack@5.105.2(esbuild@0.25.12))
watchpack: 2.5.1
webpack-sources: 3.3.4
transitivePeerDependencies:
diff --git a/src/components/onboarding/index.tsx b/src/components/onboarding/index.tsx
index f80eb05d69329..8f5c33084e0ef 100644
--- a/src/components/onboarding/index.tsx
+++ b/src/components/onboarding/index.tsx
@@ -23,6 +23,7 @@ const OPTION_IDS = [
'source-context',
'dsym',
'opentelemetry',
+ 'metrics',
] as const;
const OPTION_IDS_SET = new Set(OPTION_IDS);
@@ -106,6 +107,15 @@ const optionDetails: Record<
),
},
+ metrics: {
+ name: 'Metrics',
+ description: (
+
+ Send metrics from your application to Sentry for viewing alongside relevant errors
+ and searching by metric name or attributes.
+
+ ),
+ },
dsym: {
name: 'dSYM',
description: (
diff --git a/src/components/platformIcon.tsx b/src/components/platformIcon.tsx
index f3e252fbc231f..f09c60239d42f 100644
--- a/src/components/platformIcon.tsx
+++ b/src/components/platformIcon.tsx
@@ -40,6 +40,7 @@ import DotnetSVG from 'platformicons/svg/dotnet.svg';
import DotnetcoreSVG from 'platformicons/svg/dotnetcore.svg';
import DotnetfxSVG from 'platformicons/svg/dotnetfx.svg';
import EchoSVG from 'platformicons/svg/echo.svg';
+import EffectSVG from 'platformicons/svg/effect.svg';
import ElectronSVG from 'platformicons/svg/electron.svg';
import ElixirSVG from 'platformicons/svg/elixir.svg';
import EmberSVG from 'platformicons/svg/ember.svg';
@@ -190,6 +191,7 @@ import DotnetSVGLarge from 'platformicons/svg_80x80/dotnet.svg';
import DotnetcoreSVGLarge from 'platformicons/svg_80x80/dotnetcore.svg';
import DotnetfxSVGLarge from 'platformicons/svg_80x80/dotnetfx.svg';
import EchoSVGLarge from 'platformicons/svg_80x80/echo.svg';
+import EffectSVGLarge from 'platformicons/svg_80x80/effect.svg';
import ElectronSVGLarge from 'platformicons/svg_80x80/electron.svg';
import ElixirSVGLarge from 'platformicons/svg_80x80/elixir.svg';
import EmberSVGLarge from 'platformicons/svg_80x80/ember.svg';
@@ -478,6 +480,10 @@ const formatToSVG = {
sm: EchoSVG,
lg: EchoSVGLarge,
},
+ effect: {
+ sm: EffectSVG,
+ lg: EffectSVGLarge,
+ },
electron: {
sm: ElectronSVG,
lg: ElectronSVGLarge,
@@ -985,6 +991,7 @@ export const PLATFORM_TO_ICON = {
'javascript-cordova': 'cordova',
'javascript-cloudflare': 'cloudflare',
'javascript-deno': 'deno',
+ 'javascript-effect': 'effect',
'javascript-electron': 'electron',
'javascript-ember': 'ember',
'javascript-express': 'express',