diff --git a/.env.example b/.env.example index 2075bd01721f4..aebaa89c72c28 100644 --- a/.env.example +++ b/.env.example @@ -3,5 +3,5 @@ # warning: variables prefixed with NEXT_PUBLIC_ will be made available to client-side code # be careful not to expose sensitive data (in this case your Algolia admin key) -NEXT_PUBLIC_ALGOLIA_APP_ID=OOK48W9UCL -NEXT_PUBLIC_ALGOLIA_SEARCH_KEY=ca98597f559459c216891b75989832f8 +NEXT_PUBLIC_ALGOLIA_APP_ID= +NEXT_PUBLIC_ALGOLIA_SEARCH_KEY= diff --git a/.env.production b/.env.production deleted file mode 100644 index 1f015186b4141..0000000000000 --- a/.env.production +++ /dev/null @@ -1,3 +0,0 @@ -GATSBY_ALGOLIA_APP_ID=OOK48W9UCL -GATSBY_ALGOLIA_SEARCH_KEY=ca98597f559459c216891b75989832f8 -GATSBY_ALGOLIA_INDEX_PREFIX=sentry- diff --git a/.env.test b/.env.test deleted file mode 100644 index 7cc4ce20f450f..0000000000000 --- a/.env.test +++ /dev/null @@ -1,5 +0,0 @@ -GATSBY_ALGOLIA_APP_ID=OOK48W9UCL -GATSBY_ALGOLIA_SEARCH_KEY=ca98597f559459c216891b75989832f8 -GATSBY_ALGOLIA_INDEX_PREFIX=test-sentry-gatsby- -ALGOLIA_ADMIN_KEY= -ALGOLIA_INDEX=0 diff --git a/.eslintrc.js b/.eslintrc.js index d0f9b645a7ccb..08a147474ab21 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,24 +1,10 @@ -/* eslint-env node */ -/* eslint import/no-nodejs-modules:0 */ - module.exports = { extends: ['sentry-docs', 'plugin:@next/next/recommended'], globals: { - jest: true, Atomics: 'readonly', SharedArrayBuffer: 'readonly', }, rules: { 'import/no-nodejs-modules': 'off', }, - overrides: [ - { - files: ['*.ts', '*.tsx'], - rules: { - // Reach is vendored into gatsby. They have their own webpack - // resolution for it which this eslint plugin can't seem to detect - 'import/no-unresolved': ['error', {ignore: ['@reach']}], - }, - }, - ], }; diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index b499857442771..e10ebbc1668fe 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -36,7 +36,7 @@ # /src/docs/product/discover-queries/ @getsentry/visibility # /src/docs/product/performance/ @getsentry/visibility -# /src/docs/product/cli/dif/ @getsentry/owners-native +# /src/docs/cli/dif.mdx @getsentry/owners-native # /.github/labels.yml @getsentry/open-source # /.github/workflows/react-to-product-owners-yml-changes.yml @getsentry/open-source @@ -51,4 +51,6 @@ # /src/platforms/javascript/common/session-replay/ @getsentry/replay @getsentry/replay-sdk-web # /src/wizard/javascript/replay-onboarding/ @getsentry/replay @getsentry/replay-sdk-web +# /src/docs/product/dev-toolbar/ @getsentry/replay + # ###### End Replays ####### diff --git a/.github/ISSUE_TEMPLATE/issue-content-01-sdks.yml b/.github/ISSUE_TEMPLATE/issue-content-01-sdks.yml new file mode 100644 index 0000000000000..370529657a9c8 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/issue-content-01-sdks.yml @@ -0,0 +1,61 @@ +name: "📝 SDK Documentation" +labels: ["Type: Content", "SDKs"] +description: Missing, incorrect, or unclear documentation of SDKs. +body: + - type: markdown + attributes: + value: |- + Is the documentation issue something you know how to fix? Consider contributing to Open Source by opening a PR to fix it instead! + - type: dropdown + id: area + attributes: + label: SDK + description: Which SDK documentation are we talking about? + options: + - Android SDK + - Apple SDK + - Dart SDK + - Elixir SDK + - Flutter SDK + - Go SDK + - Java SDK + - JavaScript SDK + - Kotlin Multiplatform SDK + - Native SDK + - .NET SDK + - PHP SDK + - PowerShell SDK + - Python SDK + - React Native SDK + - Ruby SDK + - Rust SDK + - Unity SDK + - Unreal Engine SDK + - Sentry CLI + - All JavaScript SDKs + - All Backend SDKs + - All Mobile SDKs + - All Gaming SDKs + - All SDKs + - Other + validations: + required: true + - type: textarea + id: description + attributes: + label: Description + description: What were you looking for/trying to do/expecting? + validations: + required: true + - type: textarea + id: solution + attributes: + label: Suggested Solution + description: If you have an idea on how we can solve this, please share. + validations: + required: false + - type: markdown + attributes: + value: |- + ## Thanks 🙏 + Check our [triage docs](https://open.sentry.io/triage/) for what to expect next. diff --git a/.github/ISSUE_TEMPLATE/issue-content.yml b/.github/ISSUE_TEMPLATE/issue-content-02-product.yml similarity index 63% rename from .github/ISSUE_TEMPLATE/issue-content.yml rename to .github/ISSUE_TEMPLATE/issue-content-02-product.yml index 23812bca8b1d7..64a09af570b6b 100644 --- a/.github/ISSUE_TEMPLATE/issue-content.yml +++ b/.github/ISSUE_TEMPLATE/issue-content-02-product.yml @@ -1,26 +1,16 @@ -name: "📝 Docs Content" -labels: "Type: Content" -description: Missing, incorrect, unclear documentation or code samples. +name: "📝 Product Documentation" +labels: ["Type: Content", "Product"] +description: Missing, incorrect, or unclear documentation of product features. body: - type: markdown attributes: value: |- Is the documentation issue something you know how to fix? Consider contributing to Open Source by opening a PR to fix it instead! - - type: dropdown - id: area - attributes: - label: Core or SDK? - description: What part of the Sentry documentation are we talking about? - options: - - Core Sentry product - - Platform/SDK - validations: - required: true - type: input id: area-specific attributes: label: Which part? Which one? - description: Which area of the core Sentry product, or which platform/SDK? + description: Which area of the core Sentry product? validations: required: true - type: textarea @@ -42,5 +32,3 @@ body: value: |- ## Thanks 🙏 Check our [triage docs](https://open.sentry.io/triage/) for what to expect next. - validations: - required: false diff --git a/.github/ISSUE_TEMPLATE/issue-content-03-develop.yml b/.github/ISSUE_TEMPLATE/issue-content-03-develop.yml new file mode 100644 index 0000000000000..7003d5c3a7a12 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/issue-content-03-develop.yml @@ -0,0 +1,38 @@ +name: "📝 Documentation on develop.sentry.dev" +labels: ["Type: Content", "Develop"] +description: Missing, incorrect, or unclear developer documentation. +body: + - type: markdown + attributes: + value: |- + Is the documentation issue something you know how to fix? Consider contributing to Open Source by opening a PR to fix it instead! + - type: input + id: area-specific + attributes: + label: Which section? + description: Which section of the developer documentation needs to be updated? + validations: + required: true + - type: input + id: page-url + attributes: + label: Page URL + description: Please provide the URL of the page which should be changed (if applicable). + - type: textarea + id: description + attributes: + label: Description + description: What were you looking for/trying to do/expecting? + validations: + required: true + - type: textarea + id: solution + attributes: + label: Suggested Solution + description: If you have an idea on how we can solve this, please share. + - type: markdown + attributes: + value: |- + ## Thanks 🙏 + Check our [triage docs](https://open.sentry.io/triage/) for what to expect next. + diff --git a/.github/labels.yml b/.github/labels.yml index be568a749afdb..a975630bce00b 100644 --- a/.github/labels.yml +++ b/.github/labels.yml @@ -17,6 +17,16 @@ color: F6F6F8 description: Pull requests that update a dependency file +# Issue types +- name: 'Type: Content' + color: FBCA04 +- name: 'Type: Platform' + color: 1D76DB + +# +- name: 'Develop' + color: F6F6F8 + # Impacts - name: 'Impact: Large' color: C83852 @@ -32,6 +42,8 @@ color: '584774' - name: 'Platform: Capacitor' color: '584774' +- name: 'Platform: CLI' + color: '584774' - name: 'Platform: Cocoa' color: '584774' - name: 'Platform: Cordova' @@ -40,14 +52,20 @@ color: '584774' - name: 'Platform: Elixir' color: '584774' +- name: 'Platform: Flutter' + color: '584774' - name: 'Platform: Go' color: '584774' +- name: 'Platform: iOS' + color: '584774' - name: 'Platform: Java' color: '584774' - name: 'Platform: JavaScript' color: '584774' - name: 'Platform: KMP' color: '584774' +- name: 'Platform: Native' + color: '584774' - name: 'Platform: PHP' color: '584774' - name: 'Platform: Python' @@ -67,6 +85,7 @@ - name: 'Platform: Xamarin' color: '584774' + # Waiting for Labels - name: 'Waiting for: Support' color: '8D5494' @@ -217,16 +236,36 @@ - name: 'Team: Web Frontend' color: 8D5494 description: team-web-sdk-frontend +- name: 'Team: Web Frontend SDKs' + color: 8D5494 + description: team-web-sdk-frontend - name: 'Team: Web SDK Backend' color: 8D5494 description: team-web-sdk-backend +- name: 'Team: Web Backend SDKs' + color: 8D5494 + description: team-web-sdk-backend - name: 'Team: Workflow' color: 8D5494 +- name: 'All SDKs' + color: 1D76DB +- name: 'SDKs' + color: 1D76DB +- name: 'Develop' + color: 8D5494 +- name: 'Do not merge' + color: 8D5494 +- name: 'Improvement' + color: 8D5494 +- name: 'Launch 🚀' + color: 8D5494 +- name: 'Product' + color: 8D5494 # Miscellaneous - name: API Docs color: 649B42 -- name: bug +- name: Bug color: F6F6F8 - name: Common content color: B0E299 @@ -279,3 +318,11 @@ color: F6F6F8 - name: release health color: F6F6F8 +- name: submodules + color: F6F6F8 +- name: '404' + color: F6F6F8 +- name: darkmode + color: F6F6F8 +- name: github_actions + color: F6F6F8 diff --git a/.github/workflows/algolia-index.yml b/.github/workflows/algolia-index.yml index 902e5d73315ac..56cf06aafc178 100644 --- a/.github/workflows/algolia-index.yml +++ b/.github/workflows/algolia-index.yml @@ -25,7 +25,7 @@ jobs: - 'develop-docs/**' - uses: oven-sh/setup-bun@v2 with: - bun-version: latest + bun-version: '1.1.34' - uses: actions/cache@v4 id: cache diff --git a/.github/workflows/bump-api-schema-sha.yml b/.github/workflows/bump-api-schema-sha.yml index 43581520d038a..850a2bc89c593 100644 --- a/.github/workflows/bump-api-schema-sha.yml +++ b/.github/workflows/bump-api-schema-sha.yml @@ -12,13 +12,19 @@ jobs: name: 'Bump API Schema SHA' steps: - uses: actions/checkout@v4.1.1 + - name: Get auth token + id: token + uses: actions/create-github-app-token@5d869da34e18e7287c1daad50e0b8ea0f506ce69 # v1.11.0 + with: + app-id: ${{ vars.SENTRY_INTERNAL_APP_ID }} + private-key: ${{ secrets.SENTRY_INTERNAL_APP_PRIVATE_KEY }} - name: 'Bump API Schema SHA' shell: bash env: # An elevated token is necessary because with plain github.token # GitHub does not recursively call workflows, which means CI does not # kick off for the PR we're about to create. - GITHUB_TOKEN: ${{ secrets.GH_RELEASE_PAT }} + GITHUB_TOKEN: ${{ steps.token.outputs.token }} run: | set -euo pipefail diff --git a/.github/workflows/enforce-version-convention.yml b/.github/workflows/enforce-version-convention.yml new file mode 100644 index 0000000000000..4ac32032f9353 --- /dev/null +++ b/.github/workflows/enforce-version-convention.yml @@ -0,0 +1,22 @@ +name: Enforce Version Conventions + +on: + push: + branches: [master] + pull_request: + branches: [master] + +jobs: + check-version-convention: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Install bun + uses: oven-sh/setup-bun@v2 + with: + bun-version: latest + + - name: Run script for checking conventions + run: bun scripts/check-version-conventions.ts diff --git a/.github/workflows/issue-sdk-label.yml b/.github/workflows/issue-sdk-label.yml new file mode 100644 index 0000000000000..03d4f5121ae5f --- /dev/null +++ b/.github/workflows/issue-sdk-label.yml @@ -0,0 +1,118 @@ +name: 'Tag issue with SDK label' + +on: + issues: + types: [opened] + +jobs: + add_labels: + name: Add package label + runs-on: ubuntu-latest + if: ${{ !github.event.issue.pull_request }} + steps: + - name: Get SDK name from issue body + # https://github.com/actions-ecosystem/action-regex-match + uses: actions-ecosystem/action-regex-match@v2 + id: packageName + with: + # Parse used package from issue body + text: ${{ github.event.issue.body }} + regex: '### SDK\n\n(.*)\n\n' + + - name: Map package to issue label + # https://github.com/kanga333/variable-mapper + uses: kanga333/variable-mapper@v0.3.0 + id: packageLabel + if: steps.packageName.outputs.match != '' + with: + key: '${{ steps.packageName.outputs.group1 }}' + # Note: Since this is handled as a regex, and JSON parse wrangles slashes /, we just use `.` instead + map: | + { + "Android.SDK": { + "label": "Platform: Android" + }, + "Apple.SDK": { + "label": "Platform: Cocoa" + }, + "Dart.SDK": { + "label": "Platform: Dart" + }, + "Elixir.SDK": { + "label": "Platform: Elixir" + }, + "Flutter.SDK": { + "label": "Platform: Flutter" + }, + "Go.SDK": { + "label": "Platform: Go" + }, + "Java.SDK": { + "label": "Platform: Java" + }, + "JavaScript.SDK": { + "label": "Platform: JavaScript" + }, + "Kotlin.Multiplatform.SDK": { + "label": "Platform: KMP" + }, + "Native.SDK": { + "label": "Platform: Native" + }, + ".NET.SDK": { + "label": "Platform: .NET" + }, + "PHP.SDK": { + "label": "Platform: PHP" + }, + "PowerShell.SDK": { + "label": "Platform: PowerShell" + }, + "Python.SDK": { + "label": "Platform: Python" + }, + "React.Native.SDK": { + "label": "Platform: React Native" + }, + "Ruby.SDK": { + "label": "Platform: Ruby" + }, + "Rust.SDK": { + "label": "Platform: Rust" + }, + "Unity.SDK": { + "label": "Platform: Unity" + }, + "Unreal.Engine.SDK": { + "label": "Platform: Unreal" + }, + "Sentry.CLI": { + "label": "Platform: CLI" + }, + "All.JavaScript.SDKs": { + "label": "Team: Web Frontend SDKs" + }, + "All.Backend.SDKs": { + "label": "Team: Web Backend SDKs" + }, + "All.Gaming.SDKs": { + "label": "Team: Web Backend SDKs" + }, + "All.Mobile.SDKs": { + "label": "Team: Mobile Platform" + }, + "All.SDKs": { + "label": "Team: SDKs" + }, + "Other": { + "label": "Team: SDKs" + } + } + export_to: output + + - name: Add package label if applicable + # Note: We only add the label if the issue is still open + if: steps.packageLabel.outputs.label != '' + uses: actions-ecosystem/action-add-labels@v1 + with: + labels: ${{ steps.packageLabel.outputs.label }} diff --git a/.github/workflows/lint-404s.yml b/.github/workflows/lint-404s.yml index f7bbf106b67b0..feed8937576c0 100644 --- a/.github/workflows/lint-404s.yml +++ b/.github/workflows/lint-404s.yml @@ -25,7 +25,7 @@ jobs: - 'platform-includes/**' dev-docs: - 'develop-docs/**' - - uses: oven-sh/setup-bun@v1 + - uses: oven-sh/setup-bun@v2 with: bun-version: latest diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml index 2227833071ca4..e6a92579e6ba7 100644 --- a/.github/workflows/prepare-release.yml +++ b/.github/workflows/prepare-release.yml @@ -8,22 +8,25 @@ on: force: description: Force a release even when there are release-blockers (optional) required: false - schedule: - # This is when we release the self-hosted repo - - cron: "1 18 15 * *" jobs: release: runs-on: ubuntu-latest name: "Release a new version" steps: + - name: Get auth token + id: token + uses: actions/create-github-app-token@5d869da34e18e7287c1daad50e0b8ea0f506ce69 # v1.11.0 + with: + app-id: ${{ vars.SENTRY_RELEASE_BOT_CLIENT_ID }} + private-key: ${{ secrets.SENTRY_RELEASE_BOT_PRIVATE_KEY }} - uses: actions/checkout@v4.1.1 with: - token: ${{ secrets.GH_RELEASE_PAT }} + token: ${{ steps.token.outputs.token }} fetch-depth: 0 - name: Prepare release uses: getsentry/action-prepare-release@v1 env: - GITHUB_TOKEN: ${{ secrets.GH_RELEASE_PAT }} + GITHUB_TOKEN: ${{ steps.token.outputs.token }} with: version: ${{ github.event.inputs.version }} force: ${{ github.event.inputs.force }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c05454110e14b..d6169966e66cf 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -57,7 +57,6 @@ jobs: with: github-token: ${{ steps.token.outputs.token }} - # TODO(mjq): Bring this back once tests are working. job_test: name: Test runs-on: ubuntu-latest @@ -72,5 +71,4 @@ jobs: - run: yarn install --frozen-lockfile if: steps.cache.outputs.cache-hit != 'true' - name: Run Tests - # run: yarn test - run: true + run: yarn test diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5436033d53fb5..d6f50a70afce2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -13,7 +13,7 @@ repos: - id: detect-private-key exclude: | (?x)^( - develop-docs/application/config.mdx| + develop-docs/backend/config.mdx| develop-docs/integrations/github.mdx| develop-docs/self-hosted/sso.mdx )$ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index dc48a423f9f82..b6df57d1bd1f2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,7 +11,12 @@ We use Next.js, `yarn` and `volta` to manage the environment. ``` cp .env.example .env.development yarn + +# Start dev server for user docs yarn dev + +# Start dev server for developer docs +yarn dev:developer-docs ``` With that, the repo is fully set up and you are ready to open local docs under http://localhost:3000 diff --git a/app/[[...path]]/page.tsx b/app/[[...path]]/page.tsx index 98ae8edae9b51..46110c8a03733 100644 --- a/app/[[...path]]/page.tsx +++ b/app/[[...path]]/page.tsx @@ -11,15 +11,24 @@ import {Home} from 'sentry-docs/components/home'; import {Include} from 'sentry-docs/components/include'; import {PlatformContent} from 'sentry-docs/components/platformContent'; import { + DocNode, getCurrentPlatformOrGuide, getDocsRootNode, + getNextNode, + getPreviousNode, nodeForPath, } from 'sentry-docs/docTree'; import {isDeveloperDocs} from 'sentry-docs/isDeveloperDocs'; -import {getDevDocsFrontMatter, getDocsFrontMatter, getFileBySlug} from 'sentry-docs/mdx'; +import { + getDevDocsFrontMatter, + getDocsFrontMatter, + getFileBySlug, + getVersionsFromDoc, +} from 'sentry-docs/mdx'; import {mdxComponents} from 'sentry-docs/mdxComponents'; import {setServerContext} from 'sentry-docs/serverContext'; -import {formatGuideOrPlatformTitle} from 'sentry-docs/utils'; +import {PaginationNavNode} from 'sentry-docs/types/paginationNavNode'; +import {stripVersion} from 'sentry-docs/versioning'; export async function generateStaticParams() { const docs = await (isDeveloperDocs ? getDevDocsFrontMatter() : getDocsFrontMatter()); @@ -37,7 +46,11 @@ export const dynamic = 'force-static'; const mdxComponentsWithWrapper = mdxComponents( {Include, PlatformContent}, - ({children, frontMatter}) => {children} + ({children, frontMatter, nextPage, previousPage}) => ( + + {children} + + ) ); function MDXLayoutRenderer({mdxSource, ...rest}) { @@ -45,14 +58,52 @@ function MDXLayoutRenderer({mdxSource, ...rest}) { return ; } -export default async function Page({params}: {params: {path?: string[]}}) { +export default async function Page(props: {params: Promise<{path?: string[]}>}) { + const params = await props.params; // get frontmatter of all docs in tree const rootNode = await getDocsRootNode(); + setServerContext({ rootNode, path: params.path ?? [], }); + if (!params.path && !isDeveloperDocs) { + return ; + } + + const pageNode = nodeForPath(rootNode, params.path ?? ''); + + if (!pageNode) { + // eslint-disable-next-line no-console + console.warn('no page node', params.path); + return notFound(); + } + + // gather previous and next page that will be displayed in the bottom pagination + const getPaginationDetails = ( + getNode: (node: DocNode) => DocNode | undefined | 'root', + page: PaginationNavNode | undefined + ) => { + if (page && 'path' in page && 'title' in page) { + return page; + } + + const node = getNode(pageNode); + + if (node === 'root') { + return {path: '', title: 'Welcome to Sentry'}; + } + + return node ? {path: node.path, title: node.frontmatter.title} : undefined; + }; + + const previousPage = getPaginationDetails( + getPreviousNode, + pageNode?.frontmatter?.previousPage + ); + const nextPage = getPaginationDetails(getNextNode, pageNode?.frontmatter?.nextPage); + if (isDeveloperDocs) { // get the MDX for the current doc and render it let doc: Awaited> | null = null; @@ -68,13 +119,17 @@ export default async function Page({params}: {params: {path?: string[]}}) { } const {mdxSource, frontMatter} = doc; // pass frontmatter tree into sidebar, rendered page + fm into middle, headers into toc - return ; - } - if (!params.path) { - return ; + return ( + + ); } - if (params.path[0] === 'api' && params.path.length > 1) { + if (params.path?.[0] === 'api' && params.path.length > 1) { const categories = await apiCategories(); const category = categories.find(c => c.slug === params?.path?.[1]); if (category) { @@ -88,13 +143,6 @@ export default async function Page({params}: {params: {path?: string[]}}) { } } - const pageNode = nodeForPath(rootNode, params.path); - if (!pageNode) { - // eslint-disable-next-line no-console - console.warn('no page node', params.path); - return notFound(); - } - // get the MDX for the current doc and render it let doc: Awaited> | null = null; try { @@ -109,17 +157,40 @@ export default async function Page({params}: {params: {path?: string[]}}) { } const {mdxSource, frontMatter} = doc; + // collect versioned files + const allFm = await getDocsFrontMatter(); + const versions = getVersionsFromDoc(allFm, pageNode.path); + // pass frontmatter tree into sidebar, rendered page + fm into middle, headers into toc. - return ; + return ( + + ); } type MetadataProps = { - params: { + params: Promise<{ path?: string[]; - }; + }>; }; -export async function generateMetadata({params}: MetadataProps): Promise { +// Helper function to clean up canonical tags missing leading or trailing slash +function formatCanonicalTag(tag: string) { + if (tag.charAt(0) !== '/') { + tag = '/' + tag; + } + if (tag.charAt(tag.length - 1) !== '/') { + tag = tag + '/'; + } + return tag; +} + +export async function generateMetadata(props: MetadataProps): Promise { + const params = await props.params; const domain = isDeveloperDocs ? 'https://develop.sentry.dev' : 'https://docs.sentry.io'; @@ -129,6 +200,7 @@ export async function generateMetadata({params}: MetadataProps): Promise - + + + + + + + ``` + It is recommended that you add the script tag at the bottom of the page so it doesn’t block other critical JavaScript. + +2. Call `window.SentryToolbar.init(initConfig)` to set up a toolbar instance on each page where you want to see the Dev Toolbar. Take care to also [conditionally load the toolbar in your production environment](#deploying-to-production-environments). + ```html + + ... + + ... + + + + + ``` + +3. Edit [Project Settings](https://sentry.io/orgredirect/organizations/:orgslug/settings/projects/) in Sentry so the Toolbar is allowed to connect from your dev, staging, and production domains. + ![Sentry's Dev Toolbar Settings Page](./img/sentry-project-settings-toolbar.png) + + +### Unmounting The Toolbar + +If you have called `SentryToolbar.init({...})` to render the toolbar, but now want to manually remove or unmount it from the page, you can call the cleanup function that is returned from `init()`. This will unmount all the injected HTML and CSS. Login credentials will not be removed, so you can re-insert the toolbar and still be authenticated. +```javascript +const unmountToolbar = window.SentryToolbar.init({ ... }); + +// sometime later... +unmountToolbar(); +``` + +## Init Configuration Options + +The following options can be passed into the `.init()` function. + +At minimum, you should be calling `.init()` with these two options: +```javascript +window.SentryToolbar.init({ + organizationSlug: 'acme', + projectIdOrSlug: 'website', +}); +``` +And you can include any additional options from this list: + +| Option | Type | Description | Default Value | +| ----- | ----- | ----- | ----- | +| `organizationSlug` | `string` | The organization that users should login to. For example \'acme\' | *Required Value* | +| `projectIdOrSlug` | `string \| number` | The project for which this website/webapp is associated. | *Required Value* | +| `environment (optional)` | `string \| string[] \| undefined` | The environment of this deployment. Used to narrow search results in the Toolbar UI. Set to `undefined` or `""` or `[]` if you want to see results from all environments. | `undefined` | +| `placement (optional)` | `'right-edge' \| 'bottom-right-corner'` | Where to render the toolbar on the screen. | `'right-edge'` | +| `theme (optional)` | `'system' \| 'dark' \| 'light'` | Whether to use dark or light mode. | `'system'` | +| `featureFlags (optional)` | `FeatureFlagAdapter \| undefined` | See [Implement FeatureFlagAdapter](/product/dev-toolbar/setup//#implement-feature-flag-adapter) below | `undefined` | +| `sentryOrigin (optional)` | `string \| undefined` | The origin where Sentry can be found. Used for loading the connection to Sentry, and generating links to the website. For example: `'https://acme.sentry.io'` | `'https://sentry.io'` | +| `domId (optional)` | `string \| undefined` | The `id` given to the \ that is created to contain the toolbar html. | `'sentry-toolbar'` | +| `debug (optional)` | `string \| undefined` | A comma separated string of debug targets to enable. Example: `'logging,state'`. If the list contains 'all' or 'true' then all targets will be enabled. Valid targets: `'logging' 'login-success' 'settings' 'state'` | `undefined` | +| `mountPoint (optional)` | `HTMLElement \| () => HTMLElement \| undefined` | Where to mount the toolbar in the DOM. | `document.body` | + +## Implement Feature Flag Adapter + +In order to integrate your feature flagging platform with the Dev Toolbar, you will need an adapter that can read flag data from your provider, and also store and retrieve a list of overrides to apply to your local browser session. + +We plan to [create adapters for OpenFeature and LaunchDarkly](https://github.com/getsentry/sentry-toolbar/issues/150) soon. + +The adapter interface is: +```javascript +type FlagValue = boolean | string | number | undefined; +type FlagMap = Record; +interface FeatureFlagAdapter { + /** + * All known flag names and their evaluated values. + */ + getFlagMap: () => Promise; + + /** + * Any overridden or manually set flags and values. + */ + getOverrides: () => Promise; + + /** + * Manually set a flag to be a specific value, overriding the evaluated value. + */ + setOverride: (name: string, override: FlagValue) => void; + + /** + * A callback to clear all overrides from this browser. + */ + clearOverrides: () => void; + + /** + * Deeplink into your external feature-flag provider and find out more about + * this specific flag. + */ + urlTemplate?: undefined | ((name: string) => string | URL | undefined); +} +``` + +[MockFeatureFlagAdapter.tsx](https://github.com/getsentry/sentry-toolbar/blob/main/src/env/demo/MockFeatureFlagAdapter.tsx) is an example adapter to use as a reference. + + +## Deploying To Dev and Staging Environments +Since the Dev Toolbar is deployed onto specific pages, it's strongly recommended that you consider which environments the toolbar should apply to. + +In dev and staging environments, you might want to *unconditionally* include the toolbar so that all developers and testers can use it and quickly go from the page they're looking at back to Sentry for further debugging. + +The code might look like this: +```javascript +const env = process.env.SENTRY_ENVIRONMENT || 'development'; + +const isDev = env === 'development' || env === 'staging'; +if (isDev ) { + SentryToolbar.init({ ... }); +} +``` + +## Deploying to Production Environments + +In production, it's strongly recommended to *conditionally* include the Dev Toolbar ` + + +``` diff --git a/jest-preprocess.js b/jest-preprocess.js deleted file mode 100644 index b2958a3486460..0000000000000 --- a/jest-preprocess.js +++ /dev/null @@ -1,8 +0,0 @@ -/* eslint-env node */ -/* eslint import/no-nodejs-modules:0 */ - -const babelOptions = { - presets: ['@babel/preset-typescript'], -}; - -module.exports = require('babel-jest').createTransformer(babelOptions); diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index e1ae9f2e710cc..0000000000000 --- a/jest.config.js +++ /dev/null @@ -1,25 +0,0 @@ -/* eslint-env node */ -/* eslint import/no-nodejs-modules:0 */ - -// https://www.gatsbyjs.com/docs/unit-testing/ -module.exports = { - transform: { - '^.+\\.(js|ts)x?$': `/jest-preprocess.js`, - }, - moduleNameMapper: { - '^sentry-docs/(.*)': '/src/$1', - '.+\\.(css|styl|less|sass|scss)$': `identity-obj-proxy`, - '.+\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': `/__mocks__/file-mock.js`, - // '^gatsby-page-utils/(.*)$': `gatsby-page-utils/dist/$1`, // Workaround for https://github.com/facebook/jest/issues/9771 - }, - testPathIgnorePatterns: [`node_modules`, `\\.cache`, `.*/public`], - transformIgnorePatterns: [`node_modules/(?!(gatsby|gatsby-script|gatsby-link)/)`], - globals: { - __PATH_PREFIX__: ``, - }, - testEnvironment: 'jsdom', - testEnvironmentOptions: { - url: `http://localhost`, - }, - setupFilesAfterEnv: ['/setup-test-env.js'], -}; diff --git a/next-env.d.ts b/next-env.d.ts index fd36f9494e2c2..725dd6f245153 100644 --- a/next-env.d.ts +++ b/next-env.d.ts @@ -3,4 +3,4 @@ /// // NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. +// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information. diff --git a/next.config.js b/next.config.js index bb3124301af2e..1c379a46624dc 100644 --- a/next.config.js +++ b/next.config.js @@ -1,27 +1,41 @@ const {redirects} = require('./redirects.js'); -const {codecovWebpackPlugin} = require('@codecov/webpack-plugin'); +const {codecovNextJSWebpackPlugin} = require('@codecov/nextjs-webpack-plugin'); const {withSentryConfig} = require('@sentry/nextjs'); +const outputFileTracingExcludes = process.env.NEXT_PUBLIC_DEVELOPER_DOCS + ? { + '/**/*': ['./.git/**/*', './apps/**/*', 'docs/**/*'], + } + : { + '/**/*': [ + './.git/**/*', + './apps/**/*', + 'develop-docs/**/*', + 'node_modules/@esbuild/darwin-arm64', + ], + '/platform-redirect': ['**/*.gif', 'public/mdx-images/**/*', '*.pdf'], + '\\[\\[\\.\\.\\.path\\]\\]': [ + 'docs/**/*', + 'node_modules/prettier/plugins', + 'node_modules/rollup/dist', + ], + 'sitemap.xml': ['docs/**/*', 'public/mdx-images/**/*', '*.gif', '*.pdf', '*.png'], + }; + /** @type {import('next').NextConfig} */ const nextConfig = { pageExtensions: ['js', 'jsx', 'mdx', 'ts', 'tsx'], - trailingSlash: true, - - experimental: { - serverComponentsExternalPackages: ['rehype-preset-minify'], - outputFileTracingExcludes: { - '/**/*': ['./.git/**/*', './apps/**/*'], - }, - }, - - webpack: (config, _options) => { + serverExternalPackages: ['rehype-preset-minify'], + outputFileTracingExcludes, + webpack: (config, options) => { config.plugins.push( - codecovWebpackPlugin({ + codecovNextJSWebpackPlugin({ enableBundleAnalysis: typeof process.env.CODECOV_TOKEN === 'string', bundleName: 'sentry-docs', uploadToken: process.env.CODECOV_TOKEN, + webpack: options.webpack, }) ); @@ -32,6 +46,13 @@ const nextConfig = { DEVELOPER_DOCS_: process.env.NEXT_PUBLIC_DEVELOPER_DOCS, }, redirects, + // https://github.com/vercel/next.js/discussions/48324#discussioncomment-10748690 + cacheHandler: require.resolve( + 'next/dist/server/lib/incremental-cache/file-system-cache.js' + ), + sassOptions: { + silenceDeprecations: ['legacy-js-api'], + }, }; module.exports = withSentryConfig(nextConfig, { @@ -67,3 +88,11 @@ module.exports = withSentryConfig(nextConfig, { applicationKey: 'sentry-docs', }, }); + +process.on('warning', warning => { + if (warning.code === 'DEP0040') { + // Ignore punnycode deprecation warning, we don't control its usage + return; + } + console.warn(warning); // Log other warnings +}); diff --git a/package.json b/package.json index 95b9a09ef2977..8d47e334b1eb4 100644 --- a/package.json +++ b/package.json @@ -18,10 +18,9 @@ "dev": "yarn enforce-redirects && concurrently \"yarn sidecar\" \"node ./src/hotReloadWatcher.mjs\" \"next dev\"", "dev:developer-docs": "yarn enforce-redirects && NEXT_PUBLIC_DEVELOPER_DOCS=1 yarn dev", "build:developer-docs": "yarn enforce-redirects && git submodule init && git submodule update && NEXT_PUBLIC_DEVELOPER_DOCS=1 yarn build", - "build": "yarn enforce-redirects && prisma generate && next build", + "build": "yarn enforce-redirects && next build", "vercel:build:developer-docs": "yarn enforce-redirects && git submodule init && git submodule update && NEXT_PUBLIC_DEVELOPER_DOCS=1 yarn build", "start": "next start", - "migrate:dev": "dotenv -e .env.development -- yarn prisma migrate reset", "lint": "next lint", "lint:ts": "tsc --skipLibCheck", "lint:docs": "bin/lint-docs.ts", @@ -31,57 +30,56 @@ "lint:prettier:fix": "prettier --write \"./{src,app,scripts}/**/*.{md,mdx,ts,tsx,js,jsx,mjs}\"", "lint:fix": "yarn run lint:prettier:fix && yarn run lint:eslint:fix", "sidecar": "yarn spotlight-sidecar", - "test": "jest", + "test": "vitest", + "test:ci": "vitest run", "enforce-redirects": "node ./scripts/no-vercel-json-redirects.mjs" }, - "prisma": { - "seed": "node prisma/seed/seed.mjs" - }, "dependencies": { "@ariakit/react": "^0.4.5", - "@auth/prisma-adapter": "^1.2.0", "@emotion/core": "^11.0.0", "@emotion/react": "^11.11.0", "@emotion/styled": "^11.0.0", "@google-cloud/storage": "^7.7.0", "@mdx-js/loader": "^3.0.0", "@mdx-js/react": "^3.0.0", - "@next/mdx": "^14.2.4", "@popperjs/core": "^2.11.8", "@prettier/plugin-xml": "^3.3.1", - "@prisma/client": "^5.8.1", "@radix-ui/colors": "^3.0.0", - "@radix-ui/react-collapsible": "^1.0.3", - "@radix-ui/react-dropdown-menu": "^2.0.6", - "@radix-ui/react-icons": "^1.3.0", - "@radix-ui/react-tabs": "^1.0.4", - "@radix-ui/react-toolbar": "^1.0.4", - "@radix-ui/themes": "^2.0.3", + "@radix-ui/react-collapsible": "^1.1.1", + "@radix-ui/react-dropdown-menu": "^2.1.2", + "@radix-ui/react-icons": "^1.3.2", + "@radix-ui/react-tabs": "^1.1.1", + "@radix-ui/react-toolbar": "^1.1.0", + "@radix-ui/react-tooltip": "^1.1.4", + "@radix-ui/themes": "^3.1.3", "@sentry-internal/global-search": "^1.1.0", - "@sentry/nextjs": "8.20.0", + "@sentry/nextjs": "8.36.0", "@types/mdx": "^2.0.9", "algoliasearch": "^4.23.3", + "dompurify": "3.1.7", "esbuild": "^0.19.8", "framer-motion": "^10.12.16", "gray-matter": "^4.0.3", + "hast-util-to-jsx-runtime": "^2.3.2", "hastscript": "^8.0.0", "image-size": "^1.1.1", "js-cookie": "^3.0.5", "js-yaml": "^4.1.0", "match-sorter": "^6.3.4", "mdx-bundler": "^10.0.1", + "mermaid": "^11.4.0", "micromark": "^4.0.0", - "next": "14.2.4", + "next": "15.1.2", "next-mdx-remote": "^4.4.1", + "next-plausible": "^3.12.4", "next-themes": "^0.3.0", "nextjs-toploader": "^1.6.6", "parse-numeric-range": "^1.3.0", - "platformicons": "^6.0.2", + "platformicons": "^7.0.3", "prism-sentry": "^1.0.2", - "prismjs": "^1.27.0", "query-string": "^6.13.1", - "react": "^18", - "react-dom": "^18", + "react": "rc", + "react-dom": "rc", "react-feather": "^2.0.8", "react-popper": "^2.3.0", "react-select": "^5.7.3", @@ -97,7 +95,7 @@ "remark-prism": "^1.3.6", "rss": "^1.2.2", "sass": "^1.69.5", - "search-insights": "^2.2.3", + "search-insights": "^2.17.2", "server-only": "^0.0.1", "sharp": "^0.33.4", "tailwindcss-scoped-preflight": "^3.0.4", @@ -105,34 +103,39 @@ }, "devDependencies": { "@babel/preset-typescript": "^7.15.0", - "@codecov/webpack-plugin": "^0.0.1-beta.2", - "@spotlightjs/spotlight": "^2.0.0-alpha.1", + "@codecov/nextjs-webpack-plugin": "^1.0.0", + "@spotlightjs/spotlight": "^2.5.0", "@tailwindcss/forms": "^0.5.7", "@tailwindcss/typography": "^0.5.10", + "@types/dompurify": "3.0.5", "@types/node": "^20", - "@types/react": "^18", - "@types/react-dom": "^18", + "@types/react": "18.3.12", + "@types/react-dom": "18.3.1", "@types/ws": "^8.5.10", - "@untitaker/quicktype-core-with-markdown": "^6.0.71", "autoprefixer": "^10.4.17", - "concurrently": "^8.2.2", + "concurrently": "^9.1.0", "dotenv-cli": "^7.4.1", "eslint": "^8", - "eslint-config-next": "14.0.1", - "eslint-config-sentry-docs": "^1.118.0", + "eslint-config-next": "15.0.3", + "eslint-config-sentry-docs": "^2.10.0", "jest": "^29.5.0", "jest-dom": "^4.0.0", "jest-environment-jsdom": "^29.5.0", "postcss": "^8.4.33", "prettier": "^3.2.4", - "prisma": "^5.8.1", "tailwindcss": "^3.4.1", "ts-node": "^10.9.1", "typescript": "^5", + "vite-tsconfig-paths": "^5.0.1", + "vitest": "^2.1.1", "ws": "^8.17.1" }, + "resolutions": { + "dompurify": "3.1.7", + "@types/dompurify": "3.0.5" + }, "volta": { "node": "20.11.0", - "yarn": "1.22.21" + "yarn": "1.22.22" } } diff --git a/platform-includes/capture-error/apple.mdx b/platform-includes/capture-error/apple.mdx index 460bd3dc786d8..0689a564473f8 100644 --- a/platform-includes/capture-error/apple.mdx +++ b/platform-includes/capture-error/apple.mdx @@ -97,26 +97,55 @@ do { ## Capturing Uncaught Exceptions -By default, macOS applications do not crash whenever an uncaught exception occurs. To enable this with Sentry: + + +The SDK can't install the uncaught exception handler if a debugger is attached. To test these locally, ensure you've unchecked the "Debug executable" option in your app's Xcode scheme's Run action. + + + +By default, macOS applications don't crash whenever an uncaught exception occurs. As the Cocoa Frameworks are generally not [exception-safe on macOS](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/Exceptions/Articles/ExceptionsAndCocoaFrameworks.html), the application could end up in a corrupted state when an uncaught exception occurs. Therefore, we recommend changing your application configuration so it crashes on uncaught NSExceptions. To achieve this, you can use the `SentryCrashExceptionApplication`, or enable the option `enableUncaughtNSExceptionReporting`, available as of version [8.40.0](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8400). Both options set the `NSApplicationCrashOnExceptions` on the `NSUserDefaults` so your application crashes on uncaught NSExceptions and send the crash report to Sentry. + +Once you have configured your application to crash whenever an uncaught exception occurs, the Apple SDK will capture those automatically. You don't need to manually call `captureException`. + +### SentryCrashExceptionApplication + + + +Don't use this option together with the `enableUncaughtNSExceptionReporting` option. Enabling both features can lead to duplicated reports. + + + +To enable this with Sentry: 1. Open the application's `Info.plist` file 2. Search for `Principal class` (the entry is expected to be `NSApplication`) 3. Replace `NSApplication` with `SentryCrashExceptionApplication` -Alternatively, you can set the `NSApplicationCrashOnExceptions` flag: +### Uncaught NSException Reporting Option -```swift {tabTitle:Swift} {4-4} -import Sentry + -func applicationDidFinishLaunching(_ aNotification: Notification) { - UserDefaults.standard.register(defaults: ["NSApplicationCrashOnExceptions": true]) +Don't use this option together with the `SentryCrashExceptionApplication`. Enabling both features can lead to duplicated reports. - SentrySDK.start { options in - // ... - } + + +As of version [8.40.0](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8400), you can enable uncaught NSException reporting by setting the `enableUncaughtNSExceptionReporting` option to `true`. This is especially useful for applications using the SwiftUI lifecycle in combination with the [`NSApplicationDelegateAdaptor`](https://developer.apple.com/documentation/swiftui/nsapplicationdelegateadaptor), for which you can't easily use the `SentryCrashExceptionApplication` class. + +```swift {tabTitle:Swift} +import Sentry - return true +SentrySDK.start { options in + options.dsn = "___PUBLIC_DSN___" + options.enableUncaughtNSExceptionReporting = true } ``` +```objc {tabTitle:Objective-C} +@import Sentry; + +[SentrySDK startWithConfigureOptions:^(SentryOptions *options) { + options.dsn = @"___PUBLIC_DSN___"; + options.enableUncaughtNSExceptionReporting = YES; +}]; +``` diff --git a/platform-includes/capture-error/dotnet.mdx b/platform-includes/capture-error/dotnet.mdx index 826ca5ec71c54..ecd15a9067573 100644 --- a/platform-includes/capture-error/dotnet.mdx +++ b/platform-includes/capture-error/dotnet.mdx @@ -1,8 +1,6 @@ In C# you can capture any exception object that you caught: ```csharp -using Sentry; - try { AFunctionThatMightFail(); diff --git a/platform-includes/capture-error/flutter.mdx b/platform-includes/capture-error/flutter.mdx index 401ae10e443ea..c87d2c033f046 100644 --- a/platform-includes/capture-error/flutter.mdx +++ b/platform-includes/capture-error/flutter.mdx @@ -1,4 +1,32 @@ -- Flutter-specific errors, such as using `FlutterError.onError`, are captured automatically -- The SDK already runs your init `callback` on an error handler, such as [`runZonedGuarded`](https://api.flutter.dev/flutter/dart-async/runZonedGuarded.html) on Flutter versions prior to `3.3`, or [`PlatformDispatcher.onError`](https://api.flutter.dev/flutter/dart-ui/PlatformDispatcher/onError.html) on Flutter versions 3.3 and higher, so that errors are automatically captured. +### FlutterError.onError + +Flutter-specific errors, such as using `FlutterError.onError`, are captured automatically. + +### PlatformDispatcher.onError / runZonedGuarded + +The SDK already runs your init `callback` on an error handler, such as [`runZonedGuarded`](https://api.flutter.dev/flutter/dart-async/runZonedGuarded.html) on Flutter versions prior to `3.3`, or [`PlatformDispatcher.onError`](https://api.flutter.dev/flutter/dart-ui/PlatformDispatcher/onError.html) on Flutter versions 3.3 and higher, so that errors are automatically captured. + +If you need a custom error handling zone which also provides automatic error reporting and breadcrumb tracking, use `Sentry.runZonedGuarded`. It wraps Dart's native [`runZonedGuarded`](https://api.flutter.dev/flutter/dart-async/runZonedGuarded.html) function with Sentry-specific functionality. + +This function automatically records calls to `print()` as `Breadcrumbs` and can be configured using `SentryOptions.enablePrintBreadcrumbs`. + +```dart +Sentry.runZonedGuarded(() async { + WidgetsBinding.ensureInitialized(); + + // Errors before init will not be handled by Sentry + + await SentryFlutter.init( + (options) { + ... + }, + appRunner: () => runApp(MyApp()), + ); +} (error, stackTrace) { + // Automatically sends errors to Sentry, no need to do any + // captureException calls on your part. + // On top of that, you can do your own custom stuff in this callback. +}); +``` diff --git a/platform-includes/capture-error/go.mdx b/platform-includes/capture-error/go.mdx index 2da69a9f43b63..d008872015d35 100644 --- a/platform-includes/capture-error/go.mdx +++ b/platform-includes/capture-error/go.mdx @@ -1,10 +1,11 @@ -To capture an event in Go, you can pass any struct implementing an `error` interface to `CaptureException()`. If you use a 3rd party library instead of native `errors` package, we'll do our best to extract a stack trace. +To capture an event in Go, you can pass any struct implementing an `error` interface to `CaptureException()`. If you use a 3rd party library instead of the native `errors` package and it implements the `Unwrap() error` or `Cause() error` method, we'll follow the chain of errors and extract the stack trace from the root cause. The SDK is fully compatible with (but not limited to): - `github.com/pkg/errors` - `github.com/go-errors/errors` - `github.com/pingcap/errors` +- `github.com/rotisserie/eris` If there is an errors package that's not working out of the box, let us know! diff --git a/platform-includes/capture-message/dotnet.mdx b/platform-includes/capture-message/dotnet.mdx index 71374067cd53a..1a3999acff642 100644 --- a/platform-includes/capture-message/dotnet.mdx +++ b/platform-includes/capture-message/dotnet.mdx @@ -1,11 +1,7 @@ ```csharp -using Sentry; - SentrySdk.CaptureMessage("Something went wrong"); ``` ```fsharp -open Sentry - SentrySdk.CaptureMessage("Something went wrong") ``` diff --git a/platform-includes/capture-message/javascript.mdx b/platform-includes/capture-message/javascript.mdx index b963b0ea9b3d3..79b31e30ad65c 100644 --- a/platform-includes/capture-message/javascript.mdx +++ b/platform-includes/capture-message/javascript.mdx @@ -1,3 +1,7 @@ ```javascript Sentry.captureMessage("Something went wrong"); + +// optionally specify the severity level: +// "fatal" | "error" | "warning" | "log" | "debug" | "info" (default) +Sentry.captureMessage("Something went wrong", "warning"); ``` diff --git a/platform-includes/capture-message/native.mdx b/platform-includes/capture-message/native.mdx index b715586c42349..b09c560aa43a5 100644 --- a/platform-includes/capture-message/native.mdx +++ b/platform-includes/capture-message/native.mdx @@ -37,4 +37,4 @@ sentry_value_set_by_key(event, "contexts", contexts); sentry_capture_event(event); ``` -For the full list of supported values, see [_Event Payloads_](https://develop.sentry.dev/sdk/event-payloads/) and linked documents. +For the full list of supported values, see [_Event Payloads_](https://develop.sentry.dev/sdk/data-model/event-payloads/) and linked documents. diff --git a/platform-includes/capture-message/unreal.mdx b/platform-includes/capture-message/unreal.mdx index b7ac24fc23296..e45126e4a1728 100644 --- a/platform-includes/capture-message/unreal.mdx +++ b/platform-includes/capture-message/unreal.mdx @@ -86,4 +86,4 @@ Scoped events capturing is supported only on macOS, iOS and Android platforms. -For the full list of supported values, check out [_Event Payloads_](https://develop.sentry.dev/sdk/event-payloads/) and linked documents. +For the full list of supported values, check out [_Event Payloads_](https://develop.sentry.dev/sdk/data-model/event-payloads/) and linked documents. diff --git a/platform-includes/configuration/allow-urls/dart.mdx b/platform-includes/configuration/allow-urls/dart.mdx new file mode 100644 index 0000000000000..f920476b3a816 --- /dev/null +++ b/platform-includes/configuration/allow-urls/dart.mdx @@ -0,0 +1,5 @@ +```dart {2} +await Sentry.init((options) { + options.allowUrls = ["^https://sentry.com.*\$", "my-custom-domain"]; +}); +``` diff --git a/platform-includes/configuration/allow-urls/flutter.mdx b/platform-includes/configuration/allow-urls/flutter.mdx new file mode 100644 index 0000000000000..5fbc3635079da --- /dev/null +++ b/platform-includes/configuration/allow-urls/flutter.mdx @@ -0,0 +1,5 @@ +```dart {2} +await SentryFlutter.init((options) { + options.allowUrls = ["^https://sentry.com.*\$", "my-custom-domain"]; +}); +``` diff --git a/platform-includes/configuration/auto-session-tracking/flutter.mdx b/platform-includes/configuration/auto-session-tracking/flutter.mdx index 61702e012fefb..040243fbe23f1 100644 --- a/platform-includes/configuration/auto-session-tracking/flutter.mdx +++ b/platform-includes/configuration/auto-session-tracking/flutter.mdx @@ -1,29 +1,21 @@ To benefit from the health data, you must use at least version 4.0.0 of the Flutter SDK. -By default, the session is terminated once the application is in the background for more than 30 seconds. You can change the time out with the option named `sessionTrackingIntervalMillis`. It takes the amount in milliseconds. For example, to configure it to be 60 seconds: +#### Session Timeout -```dart -import 'package:flutter/widgets.dart'; -import 'package:sentry_flutter/sentry_flutter.dart'; +By default, the session is terminated once the application is in the background for more than `30 seconds`. You can change this default by setting the `autoSessionTrackingInterval` option to a `Duration` of your choosing. -Future main() async { - await SentryFlutter.init( - (options) => options.autoSessionTrackingInterval = const Duration(milliseconds: 60000) - appRunner: () => runApp(MyApp()), - ); -} +```dart {2} +SentryFlutter.init((options) { + options.autoSessionTrackingInterval = const Duration(seconds: 60) +}); ``` -If you'd like to opt out of this feature, you can do so using options. +#### Disable Auto Session Tracking -```dart -import 'package:flutter/widgets.dart'; -import 'package:sentry_flutter/sentry_flutter.dart'; +If you'd like to opt out of capturing sessions, set the `enableAutoSessionTracking` option to `false`. If you disable this feature, release health will not be available. -Future main() async { - await SentryFlutter.init( - (options) => options.enableAutoSessionTracking = true, // it's enabled by default - appRunner: () => runApp(MyApp()), - ); -} +```dart {2} +SentryFlutter.init((options) { + options.enableAutoSessionTracking = false; +}); ``` diff --git a/platform-includes/configuration/auto-session-tracking/javascript.electron.mdx b/platform-includes/configuration/auto-session-tracking/javascript.electron.mdx index 369d998135246..7367794a79fdf 100644 --- a/platform-includes/configuration/auto-session-tracking/javascript.electron.mdx +++ b/platform-includes/configuration/auto-session-tracking/javascript.electron.mdx @@ -10,6 +10,8 @@ Due to the nature of `crashed` and `abnormal` exits, these sessions are finished To receive data on user adoption, such as users crash free rate percentage, and the number of users that have adopted a specific release, set the user on the [`initialScope`](/platforms/javascript/configuration/options/#initial-scope) when initializing the SDK. +{/* TODO(v9): When electron does a new major, update this since autoSessionTracking got removed */} + To disable sending sessions, set the `autoSessionTracking` flag to `false`: ```javascript diff --git a/platform-includes/configuration/auto-session-tracking/javascript.mdx b/platform-includes/configuration/auto-session-tracking/javascript.mdx index 3611241228df3..bb56140881db0 100644 --- a/platform-includes/configuration/auto-session-tracking/javascript.mdx +++ b/platform-includes/configuration/auto-session-tracking/javascript.mdx @@ -1,3 +1,5 @@ +{/* TODO(v9): Update this for the new behaviour (sessions are persisted in sessionStorage or memory) */} + We create a session for every page load. For single-page applications, we will create a new session for every navigation change (History API). We mark the session as: @@ -14,3 +16,17 @@ Sentry.init({ autoSessionTracking: false, // default: true }); ``` + +{/* TODO(v9): Remove this notice? */} + + + + + +{/* We don't use platform links here because we always have to link to node and browser here and doing a conditional just for that feels overkill. */} + +Starting with SDK version 8.43.0 and up, the `autoSessionTracking` option has been deprecated. You can use the [BrowserSession integration](/platforms/javascript/configuration/integrations/browsersession/) in browser environments and the [Http integration](/platforms/javascript/guides/node/configuration/integrations/http/) (via the `trackIncomingRequestsAsSessions` option) in Node.js runtime. + + + + diff --git a/platform-includes/configuration/auto-session-tracking/javascript.node.mdx b/platform-includes/configuration/auto-session-tracking/javascript.node.mdx index 5a0389c224b7d..c873abdc882f0 100644 --- a/platform-includes/configuration/auto-session-tracking/javascript.node.mdx +++ b/platform-includes/configuration/auto-session-tracking/javascript.node.mdx @@ -1,14 +1,7 @@ Release health on the server side is tracked in two different modes: - Single sessions that represent a node process; for example, a CLI application. In single sessions mode, the SDK creates a session for every node process. A session is started on `init` of the SDK, and ends when the process is exited. -- Session aggregates represent requests. In session aggregates mode, sessions will be recorded differently and will represent the lifetime of requests. For the SDK to be able to capture request mode sessions, you must enable the `requestHandler` of the [Express middleware](/platforms/javascript/guides/express). - -```javascript -// The Sentry request handler middleware must be added before any other handlers -app.use(Sentry.Handlers.requestHandler()); -``` - -The SDK automatically determines which mode release health will operate in. By default, the SDK runs in single sessions mode. However, if the `requestHandler` Express middleware is enabled, release health is automatically toggled to session aggregates mode. If the `requestHandler` Express middleware is not enabled, session aggregates mode will not be enabled and sessions will represent the health of the web server application process if, for example, a web server application is being run. +- Session aggregates represent requests. In session aggregates mode, sessions will be recorded differently and will represent the lifetime of requests. Sessions will automatically be aggregated for HTTP requests in your application. We mark the session as crashed if an _unhandled error_ reached our `errorHandler` middleware. @@ -21,3 +14,17 @@ Sentry.init({ autoSessionTracking: false, // default: true }); ``` + +{/* TODO(v9): Remove this notice? */} + + + + + +{/* We don't use platform links here because we always have to link to node and browser here and doing a conditional just for that feels overkill. */} + +Starting with SDK version 8.43.0 and up, the `autoSessionTracking` option has been deprecated. You can use the [BrowserSession integration](/platforms/javascript/configuration/integrations/browsersession/) in browser environments and the [Http integration](/platforms/javascript/guides/node/configuration/integrations/http/) (via the `trackIncomingRequestsAsSessions` option) in Node.js runtime. + + + + diff --git a/platform-includes/configuration/before-breadcrumb-hint/dart.mdx b/platform-includes/configuration/before-breadcrumb-hint/dart.mdx index 32ef5e78584f0..a25fa09f6a203 100644 --- a/platform-includes/configuration/before-breadcrumb-hint/dart.mdx +++ b/platform-includes/configuration/before-breadcrumb-hint/dart.mdx @@ -1,11 +1,7 @@ -```dart -import 'package:sentry/sentry.dart'; - -Breadcrumb? beforeBreadcrumb(Breadcrumb? breadcrumb, Hint hint) { - return hint is MyHint ? null : crumb; -} - -Future main() async { - await Sentry.init((options) => options.beforeBreadcrumb = beforeBreadcrumb); -} +```dart {3} +await Sentry.init((options) { + options.beforeBreadcrumb = (breadcrumb, hint) { + return hint is MyHint ? null : crumb; + }; +}); ``` diff --git a/platform-includes/configuration/before-breadcrumb-hint/flutter.mdx b/platform-includes/configuration/before-breadcrumb-hint/flutter.mdx new file mode 100644 index 0000000000000..75b7e191823cc --- /dev/null +++ b/platform-includes/configuration/before-breadcrumb-hint/flutter.mdx @@ -0,0 +1,7 @@ +```dart {3} +await SentryFlutter.init((options) { + options.beforeBreadcrumb = (breadcrumb, hint) { + return hint is MyHint ? null : crumb; + }; +}); +``` diff --git a/platform-includes/configuration/before-send-fingerprint/dart.mdx b/platform-includes/configuration/before-send-fingerprint/dart.mdx index 426cd8c042480..4f62cfb37fa97 100644 --- a/platform-includes/configuration/before-send-fingerprint/dart.mdx +++ b/platform-includes/configuration/before-send-fingerprint/dart.mdx @@ -1,14 +1,10 @@ -```dart -import 'package:sentry/sentry.dart'; - -FutureOr beforeSend(SentryEvent event, Hint hint) async { - if (event.throwable is DatabaseException) { - event = event.copyWith(fingerprint: ['database-connection-error']); - } - return event; -} - -Future main() async { - await Sentry.init((options) => options.beforeSend = beforeSend); -} +```dart {3-6} +await Sentry.init((options) { + options.beforeSend = (event, hint) { + if (event.throwable is DatabaseException) { + event = event.copyWith(fingerprint: ['database-connection-error']); + } + return event; + }; +}); ``` diff --git a/platform-includes/configuration/before-send-fingerprint/flutter.mdx b/platform-includes/configuration/before-send-fingerprint/flutter.mdx new file mode 100644 index 0000000000000..459286e11c4fa --- /dev/null +++ b/platform-includes/configuration/before-send-fingerprint/flutter.mdx @@ -0,0 +1,10 @@ +```dart {3-6} +await SentryFlutter.init((options) { + options.beforeSend = (event, hint) { + if (event.throwable is DatabaseException) { + event = event.copyWith(fingerprint: ['database-connection-error']); + } + return event; + }; +}); +``` diff --git a/platform-includes/configuration/before-send-hint/dart.mdx b/platform-includes/configuration/before-send-hint/dart.mdx index 0f17d38c06042..0cc46ecccd47e 100644 --- a/platform-includes/configuration/before-send-hint/dart.mdx +++ b/platform-includes/configuration/before-send-hint/dart.mdx @@ -1,11 +1,7 @@ -```dart -import 'package:sentry/sentry.dart'; - -FutureOr beforeSend(SentryEvent event, Hint hint) async { - return hint is MyHint ? null : event; -} - -Future main() async { - await Sentry.init((options) => options.beforeSend = beforeSend); -} +```dart {3} +await Sentry.init((options) { + options.beforeSend = (event, hint) { + return hint is MyHint ? null : event; + }; +}); ``` diff --git a/platform-includes/configuration/before-send-hint/flutter.mdx b/platform-includes/configuration/before-send-hint/flutter.mdx new file mode 100644 index 0000000000000..42d9d971aef2f --- /dev/null +++ b/platform-includes/configuration/before-send-hint/flutter.mdx @@ -0,0 +1,7 @@ +```dart {3} +await SentryFlutter.init((options) { + options.beforeSend = (event, hint) { + return hint is MyHint ? null : event; + }; +}); +``` diff --git a/platform-includes/configuration/before-send-span/javascript.mdx b/platform-includes/configuration/before-send-span/javascript.mdx index bcbba89531bec..7f7ee5f933608 100644 --- a/platform-includes/configuration/before-send-span/javascript.mdx +++ b/platform-includes/configuration/before-send-span/javascript.mdx @@ -1,3 +1,5 @@ + + ```javascript Sentry.init({ dsn: "___PUBLIC_DSN___", diff --git a/platform-includes/configuration/before-send-transaction/dotnet.mdx b/platform-includes/configuration/before-send-transaction/dotnet.mdx index bd9ab2cafead9..b76585ef2a028 100644 --- a/platform-includes/configuration/before-send-transaction/dotnet.mdx +++ b/platform-includes/configuration/before-send-transaction/dotnet.mdx @@ -1,8 +1,6 @@ A `Func` can be used to update the transaction or drop it by returning `null` before it gets sent to Sentry. For example: ```csharp -using Sentry; - // Add this to the SDK initialization callback options.SetBeforeSendTransaction((sentryTransaction, hint) => { @@ -14,4 +12,4 @@ options.SetBeforeSendTransaction((sentryTransaction, hint) => return sentryTransaction; }); -``` \ No newline at end of file +``` diff --git a/platform-includes/configuration/before-send-transaction/powershell.mdx b/platform-includes/configuration/before-send-transaction/powershell.mdx index 5edc3107d0f09..e31a3ff234982 100644 --- a/platform-includes/configuration/before-send-transaction/powershell.mdx +++ b/platform-includes/configuration/before-send-transaction/powershell.mdx @@ -7,7 +7,7 @@ Start-Sentry { # Add this to the SDK initialization callback $_.SetBeforeSendTransaction([System.Func[Sentry.SentryTransaction, Sentry.SentryTransaction]] { param([Sentry.SentryTransaction]$sentryTransaction) - + # Modify the transaction if ($sentryTransaction.Operation -eq 'http.server') { @@ -20,9 +20,6 @@ Start-Sentry { ``` ```csharp -using Sentry; - - options.SetBeforeSendTransaction((sentryTransaction, hint) => { }); diff --git a/platform-includes/configuration/before-send/dart.mdx b/platform-includes/configuration/before-send/dart.mdx index 470996be3120a..1f7a266b6deb7 100644 --- a/platform-includes/configuration/before-send/dart.mdx +++ b/platform-includes/configuration/before-send/dart.mdx @@ -1,13 +1,7 @@ -```dart -import 'package:sentry/sentry.dart'; - -FutureOr beforeSend(SentryEvent event, Hint hint) async { - // Modify the event here: - event = event.copyWith(serverName: null); // Don't send server names. - return event; -} - -Future main() async { - await Sentry.init((options) => options.beforeSend = beforeSend); -} +```dart {3} +await Sentry.init((options) { + options.beforeSend = (event, hint) { + return event.copyWith(serverName: null); // Don't send server names. + }; +}); ``` diff --git a/platform-includes/configuration/before-send/dotnet.mdx b/platform-includes/configuration/before-send/dotnet.mdx index fb320328d5eaa..8b866eeb8bb9e 100644 --- a/platform-includes/configuration/before-send/dotnet.mdx +++ b/platform-includes/configuration/before-send/dotnet.mdx @@ -1,8 +1,6 @@ A `Func` can be used to mutate, discard (return null), or return a completely new event. ```csharp -using Sentry; - // Add this to the SDK initialization callback options.SetBeforeSend((sentryEvent, hint) => { diff --git a/platform-includes/configuration/before-send/flutter.mdx b/platform-includes/configuration/before-send/flutter.mdx new file mode 100644 index 0000000000000..6616d2266d57a --- /dev/null +++ b/platform-includes/configuration/before-send/flutter.mdx @@ -0,0 +1,7 @@ +```dart {3} +await SentryFlutter.init((options) { + options.beforeSend = (event, hint) { + return event.copyWith(serverName: null); // Don't send server names. + }; +}); +``` diff --git a/platform-includes/configuration/before-send/python.mdx b/platform-includes/configuration/before-send/python.mdx deleted file mode 100644 index d5d53ac70df90..0000000000000 --- a/platform-includes/configuration/before-send/python.mdx +++ /dev/null @@ -1,15 +0,0 @@ -In Python a function can be used to modify the event or return a completely new one. If you return `None`, the event will be discarded. - -```python -import sentry_sdk - -def strip_sensitive_data(event, hint): - # modify event here - return event - -sentry_sdk.init( - # ... - - before_send=strip_sensitive_data, -) -``` diff --git a/platform-includes/configuration/before-send/ruby.rails.mdx b/platform-includes/configuration/before-send/ruby.rails.mdx index f64d83a732a08..f2b5ec0df7120 100644 --- a/platform-includes/configuration/before-send/ruby.rails.mdx +++ b/platform-includes/configuration/before-send/ruby.rails.mdx @@ -1,4 +1,6 @@ ```ruby +require "active_support/parameter_filter" + Sentry.init do |config| #... diff --git a/platform-includes/configuration/config-intro/dotnet.mdx b/platform-includes/configuration/config-intro/dotnet.mdx index 278a0942e3caf..20d395f77e6a9 100644 --- a/platform-includes/configuration/config-intro/dotnet.mdx +++ b/platform-includes/configuration/config-intro/dotnet.mdx @@ -2,8 +2,6 @@ For example, initialize with `SentrySdk.Init` in your `Program.cs` file: ```csharp -using Sentry; - SentrySdk.Init(options => { // A Sentry Data Source Name (DSN) is required. diff --git a/platform-includes/configuration/config-intro/dotnet.xamarin.mdx b/platform-includes/configuration/config-intro/dotnet.xamarin.mdx index 5d163c086343a..1a33c8b7deb94 100644 --- a/platform-includes/configuration/config-intro/dotnet.xamarin.mdx +++ b/platform-includes/configuration/config-intro/dotnet.xamarin.mdx @@ -3,8 +3,6 @@ pass the option object along for modifications: ```csharp -using Sentry; - SentryXamarin.Init(o => { o.Dsn = "___PUBLIC_DSN___"; diff --git a/platform-includes/configuration/decluttering/java.mdx b/platform-includes/configuration/decluttering/java.mdx index c0a5c2859af15..a1d1facdb9f2b 100644 --- a/platform-includes/configuration/decluttering/java.mdx +++ b/platform-includes/configuration/decluttering/java.mdx @@ -1 +1 @@ -When used together with one of the logging framework integrations, the Java SDK captures all error logs as events. If you see a particular kind of error very often that has a `logger` tag, you can ignore that particular logger entirely. For more information see our Logback or Log4j 2.x integration. +When used together with one of the logging framework integrations, the Java SDK captures all error logs as events. If you see a particular kind of error very often that has a `logger` tag, you can ignore that particular logger entirely. For more information see our Logback or Log4j 2 integration. diff --git a/platform-includes/configuration/dedupe/react-native.mdx b/platform-includes/configuration/dedupe/react-native.mdx deleted file mode 100644 index b3dbb5464a8f0..0000000000000 --- a/platform-includes/configuration/dedupe/react-native.mdx +++ /dev/null @@ -1,9 +0,0 @@ -```javascript -import * as Sentry from "@sentry/react-native"; -import { Dedupe as DedupeIntegration } from "@sentry/integrations"; - -Sentry.init({ - dsn: "___PUBLIC_DSN___", - integrations: [new DedupeIntegration()], -}); -``` diff --git a/platform-includes/configuration/deny-urls/dart.mdx b/platform-includes/configuration/deny-urls/dart.mdx new file mode 100644 index 0000000000000..b582d5e32faca --- /dev/null +++ b/platform-includes/configuration/deny-urls/dart.mdx @@ -0,0 +1,5 @@ +```dart {2} +await Sentry.init((options) { + options.denyUrls = ["^.*ends-with-this\$", "denied-url"]; +}); +``` diff --git a/platform-includes/configuration/deny-urls/flutter.mdx b/platform-includes/configuration/deny-urls/flutter.mdx new file mode 100644 index 0000000000000..004a10e3042fc --- /dev/null +++ b/platform-includes/configuration/deny-urls/flutter.mdx @@ -0,0 +1,5 @@ +```dart {2} +await SentryFlutter.init((options) { + options.denyUrls = ["^.*ends-with-this\$", "denied-url"]; +}); +``` diff --git a/platform-includes/configuration/enable-pluggable-integrations-lazy/react-native.mdx b/platform-includes/configuration/enable-pluggable-integrations-lazy/react-native.mdx deleted file mode 100644 index 56c7bed00085b..0000000000000 --- a/platform-includes/configuration/enable-pluggable-integrations-lazy/react-native.mdx +++ /dev/null @@ -1,10 +0,0 @@ -```javascript -import * as Sentry from "@sentry/react-native"; -import { Dedupe as DedupeIntegration } from "@sentry/integrations"; - -Sentry.init({ - integrations: [], -}); - -Sentry.addIntegration(new DedupeIntegration()); -``` diff --git a/platform-includes/configuration/enable-pluggable-integrations/react-native.mdx b/platform-includes/configuration/enable-pluggable-integrations/react-native.mdx deleted file mode 100644 index b3dbb5464a8f0..0000000000000 --- a/platform-includes/configuration/enable-pluggable-integrations/react-native.mdx +++ /dev/null @@ -1,9 +0,0 @@ -```javascript -import * as Sentry from "@sentry/react-native"; -import { Dedupe as DedupeIntegration } from "@sentry/integrations"; - -Sentry.init({ - dsn: "___PUBLIC_DSN___", - integrations: [new DedupeIntegration()], -}); -``` diff --git a/platform-includes/configuration/error-sampler/python.mdx b/platform-includes/configuration/error-sampler/python.mdx index a327946cab907..9172030f400dc 100644 --- a/platform-includes/configuration/error-sampler/python.mdx +++ b/platform-includes/configuration/error-sampler/python.mdx @@ -1,20 +1,23 @@ ```python import sentry_sdk +from sentry_sdk.types import Event, Hint -def my_sampler(_, hint): - exception_sampler_values = { - MyException: 0.5, - MyIgnoredException: 0.0, # or equivalently, False - } - try: - return exception_sampler_values[hint["exc_info"][0]] - except (IndexError, KeyError, TypeError): - return 1.0 # or equivalently, True +def my_error_sampler(event: Event, hint: Hint) -> float: + error_class = hint["exc_info"][0] + + if error_class == MyException: + return 0.5 + elif error_class == MyIgnoredException: + return 0 + + # All the other errors + return 1.0 + sentry_sdk.init( # ... - error_sampler=my_sampler, + error_sampler=my_error_sampler, ) ``` diff --git a/platform-includes/configuration/event-scrubber/python.mdx b/platform-includes/configuration/event-scrubber/python.mdx index c2e79d76d9342..b9111394fc5e1 100644 --- a/platform-includes/configuration/event-scrubber/python.mdx +++ b/platform-includes/configuration/event-scrubber/python.mdx @@ -1,4 +1,6 @@ -If is set to `False`, the default scrubber implementation will run automatically and filter anything in the [`denylist`](https://github.com/getsentry/sentry-python/blob/1.18.0/sentry_sdk/scrubber.py#L17-L58) from [potentially sensitive interfaces](/platforms/python/data-collected/) in the event payload. +The default scrubber implementation will run automatically and filter anything in the [`denylist`](https://github.com/getsentry/sentry-python/blob/4b361c5c008aec1a33cf521014edc0297fbf89c1/sentry_sdk/scrubber.py#L15-L56) from [potentially sensitive interfaces](/platforms/python/data-collected/) in the event payload. These are typically security values such as passwords, authentication, sessions, cookies, and CSRF tokens. + +Additionally, if is set to `False`, the scrubber will also filter from a separate `pii_denylist` that typically has PII values such as IP addresses. ```python import sentry_sdk @@ -11,18 +13,19 @@ sentry_sdk.init( ) ``` -You can also pass in a custom `denylist` to the `EventScrubber` class and filter additional fields that you want. +You can also pass in a custom `denylist` or `pii_denylist` to the `EventScrubber` class and filter additional fields that you want. Make sure you extend the current lists if you want to use the default lists as well. ```python -from sentry_sdk.scrubber import EventScrubber, DEFAULT_DENYLIST +from sentry_sdk.scrubber import EventScrubber, DEFAULT_DENYLIST, DEFAULT_PII_DENYLIST # custom denylist denylist = DEFAULT_DENYLIST + ["my_sensitive_var"] +pii_denylist = DEFAULT_PII_DENYLIST + ["my_private_var"] sentry_sdk.init( # ... send_default_pii=False, - event_scrubber=EventScrubber(denylist=denylist), + event_scrubber=EventScrubber(denylist=denylist, pii_denylist=pii_denylist), ) ``` diff --git a/platform-includes/configuration/featureflags/javascript.angular.mdx b/platform-includes/configuration/featureflags/javascript.angular.mdx new file mode 100644 index 0000000000000..16d87819306c2 --- /dev/null +++ b/platform-includes/configuration/featureflags/javascript.angular.mdx @@ -0,0 +1,17 @@ +```typescript +import * as Sentry from '@sentry/angular'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.featureFlagsIntegration()] +}); + +const flagsIntegration = Sentry.getClient()? + .getIntegrationByName('FeatureFlags'); +if (flagsIntegration) { + flagsIntegration.addFeatureFlag('test-flag', false); +} else { + // Something went wrong, check your DSN and/or integrations +} +Sentry.captureException(new Error('Something went wrong!')); +``` diff --git a/platform-includes/configuration/featureflags/javascript.astro.mdx b/platform-includes/configuration/featureflags/javascript.astro.mdx new file mode 100644 index 0000000000000..f35f07bd7d69e --- /dev/null +++ b/platform-includes/configuration/featureflags/javascript.astro.mdx @@ -0,0 +1,17 @@ +```typescript +import * as Sentry from '@sentry/astro'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.featureFlagsIntegration()] +}); + +const flagsIntegration = Sentry.getClient()? + .getIntegrationByName('FeatureFlags'); +if (flagsIntegration) { + flagsIntegration.addFeatureFlag('test-flag', false); +} else { + // Something went wrong, check your DSN and/or integrations +} +Sentry.captureException(new Error('Something went wrong!')); +``` diff --git a/platform-includes/configuration/featureflags/javascript.ember.mdx b/platform-includes/configuration/featureflags/javascript.ember.mdx new file mode 100644 index 0000000000000..f354e73558633 --- /dev/null +++ b/platform-includes/configuration/featureflags/javascript.ember.mdx @@ -0,0 +1,17 @@ +```typescript +import * as Sentry from '@sentry/ember'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.featureFlagsIntegration()] +}); + +const flagsIntegration = Sentry.getClient()? + .getIntegrationByName('FeatureFlags'); +if (flagsIntegration) { + flagsIntegration.addFeatureFlag('test-flag', false); +} else { + // Something went wrong, check your DSN and/or integrations +} +Sentry.captureException(new Error('Something went wrong!')); +``` diff --git a/platform-includes/configuration/featureflags/javascript.gatsby.mdx b/platform-includes/configuration/featureflags/javascript.gatsby.mdx new file mode 100644 index 0000000000000..b7b37fe0901fc --- /dev/null +++ b/platform-includes/configuration/featureflags/javascript.gatsby.mdx @@ -0,0 +1,17 @@ +```typescript +import * as Sentry from '@sentry/gatsby'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.featureFlagsIntegration()] +}); + +const flagsIntegration = Sentry.getClient()? + .getIntegrationByName('FeatureFlags'); +if (flagsIntegration) { + flagsIntegration.addFeatureFlag('test-flag', false); +} else { + // Something went wrong, check your DSN and/or integrations +} +Sentry.captureException(new Error('Something went wrong!')); +``` diff --git a/platform-includes/configuration/featureflags/javascript.mdx b/platform-includes/configuration/featureflags/javascript.mdx new file mode 100644 index 0000000000000..e42935801bed6 --- /dev/null +++ b/platform-includes/configuration/featureflags/javascript.mdx @@ -0,0 +1,17 @@ +```typescript +import * as Sentry from '@sentry/browser'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.featureFlagsIntegration()] +}); + +const flagsIntegration = Sentry.getClient()? + .getIntegrationByName('FeatureFlags'); +if (flagsIntegration) { + flagsIntegration.addFeatureFlag('test-flag', false); +} else { + // Something went wrong, check your DSN and/or integrations +} +Sentry.captureException(new Error('Something went wrong!')); +``` diff --git a/platform-includes/configuration/featureflags/javascript.nextjs.mdx b/platform-includes/configuration/featureflags/javascript.nextjs.mdx new file mode 100644 index 0000000000000..53c79e361583b --- /dev/null +++ b/platform-includes/configuration/featureflags/javascript.nextjs.mdx @@ -0,0 +1,17 @@ +```typescript +import * as Sentry from '@sentry/nextjs'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.featureFlagsIntegration()] +}); + +const flagsIntegration = Sentry.getClient()? + .getIntegrationByName('FeatureFlags'); +if (flagsIntegration) { + flagsIntegration.addFeatureFlag('test-flag', false); +} else { + // Something went wrong, check your DSN and/or integrations +} +Sentry.captureException(new Error('Something went wrong!')); +``` diff --git a/platform-includes/configuration/featureflags/javascript.nuxt.mdx b/platform-includes/configuration/featureflags/javascript.nuxt.mdx new file mode 100644 index 0000000000000..5ce78aaf385da --- /dev/null +++ b/platform-includes/configuration/featureflags/javascript.nuxt.mdx @@ -0,0 +1,17 @@ +```typescript +import * as Sentry from '@sentry/nuxt'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.featureFlagsIntegration()] +}); + +const flagsIntegration = Sentry.getClient()? + .getIntegrationByName('FeatureFlags'); +if (flagsIntegration) { + flagsIntegration.addFeatureFlag('test-flag', false); +} else { + // Something went wrong, check your DSN and/or integrations +} +Sentry.captureException(new Error('Something went wrong!')); +``` diff --git a/platform-includes/configuration/featureflags/javascript.react.mdx b/platform-includes/configuration/featureflags/javascript.react.mdx new file mode 100644 index 0000000000000..c2429e713f227 --- /dev/null +++ b/platform-includes/configuration/featureflags/javascript.react.mdx @@ -0,0 +1,17 @@ +```typescript +import * as Sentry from '@sentry/react'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.featureFlagsIntegration()] +}); + +const flagsIntegration = Sentry.getClient()? + .getIntegrationByName('FeatureFlags'); +if (flagsIntegration) { + flagsIntegration.addFeatureFlag('test-flag', false); +} else { + // Something went wrong, check your DSN and/or integrations +} +Sentry.captureException(new Error('Something went wrong!')); +``` diff --git a/platform-includes/configuration/featureflags/javascript.remix.mdx b/platform-includes/configuration/featureflags/javascript.remix.mdx new file mode 100644 index 0000000000000..27d3e901dcbfa --- /dev/null +++ b/platform-includes/configuration/featureflags/javascript.remix.mdx @@ -0,0 +1,17 @@ +```typescript +import * as Sentry from '@sentry/remix'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.featureFlagsIntegration()] +}); + +const flagsIntegration = Sentry.getClient()? + .getIntegrationByName('FeatureFlags'); +if (flagsIntegration) { + flagsIntegration.addFeatureFlag('test-flag', false); +} else { + // Something went wrong, check your DSN and/or integrations +} +Sentry.captureException(new Error('Something went wrong!')); +``` diff --git a/platform-includes/configuration/featureflags/javascript.solid.mdx b/platform-includes/configuration/featureflags/javascript.solid.mdx new file mode 100644 index 0000000000000..d7cb038bea623 --- /dev/null +++ b/platform-includes/configuration/featureflags/javascript.solid.mdx @@ -0,0 +1,17 @@ +```typescript +import * as Sentry from '@sentry/solid'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.featureFlagsIntegration()] +}); + +const flagsIntegration = Sentry.getClient()? + .getIntegrationByName('FeatureFlags'); +if (flagsIntegration) { + flagsIntegration.addFeatureFlag('test-flag', false); +} else { + // Something went wrong, check your DSN and/or integrations +} +Sentry.captureException(new Error('Something went wrong!')); +``` diff --git a/platform-includes/configuration/featureflags/javascript.solidstart.mdx b/platform-includes/configuration/featureflags/javascript.solidstart.mdx new file mode 100644 index 0000000000000..893696a256bb4 --- /dev/null +++ b/platform-includes/configuration/featureflags/javascript.solidstart.mdx @@ -0,0 +1,17 @@ +```typescript +import * as Sentry from '@sentry/solidstart'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.featureFlagsIntegration()] +}); + +const flagsIntegration = Sentry.getClient()? + .getIntegrationByName('FeatureFlags'); +if (flagsIntegration) { + flagsIntegration.addFeatureFlag('test-flag', false); +} else { + // Something went wrong, check your DSN and/or integrations +} +Sentry.captureException(new Error('Something went wrong!')); +``` diff --git a/platform-includes/configuration/featureflags/javascript.svelte.mdx b/platform-includes/configuration/featureflags/javascript.svelte.mdx new file mode 100644 index 0000000000000..7ac6a5a03c3cd --- /dev/null +++ b/platform-includes/configuration/featureflags/javascript.svelte.mdx @@ -0,0 +1,17 @@ +```typescript +import * as Sentry from '@sentry/svelte'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.featureFlagsIntegration()] +}); + +const flagsIntegration = Sentry.getClient()? + .getIntegrationByName('FeatureFlags'); +if (flagsIntegration) { + flagsIntegration.addFeatureFlag('test-flag', false); +} else { + // Something went wrong, check your DSN and/or integrations +} +Sentry.captureException(new Error('Something went wrong!')); +``` diff --git a/platform-includes/configuration/featureflags/javascript.sveltekit.mdx b/platform-includes/configuration/featureflags/javascript.sveltekit.mdx new file mode 100644 index 0000000000000..98026634ce36a --- /dev/null +++ b/platform-includes/configuration/featureflags/javascript.sveltekit.mdx @@ -0,0 +1,17 @@ +```typescript +import * as Sentry from '@sentry/sveltekit'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.featureFlagsIntegration()] +}); + +const flagsIntegration = Sentry.getClient()? + .getIntegrationByName('FeatureFlags'); +if (flagsIntegration) { + flagsIntegration.addFeatureFlag('test-flag', false); +} else { + // Something went wrong, check your DSN and/or integrations +} +Sentry.captureException(new Error('Something went wrong!')); +``` diff --git a/platform-includes/configuration/featureflags/javascript.vue.mdx b/platform-includes/configuration/featureflags/javascript.vue.mdx new file mode 100644 index 0000000000000..b7ce140ce2d42 --- /dev/null +++ b/platform-includes/configuration/featureflags/javascript.vue.mdx @@ -0,0 +1,17 @@ +```typescript +import * as Sentry from '@sentry/vue'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.featureFlagsIntegration()] +}); + +const flagsIntegration = Sentry.getClient()? + .getIntegrationByName('FeatureFlags'); +if (flagsIntegration) { + flagsIntegration.addFeatureFlag('test-flag', false); +} else { + // Something went wrong, check your DSN and/or integrations +} +Sentry.captureException(new Error('Something went wrong!')); +``` diff --git a/platform-includes/configuration/http-client/react-native.mdx b/platform-includes/configuration/http-client/react-native.mdx deleted file mode 100644 index dbbb871e27658..0000000000000 --- a/platform-includes/configuration/http-client/react-native.mdx +++ /dev/null @@ -1,26 +0,0 @@ -```javascript -import * as Sentry from "@sentry/react-native"; -import { HttpClient as HttpClientIntegration } from "@sentry/integrations"; - -Sentry.init({ - dsn: "___PUBLIC_DSN___", - integrations: [ - new HttpClientIntegration({ - // This array can contain tuples of `[begin, end]` (both inclusive), - // single status codes, or a combination of both. - // default: [[500, 599]] - failedRequestStatusCodes: [[500, 505], 507], - - // This array can contain Regexes, strings, or a combination of both. - // default: [/.*/] - failedRequestTargets: [ - "http://example.com/api/test", - /(staging\.)?mypage\.com/, - ], - }), - ], - - // This option is required for capturing headers and cookies. - sendDefaultPii: true, -}); -``` diff --git a/platform-includes/configuration/ignore-errors/dart.mdx b/platform-includes/configuration/ignore-errors/dart.mdx index 1196b49e59d78..3afc5a2c9078d 100644 --- a/platform-includes/configuration/ignore-errors/dart.mdx +++ b/platform-includes/configuration/ignore-errors/dart.mdx @@ -1,10 +1,5 @@ -```dart - await SentryFlutter.init( - (options) { - options.dsn = '___PUBLIC_DSN___'; - options.ignoreErrors = ["my-error", "^error-.*\$"]; - ... - }, - appRunner: () => runApp(MyApp()), - ); +```dart {2} +await Sentry.init((options) { + options.ignoreErrors = ["my-error", "^error-.*\$"]; +}); ``` diff --git a/platform-includes/configuration/ignore-transactions/dart.mdx b/platform-includes/configuration/ignore-transactions/dart.mdx index 607847272da60..c9367418ce72f 100644 --- a/platform-includes/configuration/ignore-transactions/dart.mdx +++ b/platform-includes/configuration/ignore-transactions/dart.mdx @@ -1,10 +1,5 @@ -```dart - await SentryFlutter.init( - (options) { - options.dsn = '___PUBLIC_DSN___'; - options.ignoreTransactions = ["my-transaction", "^transaction-.*\$" ]; - ... - }, - appRunner: () => runApp(MyApp()), - ); +```dart {2} +await Sentry.init((options) { + options.ignoreTransactions = ["my-transaction", "^transaction-.*\$" ]; +}); ``` diff --git a/platform-includes/configuration/integrations/javascript.astro.mdx b/platform-includes/configuration/integrations/javascript.astro.mdx index 371820d4c923f..b88dcd119870d 100644 --- a/platform-includes/configuration/integrations/javascript.astro.mdx +++ b/platform-includes/configuration/integrations/javascript.astro.mdx @@ -8,58 +8,68 @@ Depending on whether an integration enhances the functionality of a particular r ### Common Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Additional Context** | -| --------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------------------: | -| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | -| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | -| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | -| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | -| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | -| [`debugIntegration`](./debug) | | | | | -| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | -| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | -| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Additional Context** | +| --------------------------------------------------- | :--------------: | :--------: | :---------: | :--------------------: | +| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | +| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | +| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | +| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | +| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | +| [`debugIntegration`](./debug) | | | | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | +| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | +| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | ### Browser Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Replay** | **Additional Context** | -| ----------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------: | :--------------------: | -| [`breadcrumbsIntegration`](./breadcrumbs) | ✓ | | | | ✓ | -| [`browserApiErrorsIntegration`](./browserapierrors) | ✓ | ✓ | | | | -| [`browserTracingIntegration`](./browsertracing) | ✓ | | ✓ | | ✓ | -| [`globalHandlersIntegration`](./globalhandlers) | ✓ | ✓ | | | | -| [`httpContextIntegration`](./httpcontext) | ✓ | | | | ✓ | -| [`browserProfilingIntegration`](./browserprofiling) | | | ✓ | | | -| [`contextLinesIntegration`](./contextlines) | | ✓ | | | | -| [`httpClientIntegration`](./httpclient) | | ✓ | | | | -| [`moduleMetadataIntegration`](./modulemetadata) | | | | | ✓ | -| [`replayIntegration`](./replay) | | | | ✓ | ✓ | -| [`replayCanvasIntegration`](./replaycanvas) | | | | ✓ | | -| [`reportingObserverIntegration`](./reportingobserver) | | ✓ | | | | +| | **Auto Enabled** | **Errors** | **Tracing** | **Replay** | **Additional Context** | +| ----------------------------------------------------- | :--------------: | :--------: | :---------: | :--------: | :--------------------: | +| [`breadcrumbsIntegration`](./breadcrumbs) | ✓ | | | | ✓ | +| [`browserApiErrorsIntegration`](./browserapierrors) | ✓ | ✓ | | | | +| [`browserTracingIntegration`](./browsertracing) | ✓ | | ✓ | | ✓ | +| [`globalHandlersIntegration`](./globalhandlers) | ✓ | ✓ | | | | +| [`httpContextIntegration`](./httpcontext) | ✓ | | | | ✓ | +| [`browserProfilingIntegration`](./browserprofiling) | | | ✓ | | | +| [`browserSessionIntegration`](./browsersession) | ✓ | | | | ✓ | +| [`contextLinesIntegration`](./contextlines) | | ✓ | | | | +| [`httpClientIntegration`](./httpclient) | | ✓ | | | | +| [`moduleMetadataIntegration`](./modulemetadata) | | | | | ✓ | +| [`replayIntegration`](./replay) | | | | ✓ | ✓ | +| [`replayCanvasIntegration`](./replaycanvas) | | | | ✓ | | +| [`reportingObserverIntegration`](./reportingobserver) | | ✓ | | | | ### Node.js Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Additional Context** | -| --------------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------------------: | -| [`consoleIntegration`](./console) | ✓ | | | ✓ | -| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | -| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | -| [`graphqlIntegration`](./graphql) | ✓ | | ✓ | | -| [`modulesIntegration`](./modules) | ✓ | | | ✓ | -| [`mongoIntegration`](./mongo) | ✓ | | ✓ | | -| [`mongooseIntegration`](./mongoose) | ✓ | | ✓ | | -| [`mysqlIntegration`](./mysql) | ✓ | | ✓ | | -| [`mysql2Integration`](./mysql2) | ✓ | | ✓ | | -| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | -| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | -| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | -| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | -| [`postgresIntegration`](./postgres) | ✓ | | ✓ | | -| [`prismaIntegration`](./prisma) | | | ✓ | | -| [`redisIntegration`](./redis) | ✓ | | ✓ | | -| [`requestDataIntegration`](./requestdata) | ✓ | | ✓ | | -| [`anrIntegration`](./anr) | | ✓ | | | -| [`localVariablesIntegration`](./localvariables) | | ✓ | | | -| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | -| [`fsIntegration`](./fs) | | | ✓ | | -| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Additional Context** | +| --------------------------------------------------------- | :--------------: | :--------: | :---------: | :--------------------: | +| [`amqplibIntegration`](./amqplib) | ✓ | | ✓ | | +| [`consoleIntegration`](./console) | ✓ | | | ✓ | +| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | +| [`genericPoolIntegration`](./genericpool) | ✓ | | ✓ | | +| [`graphqlIntegration`](./graphql) | ✓ | | ✓ | | +| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | +| [`kafkaIntegration`](./kafka) | ✓ | | ✓ | | +| [`lruMemoizerIntegration`](./lrumemoizer) | ✓ | | ✓ | | +| [`modulesIntegration`](./modules) | ✓ | | | ✓ | +| [`mongoIntegration`](./mongo) | ✓ | | ✓ | | +| [`mongooseIntegration`](./mongoose) | ✓ | | ✓ | | +| [`mysqlIntegration`](./mysql) | ✓ | | ✓ | | +| [`mysql2Integration`](./mysql2) | ✓ | | ✓ | | +| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | +| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | +| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | +| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | +| [`postgresIntegration`](./postgres) | ✓ | | ✓ | | +| [`redisIntegration`](./redis) | ✓ | | ✓ | | +| [`requestDataIntegration`](./requestdata) | ✓ | | ✓ | | +| [`tediousIntegration`](./tedious) | ✓ | | ✓ | | +| [`childProcessIntegration`](./childProcess) | ✓ | | | ✓ | +| [`dataloaderIntegration`](./dataloader) | ✓ | | ✓ | | +| [`anrIntegration`](./anr) | | ✓ | | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | +| [`fsIntegration`](./fs) | | | ✓ | | +| [`knexIntegration`](./knex) | | | ✓ | | +| [`localVariablesIntegration`](./localvariables) | | ✓ | | | +| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | +| [`prismaIntegration`](./prisma) | | | ✓ | | +| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.aws-lambda.mdx b/platform-includes/configuration/integrations/javascript.aws-lambda.mdx index 64cfd0b560086..cd840ddb9c1f7 100644 --- a/platform-includes/configuration/integrations/javascript.aws-lambda.mdx +++ b/platform-includes/configuration/integrations/javascript.aws-lambda.mdx @@ -1,37 +1,45 @@ ### Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Additional Context** | -| --------------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------------------: | -| [`awsIntegration`](./aws) | ✓ | | ✓ | | -| [`awsLambdaIntegration`](./awslambda) | ✓ | | ✓ | | -| [`consoleIntegration`](./console) | ✓ | | | ✓ | -| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | -| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | -| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | -| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | -| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | -| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | -| [`modulesIntegration`](./modules) | ✓ | | | ✓ | -| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | -| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | -| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | -| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | -| [`anrIntegration`](./anr) | | ✓ | | | -| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | -| [`debugIntegration`](./debug) | | | | | -| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | -| [`graphqlIntegration`](./graphql) | | | ✓ | | -| [`localVariablesIntegration`](./localvariables) | | ✓ | | | -| [`mongoIntegration`](./mongo) | | | ✓ | | -| [`mongooseIntegration`](./mongoose) | | | ✓ | | -| [`mysqlIntegration`](./mysql) | | | ✓ | | -| [`mysql2Integration`](./mysql2) | | | ✓ | | -| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | -| [`postgresIntegration`](./postgres) | | | ✓ | | -| [`prismaIntegration`](./prisma) | | | ✓ | | -| [`redisIntegration`](./redis) | | | ✓ | | -| [`requestDataIntegration`](./requestdata) | | | ✓ | | -| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | -| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | -| [`fsIntegration`](./fs) | | | ✓ | | -| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Additional Context** | +| --------------------------------------------------------- | :--------------: | :--------: | :---------: | :--------------------: | +| [`awsIntegration`](./aws) | ✓ | | ✓ | | +| [`awsLambdaIntegration`](./awslambda) | ✓ | | ✓ | | +| [`consoleIntegration`](./console) | ✓ | | | ✓ | +| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | +| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | +| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | +| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | +| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | +| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | +| [`modulesIntegration`](./modules) | ✓ | | | ✓ | +| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | +| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | +| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | +| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | +| [`childProcessIntegration`](./childProcess) | ✓ | | | ✓ | +| [`amqplibIntegration`](./amqplib) | | | ✓ | | +| [`anrIntegration`](./anr) | | ✓ | | | +| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | +| [`dataloaderIntegration`](./dataloader) | | | ✓ | | +| [`debugIntegration`](./debug) | | | | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | +| [`fsIntegration`](./fs) | | | ✓ | | +| [`genericPoolIntegration`](./genericpool) | | | ✓ | | +| [`graphqlIntegration`](./graphql) | | | ✓ | | +| [`kafkaIntegration`](./kafka) | | | ✓ | | +| [`knexIntegration`](./knex) | | | ✓ | | +| [`localVariablesIntegration`](./localvariables) | | ✓ | | | +| [`lruMemoizerIntegration`](./lrumemoizer) | | | ✓ | | +| [`mongoIntegration`](./mongo) | | | ✓ | | +| [`mongooseIntegration`](./mongoose) | | | ✓ | | +| [`mysqlIntegration`](./mysql) | | | ✓ | | +| [`mysql2Integration`](./mysql2) | | | ✓ | | +| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | +| [`postgresIntegration`](./postgres) | | | ✓ | | +| [`prismaIntegration`](./prisma) | | | ✓ | | +| [`redisIntegration`](./redis) | | | ✓ | | +| [`requestDataIntegration`](./requestdata) | | | ✓ | | +| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | +| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | +| [`tediousIntegration`](./tedious) | | | ✓ | | +| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.bun.mdx b/platform-includes/configuration/integrations/javascript.bun.mdx index 911aeab271a63..4cec48684ceac 100644 --- a/platform-includes/configuration/integrations/javascript.bun.mdx +++ b/platform-includes/configuration/integrations/javascript.bun.mdx @@ -1,33 +1,39 @@ ### Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Additional Context** | -| --------------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------------------: | -| [`bunServerIntegration`](./bunserver) | ✓ | ✓ | ✓ | | -| [`consoleIntegration`](./console) | ✓ | | | ✓ | -| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | -| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | -| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | -| [`graphqlIntegration`](./graphql) | ✓ | | ✓ | | -| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | -| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | -| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | -| [`modulesIntegration`](./modules) | ✓ | | | ✓ | -| [`mongoIntegration`](./mongo) | ✓ | | ✓ | | -| [`mongooseIntegration`](./mongoose) | ✓ | | ✓ | | -| [`mysqlIntegration`](./mysql) | ✓ | | ✓ | | -| [`mysql2Integration`](./mysql2) | ✓ | | ✓ | | -| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | -| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | -| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | -| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | -| [`postgresIntegration`](./postgres) | ✓ | | ✓ | | -| [`prismaIntegration`](./prisma) | | | ✓ | | -| [`redisIntegration`](./redis) | ✓ | | ✓ | | -| [`requestDataIntegration`](./requestdata) | ✓ | | ✓ | | -| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | -| [`debugIntegration`](./debug) | | | | | -| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | -| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | -| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | -| [`fsIntegration`](./fs) | | | ✓ | | -| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Additional Context** | +| --------------------------------------------------------- | :--------------: | :--------: | :---------: | :--------------------: | +| [`amqplibIntegration`](./amqplib) | ✓ | | ✓ | | +| [`bunServerIntegration`](./bunserver) | ✓ | ✓ | ✓ | | +| [`consoleIntegration`](./console) | ✓ | | | ✓ | +| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | +| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | +| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | +| [`genericPoolIntegration`](./genericpool) | ✓ | | ✓ | | +| [`graphqlIntegration`](./graphql) | ✓ | | ✓ | | +| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | +| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | +| [`kafkaIntegration`](./kafka) | ✓ | | ✓ | | +| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | +| [`lruMemoizerIntegration`](./lrumemoizer) | ✓ | | ✓ | | +| [`modulesIntegration`](./modules) | ✓ | | | ✓ | +| [`mongoIntegration`](./mongo) | ✓ | | ✓ | | +| [`mongooseIntegration`](./mongoose) | ✓ | | ✓ | | +| [`mysqlIntegration`](./mysql) | ✓ | | ✓ | | +| [`mysql2Integration`](./mysql2) | ✓ | | ✓ | | +| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | +| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | +| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | +| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | +| [`postgresIntegration`](./postgres) | ✓ | | ✓ | | +| [`redisIntegration`](./redis) | ✓ | | ✓ | | +| [`requestDataIntegration`](./requestdata) | ✓ | | ✓ | | +| [`tediousIntegration`](./tedious) | ✓ | | ✓ | | +| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | +| [`debugIntegration`](./debug) | | | | | +| [`dataloaderIntegration`](./dataloader) | | | ✓ | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | +| [`knexIntegration`](./knex) | | | ✓ | | +| [`prismaIntegration`](./prisma) | | | ✓ | | +| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | +| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | +| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.capacitor.mdx b/platform-includes/configuration/integrations/javascript.capacitor.mdx new file mode 100644 index 0000000000000..c14ee21aa1f06 --- /dev/null +++ b/platform-includes/configuration/integrations/javascript.capacitor.mdx @@ -0,0 +1,25 @@ +### Integrations + +| | **Auto Enabled** | **Errors** | **Tracing** | **Replay** | **Additional Context** | +| ----------------------------------------------------- | :--------------: | :--------: | :---------: | :--------: | :--------------------: | +| [`breadcrumbsIntegration`](./breadcrumbs) | ✓ | | | | ✓ | +| [`browserApiErrorsIntegration`](./browserapierrors) | ✓ | ✓ | | | | +| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | | +| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | | +| [`globalHandlersIntegration`](./globalhandlers) | ✓ | ✓ | | | | +| [`httpContextIntegration`](./httpcontext) | ✓ | | | | ✓ | +| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | | +| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | | +| [`browserSessionIntegration`](./browsersession) | ✓ | | | | ✓ | +| [`browserTracingIntegration`](./browsertracing) | | | ✓ | | ✓ | +| [`captureConsoleIntegration`](./captureconsole) | | | | | ✓ | +| [`contextLinesIntegration`](./contextlines) | | ✓ | | | | +| [`debugIntegration`](./debug) | | | | | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | | ✓ | +| [`httpClientIntegration`](./httpclient) | | ✓ | | | | +| [`moduleMetadataIntegration`](./modulemetadata) | | | | | ✓ | +| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | | +| [`replayIntegration`](./replay) | | | | ✓ | ✓ | +| [`replayCanvasIntegration`](./replaycanvas) | | | | ✓ | | +| [`reportingObserverIntegration`](./reportingobserver) | | ✓ | | | | +| [`sessionTimingIntegration`](./sessiontiming) | | | | | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.cloudflare.mdx b/platform-includes/configuration/integrations/javascript.cloudflare.mdx index c3c7588a4d3d0..5c78386533230 100644 --- a/platform-includes/configuration/integrations/javascript.cloudflare.mdx +++ b/platform-includes/configuration/integrations/javascript.cloudflare.mdx @@ -1,15 +1,15 @@ ### Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Cron** | **Additional Context** | -| ---------------------------------------------------- | :--------------: | :--------: | :-------------: | :------: | :--------------------: | -| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | | -| [`fetchIntegration`](./fetchIntegration) | ✓ | ✓ | ✓ | | | -| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | | -| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | | -| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | | -| [`requestDataIntegration`](./requestDataIntegration) | ✓ | | | | ✓ | -| [`captureConsoleIntegration`](./captureconsole) | | | | | ✓ | -| [`debugIntegration`](./debug) | | | | | | -| [`extraErrorDataIntegration`](./extraerrordata) | | | | | ✓ | -| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | | -| [`sessionTimingIntegration`](./sessiontiming) | | | | | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Cron** | **Additional Context** | +| ---------------------------------------------------- | :--------------: | :--------: | :---------: | :------: | :--------------------: | +| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | | +| [`fetchIntegration`](./fetchIntegration) | ✓ | ✓ | ✓ | | | +| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | | +| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | | +| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | | +| [`requestDataIntegration`](./requestDataIntegration) | ✓ | | | | ✓ | +| [`captureConsoleIntegration`](./captureconsole) | | | | | ✓ | +| [`debugIntegration`](./debug) | | | | | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | | ✓ | +| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | | +| [`sessionTimingIntegration`](./sessiontiming) | | | | | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.connect.mdx b/platform-includes/configuration/integrations/javascript.connect.mdx new file mode 100644 index 0000000000000..ba7efa561fa01 --- /dev/null +++ b/platform-includes/configuration/integrations/javascript.connect.mdx @@ -0,0 +1,44 @@ +### Integrations + +| | **Auto Enabled** | **Errors** | **Tracing** | **Additional Context** | +| --------------------------------------------------------- | :--------------: | :--------: | :---------: | :--------------------: | +| [`amqplibIntegration`](./amqplib) | ✓ | | ✓ | | +| [`consoleIntegration`](./console) | ✓ | | | ✓ | +| [`connectIntegration`](./connect) | ✓ | | ✓ | | +| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | +| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | +| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | +| [`genericPoolIntegration`](./genericpool) | ✓ | | ✓ | | +| [`graphqlIntegration`](./graphql) | ✓ | | ✓ | | +| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | +| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | +| [`kafkaIntegration`](./kafka) | ✓ | | ✓ | | +| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | +| [`lruMemoizerIntegration`](./lrumemoizer) | ✓ | | ✓ | | +| [`modulesIntegration`](./modules) | ✓ | | | ✓ | +| [`mongoIntegration`](./mongo) | ✓ | | ✓ | | +| [`mongooseIntegration`](./mongoose) | ✓ | | ✓ | | +| [`mysqlIntegration`](./mysql) | ✓ | | ✓ | | +| [`mysql2Integration`](./mysql2) | ✓ | | ✓ | | +| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | +| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | +| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | +| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | +| [`postgresIntegration`](./postgres) | ✓ | | ✓ | | +| [`redisIntegration`](./redis) | ✓ | | ✓ | | +| [`requestDataIntegration`](./requestdata) | ✓ | | ✓ | | +| [`tediousIntegration`](./tedious) | ✓ | | ✓ | | +| [`childProcessIntegration`](./childProcess) | ✓ | | | ✓ | +| [`anrIntegration`](./anr) | | ✓ | | | +| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | +| [`debugIntegration`](./debug) | | | | | +| [`dataloaderIntegration`](./dataloader) | | | ✓ | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | +| [`fsIntegration`](./fs) | | | ✓ | | +| [`knexIntegration`](./knex) | | | ✓ | | +| [`localVariablesIntegration`](./localvariables) | | ✓ | | | +| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | +| [`prismaIntegration`](./prisma) | | | ✓ | | +| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | +| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | +| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.cordova.mdx b/platform-includes/configuration/integrations/javascript.cordova.mdx index db10b743b406e..c3e70ab2002b2 100644 --- a/platform-includes/configuration/integrations/javascript.cordova.mdx +++ b/platform-includes/configuration/integrations/javascript.cordova.mdx @@ -1,20 +1,20 @@ ### Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Replay** | **Additional Context** | -| ----------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------: | :--------------------: | -| [`breadcrumbsIntegration`](./breadcrumbs) | ✓ | | | | ✓ | -| [`browserApiErrorsIntegration`](./browserapierrors) | ✓ | ✓ | | | | -| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | | -| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | | -| [`globalHandlersIntegration`](./globalhandlers) | ✓ | ✓ | | | | -| [`httpContextIntegration`](./httpcontext) | ✓ | | | | ✓ | -| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | | -| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | | -| [`captureConsoleIntegration`](./captureconsole) | | | | | ✓ | -| [`debugIntegration`](./debug) | | | | | | -| [`extraErrorDataIntegration`](./extraerrordata) | | | | | ✓ | -| [`httpClientIntegration`](./httpclient) | | ✓ | | | | -| [`moduleMetadataIntegration`](./modulemetadata) | | | | | ✓ | -| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | | -| [`reportingObserverIntegration`](./reportingobserver) | | ✓ | | | | -| [`sessionTimingIntegration`](./sessiontiming) | | | | | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Replay** | **Additional Context** | +| ----------------------------------------------------- | :--------------: | :--------: | :---------: | :--------: | :--------------------: | +| [`breadcrumbsIntegration`](./breadcrumbs) | ✓ | | | | ✓ | +| [`browserApiErrorsIntegration`](./browserapierrors) | ✓ | ✓ | | | | +| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | | +| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | | +| [`globalHandlersIntegration`](./globalhandlers) | ✓ | ✓ | | | | +| [`httpContextIntegration`](./httpcontext) | ✓ | | | | ✓ | +| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | | +| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | | +| [`captureConsoleIntegration`](./captureconsole) | | | | | ✓ | +| [`debugIntegration`](./debug) | | | | | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | | ✓ | +| [`httpClientIntegration`](./httpclient) | | ✓ | | | | +| [`moduleMetadataIntegration`](./modulemetadata) | | | | | ✓ | +| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | | +| [`reportingObserverIntegration`](./reportingobserver) | | ✓ | | | | +| [`sessionTimingIntegration`](./sessiontiming) | | | | | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.deno.mdx b/platform-includes/configuration/integrations/javascript.deno.mdx index c69d1a4375f69..6ee3b48f13d30 100644 --- a/platform-includes/configuration/integrations/javascript.deno.mdx +++ b/platform-includes/configuration/integrations/javascript.deno.mdx @@ -1,19 +1,19 @@ ### Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Cron** | **Additional Context** | -| --------------------------------------------------- | :--------------: | :--------: | :-------------: | :------: | :--------------------: | -| [`breadcrumbsIntegration`](./breadcrumbs) | ✓ | | | | ✓ | -| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | | -| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | | -| [`denoContextIntegration`](./denocontext) | ✓ | | | | ✓ | -| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | | -| [`globalHandlersIntegration`](./globalhandlers) | ✓ | ✓ | | | | -| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | | -| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | | -| [`captureConsoleIntegration`](./captureconsole) | | | | | ✓ | -| [`debugIntegration`](./debug) | | | | | | -| [`denoCronIntegration`](./denocron) | | | | ✓ | | -| [`extraErrorDataIntegration`](./extraerrordata) | | | | | ✓ | -| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | | -| [`sessionTimingIntegration`](./sessiontiming) | | | | | ✓ | -| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Cron** | **Additional Context** | +| --------------------------------------------------- | :--------------: | :--------: | :---------: | :------: | :--------------------: | +| [`breadcrumbsIntegration`](./breadcrumbs) | ✓ | | | | ✓ | +| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | | +| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | | +| [`denoContextIntegration`](./denocontext) | ✓ | | | | ✓ | +| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | | +| [`globalHandlersIntegration`](./globalhandlers) | ✓ | ✓ | | | | +| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | | +| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | | +| [`captureConsoleIntegration`](./captureconsole) | | | | | ✓ | +| [`debugIntegration`](./debug) | | | | | | +| [`denoCronIntegration`](./denocron) | | | | ✓ | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | | ✓ | +| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | | +| [`sessionTimingIntegration`](./sessiontiming) | | | | | ✓ | +| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.fastify.mdx b/platform-includes/configuration/integrations/javascript.fastify.mdx index 41119f6aee48f..d2b68dd3d0d1c 100644 --- a/platform-includes/configuration/integrations/javascript.fastify.mdx +++ b/platform-includes/configuration/integrations/javascript.fastify.mdx @@ -1,34 +1,44 @@ ### Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Additional Context** | -| --------------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------------------: | -| [`consoleIntegration`](./console) | ✓ | | | ✓ | -| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | -| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | -| [`graphqlIntegration`](./graphql) | ✓ | | ✓ | | -| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | -| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | -| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | -| [`modulesIntegration`](./modules) | ✓ | | | ✓ | -| [`mongoIntegration`](./mongo) | ✓ | | ✓ | | -| [`mongooseIntegration`](./mongoose) | ✓ | | ✓ | | -| [`mysqlIntegration`](./mysql) | ✓ | | ✓ | | -| [`mysql2Integration`](./mysql2) | ✓ | | ✓ | | -| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | -| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | -| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | -| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | -| [`postgresIntegration`](./postgres) | ✓ | | ✓ | | -| [`prismaIntegration`](./prisma) | | | ✓ | | -| [`redisIntegration`](./redis) | ✓ | | ✓ | | -| [`requestDataIntegration`](./requestdata) | ✓ | | ✓ | | -| [`anrIntegration`](./anr) | | ✓ | | | -| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | -| [`debugIntegration`](./debug) | | | | | -| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | -| [`localVariablesIntegration`](./localvariables) | | ✓ | | | -| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | -| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | -| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | -| [`fsIntegration`](./fs) | | | ✓ | | -| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Additional Context** | +| --------------------------------------------------------- | :--------------: | :--------: | :---------: | :--------------------: | +| [`amqplibIntegration`](./amqplib) | ✓ | | ✓ | | +| [`consoleIntegration`](./console) | ✓ | | | ✓ | +| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | +| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | +| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | +| [`fastifyIntegration`](./fastify) | ✓ | | | | +| [`genericPoolIntegration`](./genericpool) | ✓ | | ✓ | | +| [`graphqlIntegration`](./graphql) | ✓ | | ✓ | | +| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | +| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | +| [`kafkaIntegration`](./kafka) | ✓ | | ✓ | | +| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | +| [`lruMemoizerIntegration`](./lrumemoizer) | ✓ | | ✓ | | +| [`modulesIntegration`](./modules) | ✓ | | | ✓ | +| [`mongoIntegration`](./mongo) | ✓ | | ✓ | | +| [`mongooseIntegration`](./mongoose) | ✓ | | ✓ | | +| [`mysqlIntegration`](./mysql) | ✓ | | ✓ | | +| [`mysql2Integration`](./mysql2) | ✓ | | ✓ | | +| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | +| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | +| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | +| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | +| [`postgresIntegration`](./postgres) | ✓ | | ✓ | | +| [`redisIntegration`](./redis) | ✓ | | ✓ | | +| [`requestDataIntegration`](./requestdata) | ✓ | | ✓ | | +| [`tediousIntegration`](./tedious) | ✓ | | ✓ | | +| [`childProcessIntegration`](./childProcess) | ✓ | | | ✓ | +| [`anrIntegration`](./anr) | | ✓ | | | +| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | +| [`debugIntegration`](./debug) | | | | | +| [`dataloaderIntegration`](./dataloader) | | | ✓ | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | +| [`fsIntegration`](./fs) | | | ✓ | | +| [`knexIntegration`](./knex) | | | ✓ | | +| [`localVariablesIntegration`](./localvariables) | | ✓ | | | +| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | +| [`prismaIntegration`](./prisma) | | | ✓ | | +| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | +| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | +| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.gatsby.mdx b/platform-includes/configuration/integrations/javascript.gatsby.mdx index b4a9cd803db3c..ba419ec70729c 100644 --- a/platform-includes/configuration/integrations/javascript.gatsby.mdx +++ b/platform-includes/configuration/integrations/javascript.gatsby.mdx @@ -1,25 +1,26 @@ ### Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Replay** | **Additional Context** | -| ----------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------: | :--------------------: | -| [`breadcrumbsIntegration`](./breadcrumbs) | ✓ | | | | ✓ | -| [`browserApiErrorsIntegration`](./browserapierrors) | ✓ | ✓ | | | | -| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | | -| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | | -| [`globalHandlersIntegration`](./globalhandlers) | ✓ | ✓ | | | | -| [`httpContextIntegration`](./httpcontext) | ✓ | | | | ✓ | -| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | | -| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | | -| [`browserProfilingIntegration`](./browserprofiling) | | | ✓ | | | -| [`browserTracingIntegration`](./browsertracing) | | | ✓ | | ✓ | -| [`captureConsoleIntegration`](./captureconsole) | | | | | ✓ | -| [`contextLinesIntegration`](./contextlines) | | ✓ | | | | -| [`debugIntegration`](./debug) | | | | | | -| [`extraErrorDataIntegration`](./extraerrordata) | | | | | ✓ | -| [`httpClientIntegration`](./httpclient) | | ✓ | | | | -| [`moduleMetadataIntegration`](./modulemetadata) | | | | | ✓ | -| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | | -| [`replayIntegration`](./replay) | | | | ✓ | ✓ | -| [`replayCanvasIntegration`](./replaycanvas) | | | | ✓ | | -| [`reportingObserverIntegration`](./reportingobserver) | | ✓ | | | | -| [`sessionTimingIntegration`](./sessiontiming) | | | | | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Replay** | **Additional Context** | +| ----------------------------------------------------- | :--------------: | :--------: | :---------: | :--------: | :--------------------: | +| [`breadcrumbsIntegration`](./breadcrumbs) | ✓ | | | | ✓ | +| [`browserApiErrorsIntegration`](./browserapierrors) | ✓ | ✓ | | | | +| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | | +| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | | +| [`globalHandlersIntegration`](./globalhandlers) | ✓ | ✓ | | | | +| [`httpContextIntegration`](./httpcontext) | ✓ | | | | ✓ | +| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | | +| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | | +| [`browserProfilingIntegration`](./browserprofiling) | | | ✓ | | | +| [`browserSessionIntegration`](./browsersession) | ✓ | | | | ✓ | +| [`browserTracingIntegration`](./browsertracing) | | | ✓ | | ✓ | +| [`captureConsoleIntegration`](./captureconsole) | | | | | ✓ | +| [`contextLinesIntegration`](./contextlines) | | ✓ | | | | +| [`debugIntegration`](./debug) | | | | | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | | ✓ | +| [`httpClientIntegration`](./httpclient) | | ✓ | | | | +| [`moduleMetadataIntegration`](./modulemetadata) | | | | | ✓ | +| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | | +| [`replayIntegration`](./replay) | | | | ✓ | ✓ | +| [`replayCanvasIntegration`](./replaycanvas) | | | | ✓ | | +| [`reportingObserverIntegration`](./reportingobserver) | | ✓ | | | | +| [`sessionTimingIntegration`](./sessiontiming) | | | | | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.gcp-functions.mdx b/platform-includes/configuration/integrations/javascript.gcp-functions.mdx index 1739fd983eb27..07404d5e7851a 100644 --- a/platform-includes/configuration/integrations/javascript.gcp-functions.mdx +++ b/platform-includes/configuration/integrations/javascript.gcp-functions.mdx @@ -1,37 +1,45 @@ ### Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Additional Context** | -| --------------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------------------: | -| [`consoleIntegration`](./console) | ✓ | | | ✓ | -| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | -| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | -| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | -| [`googleCloudGrpcIntegration`](./googlecloudgrpc) | ✓ | | ✓ | | -| [`googleCloudHttpIntegration`](./googlecloudhttp) | ✓ | | ✓ | | -| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | -| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | -| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | -| [`modulesIntegration`](./modules) | ✓ | | | ✓ | -| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | -| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | -| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | -| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | -| [`anrIntegration`](./anr) | | ✓ | | | -| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | -| [`debugIntegration`](./debug) | | | | | -| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | -| [`graphqlIntegration`](./graphql) | | | ✓ | | -| [`localVariablesIntegration`](./localvariables) | | ✓ | | | -| [`mongoIntegration`](./mongo) | | | ✓ | | -| [`mongooseIntegration`](./mongoose) | | | ✓ | | -| [`mysqlIntegration`](./mysql) | | | ✓ | | -| [`mysql2Integration`](./mysql2) | | | ✓ | | -| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | -| [`postgresIntegration`](./postgres) | | | ✓ | | -| [`prismaIntegration`](./prisma) | | | ✓ | | -| [`redisIntegration`](./redis) | | | ✓ | | -| [`requestDataIntegration`](./requestdata) | | | ✓ | | -| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | -| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | -| [`fsIntegration`](./fs) | | | ✓ | | -| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Additional Context** | +| --------------------------------------------------------- | :--------------: | :--------: | :---------: | :--------------------: | +| [`consoleIntegration`](./console) | ✓ | | | ✓ | +| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | +| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | +| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | +| [`googleCloudGrpcIntegration`](./googlecloudgrpc) | ✓ | | ✓ | | +| [`googleCloudHttpIntegration`](./googlecloudhttp) | ✓ | | ✓ | | +| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | +| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | +| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | +| [`modulesIntegration`](./modules) | ✓ | | | ✓ | +| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | +| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | +| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | +| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | +| [`childProcessIntegration`](./childProcess) | ✓ | | | ✓ | +| [`amqplibIntegration`](./amqplib) | | | ✓ | | +| [`anrIntegration`](./anr) | | ✓ | | | +| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | +| [`dataloaderIntegration`](./dataloader) | | | ✓ | | +| [`debugIntegration`](./debug) | | | | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | +| [`fsIntegration`](./fs) | | | ✓ | | +| [`genericPoolIntegration`](./genericpool) | | | ✓ | | +| [`graphqlIntegration`](./graphql) | | | ✓ | | +| [`kafkaIntegration`](./kafka) | | | ✓ | | +| [`knexIntegration`](./knex) | | | ✓ | | +| [`localVariablesIntegration`](./localvariables) | | ✓ | | | +| [`lruMemoizerIntegration`](./lrumemoizer) | | | ✓ | | +| [`mongoIntegration`](./mongo) | | | ✓ | | +| [`mongooseIntegration`](./mongoose) | | | ✓ | | +| [`mysqlIntegration`](./mysql) | | | ✓ | | +| [`mysql2Integration`](./mysql2) | | | ✓ | | +| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | +| [`postgresIntegration`](./postgres) | | | ✓ | | +| [`prismaIntegration`](./prisma) | | | ✓ | | +| [`redisIntegration`](./redis) | | | ✓ | | +| [`requestDataIntegration`](./requestdata) | | | ✓ | | +| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | +| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | +| [`tediousIntegration`](./tedious) | | | ✓ | | +| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.hapi.mdx b/platform-includes/configuration/integrations/javascript.hapi.mdx new file mode 100644 index 0000000000000..7fb44b69992ff --- /dev/null +++ b/platform-includes/configuration/integrations/javascript.hapi.mdx @@ -0,0 +1,44 @@ +### Integrations + +| | **Auto Enabled** | **Errors** | **Tracing** | **Additional Context** | +| --------------------------------------------------------- | :--------------: | :--------: | :---------: | :--------------------: | +| [`amqplibIntegration`](./amqplib) | ✓ | | ✓ | | +| [`consoleIntegration`](./console) | ✓ | | | ✓ | +| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | +| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | +| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | +| [`genericPoolIntegration`](./genericpool) | ✓ | | ✓ | | +| [`graphqlIntegration`](./graphql) | ✓ | | ✓ | | +| [`hapiIntegration`](./hapi) | ✓ | | ✓ | | +| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | +| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | +| [`kafkaIntegration`](./kafka) | ✓ | | ✓ | | +| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | +| [`lruMemoizerIntegration`](./lrumemoizer) | ✓ | | ✓ | | +| [`modulesIntegration`](./modules) | ✓ | | | ✓ | +| [`mongoIntegration`](./mongo) | ✓ | | ✓ | | +| [`mongooseIntegration`](./mongoose) | ✓ | | ✓ | | +| [`mysqlIntegration`](./mysql) | ✓ | | ✓ | | +| [`mysql2Integration`](./mysql2) | ✓ | | ✓ | | +| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | +| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | +| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | +| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | +| [`postgresIntegration`](./postgres) | ✓ | | ✓ | | +| [`redisIntegration`](./redis) | ✓ | | ✓ | | +| [`requestDataIntegration`](./requestdata) | ✓ | | ✓ | | +| [`tediousIntegration`](./tedious) | ✓ | | ✓ | | +| [`childProcessIntegration`](./childProcess) | ✓ | | | ✓ | +| [`anrIntegration`](./anr) | | ✓ | | | +| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | +| [`debugIntegration`](./debug) | | | | | +| [`dataloaderIntegration`](./dataloader) | | | ✓ | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | +| [`fsIntegration`](./fs) | | | ✓ | | +| [`knexIntegration`](./knex) | | | ✓ | | +| [`localVariablesIntegration`](./localvariables) | | ✓ | | | +| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | +| [`prismaIntegration`](./prisma) | | | ✓ | | +| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | +| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | +| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.mdx b/platform-includes/configuration/integrations/javascript.mdx index b4a9cd803db3c..ba419ec70729c 100644 --- a/platform-includes/configuration/integrations/javascript.mdx +++ b/platform-includes/configuration/integrations/javascript.mdx @@ -1,25 +1,26 @@ ### Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Replay** | **Additional Context** | -| ----------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------: | :--------------------: | -| [`breadcrumbsIntegration`](./breadcrumbs) | ✓ | | | | ✓ | -| [`browserApiErrorsIntegration`](./browserapierrors) | ✓ | ✓ | | | | -| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | | -| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | | -| [`globalHandlersIntegration`](./globalhandlers) | ✓ | ✓ | | | | -| [`httpContextIntegration`](./httpcontext) | ✓ | | | | ✓ | -| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | | -| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | | -| [`browserProfilingIntegration`](./browserprofiling) | | | ✓ | | | -| [`browserTracingIntegration`](./browsertracing) | | | ✓ | | ✓ | -| [`captureConsoleIntegration`](./captureconsole) | | | | | ✓ | -| [`contextLinesIntegration`](./contextlines) | | ✓ | | | | -| [`debugIntegration`](./debug) | | | | | | -| [`extraErrorDataIntegration`](./extraerrordata) | | | | | ✓ | -| [`httpClientIntegration`](./httpclient) | | ✓ | | | | -| [`moduleMetadataIntegration`](./modulemetadata) | | | | | ✓ | -| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | | -| [`replayIntegration`](./replay) | | | | ✓ | ✓ | -| [`replayCanvasIntegration`](./replaycanvas) | | | | ✓ | | -| [`reportingObserverIntegration`](./reportingobserver) | | ✓ | | | | -| [`sessionTimingIntegration`](./sessiontiming) | | | | | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Replay** | **Additional Context** | +| ----------------------------------------------------- | :--------------: | :--------: | :---------: | :--------: | :--------------------: | +| [`breadcrumbsIntegration`](./breadcrumbs) | ✓ | | | | ✓ | +| [`browserApiErrorsIntegration`](./browserapierrors) | ✓ | ✓ | | | | +| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | | +| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | | +| [`globalHandlersIntegration`](./globalhandlers) | ✓ | ✓ | | | | +| [`httpContextIntegration`](./httpcontext) | ✓ | | | | ✓ | +| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | | +| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | | +| [`browserProfilingIntegration`](./browserprofiling) | | | ✓ | | | +| [`browserSessionIntegration`](./browsersession) | ✓ | | | | ✓ | +| [`browserTracingIntegration`](./browsertracing) | | | ✓ | | ✓ | +| [`captureConsoleIntegration`](./captureconsole) | | | | | ✓ | +| [`contextLinesIntegration`](./contextlines) | | ✓ | | | | +| [`debugIntegration`](./debug) | | | | | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | | ✓ | +| [`httpClientIntegration`](./httpclient) | | ✓ | | | | +| [`moduleMetadataIntegration`](./modulemetadata) | | | | | ✓ | +| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | | +| [`replayIntegration`](./replay) | | | | ✓ | ✓ | +| [`replayCanvasIntegration`](./replaycanvas) | | | | ✓ | | +| [`reportingObserverIntegration`](./reportingobserver) | | ✓ | | | | +| [`sessionTimingIntegration`](./sessiontiming) | | | | | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.nestjs.mdx b/platform-includes/configuration/integrations/javascript.nestjs.mdx index 383a243faa291..826ca2f7e8fa6 100644 --- a/platform-includes/configuration/integrations/javascript.nestjs.mdx +++ b/platform-includes/configuration/integrations/javascript.nestjs.mdx @@ -1,35 +1,44 @@ ### Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Additional Context** | -| --------------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------------------: | -| [`consoleIntegration`](./console) | ✓ | | | ✓ | -| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | -| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | -| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | -| [`graphqlIntegration`](./graphql) | ✓ | | ✓ | | -| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | -| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | -| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | -| [`modulesIntegration`](./modules) | ✓ | | | ✓ | -| [`mongoIntegration`](./mongo) | ✓ | | ✓ | | -| [`mongooseIntegration`](./mongoose) | ✓ | | ✓ | | -| [`mysqlIntegration`](./mysql) | ✓ | | ✓ | | -| [`mysql2Integration`](./mysql2) | ✓ | | ✓ | | -| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | -| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | -| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | -| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | -| [`postgresIntegration`](./postgres) | ✓ | | ✓ | | -| [`prismaIntegration`](./prisma) | | | ✓ | | -| [`redisIntegration`](./redis) | ✓ | | ✓ | | -| [`requestDataIntegration`](./requestdata) | ✓ | | ✓ | | -| [`anrIntegration`](./anr) | | ✓ | | | -| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | -| [`debugIntegration`](./debug) | | | | | -| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | -| [`localVariablesIntegration`](./localvariables) | | ✓ | | | -| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | -| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | -| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | -| [`fsIntegration`](./fs) | | | ✓ | | -| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Additional Context** | +| --------------------------------------------------------- | :--------------: | :--------: | :---------: | :--------------------: | +| [`amqplibIntegration`](./amqplib) | ✓ | | ✓ | | +| [`consoleIntegration`](./console) | ✓ | | | ✓ | +| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | +| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | +| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | +| [`genericPoolIntegration`](./genericpool) | ✓ | | ✓ | | +| [`graphqlIntegration`](./graphql) | ✓ | | ✓ | | +| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | +| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | +| [`kafkaIntegration`](./kafka) | ✓ | | ✓ | | +| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | +| [`lruMemoizerIntegration`](./lrumemoizer) | ✓ | | ✓ | | +| [`modulesIntegration`](./modules) | ✓ | | | ✓ | +| [`mongoIntegration`](./mongo) | ✓ | | ✓ | | +| [`mongooseIntegration`](./mongoose) | ✓ | | ✓ | | +| [`mysqlIntegration`](./mysql) | ✓ | | ✓ | | +| [`mysql2Integration`](./mysql2) | ✓ | | ✓ | | +| [`nestIntegration`](./nest) | ✓ | | ✓ | | +| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | +| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | +| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | +| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | +| [`postgresIntegration`](./postgres) | ✓ | | ✓ | | +| [`redisIntegration`](./redis) | ✓ | | ✓ | | +| [`requestDataIntegration`](./requestdata) | ✓ | | ✓ | | +| [`tediousIntegration`](./tedious) | ✓ | | ✓ | | +| [`childProcessIntegration`](./childProcess) | ✓ | | | ✓ | +| [`anrIntegration`](./anr) | | ✓ | | | +| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | +| [`debugIntegration`](./debug) | | | | | +| [`dataloaderIntegration`](./dataloader) | | | ✓ | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | +| [`fsIntegration`](./fs) | | | ✓ | | +| [`knexIntegration`](./knex) | | | ✓ | | +| [`localVariablesIntegration`](./localvariables) | | ✓ | | | +| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | +| [`prismaIntegration`](./prisma) | | | ✓ | | +| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | +| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | +| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.nextjs.mdx b/platform-includes/configuration/integrations/javascript.nextjs.mdx index 83bd9b7202c83..92356373b4fe4 100644 --- a/platform-includes/configuration/integrations/javascript.nextjs.mdx +++ b/platform-includes/configuration/integrations/javascript.nextjs.mdx @@ -9,69 +9,80 @@ Depending on whether an integration enhances the functionality of a particular r ### Common Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Additional Context** | -| --------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------------------: | -| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | -| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | -| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | -| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | -| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | -| [`debugIntegration`](./debug) | | | | | -| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | -| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | -| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Additional Context** | +| --------------------------------------------------- | :--------------: | :--------: | :---------: | :--------------------: | +| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | +| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | +| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | +| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | +| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | +| [`debugIntegration`](./debug) | | | | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | +| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | +| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | ### Browser Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Replay** | **Additional Context** | -| ----------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------: | :--------------------: | -| [`breadcrumbsIntegration`](./breadcrumbs) | ✓ | | | | ✓ | -| [`browserApiErrorsIntegration`](./browserapierrors) | ✓ | ✓ | | | | -| [`browserTracingIntegration`](./browsertracing) | ✓ | | ✓ | | ✓ | -| [`globalHandlersIntegration`](./globalhandlers) | ✓ | ✓ | | | | -| [`httpContextIntegration`](./httpcontext) | ✓ | | | | ✓ | -| [`browserProfilingIntegration`](./browserprofiling) | | | ✓ | | | -| [`contextLinesIntegration`](./contextlines) | | ✓ | | | | -| [`httpClientIntegration`](./httpclient) | | ✓ | | | | -| [`moduleMetadataIntegration`](./modulemetadata) | | | | | ✓ | -| [`replayIntegration`](./replay) | | | | ✓ | ✓ | -| [`replayCanvasIntegration`](./replaycanvas) | | | | ✓ | | -| [`reportingObserverIntegration`](./reportingobserver) | | ✓ | | | | +| | **Auto Enabled** | **Errors** | **Tracing** | **Replay** | **Additional Context** | +| ----------------------------------------------------- | :--------------: | :--------: | :---------: | :--------: | :--------------------: | +| [`breadcrumbsIntegration`](./breadcrumbs) | ✓ | | | | ✓ | +| [`browserApiErrorsIntegration`](./browserapierrors) | ✓ | ✓ | | | | +| [`browserTracingIntegration`](./browsertracing) | ✓ | | ✓ | | ✓ | +| [`globalHandlersIntegration`](./globalhandlers) | ✓ | ✓ | | | | +| [`httpContextIntegration`](./httpcontext) | ✓ | | | | ✓ | +| [`browserProfilingIntegration`](./browserprofiling) | | | ✓ | | | +| [`browserSessionIntegration`](./browsersession) | ✓ | | | | ✓ | +| [`contextLinesIntegration`](./contextlines) | | ✓ | | | | +| [`httpClientIntegration`](./httpclient) | | ✓ | | | | +| [`moduleMetadataIntegration`](./modulemetadata) | | | | | ✓ | +| [`replayIntegration`](./replay) | | | | ✓ | ✓ | +| [`replayCanvasIntegration`](./replaycanvas) | | | | ✓ | | +| [`reportingObserverIntegration`](./reportingobserver) | | ✓ | | | | ### Server (Node.js, Edge) Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Additional Context** | -| ----------------------------------------- | :--------------: | :--------: | :-------------: | :--------------------: | -| [`requestDataIntegration`](./requestdata) | ✓ | | ✓ | | +| | **Auto Enabled** | **Errors** | **Tracing** | **Additional Context** | +| ----------------------------------------- | :--------------: | :--------: | :---------: | :--------------------: | +| [`requestDataIntegration`](./requestdata) | ✓ | | ✓ | | ### Node.js Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Additional Context** | -| --------------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------------------: | -| [`consoleIntegration`](./console) | ✓ | | | ✓ | -| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | -| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | -| [`graphqlIntegration`](./graphql) | ✓ | | ✓ | | -| [`modulesIntegration`](./modules) | ✓ | | | ✓ | -| [`mongoIntegration`](./mongo) | ✓ | | ✓ | | -| [`mongooseIntegration`](./mongoose) | ✓ | | ✓ | | -| [`mysqlIntegration`](./mysql) | ✓ | | ✓ | | -| [`mysql2Integration`](./mysql2) | ✓ | | ✓ | | -| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | -| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | -| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | -| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | -| [`postgresIntegration`](./postgres) | ✓ | | ✓ | | -| [`prismaIntegration`](./prisma) | | | ✓ | | -| [`redisIntegration`](./redis) | ✓ | | ✓ | | -| [`anrIntegration`](./anr) | | ✓ | | | -| [`localVariablesIntegration`](./localvariables) | | ✓ | | | -| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | -| [`fsIntegration`](./fs) | | | ✓ | | -| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Additional Context** | +| --------------------------------------------------------- | :--------------: | :--------: | :---------: | :--------------------: | +| [`amqplibIntegration`](./amqplib) | ✓ | | ✓ | | +| [`consoleIntegration`](./console) | ✓ | | | ✓ | +| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | +| [`genericPoolIntegration`](./genericpool) | ✓ | | ✓ | | +| [`graphqlIntegration`](./graphql) | ✓ | | ✓ | | +| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | +| [`kafkaIntegration`](./kafka) | ✓ | | ✓ | | +| [`lruMemoizerIntegration`](./lrumemoizer) | ✓ | | ✓ | | +| [`modulesIntegration`](./modules) | ✓ | | | ✓ | +| [`mongoIntegration`](./mongo) | ✓ | | ✓ | | +| [`mongooseIntegration`](./mongoose) | ✓ | | ✓ | | +| [`mysqlIntegration`](./mysql) | ✓ | | ✓ | | +| [`mysql2Integration`](./mysql2) | ✓ | | ✓ | | +| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | +| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | +| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | +| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | +| [`postgresIntegration`](./postgres) | ✓ | | ✓ | | +| [`redisIntegration`](./redis) | ✓ | | ✓ | | +| [`requestDataIntegration`](./requestdata) | ✓ | | ✓ | | +| [`tediousIntegration`](./tedious) | ✓ | | ✓ | | +| [`dataloaderIntegration`](./dataloader) | ✓ | | ✓ | | +| [`childProcessIntegration`](./childProcess) | ✓ | | | ✓ | +| [`anrIntegration`](./anr) | | ✓ | | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | +| [`fsIntegration`](./fs) | | | ✓ | | +| [`knexIntegration`](./knex) | | | ✓ | | +| [`localVariablesIntegration`](./localvariables) | | ✓ | | | +| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | +| [`prismaIntegration`](./prisma) | | | ✓ | | +| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | ### Edge Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Additional Context** | -| --------------------------------------------- | :--------------: | :--------: | :-------------: | :--------------------: | -| [`winterCGFetchIntegration`](./wintercgfetch) | ✓ | | ✓ | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Additional Context** | +| --------------------------------------------- | :--------------: | :--------: | :---------: | :--------------------: | +| [`winterCGFetchIntegration`](./wintercgfetch) | ✓ | | ✓ | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.node.mdx b/platform-includes/configuration/integrations/javascript.node.mdx index 383a243faa291..ed9c14b81a94a 100644 --- a/platform-includes/configuration/integrations/javascript.node.mdx +++ b/platform-includes/configuration/integrations/javascript.node.mdx @@ -1,35 +1,43 @@ ### Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Additional Context** | -| --------------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------------------: | -| [`consoleIntegration`](./console) | ✓ | | | ✓ | -| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | -| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | -| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | -| [`graphqlIntegration`](./graphql) | ✓ | | ✓ | | -| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | -| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | -| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | -| [`modulesIntegration`](./modules) | ✓ | | | ✓ | -| [`mongoIntegration`](./mongo) | ✓ | | ✓ | | -| [`mongooseIntegration`](./mongoose) | ✓ | | ✓ | | -| [`mysqlIntegration`](./mysql) | ✓ | | ✓ | | -| [`mysql2Integration`](./mysql2) | ✓ | | ✓ | | -| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | -| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | -| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | -| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | -| [`postgresIntegration`](./postgres) | ✓ | | ✓ | | -| [`prismaIntegration`](./prisma) | | | ✓ | | -| [`redisIntegration`](./redis) | ✓ | | ✓ | | -| [`requestDataIntegration`](./requestdata) | ✓ | | ✓ | | -| [`anrIntegration`](./anr) | | ✓ | | | -| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | -| [`debugIntegration`](./debug) | | | | | -| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | -| [`localVariablesIntegration`](./localvariables) | | ✓ | | | -| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | -| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | -| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | -| [`fsIntegration`](./fs) | | | ✓ | | -| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Additional Context** | +| --------------------------------------------------------- | :--------------: | :--------: | :---------: | :--------------------: | +| [`amqplibIntegration`](./amqplib) | ✓ | | ✓ | | +| [`consoleIntegration`](./console) | ✓ | | | ✓ | +| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | +| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | +| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | +| [`genericPoolIntegration`](./genericpool) | ✓ | | ✓ | | +| [`graphqlIntegration`](./graphql) | ✓ | | ✓ | | +| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | +| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | +| [`kafkaIntegration`](./kafka) | ✓ | | ✓ | | +| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | +| [`lruMemoizerIntegration`](./lrumemoizer) | ✓ | | ✓ | | +| [`modulesIntegration`](./modules) | ✓ | | | ✓ | +| [`mongoIntegration`](./mongo) | ✓ | | ✓ | | +| [`mongooseIntegration`](./mongoose) | ✓ | | ✓ | | +| [`mysqlIntegration`](./mysql) | ✓ | | ✓ | | +| [`mysql2Integration`](./mysql2) | ✓ | | ✓ | | +| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | +| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | +| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | +| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | +| [`postgresIntegration`](./postgres) | ✓ | | ✓ | | +| [`redisIntegration`](./redis) | ✓ | | ✓ | | +| [`requestDataIntegration`](./requestdata) | ✓ | | ✓ | | +| [`tediousIntegration`](./tedious) | ✓ | | ✓ | | +| [`childProcessIntegration`](./childProcess) | ✓ | | | ✓ | +| [`anrIntegration`](./anr) | | ✓ | | | +| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | +| [`debugIntegration`](./debug) | | | | | +| [`dataloaderIntegration`](./dataloader) | | | ✓ | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | +| [`fsIntegration`](./fs) | | | ✓ | | +| [`knexIntegration`](./knex) | | | ✓ | | +| [`localVariablesIntegration`](./localvariables) | | ✓ | | | +| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | +| [`prismaIntegration`](./prisma) | | | ✓ | | +| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | +| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | +| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.nuxt.mdx b/platform-includes/configuration/integrations/javascript.nuxt.mdx index e13c715497e3f..accaa03bf467f 100644 --- a/platform-includes/configuration/integrations/javascript.nuxt.mdx +++ b/platform-includes/configuration/integrations/javascript.nuxt.mdx @@ -8,58 +8,68 @@ Depending on whether an integration enhances the functionality of a particular r ### Common Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Additional Context** | -| --------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------------------: | -| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | -| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | -| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | -| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | -| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | -| [`debugIntegration`](./debug) | | | | | -| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | -| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | -| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Additional Context** | +| --------------------------------------------------- | :--------------: | :--------: | :---------: | :--------------------: | +| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | +| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | +| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | +| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | +| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | +| [`debugIntegration`](./debug) | | | | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | +| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | +| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | ### Browser Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Replay** | **Additional Context** | -| ----------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------: | :--------------------: | -| [`breadcrumbsIntegration`](./breadcrumbs) | ✓ | | | | ✓ | -| [`browserApiErrorsIntegration`](./browserapierrors) | ✓ | ✓ | | | | -| [`browserTracingIntegration`](./browsertracing) | ✓ | | ✓ | | ✓ | -| [`globalHandlersIntegration`](./globalhandlers) | ✓ | ✓ | | | | -| [`httpContextIntegration`](./httpcontext) | ✓ | | | | ✓ | -| [`browserProfilingIntegration`](./browserprofiling) | | | ✓ | | | -| [`contextLinesIntegration`](./contextlines) | | ✓ | | | | -| [`httpClientIntegration`](./httpclient) | | ✓ | | | | -| [`moduleMetadataIntegration`](./modulemetadata) | | | | | ✓ | -| [`replayIntegration`](./replay) | | | | ✓ | ✓ | -| [`replayCanvasIntegration`](./replaycanvas) | | | | ✓ | | -| [`reportingObserverIntegration`](./reportingobserver) | | ✓ | | | | +| | **Auto Enabled** | **Errors** | **Tracing** | **Replay** | **Additional Context** | +| ----------------------------------------------------- | :--------------: | :--------: | :---------: | :--------: | :--------------------: | +| [`breadcrumbsIntegration`](./breadcrumbs) | ✓ | | | | ✓ | +| [`browserApiErrorsIntegration`](./browserapierrors) | ✓ | ✓ | | | | +| [`browserTracingIntegration`](./browsertracing) | ✓ | | ✓ | | ✓ | +| [`globalHandlersIntegration`](./globalhandlers) | ✓ | ✓ | | | | +| [`httpContextIntegration`](./httpcontext) | ✓ | | | | ✓ | +| [`browserProfilingIntegration`](./browserprofiling) | | | ✓ | | | +| [`browserSessionIntegration`](./browsersession) | ✓ | | | | ✓ | +| [`contextLinesIntegration`](./contextlines) | | ✓ | | | | +| [`httpClientIntegration`](./httpclient) | | ✓ | | | | +| [`moduleMetadataIntegration`](./modulemetadata) | | | | | ✓ | +| [`replayIntegration`](./replay) | | | | ✓ | ✓ | +| [`replayCanvasIntegration`](./replaycanvas) | | | | ✓ | | +| [`reportingObserverIntegration`](./reportingobserver) | | ✓ | | | | ### Node.js Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Additional Context** | -| --------------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------------------: | -| [`consoleIntegration`](./console) | ✓ | | | ✓ | -| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | -| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | -| [`graphqlIntegration`](./graphql) | ✓ | | ✓ | | -| [`modulesIntegration`](./modules) | ✓ | | | ✓ | -| [`mongoIntegration`](./mongo) | ✓ | | ✓ | | -| [`mongooseIntegration`](./mongoose) | ✓ | | ✓ | | -| [`mysqlIntegration`](./mysql) | ✓ | | ✓ | | -| [`mysql2Integration`](./mysql2) | ✓ | | ✓ | | -| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | -| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | -| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | -| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | -| [`postgresIntegration`](./postgres) | ✓ | | ✓ | | -| [`prismaIntegration`](./prisma) | | | ✓ | | -| [`redisIntegration`](./redis) | ✓ | | ✓ | | -| [`requestDataIntegration`](./requestdata) | ✓ | | ✓ | | -| [`anrIntegration`](./anr) | | ✓ | | | -| [`localVariablesIntegration`](./localvariables) | | ✓ | | | -| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | -| [`fsIntegration`](./fs) | | | ✓ | | -| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Additional Context** | +| --------------------------------------------------------- | :--------------: | :--------: | :---------: | :--------------------: | +| [`amqplibIntegration`](./amqplib) | ✓ | | ✓ | | +| [`consoleIntegration`](./console) | ✓ | | | ✓ | +| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | +| [`genericPoolIntegration`](./genericpool) | ✓ | | ✓ | | +| [`graphqlIntegration`](./graphql) | ✓ | | ✓ | | +| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | +| [`kafkaIntegration`](./kafka) | ✓ | | ✓ | | +| [`lruMemoizerIntegration`](./lrumemoizer) | ✓ | | ✓ | | +| [`modulesIntegration`](./modules) | ✓ | | | ✓ | +| [`mongoIntegration`](./mongo) | ✓ | | ✓ | | +| [`mongooseIntegration`](./mongoose) | ✓ | | ✓ | | +| [`mysqlIntegration`](./mysql) | ✓ | | ✓ | | +| [`mysql2Integration`](./mysql2) | ✓ | | ✓ | | +| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | +| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | +| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | +| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | +| [`postgresIntegration`](./postgres) | ✓ | | ✓ | | +| [`redisIntegration`](./redis) | ✓ | | ✓ | | +| [`requestDataIntegration`](./requestdata) | ✓ | | ✓ | | +| [`tediousIntegration`](./tedious) | ✓ | | ✓ | | +| [`dataloaderIntegration`](./dataloader) | ✓ | | ✓ | | +| [`childProcessIntegration`](./childProcess) | ✓ | | | ✓ | +| [`anrIntegration`](./anr) | | ✓ | | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | +| [`fsIntegration`](./fs) | | | ✓ | | +| [`knexIntegration`](./knex) | | | ✓ | | +| [`localVariablesIntegration`](./localvariables) | | ✓ | | | +| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | +| [`prismaIntegration`](./prisma) | | | ✓ | | +| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.remix.mdx b/platform-includes/configuration/integrations/javascript.remix.mdx index fc3b337f309d9..7c314fa1505c4 100644 --- a/platform-includes/configuration/integrations/javascript.remix.mdx +++ b/platform-includes/configuration/integrations/javascript.remix.mdx @@ -8,58 +8,68 @@ Depending on whether an integration enhances the functionality of a particular r ### Common Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Additional Context** | -| --------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------------------: | -| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | -| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | -| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | -| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | -| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | -| [`debugIntegration`](./debug) | | | | | -| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | -| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | -| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Additional Context** | +| --------------------------------------------------- | :--------------: | :--------: | :---------: | :--------------------: | +| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | +| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | +| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | +| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | +| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | +| [`debugIntegration`](./debug) | | | | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | +| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | +| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | ### Browser Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Replay** | **Additional Context** | -| ----------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------: | :--------------------: | -| [`breadcrumbsIntegration`](./breadcrumbs) | ✓ | | | | ✓ | -| [`browserApiErrorsIntegration`](./browserapierrors) | ✓ | ✓ | | | | -| [`browserTracingIntegration`](./browsertracing) | ✓ | | ✓ | | ✓ | -| [`globalHandlersIntegration`](./globalhandlers) | ✓ | ✓ | | | | -| [`httpContextIntegration`](./httpcontext) | ✓ | | | | ✓ | -| [`browserProfilingIntegration`](./browserprofiling) | | | ✓ | | | -| [`contextLinesIntegration`](./contextlines) | | ✓ | | | | -| [`httpClientIntegration`](./httpclient) | | ✓ | | | | -| [`moduleMetadataIntegration`](./modulemetadata) | | | | | ✓ | -| [`replayIntegration`](./replay) | | | | ✓ | ✓ | -| [`replayCanvasIntegration`](./replaycanvas) | | | | ✓ | | -| [`reportingObserverIntegration`](./reportingobserver) | | ✓ | | | | +| | **Auto Enabled** | **Errors** | **Tracing** | **Replay** | **Additional Context** | +| ----------------------------------------------------- | :--------------: | :--------: | :---------: | :--------: | :--------------------: | +| [`breadcrumbsIntegration`](./breadcrumbs) | ✓ | | | | ✓ | +| [`browserApiErrorsIntegration`](./browserapierrors) | ✓ | ✓ | | | | +| [`browserTracingIntegration`](./browsertracing) | ✓ | | ✓ | | ✓ | +| [`globalHandlersIntegration`](./globalhandlers) | ✓ | ✓ | | | | +| [`httpContextIntegration`](./httpcontext) | ✓ | | | | ✓ | +| [`browserProfilingIntegration`](./browserprofiling) | | | ✓ | | | +| [`browserSessionIntegration`](./browsersession) | ✓ | | | | ✓ | +| [`contextLinesIntegration`](./contextlines) | | ✓ | | | | +| [`httpClientIntegration`](./httpclient) | | ✓ | | | | +| [`moduleMetadataIntegration`](./modulemetadata) | | | | | ✓ | +| [`replayIntegration`](./replay) | | | | ✓ | ✓ | +| [`replayCanvasIntegration`](./replaycanvas) | | | | ✓ | | +| [`reportingObserverIntegration`](./reportingobserver) | | ✓ | | | | ### Node.js Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Additional Context** | -| --------------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------------------: | -| [`consoleIntegration`](./console) | ✓ | | | ✓ | -| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | -| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | -| [`graphqlIntegration`](./graphql) | ✓ | | ✓ | | -| [`modulesIntegration`](./modules) | ✓ | | | ✓ | -| [`mongoIntegration`](./mongo) | ✓ | | ✓ | | -| [`mongooseIntegration`](./mongoose) | ✓ | | ✓ | | -| [`mysqlIntegration`](./mysql) | ✓ | | ✓ | | -| [`mysql2Integration`](./mysql2) | ✓ | | ✓ | | -| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | -| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | -| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | -| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | -| [`postgresIntegration`](./postgres) | ✓ | | ✓ | | -| [`prismaIntegration`](./prisma) | | | ✓ | | -| [`redisIntegration`](./redis) | ✓ | | ✓ | | -| [`requestDataIntegration`](./requestdata) | ✓ | | ✓ | | -| [`anrIntegration`](./anr) | | ✓ | | | -| [`localVariablesIntegration`](./localvariables) | | ✓ | | | -| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | -| [`fsIntegration`](./fs) | | | ✓ | | -| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Additional Context** | +| --------------------------------------------------------- | :--------------: | :--------: | :---------: | :--------------------: | +| [`amqplibIntegration`](./amqplib) | ✓ | | ✓ | | +| [`consoleIntegration`](./console) | ✓ | | | ✓ | +| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | +| [`genericPoolIntegration`](./genericpool) | ✓ | | ✓ | | +| [`graphqlIntegration`](./graphql) | ✓ | | ✓ | | +| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | +| [`kafkaIntegration`](./kafka) | ✓ | | ✓ | | +| [`lruMemoizerIntegration`](./lrumemoizer) | ✓ | | ✓ | | +| [`modulesIntegration`](./modules) | ✓ | | | ✓ | +| [`mongoIntegration`](./mongo) | ✓ | | ✓ | | +| [`mongooseIntegration`](./mongoose) | ✓ | | ✓ | | +| [`mysqlIntegration`](./mysql) | ✓ | | ✓ | | +| [`mysql2Integration`](./mysql2) | ✓ | | ✓ | | +| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | +| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | +| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | +| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | +| [`postgresIntegration`](./postgres) | ✓ | | ✓ | | +| [`redisIntegration`](./redis) | ✓ | | ✓ | | +| [`requestDataIntegration`](./requestdata) | ✓ | | ✓ | | +| [`tediousIntegration`](./tedious) | ✓ | | ✓ | | +| [`dataloaderIntegration`](./dataloader) | ✓ | | ✓ | | +| [`childProcessIntegration`](./childProcess) | ✓ | | | ✓ | +| [`anrIntegration`](./anr) | | ✓ | | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | +| [`fsIntegration`](./fs) | | | ✓ | | +| [`knexIntegration`](./knex) | | | ✓ | | +| [`localVariablesIntegration`](./localvariables) | | ✓ | | | +| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | +| [`prismaIntegration`](./prisma) | | | ✓ | | +| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.solidstart.mdx b/platform-includes/configuration/integrations/javascript.solidstart.mdx index 387999c4595fb..01e0575ac52ce 100644 --- a/platform-includes/configuration/integrations/javascript.solidstart.mdx +++ b/platform-includes/configuration/integrations/javascript.solidstart.mdx @@ -8,57 +8,68 @@ Depending on whether an integration enhances the functionality of a particular r ### Common Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Additional Context** | -| --------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------------------: | -| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | -| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | -| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | -| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | -| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | -| [`debugIntegration`](./debug) | | | | | -| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | -| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | -| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Additional Context** | +| --------------------------------------------------- | :--------------: | :--------: | :---------: | :--------------------: | +| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | +| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | +| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | +| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | +| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | +| [`debugIntegration`](./debug) | | | | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | +| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | +| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | ### Browser Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Replay** | **Additional Context** | -| ----------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------: | :--------------------: | -| [`breadcrumbsIntegration`](./breadcrumbs) | ✓ | | | | ✓ | -| [`browserApiErrorsIntegration`](./browserapierrors) | ✓ | ✓ | | | | -| [`browserTracingIntegration`](./browsertracing) | ✓ | | ✓ | | ✓ | -| [`globalHandlersIntegration`](./globalhandlers) | ✓ | ✓ | | | | -| [`httpContextIntegration`](./httpcontext) | ✓ | | | | ✓ | -| [`browserProfilingIntegration`](./browserprofiling) | | | ✓ | | | -| [`contextLinesIntegration`](./contextlines) | | ✓ | | | | -| [`httpClientIntegration`](./httpclient) | | ✓ | | | | -| [`moduleMetadataIntegration`](./modulemetadata) | | | | | ✓ | -| [`replayIntegration`](./replay) | | | | ✓ | ✓ | -| [`replayCanvasIntegration`](./replaycanvas) | | | | ✓ | | -| [`reportingObserverIntegration`](./reportingobserver) | | ✓ | | | | +| | **Auto Enabled** | **Errors** | **Tracing** | **Replay** | **Additional Context** | +| ----------------------------------------------------- | :--------------: | :--------: | :---------: | :--------: | :--------------------: | +| [`breadcrumbsIntegration`](./breadcrumbs) | ✓ | | | | ✓ | +| [`browserApiErrorsIntegration`](./browserapierrors) | ✓ | ✓ | | | | +| [`browserTracingIntegration`](./browsertracing) | ✓ | | ✓ | | ✓ | +| [`globalHandlersIntegration`](./globalhandlers) | ✓ | ✓ | | | | +| [`httpContextIntegration`](./httpcontext) | ✓ | | | | ✓ | +| [`browserProfilingIntegration`](./browserprofiling) | | | ✓ | | | +| [`browserSessionIntegration`](./browsersession) | ✓ | | | | ✓ | +| [`contextLinesIntegration`](./contextlines) | | ✓ | | | | +| [`httpClientIntegration`](./httpclient) | | ✓ | | | | +| [`moduleMetadataIntegration`](./modulemetadata) | | | | | ✓ | +| [`replayIntegration`](./replay) | | | | ✓ | ✓ | +| [`replayCanvasIntegration`](./replaycanvas) | | | | ✓ | | +| [`reportingObserverIntegration`](./reportingobserver) | | ✓ | | | | ### Node.js Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Additional Context** | -| --------------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------------------: | -| [`consoleIntegration`](./console) | ✓ | | | ✓ | -| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | -| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | -| [`graphqlIntegration`](./graphql) | ✓ | | ✓ | | -| [`modulesIntegration`](./modules) | ✓ | | | ✓ | -| [`mongoIntegration`](./mongo) | ✓ | | ✓ | | -| [`mongooseIntegration`](./mongoose) | ✓ | | ✓ | | -| [`mysqlIntegration`](./mysql) | ✓ | | ✓ | | -| [`mysql2Integration`](./mysql2) | ✓ | | ✓ | | -| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | -| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | -| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | -| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | -| [`postgresIntegration`](./postgres) | ✓ | | ✓ | | -| [`prismaIntegration`](./prisma) | | | ✓ | | -| [`redisIntegration`](./redis) | ✓ | | ✓ | | -| [`requestDataIntegration`](./requestdata) | ✓ | | ✓ | | -| [`anrIntegration`](./anr) | | ✓ | | | -| [`localVariablesIntegration`](./localvariables) | | ✓ | | | -| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | -| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Additional Context** | +| --------------------------------------------------------- | :--------------: | :--------: | :---------: | :--------------------: | +| [`amqplibIntegration`](./amqplib) | ✓ | | ✓ | | +| [`consoleIntegration`](./console) | ✓ | | | ✓ | +| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | +| [`genericPoolIntegration`](./genericpool) | ✓ | | ✓ | | +| [`graphqlIntegration`](./graphql) | ✓ | | ✓ | | +| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | +| [`kafkaIntegration`](./kafka) | ✓ | | ✓ | | +| [`lruMemoizerIntegration`](./lrumemoizer) | ✓ | | ✓ | | +| [`modulesIntegration`](./modules) | ✓ | | | ✓ | +| [`mongoIntegration`](./mongo) | ✓ | | ✓ | | +| [`mongooseIntegration`](./mongoose) | ✓ | | ✓ | | +| [`mysqlIntegration`](./mysql) | ✓ | | ✓ | | +| [`mysql2Integration`](./mysql2) | ✓ | | ✓ | | +| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | +| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | +| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | +| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | +| [`postgresIntegration`](./postgres) | ✓ | | ✓ | | +| [`redisIntegration`](./redis) | ✓ | | ✓ | | +| [`requestDataIntegration`](./requestdata) | ✓ | | ✓ | | +| [`tediousIntegration`](./tedious) | ✓ | | ✓ | | +| [`dataloaderIntegration`](./dataloader) | ✓ | | ✓ | | +| [`childProcessIntegration`](./childProcess) | ✓ | | | ✓ | +| [`anrIntegration`](./anr) | | ✓ | | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | +| [`fsIntegration`](./fs) | | | ✓ | | +| [`knexIntegration`](./knex) | | | ✓ | | +| [`localVariablesIntegration`](./localvariables) | | ✓ | | | +| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | +| [`prismaIntegration`](./prisma) | | | ✓ | | +| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.sveltekit.mdx b/platform-includes/configuration/integrations/javascript.sveltekit.mdx index 1f43774a212f6..795be37ce3ce0 100644 --- a/platform-includes/configuration/integrations/javascript.sveltekit.mdx +++ b/platform-includes/configuration/integrations/javascript.sveltekit.mdx @@ -8,58 +8,68 @@ Depending on whether an integration enhances the functionality of a particular r ### Common Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Additional Context** | -| --------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------------------: | -| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | -| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | -| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | -| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | -| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | -| [`debugIntegration`](./debug) | | | | | -| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | -| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | -| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Additional Context** | +| --------------------------------------------------- | :--------------: | :--------: | :---------: | :--------------------: | +| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | +| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | +| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | +| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | +| [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | +| [`debugIntegration`](./debug) | | | | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | +| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | +| [`sessionTimingIntegration`](./sessiontiming) | | | | ✓ | ### Browser Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Replay** | **Additional Context** | -| ----------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------: | :--------------------: | -| [`breadcrumbsIntegration`](./breadcrumbs) | ✓ | | | | ✓ | -| [`browserApiErrorsIntegration`](./browserapierrors) | ✓ | ✓ | | | | -| [`browserTracingIntegration`](./browsertracing) | ✓ | | ✓ | | ✓ | -| [`globalHandlersIntegration`](./globalhandlers) | ✓ | ✓ | | | | -| [`httpContextIntegration`](./httpcontext) | ✓ | | | | ✓ | -| [`browserProfilingIntegration`](./browserprofiling) | | | ✓ | | | -| [`contextLinesIntegration`](./contextlines) | | ✓ | | | | -| [`httpClientIntegration`](./httpclient) | | ✓ | | | | -| [`moduleMetadataIntegration`](./modulemetadata) | | | | | ✓ | -| [`replayIntegration`](./replay) | | | | ✓ | ✓ | -| [`replayCanvasIntegration`](./replaycanvas) | | | | ✓ | | -| [`reportingObserverIntegration`](./reportingobserver) | | ✓ | | | | +| | **Auto Enabled** | **Errors** | **Tracing** | **Replay** | **Additional Context** | +| ----------------------------------------------------- | :--------------: | :--------: | :---------: | :--------: | :--------------------: | +| [`breadcrumbsIntegration`](./breadcrumbs) | ✓ | | | | ✓ | +| [`browserApiErrorsIntegration`](./browserapierrors) | ✓ | ✓ | | | | +| [`browserTracingIntegration`](./browsertracing) | ✓ | | ✓ | | ✓ | +| [`globalHandlersIntegration`](./globalhandlers) | ✓ | ✓ | | | | +| [`httpContextIntegration`](./httpcontext) | ✓ | | | | ✓ | +| [`browserProfilingIntegration`](./browserprofiling) | | | ✓ | | | +| [`browserSessionIntegration`](./browsersession) | ✓ | | | | ✓ | +| [`contextLinesIntegration`](./contextlines) | | ✓ | | | | +| [`httpClientIntegration`](./httpclient) | | ✓ | | | | +| [`moduleMetadataIntegration`](./modulemetadata) | | | | | ✓ | +| [`replayIntegration`](./replay) | | | | ✓ | ✓ | +| [`replayCanvasIntegration`](./replaycanvas) | | | | ✓ | | +| [`reportingObserverIntegration`](./reportingobserver) | | ✓ | | | | ### Node.js Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Additional Context** | -| --------------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------------------: | -| [`consoleIntegration`](./console) | ✓ | | | ✓ | -| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | -| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | -| [`graphqlIntegration`](./graphql) | ✓ | | ✓ | | -| [`modulesIntegration`](./modules) | ✓ | | | ✓ | -| [`mongoIntegration`](./mongo) | ✓ | | ✓ | | -| [`mongooseIntegration`](./mongoose) | ✓ | | ✓ | | -| [`mysqlIntegration`](./mysql) | ✓ | | ✓ | | -| [`mysql2Integration`](./mysql2) | ✓ | | ✓ | | -| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | -| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | -| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | -| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | -| [`postgresIntegration`](./postgres) | ✓ | | ✓ | | -| [`prismaIntegration`](./prisma) | | | ✓ | | -| [`redisIntegration`](./redis) | ✓ | | ✓ | | -| [`requestDataIntegration`](./requestdata) | ✓ | | ✓ | | -| [`anrIntegration`](./anr) | | ✓ | | | -| [`localVariablesIntegration`](./localvariables) | | ✓ | | | -| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | -| [`fsIntegration`](./fs) | | | ✓ | | -| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Additional Context** | +| --------------------------------------------------------- | :--------------: | :--------: | :---------: | :--------------------: | +| [`amqplibIntegration`](./amqplib) | ✓ | | ✓ | | +| [`consoleIntegration`](./console) | ✓ | | | ✓ | +| [`contextLinesIntegration`](./contextlines) | ✓ | ✓ | | | +| [`genericPoolIntegration`](./genericpool) | ✓ | | ✓ | | +| [`graphqlIntegration`](./graphql) | ✓ | | ✓ | | +| [`httpIntegration`](./http) | ✓ | ✓ | ✓ | ✓ | +| [`kafkaIntegration`](./kafka) | ✓ | | ✓ | | +| [`lruMemoizerIntegration`](./lrumemoizer) | ✓ | | ✓ | | +| [`modulesIntegration`](./modules) | ✓ | | | ✓ | +| [`mongoIntegration`](./mongo) | ✓ | | ✓ | | +| [`mongooseIntegration`](./mongoose) | ✓ | | ✓ | | +| [`mysqlIntegration`](./mysql) | ✓ | | ✓ | | +| [`mysql2Integration`](./mysql2) | ✓ | | ✓ | | +| [`nodeContextIntegration`](./nodecontext) | ✓ | | | ✓ | +| [`nativeNodeFetchIntegration`](./nodefetch) | ✓ | | ✓ | ✓ | +| [`onUncaughtExceptionIntegration`](./onuncaughtexception) | ✓ | ✓ | | | +| [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | +| [`postgresIntegration`](./postgres) | ✓ | | ✓ | | +| [`redisIntegration`](./redis) | ✓ | | ✓ | | +| [`requestDataIntegration`](./requestdata) | ✓ | | ✓ | | +| [`tediousIntegration`](./tedious) | ✓ | | ✓ | | +| [`childProcessIntegration`](./childProcess) | ✓ | | | ✓ | +| [`dataloaderIntegration`](./dataloader) | ✓ | | ✓ | | +| [`anrIntegration`](./anr) | | ✓ | | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | +| [`fsIntegration`](./fs) | | | ✓ | | +| [`knexIntegration`](./knex) | | | ✓ | | +| [`localVariablesIntegration`](./localvariables) | | ✓ | | | +| [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | +| [`prismaIntegration`](./prisma) | | | ✓ | | +| [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.vue.mdx b/platform-includes/configuration/integrations/javascript.vue.mdx index 6f3b4d963ba97..88de3ae444768 100644 --- a/platform-includes/configuration/integrations/javascript.vue.mdx +++ b/platform-includes/configuration/integrations/javascript.vue.mdx @@ -1,26 +1,27 @@ ### Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Replay** | **Additional Context** | -| ----------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------: | :--------------------: | -| [`breadcrumbsIntegration`](./breadcrumbs) | ✓ | | | | ✓ | -| [`browserApiErrorsIntegration`](./browserapierrors) | ✓ | ✓ | | | | -| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | | -| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | | -| [`globalHandlersIntegration`](./globalhandlers) | ✓ | ✓ | | | | -| [`httpContextIntegration`](./httpcontext) | ✓ | | | | ✓ | -| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | | -| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | | -| [`vueIntegration`](./vue) | ✓ | ✓ | ✓ | | | -| [`browserProfilingIntegration`](./browserprofiling) | | | ✓ | | | -| [`browserTracingIntegration`](./browsertracing) | | | ✓ | | ✓ | -| [`captureConsoleIntegration`](./captureconsole) | | | | | ✓ | -| [`contextLinesIntegration`](./contextlines) | | ✓ | | | | -| [`debugIntegration`](./debug) | | | | | | -| [`extraErrorDataIntegration`](./extraerrordata) | | | | | ✓ | -| [`httpClientIntegration`](./httpclient) | | ✓ | | | | -| [`moduleMetadataIntegration`](./modulemetadata) | | | | | ✓ | -| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | | -| [`replayIntegration`](./replay) | | | | ✓ | ✓ | -| [`replayCanvasIntegration`](./replaycanvas) | | | | ✓ | | -| [`reportingObserverIntegration`](./reportingobserver) | | ✓ | | | | -| [`sessionTimingIntegration`](./sessiontiming) | | | | | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Replay** | **Additional Context** | +| ----------------------------------------------------- | :--------------: | :--------: | :---------: | :--------: | :--------------------: | +| [`breadcrumbsIntegration`](./breadcrumbs) | ✓ | | | | ✓ | +| [`browserApiErrorsIntegration`](./browserapierrors) | ✓ | ✓ | | | | +| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | | +| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | | +| [`globalHandlersIntegration`](./globalhandlers) | ✓ | ✓ | | | | +| [`httpContextIntegration`](./httpcontext) | ✓ | | | | ✓ | +| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | | +| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | | +| [`vueIntegration`](./vue) | ✓ | ✓ | ✓ | | | +| [`browserProfilingIntegration`](./browserprofiling) | | | ✓ | | | +| [`browserSessionIntegration`](./browsersession) | ✓ | | | | ✓ | +| [`browserTracingIntegration`](./browsertracing) | | | ✓ | | ✓ | +| [`captureConsoleIntegration`](./captureconsole) | | | | | ✓ | +| [`contextLinesIntegration`](./contextlines) | | ✓ | | | | +| [`debugIntegration`](./debug) | | | | | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | | ✓ | +| [`httpClientIntegration`](./httpclient) | | ✓ | | | | +| [`moduleMetadataIntegration`](./modulemetadata) | | | | | ✓ | +| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | | +| [`replayIntegration`](./replay) | | | | ✓ | ✓ | +| [`replayCanvasIntegration`](./replaycanvas) | | | | ✓ | | +| [`reportingObserverIntegration`](./reportingobserver) | | ✓ | | | | +| [`sessionTimingIntegration`](./sessiontiming) | | | | | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.wasm.mdx b/platform-includes/configuration/integrations/javascript.wasm.mdx index f8d5b5e390dfc..7d229e84dfcff 100644 --- a/platform-includes/configuration/integrations/javascript.wasm.mdx +++ b/platform-includes/configuration/integrations/javascript.wasm.mdx @@ -1,23 +1,24 @@ ### Integrations -| | **Auto Enabled** | **Errors** | **Performance** | **Replay** | **Additional Context** | -| ----------------------------------------------------- | :--------------: | :--------: | :-------------: | :--------: | :--------------------: | -| [`breadcrumbsIntegration`](./breadcrumbs) | ✓ | | | | ✓ | -| [`browserApiErrorsIntegration`](./browserapierrors) | ✓ | ✓ | | | | -| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | | -| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | | -| [`globalHandlersIntegration`](./globalhandlers) | ✓ | ✓ | | | | -| [`httpContextIntegration`](./httpcontext) | ✓ | | | | ✓ | -| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | | -| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | | -| [`browserProfilingIntegration`](./browserprofiling) | | | ✓ | | | -| [`browserTracingIntegration`](./browsertracing) | | | ✓ | | ✓ | -| [`captureConsoleIntegration`](./captureconsole) | | | | | ✓ | -| [`contextLinesIntegration`](./contextlines) | | ✓ | | | | -| [`debugIntegration`](./debug) | | | | | | -| [`extraErrorDataIntegration`](./extraerrordata) | | | | | ✓ | -| [`httpClientIntegration`](./httpclient) | | ✓ | | | | -| [`moduleMetadataIntegration`](./modulemetadata) | | | | | ✓ | -| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | | -| [`reportingObserverIntegration`](./reportingobserver) | | ✓ | | | | -| [`sessionTimingIntegration`](./sessiontiming) | | | | | ✓ | +| | **Auto Enabled** | **Errors** | **Tracing** | **Replay** | **Additional Context** | +| ----------------------------------------------------- | :--------------: | :--------: | :---------: | :--------: | :--------------------: | +| [`breadcrumbsIntegration`](./breadcrumbs) | ✓ | | | | ✓ | +| [`browserApiErrorsIntegration`](./browserapierrors) | ✓ | ✓ | | | | +| [`dedupeIntegration`](./dedupe) | ✓ | ✓ | | | | +| [`functionToStringIntegration`](./functiontostring) | ✓ | | | | | +| [`globalHandlersIntegration`](./globalhandlers) | ✓ | ✓ | | | | +| [`httpContextIntegration`](./httpcontext) | ✓ | | | | ✓ | +| [`inboundFiltersIntegration`](./inboundfilters) | ✓ | ✓ | | | | +| [`linkedErrorsIntegration`](./linkederrors) | ✓ | ✓ | | | | +| [`browserProfilingIntegration`](./browserprofiling) | | | ✓ | | | +| [`browserSessionIntegration`](./browsersession) | ✓ | | | | ✓ | +| [`browserTracingIntegration`](./browsertracing) | | | ✓ | | ✓ | +| [`captureConsoleIntegration`](./captureconsole) | | | | | ✓ | +| [`contextLinesIntegration`](./contextlines) | | ✓ | | | | +| [`debugIntegration`](./debug) | | | | | | +| [`extraErrorDataIntegration`](./extraerrordata) | | | | | ✓ | +| [`httpClientIntegration`](./httpclient) | | ✓ | | | | +| [`moduleMetadataIntegration`](./modulemetadata) | | | | | ✓ | +| [`rewriteFramesIntegration`](./rewriteframes) | | ✓ | | | | +| [`reportingObserverIntegration`](./reportingobserver) | | ✓ | | | | +| [`sessionTimingIntegration`](./sessiontiming) | | | | | ✓ | diff --git a/platform-includes/configuration/integrations/lazy-loading-replay/javascript.angular.mdx b/platform-includes/configuration/integrations/lazy-loading-replay/javascript.angular.mdx index 7f6ed4a89c6f7..50977df638f34 100644 --- a/platform-includes/configuration/integrations/lazy-loading-replay/javascript.angular.mdx +++ b/platform-includes/configuration/integrations/lazy-loading-replay/javascript.angular.mdx @@ -1,11 +1,15 @@ -```javascript {filename: main.ts} {3, 7-8} +```javascript {filename: main.ts} {3, 6-7, 11-15} Sentry.init({ // Note, replayIntegration is NOT instantiated below: integrations: [], + + // Replay sample rates still have to be set in `Sentry.init`: + replaysSessionSampleRate: 0.1, + replaysOnErrorSampleRate: 1.0, }); // Sometime later -import("@sentry/angular").then(lazyLoadedSentry => { - Sentry.addIntegration(lazyLoadedSentry.replayIntegration()); +Sentry.lazyLoadIntegration("replayIntegration").then((replayIntegration) => { + Sentry.addIntegration(replayIntegration()); }); ``` diff --git a/platform-includes/configuration/launchdarkly/javascript.angular.mdx b/platform-includes/configuration/launchdarkly/javascript.angular.mdx new file mode 100644 index 0000000000000..41cb3f7a43a13 --- /dev/null +++ b/platform-includes/configuration/launchdarkly/javascript.angular.mdx @@ -0,0 +1,22 @@ +Before using this integration, you need to install and instrument the [LaunchDarkly SDK](https://www.npmjs.com/package/launchdarkly-js-client-sdk) in your app. Learn more by reading [LaunchDarkly's docs](https://docs.launchdarkly.com/sdk/client-side/javascript). + +```javascript +import * as Sentry from '@sentry/angular'; +import * as LaunchDarkly from 'launchdarkly-js-client-sdk'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.launchDarklyIntegration()] +}); + +const ldClient = LaunchDarkly.initialize( + 'my-client-ID', + {kind: 'user', key: 'my-user-context-key'}, + {inspectors: [Sentry.buildLaunchDarklyFlagUsedHandler()]} +); + +// Evaluate a flag with a default value. You may have to wait for your client to initialize first. +ldClient?.variation('test-flag', false); + +Sentry.captureException(new Error('Something went wrong!')) +``` diff --git a/platform-includes/configuration/launchdarkly/javascript.astro.mdx b/platform-includes/configuration/launchdarkly/javascript.astro.mdx new file mode 100644 index 0000000000000..c7b5c0ae3e631 --- /dev/null +++ b/platform-includes/configuration/launchdarkly/javascript.astro.mdx @@ -0,0 +1,22 @@ +Before using this integration, you need to install and instrument the [LaunchDarkly SDK](https://www.npmjs.com/package/launchdarkly-js-client-sdk) in your app. Learn more by reading [LaunchDarkly's docs](https://docs.launchdarkly.com/sdk/client-side/javascript). + +```javascript +import * as Sentry from '@sentry/astro'; +import * as LaunchDarkly from 'launchdarkly-js-client-sdk'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.launchDarklyIntegration()] +}); + +const ldClient = LaunchDarkly.initialize( + 'my-client-ID', + {kind: 'user', key: 'my-user-context-key'}, + {inspectors: [Sentry.buildLaunchDarklyFlagUsedHandler()]} +); + +// Evaluate a flag with a default value. You may have to wait for your client to initialize first. +ldClient?.variation('test-flag', false); + +Sentry.captureException(new Error('Something went wrong!')) +``` diff --git a/platform-includes/configuration/launchdarkly/javascript.ember.mdx b/platform-includes/configuration/launchdarkly/javascript.ember.mdx new file mode 100644 index 0000000000000..e4d7af31a2f26 --- /dev/null +++ b/platform-includes/configuration/launchdarkly/javascript.ember.mdx @@ -0,0 +1,22 @@ +Before using this integration, you need to install and instrument the [LaunchDarkly SDK](https://www.npmjs.com/package/launchdarkly-js-client-sdk) in your app. Learn more by reading [LaunchDarkly's docs](https://docs.launchdarkly.com/sdk/client-side/javascript). + +```javascript +import * as Sentry from '@sentry/ember'; +import * as LaunchDarkly from 'launchdarkly-js-client-sdk'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.launchDarklyIntegration()] +}); + +const ldClient = LaunchDarkly.initialize( + 'my-client-ID', + {kind: 'user', key: 'my-user-context-key'}, + {inspectors: [Sentry.buildLaunchDarklyFlagUsedHandler()]} +); + +// Evaluate a flag with a default value. You may have to wait for your client to initialize first. +ldClient?.variation('test-flag', false); + +Sentry.captureException(new Error('Something went wrong!')) +``` diff --git a/platform-includes/configuration/launchdarkly/javascript.gatsby.mdx b/platform-includes/configuration/launchdarkly/javascript.gatsby.mdx new file mode 100644 index 0000000000000..2a2c1524a0afc --- /dev/null +++ b/platform-includes/configuration/launchdarkly/javascript.gatsby.mdx @@ -0,0 +1,22 @@ +Before using this integration, you need to install and instrument the [LaunchDarkly SDK](https://www.npmjs.com/package/launchdarkly-js-client-sdk) in your app. Learn more by reading [LaunchDarkly's docs](https://docs.launchdarkly.com/sdk/client-side/javascript). + +```javascript +import * as Sentry from '@sentry/gatsby'; +import * as LaunchDarkly from 'launchdarkly-js-client-sdk'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.launchDarklyIntegration()] +}); + +const ldClient = LaunchDarkly.initialize( + 'my-client-ID', + {kind: 'user', key: 'my-user-context-key'}, + {inspectors: [Sentry.buildLaunchDarklyFlagUsedHandler()]} +); + +// Evaluate a flag with a default value. You may have to wait for your client to initialize first. +ldClient?.variation('test-flag', false); + +Sentry.captureException(new Error('Something went wrong!')) +``` diff --git a/platform-includes/configuration/launchdarkly/javascript.mdx b/platform-includes/configuration/launchdarkly/javascript.mdx new file mode 100644 index 0000000000000..e2c5d22036f80 --- /dev/null +++ b/platform-includes/configuration/launchdarkly/javascript.mdx @@ -0,0 +1,22 @@ +Before using this integration, you need to install and instrument the [LaunchDarkly SDK](https://www.npmjs.com/package/launchdarkly-js-client-sdk) in your app. Learn more by reading [LaunchDarkly's docs](https://docs.launchdarkly.com/sdk/client-side/javascript). + +```javascript +import * as Sentry from '@sentry/browser'; +import * as LaunchDarkly from 'launchdarkly-js-client-sdk'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.launchDarklyIntegration()] +}); + +const ldClient = LaunchDarkly.initialize( + 'my-client-ID', + {kind: 'user', key: 'my-user-context-key'}, + {inspectors: [Sentry.buildLaunchDarklyFlagUsedHandler()]} +); + +// Evaluate a flag with a default value. You may have to wait for your client to initialize first. +ldClient?.variation('test-flag', false); + +Sentry.captureException(new Error('Something went wrong!')) +``` diff --git a/platform-includes/configuration/launchdarkly/javascript.nextjs.mdx b/platform-includes/configuration/launchdarkly/javascript.nextjs.mdx new file mode 100644 index 0000000000000..0f3a712f63c44 --- /dev/null +++ b/platform-includes/configuration/launchdarkly/javascript.nextjs.mdx @@ -0,0 +1,22 @@ +Before using this integration, you need to install and instrument the [LaunchDarkly SDK](https://www.npmjs.com/package/launchdarkly-js-client-sdk) in your app. Learn more by reading [LaunchDarkly's docs](https://docs.launchdarkly.com/sdk/client-side/javascript). + +```javascript +import * as Sentry from '@sentry/nextjs'; +import * as LaunchDarkly from 'launchdarkly-js-client-sdk'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.launchDarklyIntegration()] +}); + +const ldClient = LaunchDarkly.initialize( + 'my-client-ID', + {kind: 'user', key: 'my-user-context-key'}, + {inspectors: [Sentry.buildLaunchDarklyFlagUsedHandler()]} +); + +// Evaluate a flag with a default value. You may have to wait for your client to initialize first. +ldClient?.variation('test-flag', false); + +Sentry.captureException(new Error('Something went wrong!')) +``` diff --git a/platform-includes/configuration/launchdarkly/javascript.nuxt.mdx b/platform-includes/configuration/launchdarkly/javascript.nuxt.mdx new file mode 100644 index 0000000000000..a14f1ac217fd6 --- /dev/null +++ b/platform-includes/configuration/launchdarkly/javascript.nuxt.mdx @@ -0,0 +1,22 @@ +Before using this integration, you need to install and instrument the [LaunchDarkly SDK](https://www.npmjs.com/package/launchdarkly-js-client-sdk) in your app. Learn more by reading [LaunchDarkly's docs](https://docs.launchdarkly.com/sdk/client-side/javascript). + +```javascript +import * as Sentry from '@sentry/nuxt'; +import * as LaunchDarkly from 'launchdarkly-js-client-sdk'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.launchDarklyIntegration()] +}); + +const ldClient = LaunchDarkly.initialize( + 'my-client-ID', + {kind: 'user', key: 'my-user-context-key'}, + {inspectors: [Sentry.buildLaunchDarklyFlagUsedHandler()]} +); + +// Evaluate a flag with a default value. You may have to wait for your client to initialize first. +ldClient?.variation('test-flag', false); + +Sentry.captureException(new Error('Something went wrong!')) +``` diff --git a/platform-includes/configuration/launchdarkly/javascript.react.mdx b/platform-includes/configuration/launchdarkly/javascript.react.mdx new file mode 100644 index 0000000000000..5110fad9694cb --- /dev/null +++ b/platform-includes/configuration/launchdarkly/javascript.react.mdx @@ -0,0 +1,22 @@ +Before using this integration, you need to install and instrument the [LaunchDarkly SDK](https://www.npmjs.com/package/launchdarkly-js-client-sdk) in your app. Learn more by reading [LaunchDarkly's docs](https://docs.launchdarkly.com/sdk/client-side/javascript). + +```javascript +import * as Sentry from '@sentry/react'; +import * as LaunchDarkly from 'launchdarkly-js-client-sdk'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.launchDarklyIntegration()] +}); + +const ldClient = LaunchDarkly.initialize( + 'my-client-ID', + {kind: 'user', key: 'my-user-context-key'}, + {inspectors: [Sentry.buildLaunchDarklyFlagUsedHandler()]} +); + +// Evaluate a flag with a default value. You may have to wait for your client to initialize first. +ldClient?.variation('test-flag', false); + +Sentry.captureException(new Error('Something went wrong!')) +``` diff --git a/platform-includes/configuration/launchdarkly/javascript.remix.mdx b/platform-includes/configuration/launchdarkly/javascript.remix.mdx new file mode 100644 index 0000000000000..86ba7e174961b --- /dev/null +++ b/platform-includes/configuration/launchdarkly/javascript.remix.mdx @@ -0,0 +1,22 @@ +Before using this integration, you need to install and instrument the [LaunchDarkly SDK](https://www.npmjs.com/package/launchdarkly-js-client-sdk) in your app. Learn more by reading [LaunchDarkly's docs](https://docs.launchdarkly.com/sdk/client-side/javascript). + +```javascript +import * as Sentry from '@sentry/remix'; +import * as LaunchDarkly from 'launchdarkly-js-client-sdk'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.launchDarklyIntegration()] +}); + +const ldClient = LaunchDarkly.initialize( + 'my-client-ID', + {kind: 'user', key: 'my-user-context-key'}, + {inspectors: [Sentry.buildLaunchDarklyFlagUsedHandler()]} +); + +// Evaluate a flag with a default value. You may have to wait for your client to initialize first. +ldClient?.variation('test-flag', false); + +Sentry.captureException(new Error('Something went wrong!')) +``` diff --git a/platform-includes/configuration/launchdarkly/javascript.solid.mdx b/platform-includes/configuration/launchdarkly/javascript.solid.mdx new file mode 100644 index 0000000000000..540b632995312 --- /dev/null +++ b/platform-includes/configuration/launchdarkly/javascript.solid.mdx @@ -0,0 +1,22 @@ +Before using this integration, you need to install and instrument the [LaunchDarkly SDK](https://www.npmjs.com/package/launchdarkly-js-client-sdk) in your app. Learn more by reading [LaunchDarkly's docs](https://docs.launchdarkly.com/sdk/client-side/javascript). + +```javascript +import * as Sentry from '@sentry/solid'; +import * as LaunchDarkly from 'launchdarkly-js-client-sdk'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.launchDarklyIntegration()] +}); + +const ldClient = LaunchDarkly.initialize( + 'my-client-ID', + {kind: 'user', key: 'my-user-context-key'}, + {inspectors: [Sentry.buildLaunchDarklyFlagUsedHandler()]} +); + +// Evaluate a flag with a default value. You may have to wait for your client to initialize first. +ldClient?.variation('test-flag', false); + +Sentry.captureException(new Error('Something went wrong!')) +``` diff --git a/platform-includes/configuration/launchdarkly/javascript.solidstart.mdx b/platform-includes/configuration/launchdarkly/javascript.solidstart.mdx new file mode 100644 index 0000000000000..5b6fb92aededc --- /dev/null +++ b/platform-includes/configuration/launchdarkly/javascript.solidstart.mdx @@ -0,0 +1,22 @@ +Before using this integration, you need to install and instrument the [LaunchDarkly SDK](https://www.npmjs.com/package/launchdarkly-js-client-sdk) in your app. Learn more by reading [LaunchDarkly's docs](https://docs.launchdarkly.com/sdk/client-side/javascript). + +```javascript +import * as Sentry from '@sentry/solidstart'; +import * as LaunchDarkly from 'launchdarkly-js-client-sdk'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.launchDarklyIntegration()] +}); + +const ldClient = LaunchDarkly.initialize( + 'my-client-ID', + {kind: 'user', key: 'my-user-context-key'}, + {inspectors: [Sentry.buildLaunchDarklyFlagUsedHandler()]} +); + +// Evaluate a flag with a default value. You may have to wait for your client to initialize first. +ldClient?.variation('test-flag', false); + +Sentry.captureException(new Error('Something went wrong!')) +``` diff --git a/platform-includes/configuration/launchdarkly/javascript.svelte.mdx b/platform-includes/configuration/launchdarkly/javascript.svelte.mdx new file mode 100644 index 0000000000000..093c1329faef0 --- /dev/null +++ b/platform-includes/configuration/launchdarkly/javascript.svelte.mdx @@ -0,0 +1,22 @@ +Before using this integration, you need to install and instrument the [LaunchDarkly SDK](https://www.npmjs.com/package/launchdarkly-js-client-sdk) in your app. Learn more by reading [LaunchDarkly's docs](https://docs.launchdarkly.com/sdk/client-side/javascript). + +```javascript +import * as Sentry from '@sentry/svelte'; +import * as LaunchDarkly from 'launchdarkly-js-client-sdk'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.launchDarklyIntegration()] +}); + +const ldClient = LaunchDarkly.initialize( + 'my-client-ID', + {kind: 'user', key: 'my-user-context-key'}, + {inspectors: [Sentry.buildLaunchDarklyFlagUsedHandler()]} +); + +// Evaluate a flag with a default value. You may have to wait for your client to initialize first. +ldClient?.variation('test-flag', false); + +Sentry.captureException(new Error('Something went wrong!')) +``` diff --git a/platform-includes/configuration/launchdarkly/javascript.sveltekit.mdx b/platform-includes/configuration/launchdarkly/javascript.sveltekit.mdx new file mode 100644 index 0000000000000..ef75d7eda3b94 --- /dev/null +++ b/platform-includes/configuration/launchdarkly/javascript.sveltekit.mdx @@ -0,0 +1,22 @@ +Before using this integration, you need to install and instrument the [LaunchDarkly SDK](https://www.npmjs.com/package/launchdarkly-js-client-sdk) in your app. Learn more by reading [LaunchDarkly's docs](https://docs.launchdarkly.com/sdk/client-side/javascript). + +```javascript +import * as Sentry from '@sentry/sveltekit'; +import * as LaunchDarkly from 'launchdarkly-js-client-sdk'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.launchDarklyIntegration()] +}); + +const ldClient = LaunchDarkly.initialize( + 'my-client-ID', + {kind: 'user', key: 'my-user-context-key'}, + {inspectors: [Sentry.buildLaunchDarklyFlagUsedHandler()]} +); + +// Evaluate a flag with a default value. You may have to wait for your client to initialize first. +ldClient?.variation('test-flag', false); + +Sentry.captureException(new Error('Something went wrong!')) +``` diff --git a/platform-includes/configuration/launchdarkly/javascript.vue.mdx b/platform-includes/configuration/launchdarkly/javascript.vue.mdx new file mode 100644 index 0000000000000..7051982c3f56d --- /dev/null +++ b/platform-includes/configuration/launchdarkly/javascript.vue.mdx @@ -0,0 +1,22 @@ +Before using this integration, you need to install and instrument the [LaunchDarkly SDK](https://www.npmjs.com/package/launchdarkly-js-client-sdk) in your app. Learn more by reading [LaunchDarkly's docs](https://docs.launchdarkly.com/sdk/client-side/javascript). + +```javascript +import * as Sentry from '@sentry/vue'; +import * as LaunchDarkly from 'launchdarkly-js-client-sdk'; + +Sentry.init({ + dsn: '___PUBLIC_DSN___', + integrations: [Sentry.launchDarklyIntegration()] +}); + +const ldClient = LaunchDarkly.initialize( + 'my-client-ID', + {kind: 'user', key: 'my-user-context-key'}, + {inspectors: [Sentry.buildLaunchDarklyFlagUsedHandler()]} +); + +// Evaluate a flag with a default value. You may have to wait for your client to initialize first. +ldClient?.variation('test-flag', false); + +Sentry.captureException(new Error('Something went wrong!')) +``` diff --git a/platform-includes/configuration/linked-errors/react-native.mdx b/platform-includes/configuration/linked-errors/react-native.mdx deleted file mode 100644 index d6ab1d4ba0d7d..0000000000000 --- a/platform-includes/configuration/linked-errors/react-native.mdx +++ /dev/null @@ -1,15 +0,0 @@ -```javascript - -``` +While you're testing, we recommend that you set `replaysSessionSampleRate` to `1.0`. This ensures that every user session will be sent to Sentry. -Then, in your `app.component.ts` add: +Once testing is complete, **we recommend lowering this value in production**. We still recommend keeping `replaysOnErrorSampleRate` set to `1.0`, so that, whenever possible, every error has an associated replay with additional debugging context. -```javascript {filename: app.component.ts} -public throwTestError(): void { - throw new Error("Sentry Test Error"); -} -``` ### PII & Privacy Considerations @@ -49,6 +41,8 @@ To learn more about Session Replay privacy, [read our docs.](/platforms/javascri ### Lazy-loading Replay -Once you've added the integration, Replay will start automatically. If you don't want to start it immediately (lazy-load it), you can use `addIntegration`: +Once you've added the integration, Replay will start automatically. If you don't want to start it immediately (lazy-load it), you can use `lazyLoadIntegration`: + +You can lazy-load the `replayIntegration` directly in `main.ts` (as shown in the example) but also in other parts of your application, for example a lazy-loaded module or component. diff --git a/platform-includes/session-replay/setup/javascript.astro.mdx b/platform-includes/session-replay/setup/javascript.astro.mdx index dff1b762d54bc..76ae85bc4af25 100644 --- a/platform-includes/session-replay/setup/javascript.astro.mdx +++ b/platform-includes/session-replay/setup/javascript.astro.mdx @@ -37,6 +37,14 @@ Session Replay can only be included on the client side. +### Verify + +While you're testing, we recommend that you set `replaysSessionSampleRate` to `1.0`. This ensures that every user session will be sent to Sentry. + +Once testing is complete, **we recommend lowering this value in production**. We still recommend keeping `replaysOnErrorSampleRate` set to `1.0`, so that, whenever possible, every error has an associated replay with additional debugging context. + + + ### PII & Privacy Considerations Personally identifiable information (PII) and privacy are important considerations when enabling Session Replay. There are multiple ways in which Sentry helps you avoid collecting PII, including: diff --git a/platform-includes/session-replay/setup/javascript.capacitor.mdx b/platform-includes/session-replay/setup/javascript.capacitor.mdx index 2e5f9b1f755cc..06ce14a2371e0 100644 --- a/platform-includes/session-replay/setup/javascript.capacitor.mdx +++ b/platform-includes/session-replay/setup/javascript.capacitor.mdx @@ -30,14 +30,12 @@ Sentry.init({ }); ``` -Session replays with errors, will always be captured with the settings above. -You can verify this by adding the following snippet anywhere in your code and running it: +### Verify + +While you're testing, we recommend that you set `replaysSessionSampleRate` to `1.0`. This ensures that every user session will be sent to Sentry. + +Once testing is complete, **we recommend lowering this value in production**. We still recommend keeping `replaysOnErrorSampleRate` set to `1.0`, so that, whenever possible, every error has an associated replay with additional debugging context. -```javascript -setTimeout(() => { - throw new Error("Sentry Test Error"); -}); -``` ### PII & Privacy Considerations Personally identifiable information (PII) and privacy are important considerations when enabling Session Replay. There are multiple ways in which Sentry helps you avoid collecting PII, including: diff --git a/platform-includes/session-replay/setup/javascript.electron.mdx b/platform-includes/session-replay/setup/javascript.electron.mdx index aad0de8ac2472..5ad9e32d94055 100644 --- a/platform-includes/session-replay/setup/javascript.electron.mdx +++ b/platform-includes/session-replay/setup/javascript.electron.mdx @@ -22,14 +22,13 @@ Sentry.init({ }); ``` -With the settings above, session replays with errors are always captured. -You can verify this by adding the following snippet anywhere in your renderer code and running it: +### Verify + +While you're testing, we recommend that you set `replaysSessionSampleRate` to `1.0`. This ensures that every user session will be sent to Sentry. + +Once testing is complete, **we recommend lowering this value in production**. We still recommend keeping `replaysOnErrorSampleRate` set to `1.0`, so that, whenever possible, every error has an associated replay with additional debugging context. + -```javascript -setTimeout(() => { - throw new Error("Sentry Test Error"); -}); -``` ### PII & Privacy Considerations Personally identifiable information (PII) and privacy are important considerations when enabling Session Replay. There are multiple ways in which Sentry helps you avoid collecting PII, including: diff --git a/platform-includes/session-replay/setup/javascript.ember.mdx b/platform-includes/session-replay/setup/javascript.ember.mdx index 5c15c2c7dece6..6dfbe1e76d647 100644 --- a/platform-includes/session-replay/setup/javascript.ember.mdx +++ b/platform-includes/session-replay/setup/javascript.ember.mdx @@ -22,14 +22,12 @@ Sentry.init({ }); ``` -With the settings above, session replays with errors are always captured. -You can verify this by adding the following snippet anywhere in your code and running it: +### Verify + +While you're testing, we recommend that you set `replaysSessionSampleRate` to `1.0`. This ensures that every user session will be sent to Sentry. + +Once testing is complete, **we recommend lowering this value in production**. We still recommend keeping `replaysOnErrorSampleRate` set to `1.0`, so that, whenever possible, every error has an associated replay with additional debugging context. -```javascript -setTimeout(() => { - throw new Error("Sentry Test Error"); -}); -``` ### PII & Privacy Considerations diff --git a/platform-includes/session-replay/setup/javascript.gatsby.mdx b/platform-includes/session-replay/setup/javascript.gatsby.mdx index 06ab803189f0d..0ca513d3a2a50 100644 --- a/platform-includes/session-replay/setup/javascript.gatsby.mdx +++ b/platform-includes/session-replay/setup/javascript.gatsby.mdx @@ -22,19 +22,12 @@ Sentry.init({ }); ``` -With the settings above, session replays with errors are always captured. -You can verify this by adding the following button to your app and pressing it: - -```javascript - -``` +### Verify + +While you're testing, we recommend that you set `replaysSessionSampleRate` to `1.0`. This ensures that every user session will be sent to Sentry. + +Once testing is complete, **we recommend lowering this value in production**. We still recommend keeping `replaysOnErrorSampleRate` set to `1.0`, so that, whenever possible, every error has an associated replay with additional debugging context. + ### PII & Privacy Considerations diff --git a/platform-includes/session-replay/setup/javascript.mdx b/platform-includes/session-replay/setup/javascript.mdx index 999c3de777f85..3fc549ddf02da 100644 --- a/platform-includes/session-replay/setup/javascript.mdx +++ b/platform-includes/session-replay/setup/javascript.mdx @@ -23,14 +23,13 @@ Sentry.init({ }); ``` -With the settings above, session replays with errors are always captured. -You can verify this by adding the following snippet anywhere in your code and running it: +### Verify + +While you're testing, we recommend that you set `replaysSessionSampleRate` to `1.0`. This ensures that every user session will be sent to Sentry. + +Once testing is complete, **we recommend lowering this value in production**. We still recommend keeping `replaysOnErrorSampleRate` set to `1.0`, so that, whenever possible, every error has an associated replay with additional debugging context. + -```javascript -setTimeout(() => { - throw new Error("Sentry Test Error"); -}); -``` ### PII & Privacy Considerations Personally identifiable information (PII), and privacy are important considerations when enabling Session Replay. There are multiple ways in which Sentry helps you avoid collecting PII, including: diff --git a/platform-includes/session-replay/setup/javascript.nextjs.mdx b/platform-includes/session-replay/setup/javascript.nextjs.mdx index ecb087da00bd2..2e4eea8a26444 100644 --- a/platform-includes/session-replay/setup/javascript.nextjs.mdx +++ b/platform-includes/session-replay/setup/javascript.nextjs.mdx @@ -24,19 +24,12 @@ Sentry.init({ }); ``` -With the settings above, session replays with errors are always captured. -You can verify this by adding the following button to your app and pressing it: - -```javascript - -``` +### Verify + +While you're testing, we recommend that you set `replaysSessionSampleRate` to `1.0`. This ensures that every user session will be sent to Sentry. + +Once testing is complete, **we recommend lowering this value in production**. We still recommend keeping `replaysOnErrorSampleRate` set to `1.0`, so that, whenever possible, every error has an associated replay with additional debugging context. + ### PII & Privacy Considerations diff --git a/platform-includes/session-replay/setup/javascript.nuxt.mdx b/platform-includes/session-replay/setup/javascript.nuxt.mdx new file mode 100644 index 0000000000000..89cb0b53e4022 --- /dev/null +++ b/platform-includes/session-replay/setup/javascript.nuxt.mdx @@ -0,0 +1,47 @@ +On your client-side Nuxt app, add: + +```javascript {tabTitle:TypeScript} {8,12,14-20} {filename:sentry.client.config.ts} +import * as Sentry from "@sentry/nuxt"; + +Sentry.init({ + dsn: "___PUBLIC_DSN___", + + // This sets the sample rate to be 10%. You may want this to be 100% while + // in development and sample at a lower rate in production + replaysSessionSampleRate: 0.1, + + // If the entire session is not sampled, use the below sample rate to sample + // sessions when an error occurs. + replaysOnErrorSampleRate: 1.0, + + integrations: [ + Sentry.replayIntegration({ + // Additional SDK configuration goes in here, for example: + maskAllText: true, + blockAllMedia: true, + }), + ], +}); +``` + +### Verify + +While you're testing, we recommend that you set `replaysSessionSampleRate` to `1.0`. This ensures that every user session will be sent to Sentry. + +Once testing is complete, **we recommend lowering this value in production**. We still recommend keeping `replaysOnErrorSampleRate` set to `1.0`, so that, whenever possible, every error has an associated replay with additional debugging context. + + +### PII & Privacy Considerations + +Personally identifiable information (PII) and privacy are important considerations when enabling Session Replay. There are multiple ways in which Sentry helps you avoid collecting PII, including: +- [Masking](/platforms/javascript/session-replay/privacy/#masking), which replaces the text content with something else -- the default behavior being to replace each character with a *. +- Making [network request, response bodies, and headers](/platforms/javascript/session-replay/privacy/#network-request-and-response-bodies-and-headers) an opt-in feature, because the best way to avoid getting PII into Sentry is by not adding URLs of endpoints that may contain PII. + +While we have certain privacy considerations in place, Sentry's Session Replay allows you to set up the [privacy configurations](/platforms/javascript/session-replay/privacy/#privacy-configuration) that work best for your use case. For example, if you're working on a static website that's free of PII or other types of private data, you can opt out of the default text masking and image blocking settings. +To learn more about Session Replay privacy, [read our docs.](/platforms/javascript/session-replay/privacy/) + +### Lazy-loading Replay + +Once you've added the integration, Replay will start automatically. If you don't want to start it immediately (lazy-load it), you can use `addIntegration`: + + diff --git a/platform-includes/session-replay/setup/javascript.react.mdx b/platform-includes/session-replay/setup/javascript.react.mdx index 7568b7e6bc6de..dcdb75dff72b6 100644 --- a/platform-includes/session-replay/setup/javascript.react.mdx +++ b/platform-includes/session-replay/setup/javascript.react.mdx @@ -22,19 +22,12 @@ Sentry.init({ }); ``` -With the settings above, session replays with errors are always captured. -You can verify this by adding the following button to your app and pressing it: - -```javascript - -``` +### Verify + +While you're testing, we recommend that you set `replaysSessionSampleRate` to `1.0`. This ensures that every user session will be sent to Sentry. + +Once testing is complete, **we recommend lowering this value in production**. We still recommend keeping `replaysOnErrorSampleRate` set to `1.0`, so that, whenever possible, every error has an associated replay with additional debugging context. + ### PII & Privacy Considerations diff --git a/platform-includes/session-replay/setup/javascript.remix.mdx b/platform-includes/session-replay/setup/javascript.remix.mdx index 96c491a0c1c99..00ca53ceaf957 100644 --- a/platform-includes/session-replay/setup/javascript.remix.mdx +++ b/platform-includes/session-replay/setup/javascript.remix.mdx @@ -24,19 +24,12 @@ Sentry.init({ }); ``` -With the settings above, session replays with errors are always captured. -You can verify this by adding the following button to your app and pressing it: - -```javascript - -``` +### Verify + +While you're testing, we recommend that you set `replaysSessionSampleRate` to `1.0`. This ensures that every user session will be sent to Sentry. + +Once testing is complete, **we recommend lowering this value in production**. We still recommend keeping `replaysOnErrorSampleRate` set to `1.0`, so that, whenever possible, every error has an associated replay with additional debugging context. + ### PII & Privacy Considerations diff --git a/platform-includes/session-replay/setup/javascript.svelte.mdx b/platform-includes/session-replay/setup/javascript.svelte.mdx index 26f6e7e630736..078ecd6774291 100644 --- a/platform-includes/session-replay/setup/javascript.svelte.mdx +++ b/platform-includes/session-replay/setup/javascript.svelte.mdx @@ -22,19 +22,12 @@ Sentry.init({ }); ``` -With the settings above, session replays with errors are always captured. -You can verify this by adding the following button to your app and pressing it: - -```javascript - -``` +### Verify + +While you're testing, we recommend that you set `replaysSessionSampleRate` to `1.0`. This ensures that every user session will be sent to Sentry. + +Once testing is complete, **we recommend lowering this value in production**. We still recommend keeping `replaysOnErrorSampleRate` set to `1.0`, so that, whenever possible, every error has an associated replay with additional debugging context. + ### PII & Privacy Considerations diff --git a/platform-includes/session-replay/setup/javascript.sveltekit.mdx b/platform-includes/session-replay/setup/javascript.sveltekit.mdx index 3c4f13b827f26..f21d2e6811dfc 100644 --- a/platform-includes/session-replay/setup/javascript.sveltekit.mdx +++ b/platform-includes/session-replay/setup/javascript.sveltekit.mdx @@ -24,19 +24,12 @@ Sentry.init({ }); ``` -With the settings above, session replays with errors are always captured. -You can verify this by adding the following button to your app and pressing it: - -```javascript - -``` +### Verify + +While you're testing, we recommend that you set `replaysSessionSampleRate` to `1.0`. This ensures that every user session will be sent to Sentry. + +Once testing is complete, **we recommend lowering this value in production**. We still recommend keeping `replaysOnErrorSampleRate` set to `1.0`, so that, whenever possible, every error has an associated replay with additional debugging context. + ### PII & Privacy Considerations diff --git a/platform-includes/session-replay/setup/javascript.vue.mdx b/platform-includes/session-replay/setup/javascript.vue.mdx index 200126d210f71..c3a9a632757b3 100644 --- a/platform-includes/session-replay/setup/javascript.vue.mdx +++ b/platform-includes/session-replay/setup/javascript.vue.mdx @@ -22,23 +22,12 @@ Sentry.init({ }); ``` -With the settings above, session replays with errors are always captured. -You can verify this by adding the following button to your app and pressing it: - -```javascript {filename:App.vue} -// ... - -// ... - -export default { - // ... - methods: { - throwError() { - throw new Error('Sentry Error'); - } - } -}; -``` +### Verify + +While you're testing, we recommend that you set `replaysSessionSampleRate` to `1.0`. This ensures that every user session will be sent to Sentry. + +Once testing is complete, **we recommend lowering this value in production**. We still recommend keeping `replaysOnErrorSampleRate` set to `1.0`, so that, whenever possible, every error has an associated replay with additional debugging context. + ### PII & Privacy Considerations diff --git a/platform-includes/set-environment/dart.mdx b/platform-includes/set-environment/dart.mdx index 9f965d8f01909..1588ccdf83ed5 100644 --- a/platform-includes/set-environment/dart.mdx +++ b/platform-includes/set-environment/dart.mdx @@ -1,7 +1,5 @@ -```dart -import 'package:sentry/sentry.dart'; - -Future main() async { - await Sentry.init((options) => options.environment = 'staging'); -} +```dart {2} +await Sentry.init((options) { + options.environment = 'staging'; +}); ``` diff --git a/platform-includes/set-environment/flutter.mdx b/platform-includes/set-environment/flutter.mdx index 3e5de8bd58c40..84c93fb454e5a 100644 --- a/platform-includes/set-environment/flutter.mdx +++ b/platform-includes/set-environment/flutter.mdx @@ -1,14 +1,7 @@ -```dart -import 'package:flutter/widgets.dart'; -import 'package:sentry_flutter/sentry_flutter.dart'; - -Future main() async { - await SentryFlutter.init( - (options) => options.environment = 'staging', - appRunner: () => runApp(MyApp()), - ); - - // or define SENTRY_ENVIRONMENT via Dart environment variable (--dart-define) -} +```dart {2} +await SentryFlutter.init((options) { + options.environment = 'staging'; +}); +// or define SENTRY_ENVIRONMENT via Dart environment variable (--dart-define) ``` diff --git a/platform-includes/set-extra/dotnet.mdx b/platform-includes/set-extra/dotnet.mdx index 7d64025bea6ae..a721be5b156b6 100644 --- a/platform-includes/set-extra/dotnet.mdx +++ b/platform-includes/set-extra/dotnet.mdx @@ -1,6 +1,4 @@ ```csharp -using Sentry; - SentrySdk.ConfigureScope(scope => { scope.SetExtra("character.name", "Mighty Fighter"); @@ -8,8 +6,6 @@ SentrySdk.ConfigureScope(scope => ``` ```fsharp -open Sentry - SentrySdk.ConfigureScope(fun scope -> scope.SetExtra("character.name", "Mighty Fighter") ) diff --git a/platform-includes/set-fingerprint/basic/dart.mdx b/platform-includes/set-fingerprint/basic/dart.mdx index 426cd8c042480..4f62cfb37fa97 100644 --- a/platform-includes/set-fingerprint/basic/dart.mdx +++ b/platform-includes/set-fingerprint/basic/dart.mdx @@ -1,14 +1,10 @@ -```dart -import 'package:sentry/sentry.dart'; - -FutureOr beforeSend(SentryEvent event, Hint hint) async { - if (event.throwable is DatabaseException) { - event = event.copyWith(fingerprint: ['database-connection-error']); - } - return event; -} - -Future main() async { - await Sentry.init((options) => options.beforeSend = beforeSend); -} +```dart {3-6} +await Sentry.init((options) { + options.beforeSend = (event, hint) { + if (event.throwable is DatabaseException) { + event = event.copyWith(fingerprint: ['database-connection-error']); + } + return event; + }; +}); ``` diff --git a/platform-includes/set-fingerprint/basic/flutter.mdx b/platform-includes/set-fingerprint/basic/flutter.mdx new file mode 100644 index 0000000000000..459286e11c4fa --- /dev/null +++ b/platform-includes/set-fingerprint/basic/flutter.mdx @@ -0,0 +1,10 @@ +```dart {3-6} +await SentryFlutter.init((options) { + options.beforeSend = (event, hint) { + if (event.throwable is DatabaseException) { + event = event.copyWith(fingerprint: ['database-connection-error']); + } + return event; + }; +}); +``` diff --git a/platform-includes/set-fingerprint/basic/python.mdx b/platform-includes/set-fingerprint/basic/python.mdx index b7745eefeed56..9ede6e17c42e1 100644 --- a/platform-includes/set-fingerprint/basic/python.mdx +++ b/platform-includes/set-fingerprint/basic/python.mdx @@ -1,4 +1,17 @@ -```python +```python {tabTitle:Python (SDK 2.x)} +from sentry_sdk import new_scope, capture_exception + +def make_request(method, path, options): + try: + return session.request(method, path, **options) + except RequestError as err: + with new_scope() as scope: + # group errors together based on their request and response + scope.fingerprint = [method, path, str(err.status_code)] + capture_exception(err) +``` + +```python {tabTitle:Python (SDK 1.x)} from sentry_sdk import push_scope, capture_exception def make_request(method, path, options): diff --git a/platform-includes/set-fingerprint/database-connection/dart.mdx b/platform-includes/set-fingerprint/database-connection/dart.mdx index 426cd8c042480..4f62cfb37fa97 100644 --- a/platform-includes/set-fingerprint/database-connection/dart.mdx +++ b/platform-includes/set-fingerprint/database-connection/dart.mdx @@ -1,14 +1,10 @@ -```dart -import 'package:sentry/sentry.dart'; - -FutureOr beforeSend(SentryEvent event, Hint hint) async { - if (event.throwable is DatabaseException) { - event = event.copyWith(fingerprint: ['database-connection-error']); - } - return event; -} - -Future main() async { - await Sentry.init((options) => options.beforeSend = beforeSend); -} +```dart {3-6} +await Sentry.init((options) { + options.beforeSend = (event, hint) { + if (event.throwable is DatabaseException) { + event = event.copyWith(fingerprint: ['database-connection-error']); + } + return event; + }; +}); ``` diff --git a/platform-includes/set-fingerprint/database-connection/flutter.mdx b/platform-includes/set-fingerprint/database-connection/flutter.mdx new file mode 100644 index 0000000000000..459286e11c4fa --- /dev/null +++ b/platform-includes/set-fingerprint/database-connection/flutter.mdx @@ -0,0 +1,10 @@ +```dart {3-6} +await SentryFlutter.init((options) { + options.beforeSend = (event, hint) { + if (event.throwable is DatabaseException) { + event = event.copyWith(fingerprint: ['database-connection-error']); + } + return event; + }; +}); +``` diff --git a/platform-includes/set-fingerprint/rpc/dart.mdx b/platform-includes/set-fingerprint/rpc/dart.mdx index affec0eb261f3..c6ee6506e1f50 100644 --- a/platform-includes/set-fingerprint/rpc/dart.mdx +++ b/platform-includes/set-fingerprint/rpc/dart.mdx @@ -1,6 +1,4 @@ ```dart -import 'package:sentry/sentry.dart'; - class MyRpcException implements Exception { final String function; final int httpStatusCode; @@ -8,19 +6,17 @@ class MyRpcException implements Exception { MyRpcException(this.function, this.httpStatusCode); } -FutureOr beforeSend(SentryEvent event, Hint hint) async { - if (event.throwable is MyRpcException) { - final exception = event.throwable as MyRpcException; - event = event.copyWith(fingerprint: [ - '{{ default }}', - exception.function, - exception.httpStatusCode.toString(), - ]); - } - return event; -} - -Future main() async { - await Sentry.init((options) => options.beforeSend = beforeSend); -} +await Sentry.init((options) { + options.beforeSend = (event, hint) { + if (event.throwable is MyRpcException) { + final exception = event.throwable as MyRpcException; + event = event.copyWith(fingerprint: [ + '{{ default }}', + exception.function, + exception.httpStatusCode.toString(), + ]); + } + return event; + }; +}); ``` diff --git a/platform-includes/set-fingerprint/rpc/flutter.mdx b/platform-includes/set-fingerprint/rpc/flutter.mdx new file mode 100644 index 0000000000000..8a57b424423f6 --- /dev/null +++ b/platform-includes/set-fingerprint/rpc/flutter.mdx @@ -0,0 +1,22 @@ +```dart +class MyRpcException implements Exception { + final String function; + final int httpStatusCode; + + MyRpcException(this.function, this.httpStatusCode); +} + +await SentryFlutter.init((options) { + options.beforeSend = (event, hint) { + if (event.throwable is MyRpcException) { + final exception = event.throwable as MyRpcException; + event = event.copyWith(fingerprint: [ + '{{ default }}', + exception.function, + exception.httpStatusCode.toString(), + ]); + } + return event; + }; +}); +``` diff --git a/platform-includes/set-fingerprint/static/python.mdx b/platform-includes/set-fingerprint/static/python.mdx deleted file mode 100644 index 90bcc709ee890..0000000000000 --- a/platform-includes/set-fingerprint/static/python.mdx +++ /dev/null @@ -1,6 +0,0 @@ -```python -from sentry_sdk import configure_scope - -with configure_scope() as scope: - scope.fingerprint = ["my-view-function"] -``` diff --git a/platform-includes/set-level/dotnet.mdx b/platform-includes/set-level/dotnet.mdx index 628647d55cb59..717cbaaa0ae83 100644 --- a/platform-includes/set-level/dotnet.mdx +++ b/platform-includes/set-level/dotnet.mdx @@ -1,6 +1,4 @@ ```csharp -using Sentry; - SentrySdk.ConfigureScope(scope => { scope.Level = SentryLevel.Warning; @@ -8,8 +6,6 @@ SentrySdk.ConfigureScope(scope => ``` ```fsharp -open Sentry - SentrySdk.ConfigureScope( fun scope -> scope.Level <- SentryLevel.Warning diff --git a/platform-includes/set-level/unity.mdx b/platform-includes/set-level/unity.mdx index 443cfd5f7203d..23b9e7661c9a3 100644 --- a/platform-includes/set-level/unity.mdx +++ b/platform-includes/set-level/unity.mdx @@ -1,5 +1,3 @@ ```csharp -using Sentry; - SentrySdk.CaptureException(new Exception(), s => s.Level = SentryLevel.Warning); ``` diff --git a/platform-includes/set-release/dart.mdx b/platform-includes/set-release/dart.mdx index 8737cf7f9a37d..eb76ef34f4c65 100644 --- a/platform-includes/set-release/dart.mdx +++ b/platform-includes/set-release/dart.mdx @@ -1,7 +1,6 @@ -```dart -import 'package:sentry/sentry.dart'; - -Future main() async { - await Sentry.init((options) => options.release = 'my-project-name@2.3.12+12'); // packageName@versionName+buildNumber -} +```dart {3} +await Sentry.init((options) { + // packageName@versionName+buildNumber + options.release = 'my-project-name@2.3.12+12'; +}); ``` diff --git a/platform-includes/set-release/dotnet.mdx b/platform-includes/set-release/dotnet.mdx index f0be2c09b440a..015bb34892027 100644 --- a/platform-includes/set-release/dotnet.mdx +++ b/platform-includes/set-release/dotnet.mdx @@ -13,3 +13,7 @@ The SDK attempts to locate the release to attach to events sent to Sentry. The SDK will first check if there's a version set on the environment via `SENTRY_RELEASE` and use it as-is. If no version is found, the SDK will look at the [entry assembly's]() `AssemblyInformationalVersionAttribute`, which accepts a string value and is often used to set a GIT commit hash. If that returns null, then the SDK will look at the default `AssemblyVersionAttribute`, which accepts the numeric version number. The resulting release will be in the format `@`. + + +An `AssemblyInformationalVersionAttribute` is included automatically in SDK-style projects with a default value of `"1.0.0.0"`. You can set the `Version` property in your project file to override this value or [disable it entirely](https://learn.microsoft.com/en-us/dotnet/standard/assembly/set-attributes-project-file#use-package-properties-as-assembly-attributes) by setting the `GenerateAssemblyInformationalVersionAttribute` property to `false`. + diff --git a/platform-includes/set-release/flutter.mdx b/platform-includes/set-release/flutter.mdx index 155b633bffc87..295a526725e09 100644 --- a/platform-includes/set-release/flutter.mdx +++ b/platform-includes/set-release/flutter.mdx @@ -1,15 +1,9 @@ ```dart -import 'package:flutter/widgets.dart'; -import 'package:sentry_flutter/sentry_flutter.dart'; +await SentryFlutter.init((options) { + options.release = 'my-project-name@2.3.12+12'; +}); -Future main() async { - await SentryFlutter.init( - (options) => options.release = 'my-project-name@2.3.12+12', - appRunner: () => runApp(MyApp()), - ); - - // or define SENTRY_RELEASE via Dart environment variable (--dart-define) if you are using Flutter Web. -} +// or define SENTRY_RELEASE via Dart environment variable (--dart-define) if you are using Flutter Web. ``` diff --git a/platform-includes/source-context/apple.mdx b/platform-includes/source-context/apple.mdx index c72ea5ad38a7d..c7c1bb40ccd6f 100644 --- a/platform-includes/source-context/apple.mdx +++ b/platform-includes/source-context/apple.mdx @@ -48,6 +48,10 @@ You can upload your sources to Sentry after every build through Xcode. To do thi ```bash {tabTitle:Warn on failures - nonblocking} +if [[ "$(uname -m)" == arm64 ]]; then + export PATH="/opt/homebrew/bin:$PATH" +fi + if which sentry-cli >/dev/null; then export SENTRY_ORG=___ORG_SLUG___ export SENTRY_PROJECT=___PROJECT_SLUG___ @@ -62,6 +66,10 @@ fi ``` ```bash {tabTitle:Error on failures - blocking} +if [[ "$(uname -m)" == arm64 ]]; then + export PATH="/opt/homebrew/bin:$PATH" +fi + if which sentry-cli >/dev/null; then export SENTRY_ORG=___ORG_SLUG___ export SENTRY_PROJECT=___PROJECT_SLUG___ diff --git a/platform-includes/source-context/java.mdx b/platform-includes/source-context/java.mdx index 45909039f7193..0e55657a9ec83 100644 --- a/platform-includes/source-context/java.mdx +++ b/platform-includes/source-context/java.mdx @@ -3,7 +3,7 @@ You'll need to enable the Source Context feature to see your source code as part - By adding one of a build tool plugin to your project - Or, by manually uploading your source bundle using the Sentry CLI -This document covers both methods. You can find more information about uploading via the CLI in our [Debug Information Files](/product/cli/dif/#jvm-source-bundles) docs. +This document covers both methods. You can find more information about uploading via the CLI in our [Debug Information Files](/cli/dif/#jvm-source-bundles) docs. diff --git a/platform-includes/sourcemaps/legacy-troubleshooting/javascript.mdx b/platform-includes/sourcemaps/legacy-troubleshooting/javascript.mdx index 1e198d189a1bb..6ebf402308d80 100644 --- a/platform-includes/sourcemaps/legacy-troubleshooting/javascript.mdx +++ b/platform-includes/sourcemaps/legacy-troubleshooting/javascript.mdx @@ -5,7 +5,7 @@ Setting up source maps can be tricky, but it's worth it to get it right. To trou ## Use the Sentry CLI -To use the automated verification process, install and configure the Sentry [Command Line Interface](/product/cli/). Then, use the `sourcemaps explain` command, calling it with the relevant event ID, found in the top-left corner of the **Issue Details** page in [sentry.io](https://sentry.io). +To use the automated verification process, install and configure the Sentry [Command Line Interface](/cli/). Then, use the `sourcemaps explain` command, calling it with the relevant event ID, found in the top-left corner of the **Issue Details** page in [sentry.io](https://sentry.io). For example, "Event ID: c2ad049f": @@ -239,7 +239,11 @@ Sometimes build scripts and plugins produce pre-compressed minified files (for e If you're hosting your source maps publicly, make sure you have the "Enable JavaScript source fetching" option activated under **[Settings] > Projects > Select your project > General Settings**. -## Verify workers are sharing the same volume as web (if running self-hosted Sentry via Docker) +## (Self-Hosted Sentry) Verify the `symbolicator` service is operating normally + +If you're running a self-hosted version of Sentry, you can verify that the `symbolicator` service/container is operating normally by checking the container's logs. + +## (Self-Hosted Sentry via Docker) Verify workers are sharing the same volume as web Sentry does source map calculation in its workers. This means the workers need access to the files uploaded through the front end. Double check that the cron workers and web workers can read/write files from the same disk. diff --git a/platform-includes/sourcemaps/legacy-uploading-methods/javascript.mdx b/platform-includes/sourcemaps/legacy-uploading-methods/javascript.mdx index 0dea289bd824f..f5cad68edcc3f 100644 --- a/platform-includes/sourcemaps/legacy-uploading-methods/javascript.mdx +++ b/platform-includes/sourcemaps/legacy-uploading-methods/javascript.mdx @@ -73,8 +73,8 @@ export default defineConfig({ ], }); ``` - + ## Uploading using Sentry Webpack Plugin Version 1.x @@ -82,7 +82,6 @@ Assuming you have the `@sentry/webpack` package installed on version `1.x`, you Example: - ```javascript {filename:webpack.config.js} const SentryWebpackPlugin = require("@sentry/webpack-plugin"); @@ -111,7 +110,6 @@ module.exports = { The Sentry webpack plugin will automatically inject a release value into the SDK so you must either omit the `release` option from `Sentry.init` or make sure `Sentry.init`'s `release` option matches the plugin's `release` option exactly: - ```javascript Sentry.init({ dsn: "___PUBLIC_DSN___", @@ -125,7 +123,12 @@ Sentry.init({ ## Uploading using Sentry Bundler Plugins on Version `2.x` -If you are using a Sentry self-hosted or single-tenant on version `23.6.1` or lower, or you are using the Sentry JavaScript SDK on version `7.46.0` you will need to configure the bundler plugins with the `release.uploadLegacySourcemaps` option. +If you're using +- Sentry self-hosted or single-tenant on version `23.6.1` or lower +- or the Sentry JavaScript SDK on version `7.46.0` +- or esbuild with `splitting: true` + +you'll need to configure the bundler plugins with the `release.uploadLegacySourcemaps` option. This applies when using the following packages on version `2.x` and above: @@ -136,7 +139,6 @@ This applies when using the following packages on version `2.x` and above: Example of using the `release.uploadLegacySourcemaps` option: - ```javascript {filename:webpack.config.js} {tabTitle:Webpack} const { sentryWebpackPlugin } = require("@sentry/webpack-plugin"); @@ -251,7 +253,6 @@ export default { The Sentry bundler plugins will automatically inject a release value into the SDK so you must either omit the `release` option from `Sentry.init` or make sure `Sentry.init`'s `release` option matches the plugin's `release.name` option exactly: - ```javascript Sentry.init({ dsn: "___PUBLIC_DSN___", @@ -274,7 +275,7 @@ To troubleshoot your source maps set up, you can either: ### Use the Sentry CLI -To use the automated verification process, install and configure the Sentry [Command Line Interface](/product/cli/). Then, use the `sourcemaps explain` command, calling it with the relevant event ID, found in the top-left corner of the **Issue Details** page in [sentry.io](https://sentry.io). +To use the automated verification process, install and configure the Sentry [Command Line Interface](/cli/). Then, use the `sourcemaps explain` command, calling it with the relevant event ID, found in the top-left corner of the **Issue Details** page in [sentry.io](https://sentry.io). @@ -506,7 +507,11 @@ If you are using `sentry-cli` to upload your artifacts, starting with version `2 Sometimes build scripts and plugins produce pre-compressed minified files (for example, webpack's [compression plugin](https://github.com/webpack/compression-webpack-plugin)). In these cases, you'll need to disable such plugins and perform the compression **after** the generated source maps/source files have been uploaded to Sentry. -### Verify workers are sharing the same volume as web (if running self-hosted Sentry via Docker) +### (Self-Hosted Sentry) Verify the `symbolicator` service is operating normally + +If you're running a self-hosted version of Sentry, you can verify that the `symbolicator` service/container is operating normally by checking the container's logs. + +### (Self-Hosted Sentry via Docker) Verify workers are sharing the same volume as web Sentry does source map calculation in its workers. This means the workers need access to the files uploaded through the front end. Double check that the cron workers and web workers can read/write files from the same disk. diff --git a/platform-includes/sourcemaps/overview/javascript.angular.mdx b/platform-includes/sourcemaps/overview/javascript.angular.mdx index ec1d35cc3f879..dfe0f07761ebb 100644 --- a/platform-includes/sourcemaps/overview/javascript.angular.mdx +++ b/platform-includes/sourcemaps/overview/javascript.angular.mdx @@ -36,18 +36,21 @@ To generate source maps, you need to add the `sourceMap` option to your `angular ``` -Generating sourcemaps may expose them to the public, potentially causing your source code to be leaked. You can prevent this by configuring your server to deny access to `.js.map` files, or by deleting the sourcemaps before deploying your application. + Generating sourcemaps may expose them to the public, potentially causing your + source code to be leaked. You can prevent this by configuring your server to + deny access to `.js.map` files, or by deleting the sourcemaps before deploying + your application. #### Uploading Source Maps To upload your Angular project's source maps to Sentry, we recommend one of these options: -- [**Angular CLI and Sentry webpack plugin**](./uploading/angular-webpack/)
+- [Angular CLI and Sentry webpack plugin](./uploading/angular-webpack/)
Use the Angular CLI, a custom Angular builder and the Sentry webpack plugin to set releases and upload source maps automatically when running `ng build`. -- [**Nx Angular CLI and Sentry webpack plugin**](./uploading/angular-nx/)
+- [Nx Angular CLI and Sentry webpack plugin](./uploading/angular-nx/)
If you're using Nx, use `@nx/angular` CLI and the Sentry webpack plugin to set releases and upload source maps automatically when running `nx build`. -- [**Sentry CLI**](./uploading/cli/)
+- [Sentry CLI](./uploading/cli/)
Upload source maps manually using the Sentry CLI. Take a look at this [guide for further options to upload source maps](./uploading/). diff --git a/platform-includes/sourcemaps/overview/javascript.astro.mdx b/platform-includes/sourcemaps/overview/javascript.astro.mdx index b87d547ce3b9a..dcd197453709c 100644 --- a/platform-includes/sourcemaps/overview/javascript.astro.mdx +++ b/platform-includes/sourcemaps/overview/javascript.astro.mdx @@ -56,7 +56,7 @@ The specified patterns must follow the [glob syntax](https://www.npmjs.com/packa Source maps work best with [organization-scoped auth tokens](/account/auth-tokens/#organization-auth-tokens). If you are using an old self-hosted Sentry version that doesn't yet support org-based tokens or you're using a different type of Sentry auth token, refer to our [legacy upload methods](/platforms/javascript/guides/astro/sourcemaps/troubleshooting_js/#working-with-old-authentication-tokens) for more information. -### Disabeling Telemetry Data Collection +### Disabling Telemetry Data Collection The Astro SDK uses the Sentry Vite plugin to upload source maps. This plugin collects telemetry data to help us improve the source map uploading experience. diff --git a/platform-includes/sourcemaps/overview/javascript.remix.mdx b/platform-includes/sourcemaps/overview/javascript.remix.mdx index 8defd2e46572a..fb91692dcdfd6 100644 --- a/platform-includes/sourcemaps/overview/javascript.remix.mdx +++ b/platform-includes/sourcemaps/overview/javascript.remix.mdx @@ -69,7 +69,7 @@ To see the full list of options, refer to the [Vite plugin documentation](https: If you're not using Vite to build your project, you can use the `sentry-upload-sourcemaps` script to upload source maps to Sentry. The Sentry Remix SDK provides a script to automatically create a release and upload source maps after you've built your project. -Under the hood, it uses the [Sentry CLI](/product/cli/). +Under the hood, it uses the [Sentry CLI](/cli/). This script requires setting an auth token, which can either be done through a `.sentryclirc` file in the root of your project or through environment variables: diff --git a/platform-includes/sourcemaps/overview/javascript.svelte.mdx b/platform-includes/sourcemaps/overview/javascript.svelte.mdx index 973d59aa60211..e58d386792c20 100644 --- a/platform-includes/sourcemaps/overview/javascript.svelte.mdx +++ b/platform-includes/sourcemaps/overview/javascript.svelte.mdx @@ -49,7 +49,10 @@ yarn add @sentry/vite-plugin --dev pnpm add @sentry/vite-plugin --save-dev ``` -To upload source maps you have to configure an auth token. +To upload source maps you have to configure an [Organization Auth Token](https://sentry.io/orgredirect/organizations/:orgslug/settings/auth-tokens/). + +Alternatively, you can also use a [User Auth Token](https://sentry.io/orgredirect/organizations/:orgslug/settings/account/api/auth-tokens/), with the "Project: Read & Write" and "Release: Admin" permissions. + Auth tokens can be passed to the plugin explicitly with the `authToken` option, with a `SENTRY_AUTH_TOKEN` environment variable, or with a `.env.sentry-build-plugin` file in the working directory when building your project. You likely want to add the auth token as an environment variable to your CI/CD environment. diff --git a/platform-includes/sourcemaps/overview/javascript.vue.mdx b/platform-includes/sourcemaps/overview/javascript.vue.mdx index a6548b46f911a..6a566ccd843fc 100644 --- a/platform-includes/sourcemaps/overview/javascript.vue.mdx +++ b/platform-includes/sourcemaps/overview/javascript.vue.mdx @@ -39,7 +39,10 @@ pnpm add @sentry/vite-plugin --save-dev Learn more about configuring the plugin in our [Sentry Vite Plugin documentation](https://www.npmjs.com/package/@sentry/vite-plugin). -To upload source maps you have to configure an auth token. +To upload source maps you have to configure an [Organization Auth Token](https://sentry.io/orgredirect/organizations/:orgslug/settings/auth-tokens/). + +Alternatively, you can also use a [User Auth Token](https://sentry.io/orgredirect/organizations/:orgslug/settings/account/api/auth-tokens/), with the "Project: Read & Write" and "Release: Admin" permissions. + Auth tokens can be passed to the plugin explicitly with the `authToken` option, with a `SENTRY_AUTH_TOKEN` environment variable, or with a `.env.sentry-build-plugin` file in the working directory when building your project. You likely want to add the auth token as an environment variable to your CI/CD environment. diff --git a/platform-includes/sourcemaps/primer/javascript.cloudflare.mdx b/platform-includes/sourcemaps/primer/javascript.cloudflare.mdx index 44d6d15d2b41e..8e88ddf417303 100644 --- a/platform-includes/sourcemaps/primer/javascript.cloudflare.mdx +++ b/platform-includes/sourcemaps/primer/javascript.cloudflare.mdx @@ -1,5 +1,6 @@ To enable readable stack traces in your Sentry errors, you need to upload your source maps to Sentry. +Learn how to unminify your JavaScript code by watching this video or reading the step-by-step instructions below. -![Readable Stack Traces](./readable-stacktraces.png) + If you are using plain Cloudflare Workers, set `upload_source_maps = true` to your `wrangler.toml` file to enable source map generation. diff --git a/platform-includes/sourcemaps/primer/javascript.mdx b/platform-includes/sourcemaps/primer/javascript.mdx index f2bb309741a3c..d506fef698937 100644 --- a/platform-includes/sourcemaps/primer/javascript.mdx +++ b/platform-includes/sourcemaps/primer/javascript.mdx @@ -1,3 +1,4 @@ To enable readable stack traces in your Sentry errors, you need to upload your source maps to Sentry. +Learn how to unminify your JavaScript code by watching this video or reading the step-by-step instructions below. -![Readable Stack Traces](./readable-stacktraces.png) + diff --git a/platform-includes/sourcemaps/primer/javascript.nuxt.mdx b/platform-includes/sourcemaps/primer/javascript.nuxt.mdx index 724936e9e301a..7928dcc199519 100644 --- a/platform-includes/sourcemaps/primer/javascript.nuxt.mdx +++ b/platform-includes/sourcemaps/primer/javascript.nuxt.mdx @@ -1,3 +1,3 @@ `@sentry/nuxt` will generate and upload source maps automatically, so that errors in Sentry will contain readable stack traces. You just need to provide your Sentry auth token and your organization and project slugs. -The Nuxt SDK uses the [Sentry Vite Plugin](https://www.npmjs.com/package/@sentry/vite-plugin/v/2.14.2) to upload source maps. See the [Manual Configuration](../#add-readable-stack-traces-to-errors) page and the Sentry [Vite documentation](https://www.npmjs.com/package/@sentry/vite-plugin/v/2.14.2#configuration) for more details. +The Nuxt SDK uses the [Sentry Vite Plugin](https://www.npmjs.com/package/@sentry/vite-plugin/v/2.14.2) to upload source maps. See the Manual Configuration page and the Sentry [Vite documentation](https://www.npmjs.com/package/@sentry/vite-plugin/v/2.14.2#configuration) for more details. diff --git a/platform-includes/sourcemaps/troubleshooting/javascript.mdx b/platform-includes/sourcemaps/troubleshooting/javascript.mdx index 9e44e55413939..c26ea7ba1c149 100644 --- a/platform-includes/sourcemaps/troubleshooting/javascript.mdx +++ b/platform-includes/sourcemaps/troubleshooting/javascript.mdx @@ -37,7 +37,7 @@ Setting up source maps can be tricky, but it's worth it to get it right. To trou ## Use the CLI -To use the automated verification process, install and configure the Sentry [Command Line Interface](/product/cli/). Then, use the `sourcemaps explain` command, calling it with the relevant event ID, found in the top-left corner of the **Issue Details** page in [sentry.io](https://sentry.io). +To use the automated verification process, install and configure the Sentry [Command Line Interface](/cli/). Then, use the `sourcemaps explain` command, calling it with the relevant event ID, found in the top-left corner of the **Issue Details** page in [sentry.io](https://sentry.io). For example, "Event ID: c2ad049f": @@ -166,10 +166,14 @@ Sometimes build scripts and plugins produce pre-compressed minified files (for e ### Verify Source Fetching is Enabled If you're hosting your source maps publicly, make sure you have the "Enable JavaScript source fetching" option activated under **[Settings] > Projects > Select your project > General Settings**. + +### (Self-Hosted Sentry) Verify the `symbolicator` service is operating normally + +If you're running a self-hosted version of Sentry, you can verify that the `symbolicator` service/container is operating normally by checking the container's logs. -### Verify Workers Are Sharing Same Volume as Web (if running self-hosted Sentry via Docker) +### (Self-Hosted Sentry via Docker) Verify workers are sharing the same volume as web Sentry does source map calculation in its workers. This means the workers need access to the files uploaded through the front end. Double check that the cron workers and web workers can read/write files from the same disk. diff --git a/platform-includes/sourcemaps/upload/primer/javascript.angular.mdx b/platform-includes/sourcemaps/upload/primer/javascript.angular.mdx index 9f54aba13cec8..34b43c5545e8d 100644 --- a/platform-includes/sourcemaps/upload/primer/javascript.angular.mdx +++ b/platform-includes/sourcemaps/upload/primer/javascript.angular.mdx @@ -1,10 +1,10 @@ To upload your Angular project's source maps to Sentry, we recommend one of these options: -- [**Angular CLI and Sentry webpack plugin**](./angular-webpack/)
+- [Angular CLI and Sentry webpack plugin](./angular-webpack/)
Use the Angular CLI, a custom Angular builder and the Sentry webpack plugin to set releases and upload source maps automatically when running `ng build`. -- [**Nx Angular CLI and Sentry webpack plugin**](./angular-nx/)
+- [Nx Angular CLI and Sentry webpack plugin](./angular-nx/)
If you're using Nx, use `@nx/angular` CLI and the Sentry webpack plugin to set releases and upload source maps automatically when running `nx build`. -- [**Sentry CLI**](./cli/)
+- [Sentry CLI](./cli/)
Upload source maps manually using Sentry CLI. These options work well with Angular projects out of the box. For other bundlers or more advanced projects and configurations, take a look at the following guides and options for uploading sourcemaps: diff --git a/platform-includes/sourcemaps/upload/primer/javascript.remix.mdx b/platform-includes/sourcemaps/upload/primer/javascript.remix.mdx index 7d5472764f3f3..a037ba411495c 100644 --- a/platform-includes/sourcemaps/upload/primer/javascript.remix.mdx +++ b/platform-includes/sourcemaps/upload/primer/javascript.remix.mdx @@ -2,7 +2,7 @@ On release, call `yarn sentry-upload-sourcemaps` to upload source maps and creat -`sentry-upload-sourcemaps` requires either [`env` variables](/product/cli/configuration/#configuration-values) or a valid `.sentryclirc` file to pick up your project ID, organization ID, and token. You can create the `.sentryclirc` file with necessary configuration, as documented on this [page](/product/cli/configuration/). +`sentry-upload-sourcemaps` requires either [`env` variables](/cli/configuration/#configuration-values) or a valid `.sentryclirc` file to pick up your project ID, organization ID, and token. You can create the `.sentryclirc` file with necessary configuration, as documented on this [page](/cli/configuration/). diff --git a/platform-includes/user-feedback/example-widget/javascript.nuxt.mdx b/platform-includes/user-feedback/example-widget/javascript.nuxt.mdx new file mode 100644 index 0000000000000..a9418f703909c --- /dev/null +++ b/platform-includes/user-feedback/example-widget/javascript.nuxt.mdx @@ -0,0 +1,11 @@ +In Nuxt, the best place to collect user feedback on the **client side** is inside a plugin: + +```javascript {tabTitle:TypeScript} {filename:plugins/report-errors.ts} +export default defineNuxtPlugin((nuxtApp) => { + nuxtApp.hook('vue:error', (error, instance, info) => { + Sentry.showReportDialog({ /* optional options */}); + }) +}) +``` + +To collect user feedback for errors on the **server side**, you can create an error page by following the [error handling](https://nuxt.com/docs/getting-started/error-handling#nitro-server-errors) instructions in the Nuxt docs. diff --git a/platform-includes/user-feedback/install/javascript.mdx b/platform-includes/user-feedback/install/javascript.mdx index af1b144730fbc..220907772ce10 100644 --- a/platform-includes/user-feedback/install/javascript.mdx +++ b/platform-includes/user-feedback/install/javascript.mdx @@ -1,17 +1,28 @@ -The User Feedback integration is **already included** in your browser or framework SDK NPM packages. If you're using CDN bundles instead of NPM packages, you need to load the User Feedback integration CDN bundle in addition to your browser bundle: +The User Feedback integration is **already included** in your NPM packages. You don't need to install anything else to use it. -```bash {tabTitle:npm} -npm install @sentry/browser --save -``` +If you're using the Loader Script, you can lazy load the User Feedback integration like this: -```bash {tabTitle:yarn} -yarn add @sentry/browser -``` +```javascript {tabTitle: Loader} +window.sentryOnLoad = function () { + Sentry.init({ + // add other configuration here + }); -```bash {tabTitle:pnpm} -pnpm add @sentry/browser + Sentry.lazyLoadIntegration("feedbackIntegration") + .then((feedbackIntegration) => { + Sentry.addIntegration(feedbackIntegration({ + // User Feedback configuration options + })); + }) + .catch(() => { + // this can happen if e.g. a network error occurs, + // in this case User Feedback will not be enabled + }); +}; ``` +If you're using CDN bundles instead of NPM packages, you need to use a respective bundle that includes user feedback: + ```html {tabTitle: CDN}