diff --git a/public/_platforms/_index.json b/public/_platforms/_index.json index 730d9f305872a..4ab6ac7fcd7e3 100644 --- a/public/_platforms/_index.json +++ b/public/_platforms/_index.json @@ -1 +1 @@ -{"platforms":{"android":{"_self":{"key":"android","type":"framework","details":"android.json","doc_link":"https://docs.sentry.io/platforms/android/","name":"Android","aliases":[],"categories":["mobile"]},"profiling-onboarding-1-install":{"key":"android.profiling-onboarding-1-install","type":"language","details":"android/profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/android/profiling/","name":"Android","aliases":[],"categories":[]},"profiling-onboarding-2-configure-performance":{"key":"android.profiling-onboarding-2-configure-performance","type":"language","details":"android/profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/android/profiling/","name":"Android","aliases":[],"categories":[]},"profiling-onboarding-3-configure-profiling":{"key":"android.profiling-onboarding-3-configure-profiling","type":"language","details":"android/profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/android/profiling/","name":"Android","aliases":[],"categories":[]},"profiling-onboarding-4-upload":{"key":"android.profiling-onboarding-4-upload","type":"language","details":"android/profiling-onboarding-4-upload.json","doc_link":"https://docs.sentry.io/platforms/android/profiling/","name":"Android","aliases":[],"categories":[]}},"apple":{"_self":{"key":"apple","type":"language","details":"apple.json","doc_link":"https://docs.sentry.io/platforms/apple/","name":"Apple","aliases":["cocoa"],"categories":["mobile","desktop"]},"ios":{"key":"apple.ios","type":"language","details":"apple/ios.json","doc_link":"https://docs.sentry.io/platforms/apple/","name":"iOS","aliases":[],"categories":["mobile"]},"macos":{"key":"apple.macos","type":"language","details":"apple/macos.json","doc_link":"https://docs.sentry.io/platforms/apple/","name":"macOS","aliases":[],"categories":["desktop"]},"ios-profiling-onboarding-1-install":{"key":"apple.ios-profiling-onboarding-1-install","type":"language","details":"apple/ios-profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/apple/guides/ios/profiling/","name":"iOS","aliases":[],"categories":[]},"ios-profiling-onboarding-2-configure-performance":{"key":"apple.ios-profiling-onboarding-2-configure-performance","type":"language","details":"apple/ios-profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/apple/guides/ios/profiling/","name":"iOS","aliases":[],"categories":[]},"ios-profiling-onboarding-3-configure-profiling":{"key":"apple.ios-profiling-onboarding-3-configure-profiling","type":"language","details":"apple/ios-profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/apple/guides/ios/profiling/","name":"iOS","aliases":[],"categories":[]},"ios-profiling-onboarding-4-upload":{"key":"apple.ios-profiling-onboarding-4-upload","type":"language","details":"apple/ios-profiling-onboarding-4-upload.json","doc_link":"https://docs.sentry.io/platforms/apple/guides/ios/profiling/","name":"iOS","aliases":[],"categories":[]}},"capacitor":{"_self":{"key":"capacitor","type":"framework","details":"capacitor.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/capacitor/","name":"Capacitor","aliases":[],"categories":[]}},"cordova":{"_self":{"key":"cordova","type":"language","details":"cordova.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/cordova/","name":"Cordova","aliases":[],"categories":[]}},"dart":{"_self":{"key":"dart","type":"framework","details":"dart.json","doc_link":"https://docs.sentry.io/platforms/dart/","name":"Dart","aliases":[],"categories":["mobile","browser","server"]}},"dotnet":{"aspnet":{"key":"dotnet.aspnet","type":"framework","details":"dotnet/aspnet.json","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/aspnet/","name":"ASP.NET","aliases":[],"categories":[]},"aspnetcore":{"key":"dotnet.aspnetcore","type":"framework","details":"dotnet/aspnetcore.json","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/aspnetcore/","name":"ASP.NET Core","aliases":[],"categories":[]},"awslambda":{"key":"dotnet.awslambda","type":"framework","details":"dotnet/awslambda.json","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/aws-lambda/","name":"AWS Lambda (.NET)","aliases":[],"categories":[]},"gcpfunctions":{"key":"dotnet.gcpfunctions","type":"framework","details":"dotnet/gcpfunctions.json","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/google-cloud-functions/","name":"Google Cloud Functions (.NET)","aliases":[],"categories":[]},"_self":{"key":"dotnet","type":"language","details":"dotnet.json","doc_link":"https://docs.sentry.io/platforms/dotnet/","name":".NET","aliases":["C#"],"categories":[]},"maui":{"key":"dotnet.maui","type":"framework","details":"dotnet/maui.json","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/maui/","name":"Multi-platform App UI (MAUI)","aliases":[],"categories":[]},"uwp":{"key":"dotnet.uwp","type":"framework","details":"dotnet/uwp.json","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/uwp/","name":"UWP","aliases":[],"categories":[]},"winforms":{"key":"dotnet.winforms","type":"framework","details":"dotnet/winforms.json","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/winforms/","name":"Windows Forms","aliases":[],"categories":[]},"wpf":{"key":"dotnet.wpf","type":"framework","details":"dotnet/wpf.json","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/wpf/","name":"WPF","aliases":[],"categories":[]},"xamarin":{"key":"dotnet.xamarin","type":"framework","details":"dotnet/xamarin.json","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/xamarin/","name":"Xamarin","aliases":[],"categories":[]},"profiling-onboarding-0-alert":{"key":"dotnet.profiling-onboarding-0-alert","type":"language","details":"dotnet/profiling-onboarding-0-alert.json","doc_link":"https://docs.sentry.io/platforms/dotnet/profiling/","name":".NET","aliases":[],"categories":[]},"profiling-onboarding-1-install":{"key":"dotnet.profiling-onboarding-1-install","type":"language","details":"dotnet/profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/dotnet/profiling/","name":".NET","aliases":[],"categories":[]},"profiling-onboarding-2-configure-performance":{"key":"dotnet.profiling-onboarding-2-configure-performance","type":"language","details":"dotnet/profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/dotnet/profiling/","name":".NET","aliases":[],"categories":[]},"profiling-onboarding-3-configure-profiling":{"key":"dotnet.profiling-onboarding-3-configure-profiling","type":"language","details":"dotnet/profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/dotnet/profiling/","name":".NET","aliases":[],"categories":[]}},"electron":{"_self":{"key":"electron","type":"language","details":"electron.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/electron/","name":"Electron","aliases":[],"categories":[]}},"elixir":{"_self":{"key":"elixir","type":"language","details":"elixir.json","doc_link":"https://docs.sentry.io/platforms/elixir/","name":"Elixir","aliases":[],"categories":[]}},"flutter":{"_self":{"key":"flutter","type":"framework","details":"flutter.json","doc_link":"https://docs.sentry.io/platforms/flutter/","name":"Flutter","aliases":[],"categories":["mobile","browser","desktop"]},"profiling-onboarding-0-alert":{"key":"flutter.profiling-onboarding-0-alert","type":"language","details":"flutter/profiling-onboarding-0-alert.json","doc_link":"https://docs.sentry.io/platforms/flutter/profiling/","name":"Flutter","aliases":[],"categories":[]},"profiling-onboarding-1-install":{"key":"flutter.profiling-onboarding-1-install","type":"language","details":"flutter/profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/flutter/profiling/","name":"Flutter","aliases":[],"categories":[]},"profiling-onboarding-2-configure-performance":{"key":"flutter.profiling-onboarding-2-configure-performance","type":"language","details":"flutter/profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/flutter/profiling/","name":"Flutter","aliases":[],"categories":[]},"profiling-onboarding-3-configure-profiling":{"key":"flutter.profiling-onboarding-3-configure-profiling","type":"language","details":"flutter/profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/flutter/profiling/","name":"Flutter","aliases":[],"categories":[]}},"go":{"_self":{"key":"go","type":"language","details":"go.json","doc_link":"https://docs.sentry.io/platforms/go/","name":"Go","aliases":[],"categories":[]},"profiling-onboarding-0-alert":{"key":"go.profiling-onboarding-0-alert","type":"language","details":"go/profiling-onboarding-0-alert.json","doc_link":"https://docs.sentry.io/platforms/go/profiling/","name":"Go","aliases":[],"categories":[]},"profiling-onboarding-1-install":{"key":"go.profiling-onboarding-1-install","type":"language","details":"go/profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/go/profiling/","name":"Go","aliases":[],"categories":[]},"profiling-onboarding-2-configure-performance":{"key":"go.profiling-onboarding-2-configure-performance","type":"language","details":"go/profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/go/profiling/","name":"Go","aliases":[],"categories":[]},"profiling-onboarding-3-configure-profiling":{"key":"go.profiling-onboarding-3-configure-profiling","type":"language","details":"go/profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/go/profiling/","name":"Go","aliases":[],"categories":[]}},"ionic":{"_self":{"key":"ionic","type":"framework","details":"ionic.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/capacitor/","name":"Ionic","aliases":[],"categories":[]}},"java":{"_self":{"key":"java","type":"language","details":"java.json","doc_link":"https://docs.sentry.io/platforms/java/","name":"Java","aliases":[],"categories":["desktop","server"]},"log4j2":{"key":"java.log4j2","type":"framework","details":"java/log4j2.json","doc_link":"https://docs.sentry.io/platforms/java/guides/log4j2/","name":"Log4j 2.x","aliases":[],"categories":["desktop","server"]},"logback":{"key":"java.logback","type":"framework","details":"java/logback.json","doc_link":"https://docs.sentry.io/platforms/java/guides/logback/","name":"Logback","aliases":[],"categories":["desktop","server"]},"spring-boot":{"key":"java.spring-boot","type":"framework","details":"java/spring-boot.json","doc_link":"https://docs.sentry.io/platforms/java/guides/spring-boot/","name":"Spring Boot","aliases":[],"categories":["desktop","server"]},"spring":{"key":"java.spring","type":"framework","details":"java/spring.json","doc_link":"https://https://docs.sentry.io/platforms/java/guides/spring/","name":"Spring","aliases":[],"categories":["desktop","server"]}},"javascript":{"_self":{"key":"javascript","type":"language","details":"javascript.json","doc_link":"https://docs.sentry.io/platforms/javascript/","name":"Browser JavaScript","aliases":[],"categories":["browser"]},"with-error-monitoring-and-performance":{"key":"javascript.with-error-monitoring-and-performance","type":"language","details":"javascript/with-error-monitoring-and-performance.json","doc_link":"https://docs.sentry.io/platforms/javascript/","name":"Browser JavaScript","aliases":[],"categories":[]},"with-error-monitoring-and-replay":{"key":"javascript.with-error-monitoring-and-replay","type":"language","details":"javascript/with-error-monitoring-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/","name":"Browser JavaScript","aliases":[],"categories":[]},"with-error-monitoring-performance-and-replay":{"key":"javascript.with-error-monitoring-performance-and-replay","type":"language","details":"javascript/with-error-monitoring-performance-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/","name":"Browser JavaScript","aliases":[],"categories":[]},"with-error-monitoring":{"key":"javascript.with-error-monitoring","type":"language","details":"javascript/with-error-monitoring.json","doc_link":"https://docs.sentry.io/platforms/javascript/","name":"Browser JavaScript","aliases":[],"categories":[]},"angular":{"key":"javascript.angular","type":"framework","details":"javascript/angular.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/angular/","name":"Angular","aliases":[],"categories":["browser"]},"angular-with-error-monitoring-and-performance":{"key":"javascript.angular-with-error-monitoring-and-performance","type":"framework","details":"javascript/angular-with-error-monitoring-and-performance.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/angular/","name":"Angular","aliases":[],"categories":[]},"angular-with-error-monitoring-and-replay":{"key":"javascript.angular-with-error-monitoring-and-replay","type":"framework","details":"javascript/angular-with-error-monitoring-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/angular/","name":"Angular","aliases":[],"categories":[]},"angular-with-error-monitoring-performance-and-replay":{"key":"javascript.angular-with-error-monitoring-performance-and-replay","type":"framework","details":"javascript/angular-with-error-monitoring-performance-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/angular/","name":"Angular","aliases":[],"categories":[]},"angular-with-error-monitoring":{"key":"javascript.angular-with-error-monitoring","type":"framework","details":"javascript/angular-with-error-monitoring.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/angular/","name":"Angular","aliases":[],"categories":[]},"ember":{"key":"javascript.ember","type":"framework","details":"javascript/ember.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/ember/","name":"Ember","aliases":[],"categories":["browser"]},"ember-with-error-monitoring-and-performance":{"key":"javascript.ember-with-error-monitoring-and-performance","type":"framework","details":"javascript/ember-with-error-monitoring-and-performance.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/ember/","name":"Ember","aliases":[],"categories":[]},"ember-with-error-monitoring-and-replay":{"key":"javascript.ember-with-error-monitoring-and-replay","type":"framework","details":"javascript/ember-with-error-monitoring-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/ember/","name":"Ember","aliases":[],"categories":[]},"ember-with-error-monitoring-performance-and-replay":{"key":"javascript.ember-with-error-monitoring-performance-and-replay","type":"framework","details":"javascript/ember-with-error-monitoring-performance-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/ember/","name":"Ember","aliases":[],"categories":[]},"ember-with-error-monitoring":{"key":"javascript.ember-with-error-monitoring","type":"framework","details":"javascript/ember-with-error-monitoring.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/ember/","name":"Ember","aliases":[],"categories":[]},"gatsby":{"key":"javascript.gatsby","type":"framework","details":"javascript/gatsby.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/gatsby/","name":"Gatsby","aliases":[],"categories":["browser"]},"gatsby-with-error-monitoring-and-performance":{"key":"javascript.gatsby-with-error-monitoring-and-performance","type":"framework","details":"javascript/gatsby-with-error-monitoring-and-performance.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/gatsby/","name":"Gatsby","aliases":[],"categories":[]},"gatsby-with-error-monitoring-and-replay":{"key":"javascript.gatsby-with-error-monitoring-and-replay","type":"framework","details":"javascript/gatsby-with-error-monitoring-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/gatsby/","name":"Gatsby","aliases":[],"categories":[]},"gatsby-with-error-monitoring-performance-and-replay":{"key":"javascript.gatsby-with-error-monitoring-performance-and-replay","type":"framework","details":"javascript/gatsby-with-error-monitoring-performance-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/gatsby/","name":"Gatsby","aliases":[],"categories":[]},"gatsby-with-error-monitoring":{"key":"javascript.gatsby-with-error-monitoring","type":"framework","details":"javascript/gatsby-with-error-monitoring.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/gatsby/","name":"Gatsby","aliases":[],"categories":[]},"nextjs":{"key":"javascript.nextjs","type":"framework","details":"javascript/nextjs.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/nextjs/","name":"Next.js","aliases":[],"categories":["browser","server"]},"nextjs-with-error-monitoring-and-performance":{"key":"javascript.nextjs-with-error-monitoring-and-performance","type":"framework","details":"javascript/nextjs-with-error-monitoring-and-performance.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/nextjs/","name":"Next.js","aliases":[],"categories":[]},"nextjs-with-error-monitoring-and-replay":{"key":"javascript.nextjs-with-error-monitoring-and-replay","type":"framework","details":"javascript/nextjs-with-error-monitoring-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/nextjs/","name":"Next.js","aliases":[],"categories":[]},"nextjs-with-error-monitoring-performance-and-replay":{"key":"javascript.nextjs-with-error-monitoring-performance-and-replay","type":"framework","details":"javascript/nextjs-with-error-monitoring-performance-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/nextjs/","name":"Next.js","aliases":[],"categories":[]},"nextjs-with-error-monitoring":{"key":"javascript.nextjs-with-error-monitoring","type":"framework","details":"javascript/nextjs-with-error-monitoring.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/nextjs/","name":"Next.js","aliases":[],"categories":[]},"react":{"key":"javascript.react","type":"framework","details":"javascript/react.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/","name":"React","aliases":[],"categories":["browser"]},"react-with-error-monitoring-and-performance":{"key":"javascript.react-with-error-monitoring-and-performance","type":"framework","details":"javascript/react-with-error-monitoring-and-performance.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/","name":"React","aliases":[],"categories":[]},"react-with-error-monitoring-and-replay":{"key":"javascript.react-with-error-monitoring-and-replay","type":"framework","details":"javascript/react-with-error-monitoring-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/","name":"React","aliases":[],"categories":[]},"react-with-error-monitoring-performance-and-replay":{"key":"javascript.react-with-error-monitoring-performance-and-replay","type":"framework","details":"javascript/react-with-error-monitoring-performance-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/","name":"React","aliases":[],"categories":[]},"react-with-error-monitoring":{"key":"javascript.react-with-error-monitoring","type":"framework","details":"javascript/react-with-error-monitoring.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/","name":"React","aliases":[],"categories":[]},"remix":{"key":"javascript.remix","type":"framework","details":"javascript/remix.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/remix/","name":"Remix","aliases":[],"categories":["browser","server"]},"remix-with-error-monitoring-and-performance":{"key":"javascript.remix-with-error-monitoring-and-performance","type":"framework","details":"javascript/remix-with-error-monitoring-and-performance.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/remix/","name":"Remix","aliases":[],"categories":[]},"remix-with-error-monitoring-and-replay":{"key":"javascript.remix-with-error-monitoring-and-replay","type":"framework","details":"javascript/remix-with-error-monitoring-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/remix/","name":"Remix","aliases":[],"categories":[]},"remix-with-error-monitoring-performance-and-replay":{"key":"javascript.remix-with-error-monitoring-performance-and-replay","type":"framework","details":"javascript/remix-with-error-monitoring-performance-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/remix/","name":"Remix","aliases":[],"categories":[]},"remix-with-error-monitoring":{"key":"javascript.remix-with-error-monitoring","type":"framework","details":"javascript/remix-with-error-monitoring.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/remix/","name":"Remix","aliases":[],"categories":[]},"svelte":{"key":"javascript.svelte","type":"framework","details":"javascript/svelte.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/svelte/","name":"Svelte","aliases":[],"categories":["browser"]},"svelte-with-error-monitoring-and-performance":{"key":"javascript.svelte-with-error-monitoring-and-performance","type":"framework","details":"javascript/svelte-with-error-monitoring-and-performance.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/svelte/","name":"Svelte","aliases":[],"categories":[]},"svelte-with-error-monitoring-and-replay":{"key":"javascript.svelte-with-error-monitoring-and-replay","type":"framework","details":"javascript/svelte-with-error-monitoring-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/svelte/","name":"Svelte","aliases":[],"categories":[]},"svelte-with-error-monitoring-performance-and-replay":{"key":"javascript.svelte-with-error-monitoring-performance-and-replay","type":"framework","details":"javascript/svelte-with-error-monitoring-performance-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/svelte/","name":"Svelte","aliases":[],"categories":[]},"svelte-with-error-monitoring":{"key":"javascript.svelte-with-error-monitoring","type":"framework","details":"javascript/svelte-with-error-monitoring.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/svelte/","name":"Svelte","aliases":[],"categories":[]},"sveltekit":{"key":"javascript.sveltekit","type":"framework","details":"javascript/sveltekit.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/sveltekit/","name":"SvelteKit","aliases":[],"categories":["browser","server"]},"sveltekit-with-error-monitoring-and-performance":{"key":"javascript.sveltekit-with-error-monitoring-and-performance","type":"framework","details":"javascript/sveltekit-with-error-monitoring-and-performance.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/sveltekit/","name":"SvelteKit","aliases":[],"categories":[]},"sveltekit-with-error-monitoring-and-replay":{"key":"javascript.sveltekit-with-error-monitoring-and-replay","type":"framework","details":"javascript/sveltekit-with-error-monitoring-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/sveltekit/","name":"SvelteKit","aliases":[],"categories":[]},"sveltekit-with-error-monitoring-performance-and-replay":{"key":"javascript.sveltekit-with-error-monitoring-performance-and-replay","type":"framework","details":"javascript/sveltekit-with-error-monitoring-performance-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/sveltekit/","name":"SvelteKit","aliases":[],"categories":[]},"sveltekit-with-error-monitoring":{"key":"javascript.sveltekit-with-error-monitoring","type":"framework","details":"javascript/sveltekit-with-error-monitoring.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/sveltekit/","name":"SvelteKit","aliases":[],"categories":[]},"vue":{"key":"javascript.vue","type":"framework","details":"javascript/vue.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/vue/","name":"Vue","aliases":[],"categories":["browser"]},"vue-with-error-monitoring-and-performance":{"key":"javascript.vue-with-error-monitoring-and-performance","type":"framework","details":"javascript/vue-with-error-monitoring-and-performance.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/vue/","name":"Vue","aliases":[],"categories":[]},"vue-with-error-monitoring-and-replay":{"key":"javascript.vue-with-error-monitoring-and-replay","type":"framework","details":"javascript/vue-with-error-monitoring-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/vue/","name":"Vue","aliases":[],"categories":[]},"vue-with-error-monitoring-performance-and-replay":{"key":"javascript.vue-with-error-monitoring-performance-and-replay","type":"framework","details":"javascript/vue-with-error-monitoring-performance-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/vue/","name":"Vue","aliases":[],"categories":[]},"vue-with-error-monitoring":{"key":"javascript.vue-with-error-monitoring","type":"framework","details":"javascript/vue-with-error-monitoring.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/vue/","name":"Vue","aliases":[],"categories":[]},"performance-onboarding-1-install":{"key":"javascript.performance-onboarding-1-install","type":"language","details":"javascript/performance-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/performance/","name":"JavaScript","aliases":[],"categories":[]},"performance-onboarding-2-configure":{"key":"javascript.performance-onboarding-2-configure","type":"language","details":"javascript/performance-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/performance/","name":"JavaScript","aliases":[],"categories":[]},"performance-onboarding-3-verify":{"key":"javascript.performance-onboarding-3-verify","type":"language","details":"javascript/performance-onboarding-3-verify.json","doc_link":"https://docs.sentry.io/platforms/javascript/performance/","name":"JavaScript","aliases":[],"categories":[]},"react-performance-onboarding-1-install":{"key":"javascript.react-performance-onboarding-1-install","type":"framework","details":"javascript/react-performance-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/performance/","name":"React","aliases":[],"categories":[]},"react-performance-onboarding-2-configure":{"key":"javascript.react-performance-onboarding-2-configure","type":"framework","details":"javascript/react-performance-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/performance/","name":"React","aliases":[],"categories":[]},"react-performance-onboarding-3-verify":{"key":"javascript.react-performance-onboarding-3-verify","type":"framework","details":"javascript/react-performance-onboarding-3-verify.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/performance/","name":"React","aliases":[],"categories":[]},"angular-profiling-onboarding-1-install":{"key":"javascript.angular-profiling-onboarding-1-install","type":"framework","details":"javascript/angular-profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/vue/profiling/","name":"Angular (JS Self Profiling)","aliases":[],"categories":[]},"angular-profiling-onboarding-2-configure-document-policy":{"key":"javascript.angular-profiling-onboarding-2-configure-document-policy","type":"framework","details":"javascript/angular-profiling-onboarding-2-configure-document-policy.json","doc_link":"https://docs.sentry.io/platforms/javascript/profiling/","name":"Browser (JS Self Profiling)","aliases":[],"categories":[]},"angular-profiling-onboarding-3-configure":{"key":"javascript.angular-profiling-onboarding-3-configure","type":"framework","details":"javascript/angular-profiling-onboarding-3-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/profiling/","name":"Browser (JS Self Profiling)","aliases":[],"categories":[]},"profiling-onboarding-1-install":{"key":"javascript.profiling-onboarding-1-install","type":"framework","details":"javascript/profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/profiling/","name":"Browser (JS Self Profiling)","aliases":[],"categories":[]},"profiling-onboarding-2-configure-document-policy":{"key":"javascript.profiling-onboarding-2-configure-document-policy","type":"framework","details":"javascript/profiling-onboarding-2-configure-document-policy.json","doc_link":"https://docs.sentry.io/platforms/javascript/profiling/","name":"Browser (JS Self Profiling)","aliases":[],"categories":[]},"profiling-onboarding-3-configure":{"key":"javascript.profiling-onboarding-3-configure","type":"framework","details":"javascript/profiling-onboarding-3-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/profiling/","name":"Browser (JS Self Profiling)","aliases":[],"categories":[]},"react-profiling-onboarding-1-install":{"key":"javascript.react-profiling-onboarding-1-install","type":"framework","details":"javascript/react-profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/profiling/","name":"React (JS Self Profiling)","aliases":[],"categories":[]},"react-profiling-onboarding-2-configure-document-policy":{"key":"javascript.react-profiling-onboarding-2-configure-document-policy","type":"framework","details":"javascript/react-profiling-onboarding-2-configure-document-policy.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/profiling/","name":"React (JS Self Profiling)","aliases":[],"categories":[]},"react-profiling-onboarding-3-configure":{"key":"javascript.react-profiling-onboarding-3-configure","type":"framework","details":"javascript/react-profiling-onboarding-3-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/profiling/","name":"React (JS Self Profiling)","aliases":[],"categories":[]},"vue-profiling-onboarding-1-install":{"key":"javascript.vue-profiling-onboarding-1-install","type":"framework","details":"javascript/vue-profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/vue/profiling/","name":"Vue (JS Self Profiling)","aliases":[],"categories":[]},"vue-profiling-onboarding-2-configure-document-policy":{"key":"javascript.vue-profiling-onboarding-2-configure-document-policy","type":"framework","details":"javascript/vue-profiling-onboarding-2-configure-document-policy.json","doc_link":"https://docs.sentry.io/platforms/javascript/profiling/","name":"Browser (JS Self Profiling)","aliases":[],"categories":[]},"vue-profiling-onboarding-3-configure":{"key":"javascript.vue-profiling-onboarding-3-configure","type":"framework","details":"javascript/vue-profiling-onboarding-3-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/profiling/","name":"Vue (JS Self Profiling)","aliases":[],"categories":[]},"astro-replay-onboarding-1-install":{"key":"javascript.astro-replay-onboarding-1-install","type":"language","details":"javascript/astro-replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/astro/session-replay/","name":"Astro","aliases":[],"categories":[]},"astro-replay-onboarding-2-configure":{"key":"javascript.astro-replay-onboarding-2-configure","type":"language","details":"javascript/astro-replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/astro/session-replay/","name":"Astro","aliases":[],"categories":[]},"angular-replay-onboarding-1-install":{"key":"javascript.angular-replay-onboarding-1-install","type":"language","details":"javascript/angular-replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"angular-replay-onboarding-2-configure":{"key":"javascript.angular-replay-onboarding-2-configure","type":"language","details":"javascript/angular-replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"capacitor-replay-onboarding-1-install":{"key":"javascript.capacitor-replay-onboarding-1-install","type":"language","details":"javascript/capacitor-replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/capacitor/session-replay/","name":"Capacitor","aliases":[],"categories":[]},"capacitor-replay-onboarding-2-configure":{"key":"javascript.capacitor-replay-onboarding-2-configure","type":"language","details":"javascript/capacitor-replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/capacitor/session-replay/","name":"JavaScript","aliases":[],"categories":[]},"electron-replay-onboarding-1-install":{"key":"javascript.electron-replay-onboarding-1-install","type":"framework","details":"javascript/electron-replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/electron/session-replay/","name":"Electron","aliases":[],"categories":[]},"electron-replay-onboarding-2-configure":{"key":"javascript.electron-replay-onboarding-2-configure","type":"framework","details":"javascript/electron-replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/electron/session-replay/","name":"Electron","aliases":[],"categories":[]},"ember-replay-onboarding-1-install":{"key":"javascript.ember-replay-onboarding-1-install","type":"language","details":"javascript/ember-replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"ember-replay-onboarding-2-configure":{"key":"javascript.ember-replay-onboarding-2-configure","type":"language","details":"javascript/ember-replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"gatsby-replay-onboarding-1-install":{"key":"javascript.gatsby-replay-onboarding-1-install","type":"language","details":"javascript/gatsby-replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"gatsby-replay-onboarding-2-configure":{"key":"javascript.gatsby-replay-onboarding-2-configure","type":"language","details":"javascript/gatsby-replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"replay-onboarding-1-install":{"key":"javascript.replay-onboarding-1-install","type":"language","details":"javascript/replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"replay-onboarding-2-configure":{"key":"javascript.replay-onboarding-2-configure","type":"language","details":"javascript/replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"nextjs-replay-onboarding-1-install":{"key":"javascript.nextjs-replay-onboarding-1-install","type":"language","details":"javascript/nextjs-replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"nextjs-replay-onboarding-2-configure":{"key":"javascript.nextjs-replay-onboarding-2-configure","type":"language","details":"javascript/nextjs-replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"react-replay-onboarding-1-install":{"key":"javascript.react-replay-onboarding-1-install","type":"language","details":"javascript/react-replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"react-replay-onboarding-2-configure":{"key":"javascript.react-replay-onboarding-2-configure","type":"language","details":"javascript/react-replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"remix-replay-onboarding-1-install":{"key":"javascript.remix-replay-onboarding-1-install","type":"language","details":"javascript/remix-replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"remix-replay-onboarding-2-configure":{"key":"javascript.remix-replay-onboarding-2-configure","type":"language","details":"javascript/remix-replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"svelte-replay-onboarding-1-install":{"key":"javascript.svelte-replay-onboarding-1-install","type":"language","details":"javascript/svelte-replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"svelte-replay-onboarding-2-configure":{"key":"javascript.svelte-replay-onboarding-2-configure","type":"language","details":"javascript/svelte-replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"sveltekit-replay-onboarding-1-install":{"key":"javascript.sveltekit-replay-onboarding-1-install","type":"language","details":"javascript/sveltekit-replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"sveltekit-replay-onboarding-2-configure":{"key":"javascript.sveltekit-replay-onboarding-2-configure","type":"language","details":"javascript/sveltekit-replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"vue-replay-onboarding-1-install":{"key":"javascript.vue-replay-onboarding-1-install","type":"language","details":"javascript/vue-replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"vue-replay-onboarding-2-configure":{"key":"javascript.vue-replay-onboarding-2-configure","type":"language","details":"javascript/vue-replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]}},"kotlin":{"_self":{"key":"kotlin","type":"language","details":"kotlin.json","doc_link":"https://docs.sentry.io/platforms/kotlin/","name":"Kotlin","aliases":[],"categories":["mobile","desktop","server"]}},"minidump":{"_self":{"key":"minidump","type":"framework","details":"minidump.json","doc_link":"https://docs.sentry.io/platforms/native/minidump/","name":"Minidump","aliases":[],"categories":[]}},"node":{"awslambda":{"key":"node.awslambda","type":"framework","details":"node/awslambda.json","doc_link":"https://docs.sentry.io/platforms/node/guides/aws-lambda/","name":"AWS Lambda (Node)","aliases":[],"categories":[]},"azurefunctions":{"key":"node.azurefunctions","type":"framework","details":"node/azurefunctions.json","doc_link":"https://docs.sentry.io/platforms/node/guides/azure-functions/","name":"Azure Functions (Node)","aliases":[],"categories":[]},"connect":{"key":"node.connect","type":"framework","details":"node/connect.json","doc_link":"https://docs.sentry.io/platforms/node/guides/connect/","name":"Connect","aliases":[],"categories":["browser"]},"express":{"key":"node.express","type":"framework","details":"node/express.json","doc_link":"https://docs.sentry.io/platforms/node/guides/express/","name":"Express","aliases":[],"categories":["browser"]},"gcpfunctions":{"key":"node.gcpfunctions","type":"framework","details":"node/gcpfunctions.json","doc_link":"https://docs.sentry.io/platforms/node/guides/gcp-functions/","name":"Google Cloud Functions (Node)","aliases":[],"categories":[]},"_self":{"key":"node","type":"language","details":"node.json","doc_link":"https://docs.sentry.io/platforms/node/","name":"Node.js","aliases":[],"categories":["browser"]},"koa":{"key":"node.koa","type":"framework","details":"node/koa.json","doc_link":"https://docs.sentry.io/platforms/node/guides/koa/","name":"Koa","aliases":[],"categories":["browser"]},"serverlesscloud":{"key":"node.serverlesscloud","type":"framework","details":"node/serverlesscloud.json","doc_link":"https://docs.sentry.io/platforms/node/guides/serverless-cloud/","name":"Serverless (Node)","aliases":[],"categories":[]},"tracing":{"key":"node.tracing","type":"framework","details":"node/tracing.json","doc_link":"https://docs.sentry.io/platforms/node/performance/instrumentation/custom-instrumentation/","name":"Node.js","aliases":[],"categories":[]},"javascript-nextjs-profiling-onboarding-1-install":{"key":"node.javascript-nextjs-profiling-onboarding-1-install","type":"language","details":"node/javascript-nextjs-profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/node/profiling/","name":"Next.js","aliases":[],"categories":[]},"javascript-nextjs-profiling-onboarding-2-configure-performance":{"key":"node.javascript-nextjs-profiling-onboarding-2-configure-performance","type":"language","details":"node/javascript-nextjs-profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/node/profiling/","name":"Next.js","aliases":[],"categories":[]},"javascript-nextjs-profiling-onboarding-3-configure-profiling":{"key":"node.javascript-nextjs-profiling-onboarding-3-configure-profiling","type":"language","details":"node/javascript-nextjs-profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/node/profiling/","name":"Next.js","aliases":[],"categories":[]},"javascript-remix-profiling-onboarding-1-install":{"key":"node.javascript-remix-profiling-onboarding-1-install","type":"language","details":"node/javascript-remix-profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/node/profiling/","name":"Remix","aliases":[],"categories":[]},"javascript-remix-profiling-onboarding-2-configure-performance":{"key":"node.javascript-remix-profiling-onboarding-2-configure-performance","type":"language","details":"node/javascript-remix-profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/node/profiling/","name":"Remix","aliases":[],"categories":[]},"javascript-remix-profiling-onboarding-3-configure-profiling":{"key":"node.javascript-remix-profiling-onboarding-3-configure-profiling","type":"language","details":"node/javascript-remix-profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/node/profiling/","name":"Remix","aliases":[],"categories":[]},"javascript-sveltekit-profiling-onboarding-1-install":{"key":"node.javascript-sveltekit-profiling-onboarding-1-install","type":"language","details":"node/javascript-sveltekit-profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/node/profiling/","name":"SvelteKit","aliases":[],"categories":[]},"javascript-sveltekit-profiling-onboarding-2-configure-performance":{"key":"node.javascript-sveltekit-profiling-onboarding-2-configure-performance","type":"language","details":"node/javascript-sveltekit-profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/node/profiling/","name":"SvelteKit","aliases":[],"categories":[]},"javascript-sveltekit-profiling-onboarding-3-configure-profiling":{"key":"node.javascript-sveltekit-profiling-onboarding-3-configure-profiling","type":"language","details":"node/javascript-sveltekit-profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/node/profiling/","name":"SvelteKit","aliases":[],"categories":[]},"profiling-onboarding-1-install":{"key":"node.profiling-onboarding-1-install","type":"language","details":"node/profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/node/profiling/","name":"Node","aliases":[],"categories":[]},"profiling-onboarding-2-configure-performance":{"key":"node.profiling-onboarding-2-configure-performance","type":"language","details":"node/profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/node/profiling/","name":"Node","aliases":[],"categories":[]},"profiling-onboarding-3-configure-profiling":{"key":"node.profiling-onboarding-3-configure-profiling","type":"language","details":"node/profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/node/profiling/","name":"Node","aliases":[],"categories":[]}},"native":{"_self":{"key":"native","type":"language","details":"native.json","doc_link":"https://docs.sentry.io/platforms/native/","name":"Native","aliases":[],"categories":["mobile","desktop"]},"qt":{"key":"native.qt","type":"framework","details":"native/qt.json","doc_link":"https://docs.sentry.io/platforms/native/guides/qt/","name":"Qt","aliases":[],"categories":["desktop","mobile"]}},"php":{"_self":{"key":"php","type":"language","details":"php.json","doc_link":"https://docs.sentry.io/platforms/php/","name":"PHP","aliases":[],"categories":[]},"laravel":{"key":"php.laravel","type":"framework","details":"php/laravel.json","doc_link":"https://docs.sentry.io/platforms/php/guides/laravel/","name":"Laravel","aliases":[],"categories":[]},"symfony":{"key":"php.symfony","type":"framework","details":"php/symfony.json","doc_link":"https://docs.sentry.io/platforms/php/guides/symfony/","name":"Symfony","aliases":[],"categories":[]},"laravel-profiling-onboarding-1-install":{"key":"php.laravel-profiling-onboarding-1-install","type":"language","details":"php/laravel-profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/php/guides/laravel/profiling/","name":"PHP","aliases":[],"categories":[]},"laravel-profiling-onboarding-2-configure-performance":{"key":"php.laravel-profiling-onboarding-2-configure-performance","type":"language","details":"php/laravel-profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/php/guides/laravel/profiling/","name":"PHP","aliases":[],"categories":[]},"laravel-profiling-onboarding-3-configure-profiling":{"key":"php.laravel-profiling-onboarding-3-configure-profiling","type":"language","details":"php/laravel-profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/php/guides/laravel/profiling/","name":"PHP","aliases":[],"categories":[]},"profiling-onboarding-1-install":{"key":"php.profiling-onboarding-1-install","type":"language","details":"php/profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/php/profiling/","name":"PHP","aliases":[],"categories":[]},"profiling-onboarding-2-configure-performance":{"key":"php.profiling-onboarding-2-configure-performance","type":"language","details":"php/profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/php/profiling/","name":"PHP","aliases":[],"categories":[]},"profiling-onboarding-3-configure-profiling":{"key":"php.profiling-onboarding-3-configure-profiling","type":"language","details":"php/profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/php/profiling/","name":"PHP","aliases":[],"categories":[]},"symfony2-profiling-onboarding-1-install":{"key":"php.symfony2-profiling-onboarding-1-install","type":"language","details":"php/symfony2-profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/php/guides/symfony/profiling/","name":"PHP","aliases":[],"categories":[]},"symfony2-profiling-onboarding-2-configure-performance":{"key":"php.symfony2-profiling-onboarding-2-configure-performance","type":"language","details":"php/symfony2-profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/php/guides/symfony/profiling/","name":"PHP","aliases":[],"categories":[]},"symfony2-profiling-onboarding-3-configure-profiling":{"key":"php.symfony2-profiling-onboarding-3-configure-profiling","type":"language","details":"php/symfony2-profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/php/guides/symfony/profiling/","name":"PHP","aliases":[],"categories":[]}},"python":{"aiohttp":{"key":"python.aiohttp","type":"framework","details":"python/aiohttp.json","doc_link":"https://docs.sentry.io/platforms/python/guides/aiohttp/","name":"AIOHTTP","aliases":[],"categories":[]},"asgi":{"key":"python.asgi","type":"framework","details":"python/asgi.json","doc_link":"https://docs.sentry.io/platforms/python/guides/asgi/","name":"ASGI","aliases":[],"categories":[]},"awslambda":{"key":"python.awslambda","type":"framework","details":"python/awslambda.json","doc_link":"https://docs.sentry.io/platforms/python/guides/aws-lambda/","name":"AWS Lambda (Python)","aliases":[],"categories":[]},"bottle":{"key":"python.bottle","type":"framework","details":"python/bottle.json","doc_link":"https://docs.sentry.io/platforms/python/guides/bottle/","name":"Bottle","aliases":[],"categories":[]},"celery":{"key":"python.celery","type":"library","details":"python/celery.json","doc_link":"https://docs.sentry.io/platforms/python/guides/celery/","name":"Celery","aliases":[],"categories":[]},"chalice":{"key":"python.chalice","type":"framework","details":"python/chalice.json","doc_link":"https://docs.sentry.io/platforms/python/guides/chalice/","name":"Chalice","aliases":[],"categories":[]},"django":{"key":"python.django","type":"framework","details":"python/django.json","doc_link":"https://docs.sentry.io/platforms/python/guides/django/","name":"Django","aliases":[],"categories":[]},"falcon":{"key":"python.falcon","type":"framework","details":"python/falcon.json","doc_link":"https://docs.sentry.io/platforms/python/guides/falcon/","name":"Falcon","aliases":[],"categories":[]},"fastapi":{"key":"python.fastapi","type":"framework","details":"python/fastapi.json","doc_link":"https://docs.sentry.io/platforms/python/guides/fastapi/","name":"FastAPI","aliases":[],"categories":[]},"flask":{"key":"python.flask","type":"framework","details":"python/flask.json","doc_link":"https://docs.sentry.io/platforms/python/guides/flask/","name":"Flask","aliases":[],"categories":[]},"gcpfunctions":{"key":"python.gcpfunctions","type":"framework","details":"python/gcpfunctions.json","doc_link":"https://docs.sentry.io/platforms/python/guides/gcp-functions/","name":"Google Cloud Functions (Python)","aliases":[],"categories":[]},"_self":{"key":"python","type":"language","details":"python.json","doc_link":"https://docs.sentry.io/platforms/python/","name":"Python","aliases":[],"categories":[]},"pylons":{"key":"python.pylons","type":"framework","details":"python/pylons.json","doc_link":"https://docs.sentry.io/platforms/python/legacy-sdk/integrations/pylons/","name":"Pylons","aliases":[],"categories":[]},"pymongo":{"key":"python.pymongo","type":"library","details":"python/pymongo.json","doc_link":"https://docs.sentry.io/platforms/python/guides/pymongo/","name":"PyMongo","aliases":[],"categories":[]},"pyramid":{"key":"python.pyramid","type":"framework","details":"python/pyramid.json","doc_link":"https://docs.sentry.io/platforms/python/pyramid/","name":"Pyramid","aliases":[],"categories":[]},"quart":{"key":"python.quart","type":"framework","details":"python/quart.json","doc_link":"https://docs.sentry.io/platforms/python/guides/quart/","name":"Quart","aliases":[],"categories":[]},"rq":{"key":"python.rq","type":"library","details":"python/rq.json","doc_link":"https://docs.sentry.io/platforms/python/guides/rq/","name":"RQ (Redis Queue)","aliases":[],"categories":[]},"sanic":{"key":"python.sanic","type":"framework","details":"python/sanic.json","doc_link":"https://docs.sentry.io/platforms/python/guides/sanic/","name":"Sanic","aliases":[],"categories":[]},"serverless":{"key":"python.serverless","type":"framework","details":"python/serverless.json","doc_link":"https://docs.sentry.io/platforms/python/guides/serverless/","name":"Serverless (Python)","aliases":[],"categories":[]},"starlette":{"key":"python.starlette","type":"framework","details":"python/starlette.json","doc_link":"https://docs.sentry.io/platforms/python/guides/starlette/","name":"Starlette","aliases":[],"categories":[]},"tornado":{"key":"python.tornado","type":"framework","details":"python/tornado.json","doc_link":"https://docs.sentry.io/platforms/python/guides/tornado/","name":"Tornado","aliases":[],"categories":[]},"tracing":{"key":"python.tracing","type":"language","details":"python/tracing.json","doc_link":"https://docs.sentry.io/platforms/python/performance/","name":"Python","aliases":[],"categories":[]},"tryton":{"key":"python.tryton","type":"framework","details":"python/tryton.json","doc_link":"https://docs.sentry.io/platforms/python/guides/tryton/","name":"Tryton","aliases":[],"categories":[]},"wsgi":{"key":"python.wsgi","type":"framework","details":"python/wsgi.json","doc_link":"https://docs.sentry.io/platforms/python/guides/wsgi/","name":"WSGI","aliases":[],"categories":[]},"profiling-onboarding-1-install":{"key":"python.profiling-onboarding-1-install","type":"language","details":"python/profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/python/profiling/","name":"Python","aliases":[],"categories":[]},"profiling-onboarding-2-configure-performance":{"key":"python.profiling-onboarding-2-configure-performance","type":"language","details":"python/profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/python/profiling/","name":"Python","aliases":[],"categories":[]},"profiling-onboarding-3-configure-profiling":{"key":"python.profiling-onboarding-3-configure-profiling","type":"language","details":"python/profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/python/profiling/","name":"Python","aliases":[],"categories":[]}},"react-native":{"_self":{"key":"react-native","type":"language","details":"react-native.json","doc_link":"https://docs.sentry.io/platforms/react-native/","name":"React Native","aliases":[],"categories":["mobile"]},"tracing":{"key":"react-native.tracing","type":"language","details":"react-native/tracing.json","doc_link":"https://docs.sentry.io/platforms/react-native/performance/instrumentation/custom-instrumentation/","name":"React-Native","aliases":[],"categories":[]},"profiling-onboarding-0-alert":{"key":"react-native.profiling-onboarding-0-alert","type":"language","details":"react-native/profiling-onboarding-0-alert.json","doc_link":"https://docs.sentry.io/platforms/react-native/profiling/","name":"React Native","aliases":[],"categories":[]},"profiling-onboarding-1-install":{"key":"react-native.profiling-onboarding-1-install","type":"language","details":"react-native/profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/react-native/profiling/","name":"React Native","aliases":[],"categories":[]},"profiling-onboarding-2-configure-performance":{"key":"react-native.profiling-onboarding-2-configure-performance","type":"language","details":"react-native/profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/react-native/profiling/","name":"React Native","aliases":[],"categories":[]},"profiling-onboarding-3-configure-profiling":{"key":"react-native.profiling-onboarding-3-configure-profiling","type":"language","details":"react-native/profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/react-native/profiling/","name":"React Native","aliases":[],"categories":[]}},"ruby":{"_self":{"key":"ruby","type":"language","details":"ruby.json","doc_link":"https://docs.sentry.io/platforms/ruby/","name":"Ruby","aliases":[],"categories":[]},"rack":{"key":"ruby.rack","type":"framework","details":"ruby/rack.json","doc_link":"https://docs.sentry.io/platforms/ruby/guides/rack/","name":"Rack Middleware","aliases":[],"categories":[]},"rails":{"key":"ruby.rails","type":"framework","details":"ruby/rails.json","doc_link":"https://docs.sentry.io/platforms/ruby/guides/rails/","name":"Rails","aliases":[],"categories":[]},"profiling-onboarding-0-alert":{"key":"ruby.profiling-onboarding-0-alert","type":"language","details":"ruby/profiling-onboarding-0-alert.json","doc_link":"https://docs.sentry.io/platforms/ruby/profiling/","name":"Ruby","aliases":[],"categories":[]},"profiling-onboarding-1-install":{"key":"ruby.profiling-onboarding-1-install","type":"language","details":"ruby/profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/ruby/profiling/","name":"Ruby","aliases":[],"categories":[]},"profiling-onboarding-2-configure-performance":{"key":"ruby.profiling-onboarding-2-configure-performance","type":"language","details":"ruby/profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/ruby/profiling/","name":"Ruby","aliases":[],"categories":[]},"profiling-onboarding-3-configure-profiling":{"key":"ruby.profiling-onboarding-3-configure-profiling","type":"language","details":"ruby/profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/ruby/profiling/","name":"Ruby","aliases":[],"categories":[]}},"rust":{"_self":{"key":"rust","type":"language","details":"rust.json","doc_link":"https://docs.sentry.io/platforms/rust/","name":"Rust","aliases":[],"categories":[]}},"unity":{"_self":{"key":"unity","type":"framework","details":"unity.json","doc_link":"https://docs.sentry.io/platforms/unity/","name":"Unity","aliases":[],"categories":["mobile","browser","desktop","console","gaming"]}},"unreal":{"_self":{"key":"unreal","type":"framework","details":"unreal.json","doc_link":"https://docs.sentry.io/platforms/unreal/","name":"Unreal Engine","aliases":[],"categories":["mobile","desktop","console","gaming"]}}}} \ No newline at end of file +{"platforms":{"android":{"_self":{"key":"android","type":"framework","details":"android.json","doc_link":"https://docs.sentry.io/platforms/android/","name":"Android","aliases":[],"categories":["mobile"]},"profiling-onboarding-1-install":{"key":"android.profiling-onboarding-1-install","type":"language","details":"android/profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/android/profiling/","name":"Android","aliases":[],"categories":[]},"profiling-onboarding-2-configure-performance":{"key":"android.profiling-onboarding-2-configure-performance","type":"language","details":"android/profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/android/profiling/","name":"Android","aliases":[],"categories":[]},"profiling-onboarding-3-configure-profiling":{"key":"android.profiling-onboarding-3-configure-profiling","type":"language","details":"android/profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/android/profiling/","name":"Android","aliases":[],"categories":[]},"profiling-onboarding-4-upload":{"key":"android.profiling-onboarding-4-upload","type":"language","details":"android/profiling-onboarding-4-upload.json","doc_link":"https://docs.sentry.io/platforms/android/profiling/","name":"Android","aliases":[],"categories":[]}},"apple":{"_self":{"key":"apple","type":"language","details":"apple.json","doc_link":"https://docs.sentry.io/platforms/apple/","name":"Apple","aliases":["cocoa"],"categories":["mobile","desktop"]},"ios":{"key":"apple.ios","type":"language","details":"apple/ios.json","doc_link":"https://docs.sentry.io/platforms/apple/","name":"iOS","aliases":[],"categories":["mobile"]},"macos":{"key":"apple.macos","type":"language","details":"apple/macos.json","doc_link":"https://docs.sentry.io/platforms/apple/","name":"macOS","aliases":[],"categories":["desktop"]},"ios-profiling-onboarding-1-install":{"key":"apple.ios-profiling-onboarding-1-install","type":"language","details":"apple/ios-profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/apple/guides/ios/profiling/","name":"iOS","aliases":[],"categories":[]},"ios-profiling-onboarding-2-configure-performance":{"key":"apple.ios-profiling-onboarding-2-configure-performance","type":"language","details":"apple/ios-profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/apple/guides/ios/profiling/","name":"iOS","aliases":[],"categories":[]},"ios-profiling-onboarding-3-configure-profiling":{"key":"apple.ios-profiling-onboarding-3-configure-profiling","type":"language","details":"apple/ios-profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/apple/guides/ios/profiling/","name":"iOS","aliases":[],"categories":[]},"ios-profiling-onboarding-4-upload":{"key":"apple.ios-profiling-onboarding-4-upload","type":"language","details":"apple/ios-profiling-onboarding-4-upload.json","doc_link":"https://docs.sentry.io/platforms/apple/guides/ios/profiling/","name":"iOS","aliases":[],"categories":[]}},"capacitor":{"_self":{"key":"capacitor","type":"framework","details":"capacitor.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/capacitor/","name":"Capacitor","aliases":[],"categories":[]}},"cordova":{"_self":{"key":"cordova","type":"language","details":"cordova.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/cordova/","name":"Cordova","aliases":[],"categories":[]}},"dart":{"_self":{"key":"dart","type":"framework","details":"dart.json","doc_link":"https://docs.sentry.io/platforms/dart/","name":"Dart","aliases":[],"categories":["mobile","browser","server"]}},"dotnet":{"aspnet":{"key":"dotnet.aspnet","type":"framework","details":"dotnet/aspnet.json","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/aspnet/","name":"ASP.NET","aliases":[],"categories":[]},"aspnetcore":{"key":"dotnet.aspnetcore","type":"framework","details":"dotnet/aspnetcore.json","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/aspnetcore/","name":"ASP.NET Core","aliases":[],"categories":[]},"awslambda":{"key":"dotnet.awslambda","type":"framework","details":"dotnet/awslambda.json","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/aws-lambda/","name":"AWS Lambda (.NET)","aliases":[],"categories":[]},"gcpfunctions":{"key":"dotnet.gcpfunctions","type":"framework","details":"dotnet/gcpfunctions.json","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/google-cloud-functions/","name":"Google Cloud Functions (.NET)","aliases":[],"categories":[]},"_self":{"key":"dotnet","type":"language","details":"dotnet.json","doc_link":"https://docs.sentry.io/platforms/dotnet/","name":".NET","aliases":["C#"],"categories":[]},"maui":{"key":"dotnet.maui","type":"framework","details":"dotnet/maui.json","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/maui/","name":"Multi-platform App UI (MAUI)","aliases":[],"categories":[]},"uwp":{"key":"dotnet.uwp","type":"framework","details":"dotnet/uwp.json","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/uwp/","name":"UWP","aliases":[],"categories":[]},"winforms":{"key":"dotnet.winforms","type":"framework","details":"dotnet/winforms.json","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/winforms/","name":"Windows Forms","aliases":[],"categories":[]},"wpf":{"key":"dotnet.wpf","type":"framework","details":"dotnet/wpf.json","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/wpf/","name":"WPF","aliases":[],"categories":[]},"xamarin":{"key":"dotnet.xamarin","type":"framework","details":"dotnet/xamarin.json","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/xamarin/","name":"Xamarin","aliases":[],"categories":[]},"profiling-onboarding-0-alert":{"key":"dotnet.profiling-onboarding-0-alert","type":"language","details":"dotnet/profiling-onboarding-0-alert.json","doc_link":"https://docs.sentry.io/platforms/dotnet/profiling/","name":".NET","aliases":[],"categories":[]},"profiling-onboarding-1-install":{"key":"dotnet.profiling-onboarding-1-install","type":"language","details":"dotnet/profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/dotnet/profiling/","name":".NET","aliases":[],"categories":[]},"profiling-onboarding-2-configure-performance":{"key":"dotnet.profiling-onboarding-2-configure-performance","type":"language","details":"dotnet/profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/dotnet/profiling/","name":".NET","aliases":[],"categories":[]},"profiling-onboarding-3-configure-profiling":{"key":"dotnet.profiling-onboarding-3-configure-profiling","type":"language","details":"dotnet/profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/dotnet/profiling/","name":".NET","aliases":[],"categories":[]}},"electron":{"_self":{"key":"electron","type":"language","details":"electron.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/electron/","name":"Electron","aliases":[],"categories":[]}},"elixir":{"_self":{"key":"elixir","type":"language","details":"elixir.json","doc_link":"https://docs.sentry.io/platforms/elixir/","name":"Elixir","aliases":[],"categories":[]}},"flutter":{"_self":{"key":"flutter","type":"framework","details":"flutter.json","doc_link":"https://docs.sentry.io/platforms/flutter/","name":"Flutter","aliases":[],"categories":["mobile","browser","desktop"]},"profiling-onboarding-0-alert":{"key":"flutter.profiling-onboarding-0-alert","type":"language","details":"flutter/profiling-onboarding-0-alert.json","doc_link":"https://docs.sentry.io/platforms/flutter/profiling/","name":"Flutter","aliases":[],"categories":[]},"profiling-onboarding-1-install":{"key":"flutter.profiling-onboarding-1-install","type":"language","details":"flutter/profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/flutter/profiling/","name":"Flutter","aliases":[],"categories":[]},"profiling-onboarding-2-configure-performance":{"key":"flutter.profiling-onboarding-2-configure-performance","type":"language","details":"flutter/profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/flutter/profiling/","name":"Flutter","aliases":[],"categories":[]},"profiling-onboarding-3-configure-profiling":{"key":"flutter.profiling-onboarding-3-configure-profiling","type":"language","details":"flutter/profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/flutter/profiling/","name":"Flutter","aliases":[],"categories":[]}},"go":{"_self":{"key":"go","type":"language","details":"go.json","doc_link":"https://docs.sentry.io/platforms/go/","name":"Go","aliases":[],"categories":[]},"profiling-onboarding-0-alert":{"key":"go.profiling-onboarding-0-alert","type":"language","details":"go/profiling-onboarding-0-alert.json","doc_link":"https://docs.sentry.io/platforms/go/profiling/","name":"Go","aliases":[],"categories":[]},"profiling-onboarding-1-install":{"key":"go.profiling-onboarding-1-install","type":"language","details":"go/profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/go/profiling/","name":"Go","aliases":[],"categories":[]},"profiling-onboarding-2-configure-performance":{"key":"go.profiling-onboarding-2-configure-performance","type":"language","details":"go/profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/go/profiling/","name":"Go","aliases":[],"categories":[]},"profiling-onboarding-3-configure-profiling":{"key":"go.profiling-onboarding-3-configure-profiling","type":"language","details":"go/profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/go/profiling/","name":"Go","aliases":[],"categories":[]}},"ionic":{"_self":{"key":"ionic","type":"framework","details":"ionic.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/capacitor/","name":"Ionic","aliases":[],"categories":[]}},"java":{"_self":{"key":"java","type":"language","details":"java.json","doc_link":"https://docs.sentry.io/platforms/java/","name":"Java","aliases":[],"categories":["desktop","server"]},"log4j2":{"key":"java.log4j2","type":"framework","details":"java/log4j2.json","doc_link":"https://docs.sentry.io/platforms/java/guides/log4j2/","name":"Log4j 2.x","aliases":[],"categories":["desktop","server"]},"logback":{"key":"java.logback","type":"framework","details":"java/logback.json","doc_link":"https://docs.sentry.io/platforms/java/guides/logback/","name":"Logback","aliases":[],"categories":["desktop","server"]},"spring-boot":{"key":"java.spring-boot","type":"framework","details":"java/spring-boot.json","doc_link":"https://docs.sentry.io/platforms/java/guides/spring-boot/","name":"Spring Boot","aliases":[],"categories":["desktop","server"]},"spring":{"key":"java.spring","type":"framework","details":"java/spring.json","doc_link":"https://https://docs.sentry.io/platforms/java/guides/spring/","name":"Spring","aliases":[],"categories":["desktop","server"]}},"javascript":{"_self":{"key":"javascript","type":"language","details":"javascript.json","doc_link":"https://docs.sentry.io/platforms/javascript/","name":"Browser JavaScript","aliases":[],"categories":["browser"]},"with-error-monitoring-and-performance":{"key":"javascript.with-error-monitoring-and-performance","type":"language","details":"javascript/with-error-monitoring-and-performance.json","doc_link":"https://docs.sentry.io/platforms/javascript/","name":"Browser JavaScript","aliases":[],"categories":[]},"with-error-monitoring-and-replay":{"key":"javascript.with-error-monitoring-and-replay","type":"language","details":"javascript/with-error-monitoring-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/","name":"Browser JavaScript","aliases":[],"categories":[]},"with-error-monitoring-performance-and-replay":{"key":"javascript.with-error-monitoring-performance-and-replay","type":"language","details":"javascript/with-error-monitoring-performance-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/","name":"Browser JavaScript","aliases":[],"categories":[]},"with-error-monitoring":{"key":"javascript.with-error-monitoring","type":"language","details":"javascript/with-error-monitoring.json","doc_link":"https://docs.sentry.io/platforms/javascript/","name":"Browser JavaScript","aliases":[],"categories":[]},"angular":{"key":"javascript.angular","type":"framework","details":"javascript/angular.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/angular/","name":"Angular","aliases":[],"categories":["browser"]},"angular-with-error-monitoring-and-performance":{"key":"javascript.angular-with-error-monitoring-and-performance","type":"framework","details":"javascript/angular-with-error-monitoring-and-performance.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/angular/","name":"Angular","aliases":[],"categories":[]},"angular-with-error-monitoring-and-replay":{"key":"javascript.angular-with-error-monitoring-and-replay","type":"framework","details":"javascript/angular-with-error-monitoring-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/angular/","name":"Angular","aliases":[],"categories":[]},"angular-with-error-monitoring-performance-and-replay":{"key":"javascript.angular-with-error-monitoring-performance-and-replay","type":"framework","details":"javascript/angular-with-error-monitoring-performance-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/angular/","name":"Angular","aliases":[],"categories":[]},"angular-with-error-monitoring":{"key":"javascript.angular-with-error-monitoring","type":"framework","details":"javascript/angular-with-error-monitoring.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/angular/","name":"Angular","aliases":[],"categories":[]},"ember":{"key":"javascript.ember","type":"framework","details":"javascript/ember.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/ember/","name":"Ember","aliases":[],"categories":["browser"]},"ember-with-error-monitoring-and-performance":{"key":"javascript.ember-with-error-monitoring-and-performance","type":"framework","details":"javascript/ember-with-error-monitoring-and-performance.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/ember/","name":"Ember","aliases":[],"categories":[]},"ember-with-error-monitoring-and-replay":{"key":"javascript.ember-with-error-monitoring-and-replay","type":"framework","details":"javascript/ember-with-error-monitoring-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/ember/","name":"Ember","aliases":[],"categories":[]},"ember-with-error-monitoring-performance-and-replay":{"key":"javascript.ember-with-error-monitoring-performance-and-replay","type":"framework","details":"javascript/ember-with-error-monitoring-performance-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/ember/","name":"Ember","aliases":[],"categories":[]},"ember-with-error-monitoring":{"key":"javascript.ember-with-error-monitoring","type":"framework","details":"javascript/ember-with-error-monitoring.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/ember/","name":"Ember","aliases":[],"categories":[]},"gatsby":{"key":"javascript.gatsby","type":"framework","details":"javascript/gatsby.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/gatsby/","name":"Gatsby","aliases":[],"categories":["browser"]},"gatsby-with-error-monitoring-and-performance":{"key":"javascript.gatsby-with-error-monitoring-and-performance","type":"framework","details":"javascript/gatsby-with-error-monitoring-and-performance.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/gatsby/","name":"Gatsby","aliases":[],"categories":[]},"gatsby-with-error-monitoring-and-replay":{"key":"javascript.gatsby-with-error-monitoring-and-replay","type":"framework","details":"javascript/gatsby-with-error-monitoring-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/gatsby/","name":"Gatsby","aliases":[],"categories":[]},"gatsby-with-error-monitoring-performance-and-replay":{"key":"javascript.gatsby-with-error-monitoring-performance-and-replay","type":"framework","details":"javascript/gatsby-with-error-monitoring-performance-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/gatsby/","name":"Gatsby","aliases":[],"categories":[]},"gatsby-with-error-monitoring":{"key":"javascript.gatsby-with-error-monitoring","type":"framework","details":"javascript/gatsby-with-error-monitoring.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/gatsby/","name":"Gatsby","aliases":[],"categories":[]},"nextjs":{"key":"javascript.nextjs","type":"framework","details":"javascript/nextjs.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/nextjs/","name":"Next.js","aliases":[],"categories":["browser","server"]},"nextjs-with-error-monitoring-and-performance":{"key":"javascript.nextjs-with-error-monitoring-and-performance","type":"framework","details":"javascript/nextjs-with-error-monitoring-and-performance.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/nextjs/","name":"Next.js","aliases":[],"categories":[]},"nextjs-with-error-monitoring-and-replay":{"key":"javascript.nextjs-with-error-monitoring-and-replay","type":"framework","details":"javascript/nextjs-with-error-monitoring-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/nextjs/","name":"Next.js","aliases":[],"categories":[]},"nextjs-with-error-monitoring-performance-and-replay":{"key":"javascript.nextjs-with-error-monitoring-performance-and-replay","type":"framework","details":"javascript/nextjs-with-error-monitoring-performance-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/nextjs/","name":"Next.js","aliases":[],"categories":[]},"nextjs-with-error-monitoring":{"key":"javascript.nextjs-with-error-monitoring","type":"framework","details":"javascript/nextjs-with-error-monitoring.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/nextjs/","name":"Next.js","aliases":[],"categories":[]},"react":{"key":"javascript.react","type":"framework","details":"javascript/react.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/","name":"React","aliases":[],"categories":["browser"]},"react-with-error-monitoring-and-performance":{"key":"javascript.react-with-error-monitoring-and-performance","type":"framework","details":"javascript/react-with-error-monitoring-and-performance.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/","name":"React","aliases":[],"categories":[]},"react-with-error-monitoring-and-replay":{"key":"javascript.react-with-error-monitoring-and-replay","type":"framework","details":"javascript/react-with-error-monitoring-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/","name":"React","aliases":[],"categories":[]},"react-with-error-monitoring-performance-and-replay":{"key":"javascript.react-with-error-monitoring-performance-and-replay","type":"framework","details":"javascript/react-with-error-monitoring-performance-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/","name":"React","aliases":[],"categories":[]},"react-with-error-monitoring":{"key":"javascript.react-with-error-monitoring","type":"framework","details":"javascript/react-with-error-monitoring.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/","name":"React","aliases":[],"categories":[]},"remix":{"key":"javascript.remix","type":"framework","details":"javascript/remix.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/remix/","name":"Remix","aliases":[],"categories":["browser","server"]},"remix-with-error-monitoring-and-performance":{"key":"javascript.remix-with-error-monitoring-and-performance","type":"framework","details":"javascript/remix-with-error-monitoring-and-performance.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/remix/","name":"Remix","aliases":[],"categories":[]},"remix-with-error-monitoring-and-replay":{"key":"javascript.remix-with-error-monitoring-and-replay","type":"framework","details":"javascript/remix-with-error-monitoring-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/remix/","name":"Remix","aliases":[],"categories":[]},"remix-with-error-monitoring-performance-and-replay":{"key":"javascript.remix-with-error-monitoring-performance-and-replay","type":"framework","details":"javascript/remix-with-error-monitoring-performance-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/remix/","name":"Remix","aliases":[],"categories":[]},"remix-with-error-monitoring":{"key":"javascript.remix-with-error-monitoring","type":"framework","details":"javascript/remix-with-error-monitoring.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/remix/","name":"Remix","aliases":[],"categories":[]},"svelte":{"key":"javascript.svelte","type":"framework","details":"javascript/svelte.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/svelte/","name":"Svelte","aliases":[],"categories":["browser"]},"svelte-with-error-monitoring-and-performance":{"key":"javascript.svelte-with-error-monitoring-and-performance","type":"framework","details":"javascript/svelte-with-error-monitoring-and-performance.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/svelte/","name":"Svelte","aliases":[],"categories":[]},"svelte-with-error-monitoring-and-replay":{"key":"javascript.svelte-with-error-monitoring-and-replay","type":"framework","details":"javascript/svelte-with-error-monitoring-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/svelte/","name":"Svelte","aliases":[],"categories":[]},"svelte-with-error-monitoring-performance-and-replay":{"key":"javascript.svelte-with-error-monitoring-performance-and-replay","type":"framework","details":"javascript/svelte-with-error-monitoring-performance-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/svelte/","name":"Svelte","aliases":[],"categories":[]},"svelte-with-error-monitoring":{"key":"javascript.svelte-with-error-monitoring","type":"framework","details":"javascript/svelte-with-error-monitoring.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/svelte/","name":"Svelte","aliases":[],"categories":[]},"sveltekit":{"key":"javascript.sveltekit","type":"framework","details":"javascript/sveltekit.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/sveltekit/","name":"SvelteKit","aliases":[],"categories":["browser","server"]},"sveltekit-with-error-monitoring-and-performance":{"key":"javascript.sveltekit-with-error-monitoring-and-performance","type":"framework","details":"javascript/sveltekit-with-error-monitoring-and-performance.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/sveltekit/","name":"SvelteKit","aliases":[],"categories":[]},"sveltekit-with-error-monitoring-and-replay":{"key":"javascript.sveltekit-with-error-monitoring-and-replay","type":"framework","details":"javascript/sveltekit-with-error-monitoring-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/sveltekit/","name":"SvelteKit","aliases":[],"categories":[]},"sveltekit-with-error-monitoring-performance-and-replay":{"key":"javascript.sveltekit-with-error-monitoring-performance-and-replay","type":"framework","details":"javascript/sveltekit-with-error-monitoring-performance-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/sveltekit/","name":"SvelteKit","aliases":[],"categories":[]},"sveltekit-with-error-monitoring":{"key":"javascript.sveltekit-with-error-monitoring","type":"framework","details":"javascript/sveltekit-with-error-monitoring.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/sveltekit/","name":"SvelteKit","aliases":[],"categories":[]},"vue":{"key":"javascript.vue","type":"framework","details":"javascript/vue.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/vue/","name":"Vue","aliases":[],"categories":["browser"]},"vue-with-error-monitoring-and-performance":{"key":"javascript.vue-with-error-monitoring-and-performance","type":"framework","details":"javascript/vue-with-error-monitoring-and-performance.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/vue/","name":"Vue","aliases":[],"categories":[]},"vue-with-error-monitoring-and-replay":{"key":"javascript.vue-with-error-monitoring-and-replay","type":"framework","details":"javascript/vue-with-error-monitoring-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/vue/","name":"Vue","aliases":[],"categories":[]},"vue-with-error-monitoring-performance-and-replay":{"key":"javascript.vue-with-error-monitoring-performance-and-replay","type":"framework","details":"javascript/vue-with-error-monitoring-performance-and-replay.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/vue/","name":"Vue","aliases":[],"categories":[]},"vue-with-error-monitoring":{"key":"javascript.vue-with-error-monitoring","type":"framework","details":"javascript/vue-with-error-monitoring.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/vue/","name":"Vue","aliases":[],"categories":[]},"performance-onboarding-1-install":{"key":"javascript.performance-onboarding-1-install","type":"language","details":"javascript/performance-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/tracing/","name":"JavaScript","aliases":[],"categories":[]},"performance-onboarding-2-configure":{"key":"javascript.performance-onboarding-2-configure","type":"language","details":"javascript/performance-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/tracing/","name":"JavaScript","aliases":[],"categories":[]},"performance-onboarding-3-verify":{"key":"javascript.performance-onboarding-3-verify","type":"language","details":"javascript/performance-onboarding-3-verify.json","doc_link":"https://docs.sentry.io/platforms/javascript/tracing/","name":"JavaScript","aliases":[],"categories":[]},"react-performance-onboarding-1-install":{"key":"javascript.react-performance-onboarding-1-install","type":"framework","details":"javascript/react-performance-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/tracing/","name":"React","aliases":[],"categories":[]},"react-performance-onboarding-2-configure":{"key":"javascript.react-performance-onboarding-2-configure","type":"framework","details":"javascript/react-performance-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/tracing/","name":"React","aliases":[],"categories":[]},"react-performance-onboarding-3-verify":{"key":"javascript.react-performance-onboarding-3-verify","type":"framework","details":"javascript/react-performance-onboarding-3-verify.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/tracing/","name":"React","aliases":[],"categories":[]},"angular-profiling-onboarding-1-install":{"key":"javascript.angular-profiling-onboarding-1-install","type":"framework","details":"javascript/angular-profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/vue/profiling/","name":"Angular (JS Self Profiling)","aliases":[],"categories":[]},"angular-profiling-onboarding-2-configure-document-policy":{"key":"javascript.angular-profiling-onboarding-2-configure-document-policy","type":"framework","details":"javascript/angular-profiling-onboarding-2-configure-document-policy.json","doc_link":"https://docs.sentry.io/platforms/javascript/profiling/","name":"Browser (JS Self Profiling)","aliases":[],"categories":[]},"angular-profiling-onboarding-3-configure":{"key":"javascript.angular-profiling-onboarding-3-configure","type":"framework","details":"javascript/angular-profiling-onboarding-3-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/profiling/","name":"Browser (JS Self Profiling)","aliases":[],"categories":[]},"profiling-onboarding-1-install":{"key":"javascript.profiling-onboarding-1-install","type":"framework","details":"javascript/profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/profiling/","name":"Browser (JS Self Profiling)","aliases":[],"categories":[]},"profiling-onboarding-2-configure-document-policy":{"key":"javascript.profiling-onboarding-2-configure-document-policy","type":"framework","details":"javascript/profiling-onboarding-2-configure-document-policy.json","doc_link":"https://docs.sentry.io/platforms/javascript/profiling/","name":"Browser (JS Self Profiling)","aliases":[],"categories":[]},"profiling-onboarding-3-configure":{"key":"javascript.profiling-onboarding-3-configure","type":"framework","details":"javascript/profiling-onboarding-3-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/profiling/","name":"Browser (JS Self Profiling)","aliases":[],"categories":[]},"react-profiling-onboarding-1-install":{"key":"javascript.react-profiling-onboarding-1-install","type":"framework","details":"javascript/react-profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/profiling/","name":"React (JS Self Profiling)","aliases":[],"categories":[]},"react-profiling-onboarding-2-configure-document-policy":{"key":"javascript.react-profiling-onboarding-2-configure-document-policy","type":"framework","details":"javascript/react-profiling-onboarding-2-configure-document-policy.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/profiling/","name":"React (JS Self Profiling)","aliases":[],"categories":[]},"react-profiling-onboarding-3-configure":{"key":"javascript.react-profiling-onboarding-3-configure","type":"framework","details":"javascript/react-profiling-onboarding-3-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/profiling/","name":"React (JS Self Profiling)","aliases":[],"categories":[]},"vue-profiling-onboarding-1-install":{"key":"javascript.vue-profiling-onboarding-1-install","type":"framework","details":"javascript/vue-profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/vue/profiling/","name":"Vue (JS Self Profiling)","aliases":[],"categories":[]},"vue-profiling-onboarding-2-configure-document-policy":{"key":"javascript.vue-profiling-onboarding-2-configure-document-policy","type":"framework","details":"javascript/vue-profiling-onboarding-2-configure-document-policy.json","doc_link":"https://docs.sentry.io/platforms/javascript/profiling/","name":"Browser (JS Self Profiling)","aliases":[],"categories":[]},"vue-profiling-onboarding-3-configure":{"key":"javascript.vue-profiling-onboarding-3-configure","type":"framework","details":"javascript/vue-profiling-onboarding-3-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/profiling/","name":"Vue (JS Self Profiling)","aliases":[],"categories":[]},"astro-replay-onboarding-1-install":{"key":"javascript.astro-replay-onboarding-1-install","type":"language","details":"javascript/astro-replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/astro/session-replay/","name":"Astro","aliases":[],"categories":[]},"astro-replay-onboarding-2-configure":{"key":"javascript.astro-replay-onboarding-2-configure","type":"language","details":"javascript/astro-replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/astro/session-replay/","name":"Astro","aliases":[],"categories":[]},"angular-replay-onboarding-1-install":{"key":"javascript.angular-replay-onboarding-1-install","type":"language","details":"javascript/angular-replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"angular-replay-onboarding-2-configure":{"key":"javascript.angular-replay-onboarding-2-configure","type":"language","details":"javascript/angular-replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"capacitor-replay-onboarding-1-install":{"key":"javascript.capacitor-replay-onboarding-1-install","type":"language","details":"javascript/capacitor-replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/capacitor/session-replay/","name":"Capacitor","aliases":[],"categories":[]},"capacitor-replay-onboarding-2-configure":{"key":"javascript.capacitor-replay-onboarding-2-configure","type":"language","details":"javascript/capacitor-replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/capacitor/session-replay/","name":"JavaScript","aliases":[],"categories":[]},"electron-replay-onboarding-1-install":{"key":"javascript.electron-replay-onboarding-1-install","type":"framework","details":"javascript/electron-replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/electron/session-replay/","name":"Electron","aliases":[],"categories":[]},"electron-replay-onboarding-2-configure":{"key":"javascript.electron-replay-onboarding-2-configure","type":"framework","details":"javascript/electron-replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/guides/electron/session-replay/","name":"Electron","aliases":[],"categories":[]},"ember-replay-onboarding-1-install":{"key":"javascript.ember-replay-onboarding-1-install","type":"language","details":"javascript/ember-replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"ember-replay-onboarding-2-configure":{"key":"javascript.ember-replay-onboarding-2-configure","type":"language","details":"javascript/ember-replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"gatsby-replay-onboarding-1-install":{"key":"javascript.gatsby-replay-onboarding-1-install","type":"language","details":"javascript/gatsby-replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"gatsby-replay-onboarding-2-configure":{"key":"javascript.gatsby-replay-onboarding-2-configure","type":"language","details":"javascript/gatsby-replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"replay-onboarding-1-install":{"key":"javascript.replay-onboarding-1-install","type":"language","details":"javascript/replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"replay-onboarding-2-configure":{"key":"javascript.replay-onboarding-2-configure","type":"language","details":"javascript/replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"nextjs-replay-onboarding-1-install":{"key":"javascript.nextjs-replay-onboarding-1-install","type":"language","details":"javascript/nextjs-replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"nextjs-replay-onboarding-2-configure":{"key":"javascript.nextjs-replay-onboarding-2-configure","type":"language","details":"javascript/nextjs-replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"react-replay-onboarding-1-install":{"key":"javascript.react-replay-onboarding-1-install","type":"language","details":"javascript/react-replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"react-replay-onboarding-2-configure":{"key":"javascript.react-replay-onboarding-2-configure","type":"language","details":"javascript/react-replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"remix-replay-onboarding-1-install":{"key":"javascript.remix-replay-onboarding-1-install","type":"language","details":"javascript/remix-replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"remix-replay-onboarding-2-configure":{"key":"javascript.remix-replay-onboarding-2-configure","type":"language","details":"javascript/remix-replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"svelte-replay-onboarding-1-install":{"key":"javascript.svelte-replay-onboarding-1-install","type":"language","details":"javascript/svelte-replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"svelte-replay-onboarding-2-configure":{"key":"javascript.svelte-replay-onboarding-2-configure","type":"language","details":"javascript/svelte-replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"sveltekit-replay-onboarding-1-install":{"key":"javascript.sveltekit-replay-onboarding-1-install","type":"language","details":"javascript/sveltekit-replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"sveltekit-replay-onboarding-2-configure":{"key":"javascript.sveltekit-replay-onboarding-2-configure","type":"language","details":"javascript/sveltekit-replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"vue-replay-onboarding-1-install":{"key":"javascript.vue-replay-onboarding-1-install","type":"language","details":"javascript/vue-replay-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]},"vue-replay-onboarding-2-configure":{"key":"javascript.vue-replay-onboarding-2-configure","type":"language","details":"javascript/vue-replay-onboarding-2-configure.json","doc_link":"https://docs.sentry.io/platforms/javascript/replay/","name":"JavaScript","aliases":[],"categories":[]}},"kotlin":{"_self":{"key":"kotlin","type":"language","details":"kotlin.json","doc_link":"https://docs.sentry.io/platforms/kotlin/","name":"Kotlin","aliases":[],"categories":["mobile","desktop","server"]}},"minidump":{"_self":{"key":"minidump","type":"framework","details":"minidump.json","doc_link":"https://docs.sentry.io/platforms/native/minidump/","name":"Minidump","aliases":[],"categories":[]}},"node":{"awslambda":{"key":"node.awslambda","type":"framework","details":"node/awslambda.json","doc_link":"https://docs.sentry.io/platforms/node/guides/aws-lambda/","name":"AWS Lambda (Node)","aliases":[],"categories":[]},"azurefunctions":{"key":"node.azurefunctions","type":"framework","details":"node/azurefunctions.json","doc_link":"https://docs.sentry.io/platforms/node/guides/azure-functions/","name":"Azure Functions (Node)","aliases":[],"categories":[]},"connect":{"key":"node.connect","type":"framework","details":"node/connect.json","doc_link":"https://docs.sentry.io/platforms/node/guides/connect/","name":"Connect","aliases":[],"categories":["browser"]},"express":{"key":"node.express","type":"framework","details":"node/express.json","doc_link":"https://docs.sentry.io/platforms/node/guides/express/","name":"Express","aliases":[],"categories":["browser"]},"gcpfunctions":{"key":"node.gcpfunctions","type":"framework","details":"node/gcpfunctions.json","doc_link":"https://docs.sentry.io/platforms/node/guides/gcp-functions/","name":"Google Cloud Functions (Node)","aliases":[],"categories":[]},"_self":{"key":"node","type":"language","details":"node.json","doc_link":"https://docs.sentry.io/platforms/node/","name":"Node.js","aliases":[],"categories":["browser"]},"koa":{"key":"node.koa","type":"framework","details":"node/koa.json","doc_link":"https://docs.sentry.io/platforms/node/guides/koa/","name":"Koa","aliases":[],"categories":["browser"]},"serverlesscloud":{"key":"node.serverlesscloud","type":"framework","details":"node/serverlesscloud.json","doc_link":"https://docs.sentry.io/platforms/node/guides/serverless-cloud/","name":"Serverless (Node)","aliases":[],"categories":[]},"tracing":{"key":"node.tracing","type":"framework","details":"node/tracing.json","doc_link":"https://docs.sentry.io/platforms/node/tracing/instrumentation/custom-instrumentation/","name":"Node.js","aliases":[],"categories":[]},"javascript-nextjs-profiling-onboarding-1-install":{"key":"node.javascript-nextjs-profiling-onboarding-1-install","type":"language","details":"node/javascript-nextjs-profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/node/profiling/","name":"Next.js","aliases":[],"categories":[]},"javascript-nextjs-profiling-onboarding-2-configure-performance":{"key":"node.javascript-nextjs-profiling-onboarding-2-configure-performance","type":"language","details":"node/javascript-nextjs-profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/node/profiling/","name":"Next.js","aliases":[],"categories":[]},"javascript-nextjs-profiling-onboarding-3-configure-profiling":{"key":"node.javascript-nextjs-profiling-onboarding-3-configure-profiling","type":"language","details":"node/javascript-nextjs-profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/node/profiling/","name":"Next.js","aliases":[],"categories":[]},"javascript-remix-profiling-onboarding-1-install":{"key":"node.javascript-remix-profiling-onboarding-1-install","type":"language","details":"node/javascript-remix-profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/node/profiling/","name":"Remix","aliases":[],"categories":[]},"javascript-remix-profiling-onboarding-2-configure-performance":{"key":"node.javascript-remix-profiling-onboarding-2-configure-performance","type":"language","details":"node/javascript-remix-profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/node/profiling/","name":"Remix","aliases":[],"categories":[]},"javascript-remix-profiling-onboarding-3-configure-profiling":{"key":"node.javascript-remix-profiling-onboarding-3-configure-profiling","type":"language","details":"node/javascript-remix-profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/node/profiling/","name":"Remix","aliases":[],"categories":[]},"javascript-sveltekit-profiling-onboarding-1-install":{"key":"node.javascript-sveltekit-profiling-onboarding-1-install","type":"language","details":"node/javascript-sveltekit-profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/node/profiling/","name":"SvelteKit","aliases":[],"categories":[]},"javascript-sveltekit-profiling-onboarding-2-configure-performance":{"key":"node.javascript-sveltekit-profiling-onboarding-2-configure-performance","type":"language","details":"node/javascript-sveltekit-profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/node/profiling/","name":"SvelteKit","aliases":[],"categories":[]},"javascript-sveltekit-profiling-onboarding-3-configure-profiling":{"key":"node.javascript-sveltekit-profiling-onboarding-3-configure-profiling","type":"language","details":"node/javascript-sveltekit-profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/node/profiling/","name":"SvelteKit","aliases":[],"categories":[]},"profiling-onboarding-1-install":{"key":"node.profiling-onboarding-1-install","type":"language","details":"node/profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/node/profiling/","name":"Node","aliases":[],"categories":[]},"profiling-onboarding-2-configure-performance":{"key":"node.profiling-onboarding-2-configure-performance","type":"language","details":"node/profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/node/profiling/","name":"Node","aliases":[],"categories":[]},"profiling-onboarding-3-configure-profiling":{"key":"node.profiling-onboarding-3-configure-profiling","type":"language","details":"node/profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/node/profiling/","name":"Node","aliases":[],"categories":[]}},"native":{"_self":{"key":"native","type":"language","details":"native.json","doc_link":"https://docs.sentry.io/platforms/native/","name":"Native","aliases":[],"categories":["mobile","desktop"]},"qt":{"key":"native.qt","type":"framework","details":"native/qt.json","doc_link":"https://docs.sentry.io/platforms/native/guides/qt/","name":"Qt","aliases":[],"categories":["desktop","mobile"]}},"php":{"_self":{"key":"php","type":"language","details":"php.json","doc_link":"https://docs.sentry.io/platforms/php/","name":"PHP","aliases":[],"categories":[]},"laravel":{"key":"php.laravel","type":"framework","details":"php/laravel.json","doc_link":"https://docs.sentry.io/platforms/php/guides/laravel/","name":"Laravel","aliases":[],"categories":[]},"symfony":{"key":"php.symfony","type":"framework","details":"php/symfony.json","doc_link":"https://docs.sentry.io/platforms/php/guides/symfony/","name":"Symfony","aliases":[],"categories":[]},"laravel-profiling-onboarding-1-install":{"key":"php.laravel-profiling-onboarding-1-install","type":"language","details":"php/laravel-profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/php/guides/laravel/profiling/","name":"PHP","aliases":[],"categories":[]},"laravel-profiling-onboarding-2-configure-performance":{"key":"php.laravel-profiling-onboarding-2-configure-performance","type":"language","details":"php/laravel-profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/php/guides/laravel/profiling/","name":"PHP","aliases":[],"categories":[]},"laravel-profiling-onboarding-3-configure-profiling":{"key":"php.laravel-profiling-onboarding-3-configure-profiling","type":"language","details":"php/laravel-profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/php/guides/laravel/profiling/","name":"PHP","aliases":[],"categories":[]},"profiling-onboarding-1-install":{"key":"php.profiling-onboarding-1-install","type":"language","details":"php/profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/php/profiling/","name":"PHP","aliases":[],"categories":[]},"profiling-onboarding-2-configure-performance":{"key":"php.profiling-onboarding-2-configure-performance","type":"language","details":"php/profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/php/profiling/","name":"PHP","aliases":[],"categories":[]},"profiling-onboarding-3-configure-profiling":{"key":"php.profiling-onboarding-3-configure-profiling","type":"language","details":"php/profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/php/profiling/","name":"PHP","aliases":[],"categories":[]},"symfony2-profiling-onboarding-1-install":{"key":"php.symfony2-profiling-onboarding-1-install","type":"language","details":"php/symfony2-profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/php/guides/symfony/profiling/","name":"PHP","aliases":[],"categories":[]},"symfony2-profiling-onboarding-2-configure-performance":{"key":"php.symfony2-profiling-onboarding-2-configure-performance","type":"language","details":"php/symfony2-profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/php/guides/symfony/profiling/","name":"PHP","aliases":[],"categories":[]},"symfony2-profiling-onboarding-3-configure-profiling":{"key":"php.symfony2-profiling-onboarding-3-configure-profiling","type":"language","details":"php/symfony2-profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/php/guides/symfony/profiling/","name":"PHP","aliases":[],"categories":[]}},"python":{"aiohttp":{"key":"python.aiohttp","type":"framework","details":"python/aiohttp.json","doc_link":"https://docs.sentry.io/platforms/python/guides/aiohttp/","name":"AIOHTTP","aliases":[],"categories":[]},"asgi":{"key":"python.asgi","type":"framework","details":"python/asgi.json","doc_link":"https://docs.sentry.io/platforms/python/guides/asgi/","name":"ASGI","aliases":[],"categories":[]},"awslambda":{"key":"python.awslambda","type":"framework","details":"python/awslambda.json","doc_link":"https://docs.sentry.io/platforms/python/guides/aws-lambda/","name":"AWS Lambda (Python)","aliases":[],"categories":[]},"bottle":{"key":"python.bottle","type":"framework","details":"python/bottle.json","doc_link":"https://docs.sentry.io/platforms/python/guides/bottle/","name":"Bottle","aliases":[],"categories":[]},"celery":{"key":"python.celery","type":"library","details":"python/celery.json","doc_link":"https://docs.sentry.io/platforms/python/guides/celery/","name":"Celery","aliases":[],"categories":[]},"chalice":{"key":"python.chalice","type":"framework","details":"python/chalice.json","doc_link":"https://docs.sentry.io/platforms/python/guides/chalice/","name":"Chalice","aliases":[],"categories":[]},"django":{"key":"python.django","type":"framework","details":"python/django.json","doc_link":"https://docs.sentry.io/platforms/python/guides/django/","name":"Django","aliases":[],"categories":[]},"falcon":{"key":"python.falcon","type":"framework","details":"python/falcon.json","doc_link":"https://docs.sentry.io/platforms/python/guides/falcon/","name":"Falcon","aliases":[],"categories":[]},"fastapi":{"key":"python.fastapi","type":"framework","details":"python/fastapi.json","doc_link":"https://docs.sentry.io/platforms/python/guides/fastapi/","name":"FastAPI","aliases":[],"categories":[]},"flask":{"key":"python.flask","type":"framework","details":"python/flask.json","doc_link":"https://docs.sentry.io/platforms/python/guides/flask/","name":"Flask","aliases":[],"categories":[]},"gcpfunctions":{"key":"python.gcpfunctions","type":"framework","details":"python/gcpfunctions.json","doc_link":"https://docs.sentry.io/platforms/python/guides/gcp-functions/","name":"Google Cloud Functions (Python)","aliases":[],"categories":[]},"_self":{"key":"python","type":"language","details":"python.json","doc_link":"https://docs.sentry.io/platforms/python/","name":"Python","aliases":[],"categories":[]},"pylons":{"key":"python.pylons","type":"framework","details":"python/pylons.json","doc_link":"https://docs.sentry.io/platforms/python/legacy-sdk/integrations/pylons/","name":"Pylons","aliases":[],"categories":[]},"pymongo":{"key":"python.pymongo","type":"library","details":"python/pymongo.json","doc_link":"https://docs.sentry.io/platforms/python/guides/pymongo/","name":"PyMongo","aliases":[],"categories":[]},"pyramid":{"key":"python.pyramid","type":"framework","details":"python/pyramid.json","doc_link":"https://docs.sentry.io/platforms/python/pyramid/","name":"Pyramid","aliases":[],"categories":[]},"quart":{"key":"python.quart","type":"framework","details":"python/quart.json","doc_link":"https://docs.sentry.io/platforms/python/guides/quart/","name":"Quart","aliases":[],"categories":[]},"rq":{"key":"python.rq","type":"library","details":"python/rq.json","doc_link":"https://docs.sentry.io/platforms/python/guides/rq/","name":"RQ (Redis Queue)","aliases":[],"categories":[]},"sanic":{"key":"python.sanic","type":"framework","details":"python/sanic.json","doc_link":"https://docs.sentry.io/platforms/python/guides/sanic/","name":"Sanic","aliases":[],"categories":[]},"serverless":{"key":"python.serverless","type":"framework","details":"python/serverless.json","doc_link":"https://docs.sentry.io/platforms/python/guides/serverless/","name":"Serverless (Python)","aliases":[],"categories":[]},"starlette":{"key":"python.starlette","type":"framework","details":"python/starlette.json","doc_link":"https://docs.sentry.io/platforms/python/guides/starlette/","name":"Starlette","aliases":[],"categories":[]},"tornado":{"key":"python.tornado","type":"framework","details":"python/tornado.json","doc_link":"https://docs.sentry.io/platforms/python/guides/tornado/","name":"Tornado","aliases":[],"categories":[]},"tracing":{"key":"python.tracing","type":"language","details":"python/tracing.json","doc_link":"https://docs.sentry.io/platforms/python/tracing/","name":"Python","aliases":[],"categories":[]},"tryton":{"key":"python.tryton","type":"framework","details":"python/tryton.json","doc_link":"https://docs.sentry.io/platforms/python/guides/tryton/","name":"Tryton","aliases":[],"categories":[]},"wsgi":{"key":"python.wsgi","type":"framework","details":"python/wsgi.json","doc_link":"https://docs.sentry.io/platforms/python/guides/wsgi/","name":"WSGI","aliases":[],"categories":[]},"profiling-onboarding-1-install":{"key":"python.profiling-onboarding-1-install","type":"language","details":"python/profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/python/profiling/","name":"Python","aliases":[],"categories":[]},"profiling-onboarding-2-configure-performance":{"key":"python.profiling-onboarding-2-configure-performance","type":"language","details":"python/profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/python/profiling/","name":"Python","aliases":[],"categories":[]},"profiling-onboarding-3-configure-profiling":{"key":"python.profiling-onboarding-3-configure-profiling","type":"language","details":"python/profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/python/profiling/","name":"Python","aliases":[],"categories":[]}},"react-native":{"_self":{"key":"react-native","type":"language","details":"react-native.json","doc_link":"https://docs.sentry.io/platforms/react-native/","name":"React Native","aliases":[],"categories":["mobile"]},"tracing":{"key":"react-native.tracing","type":"language","details":"react-native/tracing.json","doc_link":"https://docs.sentry.io/platforms/react-native/tracing/instrumentation/custom-instrumentation/","name":"React-Native","aliases":[],"categories":[]},"profiling-onboarding-0-alert":{"key":"react-native.profiling-onboarding-0-alert","type":"language","details":"react-native/profiling-onboarding-0-alert.json","doc_link":"https://docs.sentry.io/platforms/react-native/profiling/","name":"React Native","aliases":[],"categories":[]},"profiling-onboarding-1-install":{"key":"react-native.profiling-onboarding-1-install","type":"language","details":"react-native/profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/react-native/profiling/","name":"React Native","aliases":[],"categories":[]},"profiling-onboarding-2-configure-performance":{"key":"react-native.profiling-onboarding-2-configure-performance","type":"language","details":"react-native/profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/react-native/profiling/","name":"React Native","aliases":[],"categories":[]},"profiling-onboarding-3-configure-profiling":{"key":"react-native.profiling-onboarding-3-configure-profiling","type":"language","details":"react-native/profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/react-native/profiling/","name":"React Native","aliases":[],"categories":[]}},"ruby":{"_self":{"key":"ruby","type":"language","details":"ruby.json","doc_link":"https://docs.sentry.io/platforms/ruby/","name":"Ruby","aliases":[],"categories":[]},"rack":{"key":"ruby.rack","type":"framework","details":"ruby/rack.json","doc_link":"https://docs.sentry.io/platforms/ruby/guides/rack/","name":"Rack Middleware","aliases":[],"categories":[]},"rails":{"key":"ruby.rails","type":"framework","details":"ruby/rails.json","doc_link":"https://docs.sentry.io/platforms/ruby/guides/rails/","name":"Rails","aliases":[],"categories":[]},"profiling-onboarding-0-alert":{"key":"ruby.profiling-onboarding-0-alert","type":"language","details":"ruby/profiling-onboarding-0-alert.json","doc_link":"https://docs.sentry.io/platforms/ruby/profiling/","name":"Ruby","aliases":[],"categories":[]},"profiling-onboarding-1-install":{"key":"ruby.profiling-onboarding-1-install","type":"language","details":"ruby/profiling-onboarding-1-install.json","doc_link":"https://docs.sentry.io/platforms/ruby/profiling/","name":"Ruby","aliases":[],"categories":[]},"profiling-onboarding-2-configure-performance":{"key":"ruby.profiling-onboarding-2-configure-performance","type":"language","details":"ruby/profiling-onboarding-2-configure-performance.json","doc_link":"https://docs.sentry.io/platforms/ruby/profiling/","name":"Ruby","aliases":[],"categories":[]},"profiling-onboarding-3-configure-profiling":{"key":"ruby.profiling-onboarding-3-configure-profiling","type":"language","details":"ruby/profiling-onboarding-3-configure-profiling.json","doc_link":"https://docs.sentry.io/platforms/ruby/profiling/","name":"Ruby","aliases":[],"categories":[]}},"rust":{"_self":{"key":"rust","type":"language","details":"rust.json","doc_link":"https://docs.sentry.io/platforms/rust/","name":"Rust","aliases":[],"categories":[]}},"unity":{"_self":{"key":"unity","type":"framework","details":"unity.json","doc_link":"https://docs.sentry.io/platforms/unity/","name":"Unity","aliases":[],"categories":["mobile","browser","desktop","console","gaming"]}},"unreal":{"_self":{"key":"unreal","type":"framework","details":"unreal.json","doc_link":"https://docs.sentry.io/platforms/unreal/","name":"Unreal Engine","aliases":[],"categories":["mobile","desktop","console","gaming"]}}}} diff --git a/public/_platforms/apple.json b/public/_platforms/apple.json index dcb03cb48d2cf..37ae319a02269 100644 --- a/public/_platforms/apple.json +++ b/public/_platforms/apple.json @@ -1 +1 @@ -{"key":"apple","type":"language","doc_link":"https://docs.sentry.io/platforms/apple/","name":"Apple","aliases":["cocoa"],"categories":["mobile","desktop"],"body":"

We support installing the SDK with CocoaPods, Swift Package Manager, and Carthage.

\n

CocoaPods

\n

To integrate Sentry into your Xcode

projectRepresents your service in Sentry and allows you to scope events to a distinct application.
, specify it in your Podfile:

\n
platform :ios, '11.0'\nuse_frameworks! # This is important\n\ntarget 'YourApp' do\n  pod 'Sentry', :git => 'https://github.com/getsentry/sentry-cocoa.git', :tag => '8.19.0'\nend
\n

Afterwards run pod install. For more information visit the docs.

\n

Swift Package Manager

\n

To integrate Sentry into your Xcode

projectRepresents your service in Sentry and allows you to scope events to a distinct application.
using Swift Package Manager (SPM), open your App in Xcode and open File > Add Packages. Then add the SDK by entering the git repo url in the top right search field:

\n
https://github.com/getsentry/sentry-cocoa.git
\n

Alternatively, when your project uses a Package.swift file to manage dependencies, you can specify the target with:

\n
.package(url: \"https://github.com/getsentry/sentry-cocoa\", from: \"8.19.0\"),
\n

For more information visit the docs.

\n

Carthage

\n

To integrate Sentry into your Xcode

projectRepresents your service in Sentry and allows you to scope events to a distinct application.
using Carthage, specify it in your Cartfile:

\n
github \"getsentry/sentry-cocoa\" \"8.19.0\"
\n

Run carthage update to download the framework and drag the built Sentry.framework into your Xcode project. For more information visit the docs.

\n

Configuration

\n

Make sure you initialize the SDK as soon as possible in your application lifecycle e.g. in your AppDelegate application:didFinishLaunchingWithOptions method:

\n
import Sentry\n\n// ....\n\nfunc application(_ application: UIApplication,\n    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {\n\n    SentrySDK.start { options in\n        options.dsn = \"___PUBLIC_DSN___\"\n        options.debug = true // Enabled debug when first installing is always helpful\n\n        // This will capture 100% of transactions for performance monitoring.\n        // If you want to control the percentage of captured events, we recommend using `options.tracesSampleRate`.\n        options.enableTracing = true\n    }\n\n    return true\n}
\n

Debug Symbols

\n

To capture crashes, you need to provide debug information to Sentry. You can also use our source context feature to display code snippets next to the event stack traces by enabling the include-sources option when uploading your debug information files. Debug information is provided by uploading dSYM files.

\n

Performance Monitoring

\n

You can measure the performance of your code by capturing transactions and spans.

\n
import Sentry // Make sure you import Sentry\n\n// Transaction can be started by providing, at minimum, the name and the operation\nlet transaction = SentrySDK.startTransaction(name: \"Update Repos\", operation: \"db\")\n// Transactions can have child spans (and those spans can have child spans as well)\nlet span = transaction.startChild(operation: \"db\", description: \"Update first repo\")\n\n// ...\n// (Perform the operation represented by the span/transaction)\n// ...\n\nspan.finish() // Mark the span as finished\ntransaction.finish() // Mark the transaction as finished and send it to Sentry
\n

Check out the documentation to learn more about the API and automatic instrumentations.

"} \ No newline at end of file +{"key":"apple","type":"language","doc_link":"https://docs.sentry.io/platforms/apple/","name":"Apple","aliases":["cocoa"],"categories":["mobile","desktop"],"body":"

We support installing the SDK with CocoaPods, Swift Package Manager, and Carthage.

\n

CocoaPods

\n

To integrate Sentry into your Xcode

projectRepresents your service in Sentry and allows you to scope events to a distinct application.
, specify it in your Podfile:

\n
platform :ios, '11.0'\nuse_frameworks! # This is important\n\ntarget 'YourApp' do\n  pod 'Sentry', :git => 'https://github.com/getsentry/sentry-cocoa.git', :tag => '8.19.0'\nend
\n

Afterwards run pod install. For more information visit the docs.

\n

Swift Package Manager

\n

To integrate Sentry into your Xcode

projectRepresents your service in Sentry and allows you to scope events to a distinct application.
using Swift Package Manager (SPM), open your App in Xcode and open File > Add Packages. Then add the SDK by entering the git repo url in the top right search field:

\n
https://github.com/getsentry/sentry-cocoa.git
\n

Alternatively, when your project uses a Package.swift file to manage dependencies, you can specify the target with:

\n
.package(url: \"https://github.com/getsentry/sentry-cocoa\", from: \"8.19.0\"),
\n

For more information visit the docs.

\n

Carthage

\n

To integrate Sentry into your Xcode

projectRepresents your service in Sentry and allows you to scope events to a distinct application.
using Carthage, specify it in your Cartfile:

\n
github \"getsentry/sentry-cocoa\" \"8.19.0\"
\n

Run carthage update to download the framework and drag the built Sentry.framework into your Xcode project. For more information visit the docs.

\n

Configuration

\n

Make sure you initialize the SDK as soon as possible in your application lifecycle e.g. in your AppDelegate application:didFinishLaunchingWithOptions method:

\n
import Sentry\n\n// ....\n\nfunc application(_ application: UIApplication,\n    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {\n\n    SentrySDK.start { options in\n        options.dsn = \"___PUBLIC_DSN___\"\n        options.debug = true // Enabled debug when first installing is always helpful\n\n        // This will capture 100% of transactions for performance monitoring.\n        // If you want to control the percentage of captured events, we recommend using `options.tracesSampleRate`.\n        options.enableTracing = true\n    }\n\n    return true\n}
\n

Debug Symbols

\n

To capture crashes, you need to provide debug information to Sentry. You can also use our source context feature to display code snippets next to the event stack traces by enabling the include-sources option when uploading your debug information files. Debug information is provided by uploading dSYM files.

\n

Performance Monitoring

\n

You can measure the performance of your code by capturing transactions and spans.

\n
import Sentry // Make sure you import Sentry\n\n// Transaction can be started by providing, at minimum, the name and the operation\nlet transaction = SentrySDK.startTransaction(name: \"Update Repos\", operation: \"db\")\n// Transactions can have child spans (and those spans can have child spans as well)\nlet span = transaction.startChild(operation: \"db\", description: \"Update first repo\")\n\n// ...\n// (Perform the operation represented by the span/transaction)\n// ...\n\nspan.finish() // Mark the span as finished\ntransaction.finish() // Mark the transaction as finished and send it to Sentry
\n

Check out the documentation to learn more about the API and automatic instrumentations.

"} diff --git a/public/_platforms/apple/ios.json b/public/_platforms/apple/ios.json index 2a611fb13f28b..3d55f5434eb44 100644 --- a/public/_platforms/apple/ios.json +++ b/public/_platforms/apple/ios.json @@ -1 +1 @@ -{"key":"apple.ios","type":"language","doc_link":"https://docs.sentry.io/platforms/apple/","name":"iOS","aliases":[],"categories":["mobile"],"body":"

Install

\n

We recommend installing the SDK with Swift Package Manager (SPM), but we also support alternate installation methods. To integrate Sentry into your Xcode

projectRepresents your service in Sentry and allows you to scope events to a distinct application.
using SPM, open your App in Xcode and open File > Add Packages. Then add the SDK by entering the Git repo url in the top right search field:

\n
https://github.com/getsentry/sentry-cocoa.git
\n

Alternatively, when your project uses a Package.swift file to manage dependencies, you can specify the target with:

\n
.package(url: \"https://github.com/getsentry/sentry-cocoa\", from: \"8.19.0\"),
\n

Configure

\n

Make sure you initialize the SDK as soon as possible in your application lifecycle e.g. in your AppDelegate application:didFinishLaunchingWithOptions method:

\n
import Sentry\n\n// ....\n\nfunc application(_ application: UIApplication,\n    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {\n\n    SentrySDK.start { options in\n        options.dsn = \"___PUBLIC_DSN___\"\n        options.debug = true // Enabled debug when first installing is always helpful\n\n        // Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n        // We recommend adjusting this value in production.\n        options.tracesSampleRate = 1.0\n    }\n\n    return true\n}
\n

When using SwiftUI and your app doesn't implement an app delegate, initialize the SDK within the App conformer's initializer:

\n
import Sentry\n\n@main\nstruct SwiftUIApp: App {\n    init() {\n        SentrySDK.start { options in\n            options.dsn = \"___PUBLIC_DSN___\"\n            options.debug = true // Enabled debug when first installing is always helpful\n\n            // Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n            // We recommend adjusting this value in production.\n            options.tracesSampleRate = 1.0\n        }\n    }\n}
\n

Verify

\n

This snippet contains an intentional error you can use to test that errors are uploaded to Sentry correctly. You can add it to your main ViewController.

\n
let button = UIButton(type: .roundedRect)\nbutton.frame = CGRect(x: 20, y: 50, width: 100, height: 30)\nbutton.setTitle(\"Break the world\", for: [])\nbutton.addTarget(self, action: #selector(self.breakTheWorld(_:)), for: .touchUpInside)\nview.addSubview(button)\n\n@IBAction func breakTheWorld(_ sender: AnyObject) {\n    fatalError(\"Break the world\")\n}
\n

Experimental Features

\n
\n

Want to play with some new features? Try out our experimental features for View Hierarchy, Time to Full Display (TTFD), MetricKit, Prewarmed App Start Tracing, and Swift Async Stacktraces. Experimental features are still a work-in-progress and may have bugs. We recognize the irony.

\n

Let us know if you have feedback through GitHub issues.

\n
\n
import Sentry\n\nSentrySDK.start { options in\n    // ...\n\n    // Enable all experimental features\n    options.attachViewHierarchy = true\n    options.enablePreWarmedAppStartTracing = true\n    options.enableMetricKit = true\n    options.enableTimeToFullDisplayTracing = true\n    options.swiftAsyncStacktraces = true\n}
\n
\n

Next Steps

\n"} \ No newline at end of file +{"key":"apple.ios","type":"language","doc_link":"https://docs.sentry.io/platforms/apple/","name":"iOS","aliases":[],"categories":["mobile"],"body":"

Install

\n

We recommend installing the SDK with Swift Package Manager (SPM), but we also support alternate installation methods. To integrate Sentry into your Xcode

projectRepresents your service in Sentry and allows you to scope events to a distinct application.
using SPM, open your App in Xcode and open File > Add Packages. Then add the SDK by entering the Git repo url in the top right search field:

\n
https://github.com/getsentry/sentry-cocoa.git
\n

Alternatively, when your project uses a Package.swift file to manage dependencies, you can specify the target with:

\n
.package(url: \"https://github.com/getsentry/sentry-cocoa\", from: \"8.19.0\"),
\n

Configure

\n

Make sure you initialize the SDK as soon as possible in your application lifecycle e.g. in your AppDelegate application:didFinishLaunchingWithOptions method:

\n
import Sentry\n\n// ....\n\nfunc application(_ application: UIApplication,\n    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {\n\n    SentrySDK.start { options in\n        options.dsn = \"___PUBLIC_DSN___\"\n        options.debug = true // Enabled debug when first installing is always helpful\n\n        // Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n        // We recommend adjusting this value in production.\n        options.tracesSampleRate = 1.0\n    }\n\n    return true\n}
\n

When using SwiftUI and your app doesn't implement an app delegate, initialize the SDK within the App conformer's initializer:

\n
import Sentry\n\n@main\nstruct SwiftUIApp: App {\n    init() {\n        SentrySDK.start { options in\n            options.dsn = \"___PUBLIC_DSN___\"\n            options.debug = true // Enabled debug when first installing is always helpful\n\n            // Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n            // We recommend adjusting this value in production.\n            options.tracesSampleRate = 1.0\n        }\n    }\n}
\n

Verify

\n

This snippet contains an intentional error you can use to test that errors are uploaded to Sentry correctly. You can add it to your main ViewController.

\n
let button = UIButton(type: .roundedRect)\nbutton.frame = CGRect(x: 20, y: 50, width: 100, height: 30)\nbutton.setTitle(\"Break the world\", for: [])\nbutton.addTarget(self, action: #selector(self.breakTheWorld(_:)), for: .touchUpInside)\nview.addSubview(button)\n\n@IBAction func breakTheWorld(_ sender: AnyObject) {\n    fatalError(\"Break the world\")\n}
\n

Experimental Features

\n
\n

Want to play with some new features? Try out our experimental features for View Hierarchy, Time to Full Display (TTFD), MetricKit, Prewarmed App Start Tracing, and Swift Async Stacktraces. Experimental features are still a work-in-progress and may have bugs. We recognize the irony.

\n

Let us know if you have feedback through GitHub issues.

\n
\n
import Sentry\n\nSentrySDK.start { options in\n    // ...\n\n    // Enable all experimental features\n    options.attachViewHierarchy = true\n    options.enablePreWarmedAppStartTracing = true\n    options.enableMetricKit = true\n    options.enableTimeToFullDisplayTracing = true\n    options.swiftAsyncStacktraces = true\n}
\n
\n

Next Steps

\n"} diff --git a/public/_platforms/apple/macos.json b/public/_platforms/apple/macos.json index fcf4b61f991c1..40a20d2a002ef 100644 --- a/public/_platforms/apple/macos.json +++ b/public/_platforms/apple/macos.json @@ -1 +1 @@ -{"key":"apple.macos","type":"language","doc_link":"https://docs.sentry.io/platforms/apple/","name":"macOS","aliases":[],"categories":["desktop"],"body":"

We support installing the SDK with CocoaPods, Swift Package Manager, and Carthage.

\n

CocoaPods

\n

To integrate Sentry into your Xcode

projectRepresents your service in Sentry and allows you to scope events to a distinct application.
, specify it in your Podfile:

\n
platform :ios, '11.0'\nuse_frameworks! # This is important\n\ntarget 'YourApp' do\n  pod 'Sentry', :git => 'https://github.com/getsentry/sentry-cocoa.git', :tag => '8.19.0'\nend
\n

Afterwards run pod install. For more information visit the docs.

\n

Swift Package Manager

\n

To integrate Sentry into your Xcode

projectRepresents your service in Sentry and allows you to scope events to a distinct application.
using Swift Package Manager (SPM), open your App in Xcode and open File > Add Packages. Then add the SDK by entering the Git repo url in the top right search field:

\n
https://github.com/getsentry/sentry-cocoa.git
\n

Alternatively, when your project uses a Package.swift file to manage dependencies, you can specify the target with:

\n
.package(url: \"https://github.com/getsentry/sentry-cocoa\", from: \"8.19.0\"),
\n

For more information visit the docs.

\n

Carthage

\n

To integrate Sentry into your Xcode

projectRepresents your service in Sentry and allows you to scope events to a distinct application.
using Carthage, specify it in your Cartfile:

\n
github \"getsentry/sentry-cocoa\" \"8.19.0\"
\n

Run carthage update to download the framework and drag the built Sentry.framework into your Xcode project. For more information visit the docs.

\n

Configuration

\n

Make sure you initialize the SDK as soon as possible in your application lifecycle e.g. in your AppDelegate application:didFinishLaunchingWithOptions method:

\n
import Sentry\n\n// ....\n\nfunc application(_ application: UIApplication,\n    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {\n\n    SentrySDK.start { options in\n        options.dsn = \"___PUBLIC_DSN___\"\n        options.debug = true // Enabled debug when first installing is always helpful\n\n        // Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n        // We recommend adjusting this value in production.\n        options.tracesSampleRate = 1.0\n    }\n\n    return true\n}
\n

When using SwiftUI and your app doesn't implement an app delegate, initialize the SDK within the App conformer's initializer:

\n
import Sentry\n\n@main\nstruct SwiftUIApp: App {\n    init() {\n        SentrySDK.start { options in\n            options.dsn = \"___PUBLIC_DSN___\"\n            options.debug = true // Enabled debug when first installing is always helpful\n\n            // Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n            // We recommend adjusting this value in production.\n            options.tracesSampleRate = 1.0\n        }\n    }\n}
\n

Debug Symbols

\n

To capture crashes, you need to provide debug information to Sentry. You can also use our source context feature to display code snippets next to the event stack traces by enabling the include-sources option when uploading your debug information files. Debug information is provided by uploading dSYM files.

\n

Performance Monitoring

\n

You can measure the performance of your code by capturing transactions and spans.

\n
import Sentry // Make sure you import Sentry\n\n// Transaction can be started by providing, at minimum, the name and the operation\nlet transaction = SentrySDK.startTransaction(name: \"Update Repos\", operation: \"db\")\n// Transactions can have child spans (and those spans can have child spans as well)\nlet span = transaction.startChild(operation: \"db\", description: \"Update first repo\")\n\n// ...\n// (Perform the operation represented by the span/transaction)\n// ...\n\nspan.finish() // Mark the span as finished\ntransaction.finish() // Mark the transaction as finished and send it to Sentry
\n

Check out the documentation to learn more about the API and automatic instrumentations.

"} \ No newline at end of file +{"key":"apple.macos","type":"language","doc_link":"https://docs.sentry.io/platforms/apple/","name":"macOS","aliases":[],"categories":["desktop"],"body":"

We support installing the SDK with CocoaPods, Swift Package Manager, and Carthage.

\n

CocoaPods

\n

To integrate Sentry into your Xcode

projectRepresents your service in Sentry and allows you to scope events to a distinct application.
, specify it in your Podfile:

\n
platform :ios, '11.0'\nuse_frameworks! # This is important\n\ntarget 'YourApp' do\n  pod 'Sentry', :git => 'https://github.com/getsentry/sentry-cocoa.git', :tag => '8.19.0'\nend
\n

Afterwards run pod install. For more information visit the docs.

\n

Swift Package Manager

\n

To integrate Sentry into your Xcode

projectRepresents your service in Sentry and allows you to scope events to a distinct application.
using Swift Package Manager (SPM), open your App in Xcode and open File > Add Packages. Then add the SDK by entering the Git repo url in the top right search field:

\n
https://github.com/getsentry/sentry-cocoa.git
\n

Alternatively, when your project uses a Package.swift file to manage dependencies, you can specify the target with:

\n
.package(url: \"https://github.com/getsentry/sentry-cocoa\", from: \"8.19.0\"),
\n

For more information visit the docs.

\n

Carthage

\n

To integrate Sentry into your Xcode

projectRepresents your service in Sentry and allows you to scope events to a distinct application.
using Carthage, specify it in your Cartfile:

\n
github \"getsentry/sentry-cocoa\" \"8.19.0\"
\n

Run carthage update to download the framework and drag the built Sentry.framework into your Xcode project. For more information visit the docs.

\n

Configuration

\n

Make sure you initialize the SDK as soon as possible in your application lifecycle e.g. in your AppDelegate application:didFinishLaunchingWithOptions method:

\n
import Sentry\n\n// ....\n\nfunc application(_ application: UIApplication,\n    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {\n\n    SentrySDK.start { options in\n        options.dsn = \"___PUBLIC_DSN___\"\n        options.debug = true // Enabled debug when first installing is always helpful\n\n        // Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n        // We recommend adjusting this value in production.\n        options.tracesSampleRate = 1.0\n    }\n\n    return true\n}
\n

When using SwiftUI and your app doesn't implement an app delegate, initialize the SDK within the App conformer's initializer:

\n
import Sentry\n\n@main\nstruct SwiftUIApp: App {\n    init() {\n        SentrySDK.start { options in\n            options.dsn = \"___PUBLIC_DSN___\"\n            options.debug = true // Enabled debug when first installing is always helpful\n\n            // Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n            // We recommend adjusting this value in production.\n            options.tracesSampleRate = 1.0\n        }\n    }\n}
\n

Debug Symbols

\n

To capture crashes, you need to provide debug information to Sentry. You can also use our source context feature to display code snippets next to the event stack traces by enabling the include-sources option when uploading your debug information files. Debug information is provided by uploading dSYM files.

\n

Performance Monitoring

\n

You can measure the performance of your code by capturing transactions and spans.

\n
import Sentry // Make sure you import Sentry\n\n// Transaction can be started by providing, at minimum, the name and the operation\nlet transaction = SentrySDK.startTransaction(name: \"Update Repos\", operation: \"db\")\n// Transactions can have child spans (and those spans can have child spans as well)\nlet span = transaction.startChild(operation: \"db\", description: \"Update first repo\")\n\n// ...\n// (Perform the operation represented by the span/transaction)\n// ...\n\nspan.finish() // Mark the span as finished\ntransaction.finish() // Mark the transaction as finished and send it to Sentry
\n

Check out the documentation to learn more about the API and automatic instrumentations.

"} diff --git a/public/_platforms/dart.json b/public/_platforms/dart.json index 3f948fefadc63..711cd8c69dbfe 100644 --- a/public/_platforms/dart.json +++ b/public/_platforms/dart.json @@ -1 +1 @@ -{"key":"dart","type":"framework","doc_link":"https://docs.sentry.io/platforms/dart/","name":"Dart","aliases":[],"categories":["mobile","browser","server"],"body":"

Sentry captures data by using an SDK within your application’s runtime. Add the following to your pubspec.yaml:

\n
dependencies:\n  sentry: ^7.15.0
\n

Import sentry and initialize it:

\n
import 'package:sentry/sentry.dart';\n\nFuture<void> main() async {\n  await Sentry.init((options) {\n      options.dsn = '___PUBLIC_DSN___';\n      // Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n      // We recommend adjusting this value in production.\n      options.tracesSampleRate = 1.0;\n    });\n\n  // or define SENTRY_DSN via Dart environment variable (--dart-define)\n}
\n

You can configure the SENTRY_DSN, SENTRY_RELEASE, SENTRY_DIST, and SENTRY_ENVIRONMENT via the Dart environment variables passing the --dart-define flag to the compiler, as noted in the code sample.

\n

Then create an intentional error, so you can test that everything is working:

\n
import 'package:sentry/sentry.dart';\n\ntry {\n  aMethodThatMightFail();\n} catch (exception, stackTrace) {\n  await Sentry.captureException(\n    exception,\n    stackTrace: stackTrace,\n  );\n}
\n

If you're new to Sentry, use the email alert to access your account and complete a product tour.

\n

If you're an existing user and have disabled alerts, you won't receive this email.

\n

Performance

\n

You'll be able to monitor the performance of your app using the SDK.\nFor example:

\n
import 'package:sentry/sentry.dart';\n\nfinal transaction = Sentry.startTransaction('processOrderBatch()', 'task');\n\ntry {\n  await processOrderBatch(transaction);\n} catch (exception) {\n  transaction.throwable = exception;\n  transaction.status = SpanStatus.internalError();\n} finally {\n  await transaction.finish();\n}\n\nFuture<void> processOrderBatch(ISentrySpan span) async {\n  // span operation: task, span description: operation\n  final innerSpan = span.startChild('task', description: 'operation');\n\n  try {\n    // omitted code\n  } catch (exception) {\n    innerSpan.throwable = exception;\n    innerSpan.status = SpanStatus.notFound();\n  } finally {\n    await innerSpan.finish();\n  }\n}
\n

Check out the documentation to learn more about the API and automatic instrumentations.

"} \ No newline at end of file +{"key":"dart","type":"framework","doc_link":"https://docs.sentry.io/platforms/dart/","name":"Dart","aliases":[],"categories":["mobile","browser","server"],"body":"

Sentry captures data by using an SDK within your application’s runtime. Add the following to your pubspec.yaml:

\n
dependencies:\n  sentry: ^7.15.0
\n

Import sentry and initialize it:

\n
import 'package:sentry/sentry.dart';\n\nFuture<void> main() async {\n  await Sentry.init((options) {\n      options.dsn = '___PUBLIC_DSN___';\n      // Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n      // We recommend adjusting this value in production.\n      options.tracesSampleRate = 1.0;\n    });\n\n  // or define SENTRY_DSN via Dart environment variable (--dart-define)\n}
\n

You can configure the SENTRY_DSN, SENTRY_RELEASE, SENTRY_DIST, and SENTRY_ENVIRONMENT via the Dart environment variables passing the --dart-define flag to the compiler, as noted in the code sample.

\n

Then create an intentional error, so you can test that everything is working:

\n
import 'package:sentry/sentry.dart';\n\ntry {\n  aMethodThatMightFail();\n} catch (exception, stackTrace) {\n  await Sentry.captureException(\n    exception,\n    stackTrace: stackTrace,\n  );\n}
\n

If you're new to Sentry, use the email alert to access your account and complete a product tour.

\n

If you're an existing user and have disabled alerts, you won't receive this email.

\n

Performance

\n

You'll be able to monitor the performance of your app using the SDK.\nFor example:

\n
import 'package:sentry/sentry.dart';\n\nfinal transaction = Sentry.startTransaction('processOrderBatch()', 'task');\n\ntry {\n  await processOrderBatch(transaction);\n} catch (exception) {\n  transaction.throwable = exception;\n  transaction.status = SpanStatus.internalError();\n} finally {\n  await transaction.finish();\n}\n\nFuture<void> processOrderBatch(ISentrySpan span) async {\n  // span operation: task, span description: operation\n  final innerSpan = span.startChild('task', description: 'operation');\n\n  try {\n    // omitted code\n  } catch (exception) {\n    innerSpan.throwable = exception;\n    innerSpan.status = SpanStatus.notFound();\n  } finally {\n    await innerSpan.finish();\n  }\n}
\n

Check out the documentation to learn more about the API and automatic instrumentations.

"} diff --git a/public/_platforms/dotnet.json b/public/_platforms/dotnet.json index 99576a39b8bf5..a72ccfb1bb772 100644 --- a/public/_platforms/dotnet.json +++ b/public/_platforms/dotnet.json @@ -1 +1 @@ -{"key":"dotnet","type":"language","doc_link":"https://docs.sentry.io/platforms/dotnet/","name":".NET","aliases":["C#"],"categories":[],"body":"\nSentry for .NET is a collection of NuGet packages provided by Sentry; it supports .NET Framework 4.6.1 and .NET Core 2.0 and above. At its core, Sentry for .NET provides a raw client for sending events to Sentry. If you use a framework such as ASP.NET, WinForms, WPF, MAUI, Xamarin, Serilog, or similar, we recommend visiting our Sentry .NET documentation for installation instructions.\n\n

Install the NuGet package:

\n
# Using Package Manager\nInstall-Package Sentry -Version 3.41.4\n\n# Or using .NET Core CLI\ndotnet add package Sentry -v 3.41.4
\n

Initialize the SDK as early as possible. For example, call SentrySdk.Init in your Program.cs file:

\n
using Sentry;\n\nSentrySdk.Init(options =>\n{\n    // A Sentry Data Source Name (DSN) is required.\n    // See https://docs.sentry.io/product/sentry-basics/dsn-explainer/\n    // You can set it in the SENTRY_DSN environment variable, or you can set it in code here.\n    options.Dsn = \"___PUBLIC_DSN___\";\n\n    // When debug is enabled, the Sentry client will emit detailed debugging information to the console.\n    // This might be helpful, or might interfere with the normal operation of your application.\n    // We enable it here for demonstration purposes when first trying Sentry.\n    // You shouldn't do this in your applications unless you're troubleshooting issues with Sentry.\n    options.Debug = true;\n\n    // This option is recommended. It enables Sentry's \"Release Health\" feature.\n    options.AutoSessionTracking = true;\n\n    // This option is recommended for client applications only. It ensures all threads use the same global scope.\n    // If you're writing a background service of any kind, you should remove this.\n    options.IsGlobalModeEnabled = true;\n\n    // This option will enable Sentry's tracing features. You still need to start transactions and spans.\n    options.EnableTracing = true;\n});
\n

Verify Sentry is correctly configured by sending a message:

\n
SentrySdk.CaptureMessage(\"Something went wrong\");
\n

Performance Monitoring

\n

You can measure the performance of your code by capturing transactions and spans.

\n
// Transaction can be started by providing, at minimum, the name and the operation\nvar transaction = SentrySdk.StartTransaction(\n  \"test-transaction-name\",\n  \"test-transaction-operation\"\n);\n\n// Transactions can have child spans (and those spans can have child spans as well)\nvar span = transaction.StartChild(\"test-child-operation\");\n\n// ...\n// (Perform the operation represented by the span/transaction)\n// ...\n\nspan.Finish(); // Mark the span as finished\ntransaction.Finish(); // Mark the transaction as finished and send it to Sentry
\n

Check out the documentation to learn more about the API and automatic instrumentations.

\n

Samples

\n

You can find an example ASP.NET MVC 5 app with Sentry integrated on this GitHub repository.

\n

In addition, these examples demonstrate how to integrate Sentry with various frameworks:

\n"} \ No newline at end of file +{"key":"dotnet","type":"language","doc_link":"https://docs.sentry.io/platforms/dotnet/","name":".NET","aliases":["C#"],"categories":[],"body":"\nSentry for .NET is a collection of NuGet packages provided by Sentry; it supports .NET Framework 4.6.1 and .NET Core 2.0 and above. At its core, Sentry for .NET provides a raw client for sending events to Sentry. If you use a framework such as ASP.NET, WinForms, WPF, MAUI, Xamarin, Serilog, or similar, we recommend visiting our Sentry .NET documentation for installation instructions.\n\n

Install the NuGet package:

\n
# Using Package Manager\nInstall-Package Sentry -Version 3.41.4\n\n# Or using .NET Core CLI\ndotnet add package Sentry -v 3.41.4
\n

Initialize the SDK as early as possible. For example, call SentrySdk.Init in your Program.cs file:

\n
using Sentry;\n\nSentrySdk.Init(options =>\n{\n    // A Sentry Data Source Name (DSN) is required.\n    // See https://docs.sentry.io/product/sentry-basics/dsn-explainer/\n    // You can set it in the SENTRY_DSN environment variable, or you can set it in code here.\n    options.Dsn = \"___PUBLIC_DSN___\";\n\n    // When debug is enabled, the Sentry client will emit detailed debugging information to the console.\n    // This might be helpful, or might interfere with the normal operation of your application.\n    // We enable it here for demonstration purposes when first trying Sentry.\n    // You shouldn't do this in your applications unless you're troubleshooting issues with Sentry.\n    options.Debug = true;\n\n    // This option is recommended. It enables Sentry's \"Release Health\" feature.\n    options.AutoSessionTracking = true;\n\n    // This option is recommended for client applications only. It ensures all threads use the same global scope.\n    // If you're writing a background service of any kind, you should remove this.\n    options.IsGlobalModeEnabled = true;\n\n    // This option will enable Sentry's tracing features. You still need to start transactions and spans.\n    options.EnableTracing = true;\n});
\n

Verify Sentry is correctly configured by sending a message:

\n
SentrySdk.CaptureMessage(\"Something went wrong\");
\n

Performance Monitoring

\n

You can measure the performance of your code by capturing transactions and spans.

\n
// Transaction can be started by providing, at minimum, the name and the operation\nvar transaction = SentrySdk.StartTransaction(\n  \"test-transaction-name\",\n  \"test-transaction-operation\"\n);\n\n// Transactions can have child spans (and those spans can have child spans as well)\nvar span = transaction.StartChild(\"test-child-operation\");\n\n// ...\n// (Perform the operation represented by the span/transaction)\n// ...\n\nspan.Finish(); // Mark the span as finished\ntransaction.Finish(); // Mark the transaction as finished and send it to Sentry
\n

Check out the documentation to learn more about the API and automatic instrumentations.

\n

Samples

\n

You can find an example ASP.NET MVC 5 app with Sentry integrated on this GitHub repository.

\n

In addition, these examples demonstrate how to integrate Sentry with various frameworks:

\n"} diff --git a/public/_platforms/dotnet/maui.json b/public/_platforms/dotnet/maui.json index 8335a3b3b0323..c6519497587d7 100644 --- a/public/_platforms/dotnet/maui.json +++ b/public/_platforms/dotnet/maui.json @@ -1 +1 @@ -{"key":"dotnet.maui","type":"framework","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/maui/","name":"Multi-platform App UI (MAUI)","aliases":[],"categories":[],"body":"

Install the NuGet package:

\n
dotnet add package Sentry.Maui -v 3.41.4
\n
Install-Package Sentry.Maui -Version 3.41.4
\n

Then add Sentry to MauiProgram.cs through the MauiAppBuilder:

\n
public static MauiApp CreateMauiApp()\n{\n    var builder = MauiApp.CreateBuilder();\n    builder\n        .UseMauiApp<App>()\n\n        // Add this section anywhere on the builder:\n        .UseSentry(options =>\n        {\n            // The DSN is the only required setting.\n            options.Dsn = \"___PUBLIC_DSN___\";\n\n            // Use debug mode if you want to see what the SDK is doing.\n            // Debug messages are written to stdout with Console.Writeline,\n            // and are viewable in your IDE's debug console or with 'adb logcat', etc.\n            // This option is not recommended when deploying your application.\n            options.Debug = true;\n\n            // Set TracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n            // We recommend adjusting this value in production.\n            options.TracesSampleRate = 1.0;\n\n            // Other Sentry options can be set here.\n        })\n\n        // ... the remainder of your MAUI app setup\n\n    return builder.Build();\n}
\n

Verify

\n

To verify your set up, you can capture a message with the SDK, anywhere in your code after the application is built, such as in a page constructor or button click event handler:

\n
SentrySdk.CaptureMessage(\"Hello Sentry\");
\n

Performance monitoring

\n

We do not yet have automatic performance instrumentation for .NET MAUI. We will be adding that in a future release.\nHowever, if desired you can still manually instrument parts of your application.

\n

For some parts of your code, automatic instrumentation is available across all of our .NET SDKs, and can be used with MAUI as well:

\n\n

For other parts of your code, you can use custom instrumentation, such as in the following example:

\n
// Transaction can be started by providing, at minimum, the name and the operation\nvar transaction = SentrySdk.StartTransaction(\n  \"test-transaction-name\",\n  \"test-transaction-operation\"\n);\n\n// Transactions can have child spans (and those spans can have child spans as well)\nvar span = transaction.StartChild(\"test-child-operation\");\n\n// ...\n// (Perform the operation represented by the span/transaction)\n// ...\n\nspan.Finish(); // Mark the span as finished\ntransaction.Finish(); // Mark the transaction as finished and send it to Sentry
\n

Sample Application

\n

See the MAUI Sample in the sentry-dotnet repository.

"} \ No newline at end of file +{"key":"dotnet.maui","type":"framework","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/maui/","name":"Multi-platform App UI (MAUI)","aliases":[],"categories":[],"body":"

Install the NuGet package:

\n
dotnet add package Sentry.Maui -v 3.41.4
\n
Install-Package Sentry.Maui -Version 3.41.4
\n

Then add Sentry to MauiProgram.cs through the MauiAppBuilder:

\n
public static MauiApp CreateMauiApp()\n{\n    var builder = MauiApp.CreateBuilder();\n    builder\n        .UseMauiApp<App>()\n\n        // Add this section anywhere on the builder:\n        .UseSentry(options =>\n        {\n            // The DSN is the only required setting.\n            options.Dsn = \"___PUBLIC_DSN___\";\n\n            // Use debug mode if you want to see what the SDK is doing.\n            // Debug messages are written to stdout with Console.Writeline,\n            // and are viewable in your IDE's debug console or with 'adb logcat', etc.\n            // This option is not recommended when deploying your application.\n            options.Debug = true;\n\n            // Set TracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n            // We recommend adjusting this value in production.\n            options.TracesSampleRate = 1.0;\n\n            // Other Sentry options can be set here.\n        })\n\n        // ... the remainder of your MAUI app setup\n\n    return builder.Build();\n}
\n

Verify

\n

To verify your set up, you can capture a message with the SDK, anywhere in your code after the application is built, such as in a page constructor or button click event handler:

\n
SentrySdk.CaptureMessage(\"Hello Sentry\");
\n

Performance monitoring

\n

We do not yet have automatic performance instrumentation for .NET MAUI. We will be adding that in a future release.\nHowever, if desired you can still manually instrument parts of your application.

\n

For some parts of your code, automatic instrumentation is available across all of our .NET SDKs, and can be used with MAUI as well:

\n\n

For other parts of your code, you can use custom instrumentation, such as in the following example:

\n
// Transaction can be started by providing, at minimum, the name and the operation\nvar transaction = SentrySdk.StartTransaction(\n  \"test-transaction-name\",\n  \"test-transaction-operation\"\n);\n\n// Transactions can have child spans (and those spans can have child spans as well)\nvar span = transaction.StartChild(\"test-child-operation\");\n\n// ...\n// (Perform the operation represented by the span/transaction)\n// ...\n\nspan.Finish(); // Mark the span as finished\ntransaction.Finish(); // Mark the transaction as finished and send it to Sentry
\n

Sample Application

\n

See the MAUI Sample in the sentry-dotnet repository.

"} diff --git a/public/_platforms/dotnet/uwp.json b/public/_platforms/dotnet/uwp.json index 7ef723d93579a..1fa7869c010f2 100644 --- a/public/_platforms/dotnet/uwp.json +++ b/public/_platforms/dotnet/uwp.json @@ -1 +1 @@ -{"key":"dotnet.uwp","type":"framework","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/uwp/","name":"UWP","aliases":[],"categories":[],"body":"

Install the NuGet package

\n
# Using Package Manager\nInstall-Package Sentry -Version 3.41.4\n\n# Or using .NET Core CLI\ndotnet add package Sentry -v 3.41.4
\n
Using .NET Framework prior to 4.6.1?
\n
\n Our legacy SDK supports .NET Framework as early as 3.5.\n
\n
\n

Initialize the SDK

\n

Initialize the SDK as early as possible, like in the constructor of the App:

\n
using System.Windows;\nusing Sentry.Protocol;\nusing Sentry;\n\nsealed partial class App : Application\n{\n    protected override void OnLaunched(LaunchActivatedEventArgs e)\n    {\n        SentrySdk.Init(o =>\n        {\n            // Tells which project in Sentry to send events to:\n            o.Dsn = \"___PUBLIC_DSN___\";\n            // When configuring for the first time, to see what the SDK is doing:\n            o.Debug = true;\n            // Set TracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n            // We recommend adjusting this value in production.\n            o.TracesSampleRate = 1.0;\n        });\n        Current.UnhandledException += UnhandledExceptionHandler;\n    }\n\n    [HandleProcessCorruptedStateExceptions, SecurityCritical]\n    internal void ExceptionHandler(object sender, Windows.UI.Xaml.UnhandledExceptionEventArgs e)\n    {\n        // We need to hold the reference, because the Exception property is cleared when accessed.\n        var exception = e.Exception;\n        if (exception != null)\n        {\n            // Tells Sentry this was an Unhandled Exception\n            exception.Data[Mechanism.HandledKey] = false;\n            exception.Data[Mechanism.MechanismKey] = \"Application.UnhandledException\";\n            SentrySdk.CaptureException(exception);\n            // Make sure the event is flushed to disk or to Sentry\n            SentrySdk.FlushAsync(TimeSpan.FromSeconds(3)).Wait();\n        }\n    }\n}
\n

Verify

\n

To verify your set up, you can capture a message with the SDK:

\n
SentrySdk.CaptureMessage(\"Hello Sentry\");
\n

If you don't want to depend on the static class, the SDK registers a client in the DI container. In this case, you can take IHub as a dependency.

\n

Performance Monitoring

\n

You can measure the performance of your code by capturing transactions and spans.

\n
// Transaction can be started by providing, at minimum, the name and the operation\nvar transaction = SentrySdk.StartTransaction(\n  \"test-transaction-name\",\n  \"test-transaction-operation\"\n);\n\n// Transactions can have child spans (and those spans can have child spans as well)\nvar span = transaction.StartChild(\"test-child-operation\");\n\n// ...\n// (Perform the operation represented by the span/transaction)\n// ...\n\nspan.Finish(); // Mark the span as finished\ntransaction.Finish(); // Mark the transaction as finished and send it to Sentry
\n

Check out the documentation to learn more about the API and automatic instrumentations.

\n

Documentation

\n

Once you've verified the package is initialized properly and sent a test event, consider visiting our complete UWP docs.

\n

Samples

\n

You can find an example UWP app with Sentry integrated on this GitHub repository.

\n

See the following examples that demonstrate how to integrate Sentry with various frameworks.

\n"} \ No newline at end of file +{"key":"dotnet.uwp","type":"framework","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/uwp/","name":"UWP","aliases":[],"categories":[],"body":"

Install the NuGet package

\n
# Using Package Manager\nInstall-Package Sentry -Version 3.41.4\n\n# Or using .NET Core CLI\ndotnet add package Sentry -v 3.41.4
\n
Using .NET Framework prior to 4.6.1?
\n
\n Our legacy SDK supports .NET Framework as early as 3.5.\n
\n
\n

Initialize the SDK

\n

Initialize the SDK as early as possible, like in the constructor of the App:

\n
using System.Windows;\nusing Sentry.Protocol;\nusing Sentry;\n\nsealed partial class App : Application\n{\n    protected override void OnLaunched(LaunchActivatedEventArgs e)\n    {\n        SentrySdk.Init(o =>\n        {\n            // Tells which project in Sentry to send events to:\n            o.Dsn = \"___PUBLIC_DSN___\";\n            // When configuring for the first time, to see what the SDK is doing:\n            o.Debug = true;\n            // Set TracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n            // We recommend adjusting this value in production.\n            o.TracesSampleRate = 1.0;\n        });\n        Current.UnhandledException += UnhandledExceptionHandler;\n    }\n\n    [HandleProcessCorruptedStateExceptions, SecurityCritical]\n    internal void ExceptionHandler(object sender, Windows.UI.Xaml.UnhandledExceptionEventArgs e)\n    {\n        // We need to hold the reference, because the Exception property is cleared when accessed.\n        var exception = e.Exception;\n        if (exception != null)\n        {\n            // Tells Sentry this was an Unhandled Exception\n            exception.Data[Mechanism.HandledKey] = false;\n            exception.Data[Mechanism.MechanismKey] = \"Application.UnhandledException\";\n            SentrySdk.CaptureException(exception);\n            // Make sure the event is flushed to disk or to Sentry\n            SentrySdk.FlushAsync(TimeSpan.FromSeconds(3)).Wait();\n        }\n    }\n}
\n

Verify

\n

To verify your set up, you can capture a message with the SDK:

\n
SentrySdk.CaptureMessage(\"Hello Sentry\");
\n

If you don't want to depend on the static class, the SDK registers a client in the DI container. In this case, you can take IHub as a dependency.

\n

Performance Monitoring

\n

You can measure the performance of your code by capturing transactions and spans.

\n
// Transaction can be started by providing, at minimum, the name and the operation\nvar transaction = SentrySdk.StartTransaction(\n  \"test-transaction-name\",\n  \"test-transaction-operation\"\n);\n\n// Transactions can have child spans (and those spans can have child spans as well)\nvar span = transaction.StartChild(\"test-child-operation\");\n\n// ...\n// (Perform the operation represented by the span/transaction)\n// ...\n\nspan.Finish(); // Mark the span as finished\ntransaction.Finish(); // Mark the transaction as finished and send it to Sentry
\n

Check out the documentation to learn more about the API and automatic instrumentations.

\n

Documentation

\n

Once you've verified the package is initialized properly and sent a test event, consider visiting our complete UWP docs.

\n

Samples

\n

You can find an example UWP app with Sentry integrated on this GitHub repository.

\n

See the following examples that demonstrate how to integrate Sentry with various frameworks.

\n"} diff --git a/public/_platforms/dotnet/winforms.json b/public/_platforms/dotnet/winforms.json index c165687ebd8bb..ef53e840b5038 100644 --- a/public/_platforms/dotnet/winforms.json +++ b/public/_platforms/dotnet/winforms.json @@ -1 +1 @@ -{"key":"dotnet.winforms","type":"framework","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/winforms/","name":"Windows Forms","aliases":[],"categories":[],"body":"

Install the NuGet package

\n
# Using Package Manager\nInstall-Package Sentry -Version 3.41.4\n\n# Or using .NET Core CLI\ndotnet add package Sentry -v 3.41.4
\n
Using .NET Framework prior to 4.6.1?
\n
\n Our legacy SDK supports .NET Framework as early as 3.5.\n
\n
\n

Initialize the SDK

\n

Initialize the SDK as early as possible, like in the constructor of the App:

\n
using System;\nusing System.Windows.Forms;\nusing Sentry;\n\nstatic class Program\n{\n    [STAThread]\n    static void Main()\n    {\n        // Init the Sentry SDK\n        SentrySdk.Init(o =>\n        {\n            // Tells which project in Sentry to send events to:\n            o.Dsn = \"___PUBLIC_DSN___\";\n            // When configuring for the first time, to see what the SDK is doing:\n            o.Debug = true;\n            // Set TracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n            // We recommend adjusting this value in production.\n            o.TracesSampleRate = 1.0;\n        });\n        // Configure WinForms to throw exceptions so Sentry can capture them.\n        Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException);\n\n        // Any other configuration you might have goes here...\n\n        Application.Run(new Form1());\n    }\n}
\n

Verify

\n

To verify your set up, you can capture a message with the SDK:

\n
SentrySdk.CaptureMessage(\"Hello Sentry\");
\n

Performance Monitoring

\n

You can measure the performance of your code by capturing transactions and spans.

\n
// Transaction can be started by providing, at minimum, the name and the operation\nvar transaction = SentrySdk.StartTransaction(\n  \"test-transaction-name\",\n  \"test-transaction-operation\"\n);\n\n// Transactions can have child spans (and those spans can have child spans as well)\nvar span = transaction.StartChild(\"test-child-operation\");\n\n// ...\n// (Perform the operation represented by the span/transaction)\n// ...\n\nspan.Finish(); // Mark the span as finished\ntransaction.Finish(); // Mark the transaction as finished and send it to Sentry
\n

Check out the documentation to learn more about the API and automatic instrumentations.

\n

Documentation

\n

Once you've verified the package is initialized properly and sent a test event, consider visiting our complete WinForms docs.

\n

Samples

\n

You can find an example WinForms app with Sentry integrated on this GitHub repository.

\n

See the following examples that demonstrate how to integrate Sentry with various frameworks:

\n"} \ No newline at end of file +{"key":"dotnet.winforms","type":"framework","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/winforms/","name":"Windows Forms","aliases":[],"categories":[],"body":"

Install the NuGet package

\n
# Using Package Manager\nInstall-Package Sentry -Version 3.41.4\n\n# Or using .NET Core CLI\ndotnet add package Sentry -v 3.41.4
\n
Using .NET Framework prior to 4.6.1?
\n
\n Our legacy SDK supports .NET Framework as early as 3.5.\n
\n
\n

Initialize the SDK

\n

Initialize the SDK as early as possible, like in the constructor of the App:

\n
using System;\nusing System.Windows.Forms;\nusing Sentry;\n\nstatic class Program\n{\n    [STAThread]\n    static void Main()\n    {\n        // Init the Sentry SDK\n        SentrySdk.Init(o =>\n        {\n            // Tells which project in Sentry to send events to:\n            o.Dsn = \"___PUBLIC_DSN___\";\n            // When configuring for the first time, to see what the SDK is doing:\n            o.Debug = true;\n            // Set TracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n            // We recommend adjusting this value in production.\n            o.TracesSampleRate = 1.0;\n        });\n        // Configure WinForms to throw exceptions so Sentry can capture them.\n        Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException);\n\n        // Any other configuration you might have goes here...\n\n        Application.Run(new Form1());\n    }\n}
\n

Verify

\n

To verify your set up, you can capture a message with the SDK:

\n
SentrySdk.CaptureMessage(\"Hello Sentry\");
\n

Performance Monitoring

\n

You can measure the performance of your code by capturing transactions and spans.

\n
// Transaction can be started by providing, at minimum, the name and the operation\nvar transaction = SentrySdk.StartTransaction(\n  \"test-transaction-name\",\n  \"test-transaction-operation\"\n);\n\n// Transactions can have child spans (and those spans can have child spans as well)\nvar span = transaction.StartChild(\"test-child-operation\");\n\n// ...\n// (Perform the operation represented by the span/transaction)\n// ...\n\nspan.Finish(); // Mark the span as finished\ntransaction.Finish(); // Mark the transaction as finished and send it to Sentry
\n

Check out the documentation to learn more about the API and automatic instrumentations.

\n

Documentation

\n

Once you've verified the package is initialized properly and sent a test event, consider visiting our complete WinForms docs.

\n

Samples

\n

You can find an example WinForms app with Sentry integrated on this GitHub repository.

\n

See the following examples that demonstrate how to integrate Sentry with various frameworks:

\n"} diff --git a/public/_platforms/dotnet/wpf.json b/public/_platforms/dotnet/wpf.json index eaa5d02a03c49..943fd8534860e 100644 --- a/public/_platforms/dotnet/wpf.json +++ b/public/_platforms/dotnet/wpf.json @@ -1 +1 @@ -{"key":"dotnet.wpf","type":"framework","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/wpf/","name":"WPF","aliases":[],"categories":[],"body":"

Install the NuGet package

\n
# Using Package Manager\nInstall-Package Sentry -Version 3.41.4\n\n# Or using .NET Core CLI\ndotnet add package Sentry -v 3.41.4
\n
Using .NET Framework prior to 4.6.1?
\n
\n Our legacy SDK supports .NET Framework as early as 3.5.\n
\n
\n

Initialize the SDK

\n

Initialize the SDK as early as possible, like in the constructor of the App:

\n
using System.Windows.Threading;\nusing System.Windows;\nusing Sentry;\n\npublic partial class App : Application\n{\n    public App()\n    {\n        DispatcherUnhandledException += App_DispatcherUnhandledException;\n        SentrySdk.Init(o =>\n        {\n            // Tells which project in Sentry to send events to:\n            o.Dsn = \"___PUBLIC_DSN___\";\n            // When configuring for the first time, to see what the SDK is doing:\n            o.Debug = true;\n            // Set TracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n            // We recommend adjusting this value in production.\n            o.TracesSampleRate = 1.0;\n        });\n    }\n\n    void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)\n    {\n        SentrySdk.CaptureException(e.Exception);\n\n        // If you want to avoid the application from crashing:\n        e.Handled = true;\n    }\n}
\n

Verify

\n

To verify your set up, you can capture a message with the SDK:

\n
SentrySdk.CaptureMessage(\"Hello Sentry\");
\n

Performance Monitoring

\n

You can measure the performance of your code by capturing transactions and spans.

\n
// Transaction can be started by providing, at minimum, the name and the operation\nvar transaction = SentrySdk.StartTransaction(\n  \"test-transaction-name\",\n  \"test-transaction-operation\"\n);\n\n// Transactions can have child spans (and those spans can have child spans as well)\nvar span = transaction.StartChild(\"test-child-operation\");\n\n// ...\n// (Perform the operation represented by the span/transaction)\n// ...\n\nspan.Finish(); // Mark the span as finished\ntransaction.Finish(); // Mark the transaction as finished and send it to Sentry
\n

Check out the documentation to learn more about the API and automatic instrumentations.

\n

If you don't want to depend on the static class, the SDK registers a client in the DI container. In this case, you can take IHub as a dependency.

\n

Documentation

\n

Once you've verified the package is initialized properly and sent a test event, consider visiting our complete WPF docs.

\n

Samples

\n

You can find an example WPF app with Sentry integrated on this GitHub repository.

\n

See the following examples that demonstrate how to integrate Sentry with various frameworks.

\n"} \ No newline at end of file +{"key":"dotnet.wpf","type":"framework","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/wpf/","name":"WPF","aliases":[],"categories":[],"body":"

Install the NuGet package

\n
# Using Package Manager\nInstall-Package Sentry -Version 3.41.4\n\n# Or using .NET Core CLI\ndotnet add package Sentry -v 3.41.4
\n
Using .NET Framework prior to 4.6.1?
\n
\n Our legacy SDK supports .NET Framework as early as 3.5.\n
\n
\n

Initialize the SDK

\n

Initialize the SDK as early as possible, like in the constructor of the App:

\n
using System.Windows.Threading;\nusing System.Windows;\nusing Sentry;\n\npublic partial class App : Application\n{\n    public App()\n    {\n        DispatcherUnhandledException += App_DispatcherUnhandledException;\n        SentrySdk.Init(o =>\n        {\n            // Tells which project in Sentry to send events to:\n            o.Dsn = \"___PUBLIC_DSN___\";\n            // When configuring for the first time, to see what the SDK is doing:\n            o.Debug = true;\n            // Set TracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n            // We recommend adjusting this value in production.\n            o.TracesSampleRate = 1.0;\n        });\n    }\n\n    void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)\n    {\n        SentrySdk.CaptureException(e.Exception);\n\n        // If you want to avoid the application from crashing:\n        e.Handled = true;\n    }\n}
\n

Verify

\n

To verify your set up, you can capture a message with the SDK:

\n
SentrySdk.CaptureMessage(\"Hello Sentry\");
\n

Performance Monitoring

\n

You can measure the performance of your code by capturing transactions and spans.

\n
// Transaction can be started by providing, at minimum, the name and the operation\nvar transaction = SentrySdk.StartTransaction(\n  \"test-transaction-name\",\n  \"test-transaction-operation\"\n);\n\n// Transactions can have child spans (and those spans can have child spans as well)\nvar span = transaction.StartChild(\"test-child-operation\");\n\n// ...\n// (Perform the operation represented by the span/transaction)\n// ...\n\nspan.Finish(); // Mark the span as finished\ntransaction.Finish(); // Mark the transaction as finished and send it to Sentry
\n

Check out the documentation to learn more about the API and automatic instrumentations.

\n

If you don't want to depend on the static class, the SDK registers a client in the DI container. In this case, you can take IHub as a dependency.

\n

Documentation

\n

Once you've verified the package is initialized properly and sent a test event, consider visiting our complete WPF docs.

\n

Samples

\n

You can find an example WPF app with Sentry integrated on this GitHub repository.

\n

See the following examples that demonstrate how to integrate Sentry with various frameworks.

\n"} diff --git a/public/_platforms/dotnet/xamarin.json b/public/_platforms/dotnet/xamarin.json index 441590f229352..80ce709973d1d 100644 --- a/public/_platforms/dotnet/xamarin.json +++ b/public/_platforms/dotnet/xamarin.json @@ -1 +1 @@ -{"key":"dotnet.xamarin","type":"framework","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/xamarin/","name":"Xamarin","aliases":[],"categories":[],"body":"

Install the NuGet package

\n
# For Xamarin.Forms\nInstall-Package Sentry.Xamarin.Forms -Version 1.5.2\n\n# If you are not using Xamarin.Forms, but only Xamarin:\nInstall-Package Sentry.Xamarin -Version 1.5.2\n
\n

Initialize the SDK

\n

Initialize the SDK as early as possible, like in the constructor of the App, and Add SentryXamarinFormsIntegration as a new Integration to SentryXamarinOptions if you are going to run your app with Xamarin Forms:

\n

Android

\n

Initialize the SDK on your MainActivity.

\n
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity\n{\n    protected override void OnCreate(Bundle savedInstanceState)\n    {\n        SentryXamarin.Init(options =>\n        {\n            // Tells which project in Sentry to send events to:\n            options.Dsn = \"___PUBLIC_DSN___\";\n            // When configuring for the first time, to see what the SDK is doing:\n            options.Debug = true;\n            // Set TracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n            // We recommend adjusting this value in production.\n            options.TracesSampleRate = 1.0;\n            // If you installed Sentry.Xamarin.Forms:\n            options.AddXamarinFormsIntegration();\n        });
\n

iOS

\n

Initialize the SDK on your AppDelegate.cs

\n
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate\n{\n    public override bool FinishedLaunching(UIApplication app, NSDictionary options)\n    {\n        SentryXamarin.Init(options =>\n        {\n            options.Dsn = \"___PUBLIC_DSN___\";\n            // When configuring for the first time, to see what the SDK is doing:\n            options.Debug = true;\n            // Set TracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n            // We recommend adjusting this value in production.\n            options.TracesSampleRate = 1.0;\n            options.AddXamarinFormsIntegration();\n        });
\n

UWP

\n

Initialize the SDK on App.xaml.cs.

\n

NOTE: It's recommended to not setup the CacheDirectory for UWP.

\n
sealed partial class App : Application\n{\n    protected override void OnLaunched(LaunchActivatedEventArgs e)\n    {\n        SentryXamarin.Init(options =>\n        {\n            options.Dsn = \"___PUBLIC_DSN___\";\n            // When configuring for the first time, to see what the SDK is doing:\n            options.Debug = true;\n            // Set TracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n            // We recommend adjusting this value in production.\n            options.TracesSampleRate = 1.0;\n            options.AddXamarinFormsIntegration();\n        });
\n

Verify

\n

To verify your set up, you can capture a message with the SDK:

\n
SentrySdk.CaptureMessage(\"Hello Sentry\");
\n

You might need to open the app again for the crash report to be sent to the server.

\n

Performance Monitoring

\n

You can measure the performance of your code by capturing transactions and spans.

\n
// Transaction can be started by providing, at minimum, the name and the operation\nvar transaction = SentrySdk.StartTransaction(\n  \"test-transaction-name\",\n  \"test-transaction-operation\"\n);\n\n// Transactions can have child spans (and those spans can have child spans as well)\nvar span = transaction.StartChild(\"test-child-operation\");\n\n// ...\n// (Perform the operation represented by the span/transaction)\n// ...\n\nspan.Finish(); // Mark the span as finished\ntransaction.Finish(); // Mark the transaction as finished and send it to Sentry
\n

Check out the documentation to learn more about the API and automatic instrumentations.

\n

Documentation

\n

Once you've verified the package is initialized properly and sent a test event, consider visiting our complete Xamarin Forms docs.

\n

Limitations

\n

There are no line numbers on stack traces for UWP and in release builds for Android and iOS.

\n

Samples

\n

You can find an example of a Xamarin Forms app with Sentry integrated on this GitHub repository.

"} \ No newline at end of file +{"key":"dotnet.xamarin","type":"framework","doc_link":"https://docs.sentry.io/platforms/dotnet/guides/xamarin/","name":"Xamarin","aliases":[],"categories":[],"body":"

Install the NuGet package

\n
# For Xamarin.Forms\nInstall-Package Sentry.Xamarin.Forms -Version 1.5.2\n\n# If you are not using Xamarin.Forms, but only Xamarin:\nInstall-Package Sentry.Xamarin -Version 1.5.2\n
\n

Initialize the SDK

\n

Initialize the SDK as early as possible, like in the constructor of the App, and Add SentryXamarinFormsIntegration as a new Integration to SentryXamarinOptions if you are going to run your app with Xamarin Forms:

\n

Android

\n

Initialize the SDK on your MainActivity.

\n
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity\n{\n    protected override void OnCreate(Bundle savedInstanceState)\n    {\n        SentryXamarin.Init(options =>\n        {\n            // Tells which project in Sentry to send events to:\n            options.Dsn = \"___PUBLIC_DSN___\";\n            // When configuring for the first time, to see what the SDK is doing:\n            options.Debug = true;\n            // Set TracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n            // We recommend adjusting this value in production.\n            options.TracesSampleRate = 1.0;\n            // If you installed Sentry.Xamarin.Forms:\n            options.AddXamarinFormsIntegration();\n        });
\n

iOS

\n

Initialize the SDK on your AppDelegate.cs

\n
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate\n{\n    public override bool FinishedLaunching(UIApplication app, NSDictionary options)\n    {\n        SentryXamarin.Init(options =>\n        {\n            options.Dsn = \"___PUBLIC_DSN___\";\n            // When configuring for the first time, to see what the SDK is doing:\n            options.Debug = true;\n            // Set TracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n            // We recommend adjusting this value in production.\n            options.TracesSampleRate = 1.0;\n            options.AddXamarinFormsIntegration();\n        });
\n

UWP

\n

Initialize the SDK on App.xaml.cs.

\n

NOTE: It's recommended to not setup the CacheDirectory for UWP.

\n
sealed partial class App : Application\n{\n    protected override void OnLaunched(LaunchActivatedEventArgs e)\n    {\n        SentryXamarin.Init(options =>\n        {\n            options.Dsn = \"___PUBLIC_DSN___\";\n            // When configuring for the first time, to see what the SDK is doing:\n            options.Debug = true;\n            // Set TracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n            // We recommend adjusting this value in production.\n            options.TracesSampleRate = 1.0;\n            options.AddXamarinFormsIntegration();\n        });
\n

Verify

\n

To verify your set up, you can capture a message with the SDK:

\n
SentrySdk.CaptureMessage(\"Hello Sentry\");
\n

You might need to open the app again for the crash report to be sent to the server.

\n

Performance Monitoring

\n

You can measure the performance of your code by capturing transactions and spans.

\n
// Transaction can be started by providing, at minimum, the name and the operation\nvar transaction = SentrySdk.StartTransaction(\n  \"test-transaction-name\",\n  \"test-transaction-operation\"\n);\n\n// Transactions can have child spans (and those spans can have child spans as well)\nvar span = transaction.StartChild(\"test-child-operation\");\n\n// ...\n// (Perform the operation represented by the span/transaction)\n// ...\n\nspan.Finish(); // Mark the span as finished\ntransaction.Finish(); // Mark the transaction as finished and send it to Sentry
\n

Check out the documentation to learn more about the API and automatic instrumentations.

\n

Documentation

\n

Once you've verified the package is initialized properly and sent a test event, consider visiting our complete Xamarin Forms docs.

\n

Limitations

\n

There are no line numbers on stack traces for UWP and in release builds for Android and iOS.

\n

Samples

\n

You can find an example of a Xamarin Forms app with Sentry integrated on this GitHub repository.

"} diff --git a/public/_platforms/flutter.json b/public/_platforms/flutter.json index 0aedc8cf59df5..306b959ba57a5 100644 --- a/public/_platforms/flutter.json +++ b/public/_platforms/flutter.json @@ -1 +1 @@ -{"key":"flutter","type":"framework","doc_link":"https://docs.sentry.io/platforms/flutter/","name":"Flutter","aliases":[],"categories":["mobile","browser","desktop"],"body":"

Sentry captures data by using an SDK within your application’s runtime. Add the following to your pubspec.yaml:

\n
dependencies:\n  sentry_flutter: ^7.15.0
\n

Import sentry_flutter and initialize it:

\n
import 'package:flutter/widgets.dart';\nimport 'package:sentry_flutter/sentry_flutter.dart';\n\nFuture<void> main() async {\n  await SentryFlutter.init(\n    (options) {\n      options.dsn = '___PUBLIC_DSN___';\n      // Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n      // We recommend adjusting this value in production.\n      options.tracesSampleRate = 1.0;\n    },\n    appRunner: () => runApp(MyApp()),\n  );\n\n  // or define SENTRY_DSN via Dart environment variable (--dart-define)\n}
\n

You can configure the SENTRY_DSN, SENTRY_RELEASE, SENTRY_DIST, and SENTRY_ENVIRONMENT via the Dart environment variables passing the --dart-define flag to the compiler, as noted in the code sample.

\n

Then create an intentional error, so you can test that everything is working:

\n
import 'package:sentry/sentry.dart';\n\ntry {\n  aMethodThatMightFail();\n} catch (exception, stackTrace) {\n  await Sentry.captureException(\n    exception,\n    stackTrace: stackTrace,\n  );\n}
\n

If you're new to Sentry, use the email alert to access your account and complete a product tour.

\n

If you're an existing user and have disabled alerts, you won't receive this email.

\n

Performance

\n

You'll be able to monitor the performance of your app using the SDK.\nFor example:

\n
import 'package:sentry/sentry.dart';\n\nfinal transaction = Sentry.startTransaction('processOrderBatch()', 'task');\n\ntry {\n  await processOrderBatch(transaction);\n} catch (exception) {\n  transaction.throwable = exception;\n  transaction.status = SpanStatus.internalError();\n} finally {\n  await transaction.finish();\n}\n\nFuture<void> processOrderBatch(ISentrySpan span) async {\n  // span operation: task, span description: operation\n  final innerSpan = span.startChild('task', description: 'operation');\n\n  try {\n    // omitted code\n  } catch (exception) {\n    innerSpan.throwable = exception;\n    innerSpan.status = SpanStatus.notFound();\n  } finally {\n    await innerSpan.finish();\n  }\n}
\n

To learn more about the API and automatic instrumentations, check out the performance documentation .

\n

Debug Symbols

\n

We offer a range of methods to provide Sentry with debug symbols so that you can see symbolicated stack traces and triage issues faster.

\n

Complete stack traces will be shown for your Dart error by default, but if you use split-debug-info and obfuscate, you'll need to upload the debug information files generated by the flutter build.

\n

You'll also need to upload the debug information files generated by the flutter build for iOS, macOS, and Android NDK native crashes.

\n

Source Context

\n

If Sentry has access to your application's source code, it can show snippets of code (source context) around the location of stack frames, which helps to quickly pinpoint problematic code.

\n

To enable source context, you'll need to upload debug symbols to Sentry by following the Uploading Source Code Context for Flutter Android, iOS, and macOS guide.

"} \ No newline at end of file +{"key":"flutter","type":"framework","doc_link":"https://docs.sentry.io/platforms/flutter/","name":"Flutter","aliases":[],"categories":["mobile","browser","desktop"],"body":"

Sentry captures data by using an SDK within your application’s runtime. Add the following to your pubspec.yaml:

\n
dependencies:\n  sentry_flutter: ^7.15.0
\n

Import sentry_flutter and initialize it:

\n
import 'package:flutter/widgets.dart';\nimport 'package:sentry_flutter/sentry_flutter.dart';\n\nFuture<void> main() async {\n  await SentryFlutter.init(\n    (options) {\n      options.dsn = '___PUBLIC_DSN___';\n      // Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n      // We recommend adjusting this value in production.\n      options.tracesSampleRate = 1.0;\n    },\n    appRunner: () => runApp(MyApp()),\n  );\n\n  // or define SENTRY_DSN via Dart environment variable (--dart-define)\n}
\n

You can configure the SENTRY_DSN, SENTRY_RELEASE, SENTRY_DIST, and SENTRY_ENVIRONMENT via the Dart environment variables passing the --dart-define flag to the compiler, as noted in the code sample.

\n

Then create an intentional error, so you can test that everything is working:

\n
import 'package:sentry/sentry.dart';\n\ntry {\n  aMethodThatMightFail();\n} catch (exception, stackTrace) {\n  await Sentry.captureException(\n    exception,\n    stackTrace: stackTrace,\n  );\n}
\n

If you're new to Sentry, use the email alert to access your account and complete a product tour.

\n

If you're an existing user and have disabled alerts, you won't receive this email.

\n

Performance

\n

You'll be able to monitor the performance of your app using the SDK.\nFor example:

\n
import 'package:sentry/sentry.dart';\n\nfinal transaction = Sentry.startTransaction('processOrderBatch()', 'task');\n\ntry {\n  await processOrderBatch(transaction);\n} catch (exception) {\n  transaction.throwable = exception;\n  transaction.status = SpanStatus.internalError();\n} finally {\n  await transaction.finish();\n}\n\nFuture<void> processOrderBatch(ISentrySpan span) async {\n  // span operation: task, span description: operation\n  final innerSpan = span.startChild('task', description: 'operation');\n\n  try {\n    // omitted code\n  } catch (exception) {\n    innerSpan.throwable = exception;\n    innerSpan.status = SpanStatus.notFound();\n  } finally {\n    await innerSpan.finish();\n  }\n}
\n

To learn more about the API and automatic instrumentations, check out the performance documentation .

\n

Debug Symbols

\n

We offer a range of methods to provide Sentry with debug symbols so that you can see symbolicated stack traces and triage issues faster.

\n

Complete stack traces will be shown for your Dart error by default, but if you use split-debug-info and obfuscate, you'll need to upload the debug information files generated by the flutter build.

\n

You'll also need to upload the debug information files generated by the flutter build for iOS, macOS, and Android NDK native crashes.

\n

Source Context

\n

If Sentry has access to your application's source code, it can show snippets of code (source context) around the location of stack frames, which helps to quickly pinpoint problematic code.

\n

To enable source context, you'll need to upload debug symbols to Sentry by following the Uploading Source Code Context for Flutter Android, iOS, and macOS guide.

"} diff --git a/public/_platforms/java.json b/public/_platforms/java.json index 2145829455365..71ac9ec47e16f 100644 --- a/public/_platforms/java.json +++ b/public/_platforms/java.json @@ -1 +1 @@ -{"key":"java","type":"language","doc_link":"https://docs.sentry.io/platforms/java/","name":"Java","aliases":[],"categories":["desktop","server"],"body":"\n Sentry for Java is a collection of modules provided by Sentry; it supports Java 1.8 and above. At its core, Sentry for Java provides a raw client for sending events to Sentry. If you use Spring Boot, Spring, Logback, or Log4j2, we recommend visiting our Sentry Java documentation for installation instructions.\n\n

Install

\n

Install the SDK via Gradle, Maven, or SBT:

\n

Gradle

\n

For Gradle, add to your build.gradle file:

\n
// Make sure mavenCentral is there.\nrepositories {\n    mavenCentral()\n}\n\n// Add Sentry's SDK as a dependency.\ndependencies {\n    implementation 'io.sentry:sentry:7.3.0'\n}
\n

To upload your source code to Sentry so it can be shown in stack traces, use our Gradle plugin.

\n
buildscript {\n    repositories {\n        mavenCentral()\n    }\n}\n\nplugins {\n    id \"io.sentry.jvm.gradle\" version \"4.2.0\"\n}\n\nsentry {\n    // Generates a JVM (Java, Kotlin, etc.) source bundle and uploads your source code to Sentry.\n    // This enables source context, allowing you to see your source\n    // code as part of your stack traces in Sentry.\n    includeSourceContext = true\n\n    org = \"___ORG_SLUG___\"\n    projectName = \"___PROJECT_SLUG___\"\n    authToken = \"your-sentry-auth-token\"\n}
\n

Maven

\n

For Maven, add to your pom.xml file:

\n
<dependency>\n    <groupId>io.sentry</groupId>\n    <artifactId>sentry</artifactId>\n    <version>7.3.0</version>\n</dependency>
\n

To upload your source code to Sentry so it can be shown in stack traces, use our Maven plugin.

\n
<build>\n    <plugins>\n        <plugin>\n            <groupId>io.sentry</groupId>\n            <artifactId>sentry-maven-plugin</artifactId>\n            <version>0.0.2</version>\n            <configuration>\n                <!-- for showing output of sentry-cli -->\n                <debugSentryCli>true</debugSentryCli>\n\n                <!-- download the latest sentry-cli and provide path to it here -->\n                <!-- download it here: https://github.com/getsentry/sentry-cli/releases -->\n                <!-- minimum required version is 2.17.3 -->\n                <sentryCliExecutablePath>/path/to/sentry-cli</sentryCliExecutablePath>\n\n                <org>___ORG_SLUG___</org>\n\n                <project>___PROJECT_SLUG___</project>\n\n                <!-- in case you're self hosting, provide the URL here -->\n                <!--<url>http://localhost:8000/</url>-->\n\n                <!-- provide your auth token via SENTRY_AUTH_TOKEN environment variable -->\n                <!-- you can find it in Sentry UI: Settings > Account > API > Auth Tokens -->\n                <authToken>${env.SENTRY_AUTH_TOKEN}</authToken>\n            </configuration>\n            <executions>\n                <execution>\n                    <phase>generate-resources</phase>\n                    <goals>\n                        <goal>uploadSourceBundle</goal>\n                    </goals>\n                </execution>\n            </executions>\n        </plugin>\n    </plugins>\n    ...\n</build>
\n

SBT

\n

For SBT:

\n
libraryDependencies += \"io.sentry\" % \"sentry\" % \"7.3.0\"
\n

To upload your source code to Sentry so it can be shown in stack traces, please refer to Manually Uploading Source Context.

\n

Configure

\n

Configure Sentry as soon as possible in your application's lifecycle:

\n
import io.sentry.Sentry;\n\nSentry.init(options -> {\n  options.setDsn(\"___PUBLIC_DSN___\");\n  // Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n  // We recommend adjusting this value in production.\n  options.setTracesSampleRate(1.0);\n  // When first trying Sentry it's good to see what the SDK is doing:\n  options.setDebug(true);\n});
\n

Send First Event

\n

Trigger your first event from your development environment by intentionally creating an error with the Sentry#captureException method, to test that everything is working:

\n
import java.lang.Exception;\nimport io.sentry.Sentry;\n\ntry {\n  throw new Exception(\"This is a test.\");\n} catch (Exception e) {\n  Sentry.captureException(e);\n}
\n

If you're new to Sentry, use the email alert to access your account and complete a product tour.

\n

If you're an existing user and have disabled alerts, you won't receive this email.

\n

Measure performance

\n

You can capture transactions using the SDK. For example:

\n
import io.sentry.ITransaction;\nimport io.sentry.Sentry;\nimport io.sentry.SpanStatus;\n\n// A good name for the transaction is key, to help identify what this is about\nITransaction transaction = Sentry.startTransaction(\"processOrderBatch()\", \"task\");\ntry {\n  processOrderBatch();\n} catch (Exception e) {\n  transaction.setThrowable(e);\n  transaction.setStatus(SpanStatus.INTERNAL_ERROR);\n  throw e;\n} finally {\n  transaction.finish();\n}
\n

For more information about the API and automatic instrumentations included in the SDK, visit the docs.

"} \ No newline at end of file +{"key":"java","type":"language","doc_link":"https://docs.sentry.io/platforms/java/","name":"Java","aliases":[],"categories":["desktop","server"],"body":"\n Sentry for Java is a collection of modules provided by Sentry; it supports Java 1.8 and above. At its core, Sentry for Java provides a raw client for sending events to Sentry. If you use Spring Boot, Spring, Logback, or Log4j2, we recommend visiting our Sentry Java documentation for installation instructions.\n\n

Install

\n

Install the SDK via Gradle, Maven, or SBT:

\n

Gradle

\n

For Gradle, add to your build.gradle file:

\n
// Make sure mavenCentral is there.\nrepositories {\n    mavenCentral()\n}\n\n// Add Sentry's SDK as a dependency.\ndependencies {\n    implementation 'io.sentry:sentry:7.3.0'\n}
\n

To upload your source code to Sentry so it can be shown in stack traces, use our Gradle plugin.

\n
buildscript {\n    repositories {\n        mavenCentral()\n    }\n}\n\nplugins {\n    id \"io.sentry.jvm.gradle\" version \"4.2.0\"\n}\n\nsentry {\n    // Generates a JVM (Java, Kotlin, etc.) source bundle and uploads your source code to Sentry.\n    // This enables source context, allowing you to see your source\n    // code as part of your stack traces in Sentry.\n    includeSourceContext = true\n\n    org = \"___ORG_SLUG___\"\n    projectName = \"___PROJECT_SLUG___\"\n    authToken = \"your-sentry-auth-token\"\n}
\n

Maven

\n

For Maven, add to your pom.xml file:

\n
<dependency>\n    <groupId>io.sentry</groupId>\n    <artifactId>sentry</artifactId>\n    <version>7.3.0</version>\n</dependency>
\n

To upload your source code to Sentry so it can be shown in stack traces, use our Maven plugin.

\n
<build>\n    <plugins>\n        <plugin>\n            <groupId>io.sentry</groupId>\n            <artifactId>sentry-maven-plugin</artifactId>\n            <version>0.0.2</version>\n            <configuration>\n                <!-- for showing output of sentry-cli -->\n                <debugSentryCli>true</debugSentryCli>\n\n                <!-- download the latest sentry-cli and provide path to it here -->\n                <!-- download it here: https://github.com/getsentry/sentry-cli/releases -->\n                <!-- minimum required version is 2.17.3 -->\n                <sentryCliExecutablePath>/path/to/sentry-cli</sentryCliExecutablePath>\n\n                <org>___ORG_SLUG___</org>\n\n                <project>___PROJECT_SLUG___</project>\n\n                <!-- in case you're self hosting, provide the URL here -->\n                <!--<url>http://localhost:8000/</url>-->\n\n                <!-- provide your auth token via SENTRY_AUTH_TOKEN environment variable -->\n                <!-- you can find it in Sentry UI: Settings > Account > API > Auth Tokens -->\n                <authToken>${env.SENTRY_AUTH_TOKEN}</authToken>\n            </configuration>\n            <executions>\n                <execution>\n                    <phase>generate-resources</phase>\n                    <goals>\n                        <goal>uploadSourceBundle</goal>\n                    </goals>\n                </execution>\n            </executions>\n        </plugin>\n    </plugins>\n    ...\n</build>
\n

SBT

\n

For SBT:

\n
libraryDependencies += \"io.sentry\" % \"sentry\" % \"7.3.0\"
\n

To upload your source code to Sentry so it can be shown in stack traces, please refer to Manually Uploading Source Context.

\n

Configure

\n

Configure Sentry as soon as possible in your application's lifecycle:

\n
import io.sentry.Sentry;\n\nSentry.init(options -> {\n  options.setDsn(\"___PUBLIC_DSN___\");\n  // Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n  // We recommend adjusting this value in production.\n  options.setTracesSampleRate(1.0);\n  // When first trying Sentry it's good to see what the SDK is doing:\n  options.setDebug(true);\n});
\n

Send First Event

\n

Trigger your first event from your development environment by intentionally creating an error with the Sentry#captureException method, to test that everything is working:

\n
import java.lang.Exception;\nimport io.sentry.Sentry;\n\ntry {\n  throw new Exception(\"This is a test.\");\n} catch (Exception e) {\n  Sentry.captureException(e);\n}
\n

If you're new to Sentry, use the email alert to access your account and complete a product tour.

\n

If you're an existing user and have disabled alerts, you won't receive this email.

\n

Measure performance

\n

You can capture transactions using the SDK. For example:

\n
import io.sentry.ITransaction;\nimport io.sentry.Sentry;\nimport io.sentry.SpanStatus;\n\n// A good name for the transaction is key, to help identify what this is about\nITransaction transaction = Sentry.startTransaction(\"processOrderBatch()\", \"task\");\ntry {\n  processOrderBatch();\n} catch (Exception e) {\n  transaction.setThrowable(e);\n  transaction.setStatus(SpanStatus.INTERNAL_ERROR);\n  throw e;\n} finally {\n  transaction.finish();\n}
\n

For more information about the API and automatic instrumentations included in the SDK, visit the docs.

"} diff --git a/public/_platforms/java/spring-boot.json b/public/_platforms/java/spring-boot.json index 3c0272eb60f1f..23b9f092dfff2 100644 --- a/public/_platforms/java/spring-boot.json +++ b/public/_platforms/java/spring-boot.json @@ -1 +1 @@ -{"key":"java.spring-boot","type":"framework","doc_link":"https://docs.sentry.io/platforms/java/guides/spring-boot/","name":"Spring Boot","aliases":[],"categories":["desktop","server"],"body":"\nThere are two variants of Sentry available for Spring Boot. If you're using Spring Boot 2, use `sentry-spring-boot-starter` ([GitHub](https://github.com/getsentry/sentry-java/tree/master/sentry-spring-boot-starter)). If you're using Spring Boot 3, use `sentry-spring-boot-starter-jakarta` instead ([GitHub](https://github.com/getsentry/sentry-java/tree/master/sentry-spring-boot-starter-jakarta)).\n\n\nSentry's integration with Spring Boot supports Spring Boot 2.1.0 and above to report unhandled exceptions as well as release and registration of beans. If you're on an older version, use our legacy integration.\n\n

Install

\n

Install using either Maven or Gradle:

\n

Maven

\n

Spring Boot 2

\n
<dependency>\n    <groupId>io.sentry</groupId>\n    <artifactId>sentry-spring-boot-starter</artifactId>\n    <version>7.3.0</version>\n</dependency>
\n

Spring Boot 3

\n
<dependency>\n    <groupId>io.sentry</groupId>\n    <artifactId>sentry-spring-boot-starter-jakarta</artifactId>\n    <version>7.3.0</version>\n</dependency>
\n

Gradle

\n

Spring Boot 2

\n
implementation 'io.sentry:sentry-spring-boot-starter:7.3.0'
\n

Spring Boot 3

\n
implementation 'io.sentry:sentry-spring-boot-starter-jakarta:7.3.0'
\n

Configure

\n

Open up src/main/application.properties (or src/main/application.yml) and configure the

DSNThe Data Source Name (DSN) key tells the Sentry SDK where to send events, ensuring they go to the right project.
, and any other settings you need:

\n

Modify src/main/application.properties:

\n
sentry.dsn=___PUBLIC_DSN___\n# Set traces-sample-rate to 1.0 to capture 100% of transactions for performance monitoring.\n# We recommend adjusting this value in production.\nsentry.traces-sample-rate=1.0
\n

Or, modify src/main/application.yml:

\n
sentry:\n  dsn: ___PUBLIC_DSN___\n  # Set traces-sample-rate to 1.0 to capture 100% of transactions for performance monitoring.\n  # We recommend adjusting this value in production.\n  traces-sample-rate: 1.0
\n

If you use Logback for logging you may also want to send error logs to Sentry. Add a dependency to the sentry-logback module using either Maven or Gradle. Sentry Spring Boot Starter will auto-configure SentryAppender.

\n

Maven

\n
<dependency>\n    <groupId>io.sentry</groupId>\n    <artifactId>sentry-logback</artifactId>\n    <version>7.3.0</version>\n</dependency>
\n

To upload your source code to Sentry so it can be shown in stack traces, use our Maven plugin.

\n
<build>\n    <plugins>\n        <plugin>\n            <groupId>io.sentry</groupId>\n            <artifactId>sentry-maven-plugin</artifactId>\n            <version>0.0.2</version>\n            <configuration>\n                <!-- for showing output of sentry-cli -->\n                <debugSentryCli>true</debugSentryCli>\n\n                <!-- download the latest sentry-cli and provide path to it here -->\n                <!-- download it here: https://github.com/getsentry/sentry-cli/releases -->\n                <!-- minimum required version is 2.17.3 -->\n                <sentryCliExecutablePath>/path/to/sentry-cli</sentryCliExecutablePath>\n\n                <org>___ORG_SLUG___</org>\n\n                <project>___PROJECT_SLUG___</project>\n\n                <!-- in case you're self hosting, provide the URL here -->\n                <!--<url>http://localhost:8000/</url>-->\n\n                <!-- provide your auth token via SENTRY_AUTH_TOKEN environment variable -->\n                <!-- you can find it in Sentry UI: Settings > Account > API > Auth Tokens -->\n                <authToken>${env.SENTRY_AUTH_TOKEN}</authToken>\n            </configuration>\n            <executions>\n                <execution>\n                    <phase>generate-resources</phase>\n                    <goals>\n                        <goal>uploadSourceBundle</goal>\n                    </goals>\n                </execution>\n            </executions>\n        </plugin>\n    </plugins>\n    ...\n</build>
\n

Gradle

\n
implementation 'io.sentry:sentry-logback:7.3.0'
\n

To upload your source code to Sentry so it can be shown in stack traces, use our Gradle plugin.

\n
buildscript {\n    repositories {\n        mavenCentral()\n    }\n}\n\nplugins {\n    id \"io.sentry.jvm.gradle\" version \"4.2.0\"\n}\n\nsentry {\n    // Generates a JVM (Java, Kotlin, etc.) source bundle and uploads your source code to Sentry.\n    // This enables source context, allowing you to see your source\n    // code as part of your stack traces in Sentry.\n    includeSourceContext = true\n\n    org = \"___ORG_SLUG___\"\n    projectName = \"___PROJECT_SLUG___\"\n    authToken = \"your-sentry-auth-token\"\n}
\n

Send First Event

\n

Then create an intentional error, so you can test that everything is working using either Java or Kotlin:

\n

Java

\n
import java.lang.Exception;\nimport io.sentry.Sentry;\n\ntry {\n  throw new Exception(\"This is a test.\");\n} catch (Exception e) {\n  Sentry.captureException(e);\n}
\n

Kotlin

\n
import java.lang.Exception\nimport io.sentry.Sentry\n\ntry {\n  throw Exception(\"This is a test.\")\n} catch (e: Exception) {\n  Sentry.captureException(e)\n}
\n

If you're new to Sentry, use the email alert to access your account and complete a product tour.

\n

If you're an existing user and have disabled alerts, you won't receive this email.

\n

Measure Performance

\n

Each incoming Spring MVC HTTP request is automatically turned into a transaction. To create spans around bean method executions, annotate bean method with @SentrySpan annotation:

\n

Java

\n
Spring Boot 2
\n
import org.springframework.stereotype.Component;\nimport io.sentry.spring.tracing.SentrySpan;\n\n@Component\nclass PersonService {\n\n  @SentrySpan\n  Person findById(Long id) {\n    ...\n  }\n}
\n
Spring Boot 3
\n
import org.springframework.stereotype.Component;\nimport io.sentry.spring.jakarta.tracing.SentrySpan;\n\n@Component\nclass PersonService {\n\n  @SentrySpan\n  Person findById(Long id) {\n    ...\n  }\n}
\n

Kotlin

\n
Spring Boot 2
\n
import org.springframework.stereotype.Component\nimport io.sentry.spring.tracing.SentrySpan\n\n@Component\nclass PersonService {\n\n  @SentrySpan(operation = \"task\")\n  fun findById(id: Long): Person {\n    ...\n  }\n}
\n
Spring Boot 3
\n
import org.springframework.stereotype.Component\nimport io.sentry.spring.jakarta.tracing.SentrySpan\n\n@Component\nclass PersonService {\n\n  @SentrySpan(operation = \"task\")\n  fun findById(id: Long): Person {\n    ...\n  }\n}
\n

Check out the documentation to learn more about the API and integrated instrumentations.

"} \ No newline at end of file +{"key":"java.spring-boot","type":"framework","doc_link":"https://docs.sentry.io/platforms/java/guides/spring-boot/","name":"Spring Boot","aliases":[],"categories":["desktop","server"],"body":"\nThere are two variants of Sentry available for Spring Boot. If you're using Spring Boot 2, use `sentry-spring-boot-starter` ([GitHub](https://github.com/getsentry/sentry-java/tree/master/sentry-spring-boot-starter)). If you're using Spring Boot 3, use `sentry-spring-boot-starter-jakarta` instead ([GitHub](https://github.com/getsentry/sentry-java/tree/master/sentry-spring-boot-starter-jakarta)).\n\n\nSentry's integration with Spring Boot supports Spring Boot 2.1.0 and above to report unhandled exceptions as well as release and registration of beans. If you're on an older version, use our legacy integration.\n\n

Install

\n

Install using either Maven or Gradle:

\n

Maven

\n

Spring Boot 2

\n
<dependency>\n    <groupId>io.sentry</groupId>\n    <artifactId>sentry-spring-boot-starter</artifactId>\n    <version>7.3.0</version>\n</dependency>
\n

Spring Boot 3

\n
<dependency>\n    <groupId>io.sentry</groupId>\n    <artifactId>sentry-spring-boot-starter-jakarta</artifactId>\n    <version>7.3.0</version>\n</dependency>
\n

Gradle

\n

Spring Boot 2

\n
implementation 'io.sentry:sentry-spring-boot-starter:7.3.0'
\n

Spring Boot 3

\n
implementation 'io.sentry:sentry-spring-boot-starter-jakarta:7.3.0'
\n

Configure

\n

Open up src/main/application.properties (or src/main/application.yml) and configure the

DSNThe Data Source Name (DSN) key tells the Sentry SDK where to send events, ensuring they go to the right project.
, and any other settings you need:

\n

Modify src/main/application.properties:

\n
sentry.dsn=___PUBLIC_DSN___\n# Set traces-sample-rate to 1.0 to capture 100% of transactions for performance monitoring.\n# We recommend adjusting this value in production.\nsentry.traces-sample-rate=1.0
\n

Or, modify src/main/application.yml:

\n
sentry:\n  dsn: ___PUBLIC_DSN___\n  # Set traces-sample-rate to 1.0 to capture 100% of transactions for performance monitoring.\n  # We recommend adjusting this value in production.\n  traces-sample-rate: 1.0
\n

If you use Logback for logging you may also want to send error logs to Sentry. Add a dependency to the sentry-logback module using either Maven or Gradle. Sentry Spring Boot Starter will auto-configure SentryAppender.

\n

Maven

\n
<dependency>\n    <groupId>io.sentry</groupId>\n    <artifactId>sentry-logback</artifactId>\n    <version>7.3.0</version>\n</dependency>
\n

To upload your source code to Sentry so it can be shown in stack traces, use our Maven plugin.

\n
<build>\n    <plugins>\n        <plugin>\n            <groupId>io.sentry</groupId>\n            <artifactId>sentry-maven-plugin</artifactId>\n            <version>0.0.2</version>\n            <configuration>\n                <!-- for showing output of sentry-cli -->\n                <debugSentryCli>true</debugSentryCli>\n\n                <!-- download the latest sentry-cli and provide path to it here -->\n                <!-- download it here: https://github.com/getsentry/sentry-cli/releases -->\n                <!-- minimum required version is 2.17.3 -->\n                <sentryCliExecutablePath>/path/to/sentry-cli</sentryCliExecutablePath>\n\n                <org>___ORG_SLUG___</org>\n\n                <project>___PROJECT_SLUG___</project>\n\n                <!-- in case you're self hosting, provide the URL here -->\n                <!--<url>http://localhost:8000/</url>-->\n\n                <!-- provide your auth token via SENTRY_AUTH_TOKEN environment variable -->\n                <!-- you can find it in Sentry UI: Settings > Account > API > Auth Tokens -->\n                <authToken>${env.SENTRY_AUTH_TOKEN}</authToken>\n            </configuration>\n            <executions>\n                <execution>\n                    <phase>generate-resources</phase>\n                    <goals>\n                        <goal>uploadSourceBundle</goal>\n                    </goals>\n                </execution>\n            </executions>\n        </plugin>\n    </plugins>\n    ...\n</build>
\n

Gradle

\n
implementation 'io.sentry:sentry-logback:7.3.0'
\n

To upload your source code to Sentry so it can be shown in stack traces, use our Gradle plugin.

\n
buildscript {\n    repositories {\n        mavenCentral()\n    }\n}\n\nplugins {\n    id \"io.sentry.jvm.gradle\" version \"4.2.0\"\n}\n\nsentry {\n    // Generates a JVM (Java, Kotlin, etc.) source bundle and uploads your source code to Sentry.\n    // This enables source context, allowing you to see your source\n    // code as part of your stack traces in Sentry.\n    includeSourceContext = true\n\n    org = \"___ORG_SLUG___\"\n    projectName = \"___PROJECT_SLUG___\"\n    authToken = \"your-sentry-auth-token\"\n}
\n

Send First Event

\n

Then create an intentional error, so you can test that everything is working using either Java or Kotlin:

\n

Java

\n
import java.lang.Exception;\nimport io.sentry.Sentry;\n\ntry {\n  throw new Exception(\"This is a test.\");\n} catch (Exception e) {\n  Sentry.captureException(e);\n}
\n

Kotlin

\n
import java.lang.Exception\nimport io.sentry.Sentry\n\ntry {\n  throw Exception(\"This is a test.\")\n} catch (e: Exception) {\n  Sentry.captureException(e)\n}
\n

If you're new to Sentry, use the email alert to access your account and complete a product tour.

\n

If you're an existing user and have disabled alerts, you won't receive this email.

\n

Measure Performance

\n

Each incoming Spring MVC HTTP request is automatically turned into a transaction. To create spans around bean method executions, annotate bean method with @SentrySpan annotation:

\n

Java

\n
Spring Boot 2
\n
import org.springframework.stereotype.Component;\nimport io.sentry.spring.tracing.SentrySpan;\n\n@Component\nclass PersonService {\n\n  @SentrySpan\n  Person findById(Long id) {\n    ...\n  }\n}
\n
Spring Boot 3
\n
import org.springframework.stereotype.Component;\nimport io.sentry.spring.jakarta.tracing.SentrySpan;\n\n@Component\nclass PersonService {\n\n  @SentrySpan\n  Person findById(Long id) {\n    ...\n  }\n}
\n

Kotlin

\n
Spring Boot 2
\n
import org.springframework.stereotype.Component\nimport io.sentry.spring.tracing.SentrySpan\n\n@Component\nclass PersonService {\n\n  @SentrySpan(operation = \"task\")\n  fun findById(id: Long): Person {\n    ...\n  }\n}
\n
Spring Boot 3
\n
import org.springframework.stereotype.Component\nimport io.sentry.spring.jakarta.tracing.SentrySpan\n\n@Component\nclass PersonService {\n\n  @SentrySpan(operation = \"task\")\n  fun findById(id: Long): Person {\n    ...\n  }\n}
\n

Check out the documentation to learn more about the API and integrated instrumentations.

"} diff --git a/public/_platforms/java/spring.json b/public/_platforms/java/spring.json index 577f63ec2a337..13a3d576cb679 100644 --- a/public/_platforms/java/spring.json +++ b/public/_platforms/java/spring.json @@ -1 +1 @@ -{"key":"java.spring","type":"framework","doc_link":"https://https://docs.sentry.io/platforms/java/guides/spring/","name":"Spring","aliases":[],"categories":["desktop","server"],"body":"\n There are two variants of Sentry available for Spring. If you're using Spring 5, use `sentry-spring` ([GitHub](https://github.com/getsentry/sentry-java/tree/master/sentry-spring)). If you're using Spring 6, use `sentry-spring-jakarta` instead ([GitHub](https://github.com/getsentry/sentry-java/tree/master/sentry-spring-jakarta)).\n\n\n Sentry's integration with Spring supports Spring Framework 5.1.2 and above to report unhandled exceptions and optional user information. If you're on an older version, use our legacy integration.\n\n

Install

\n

Install Sentry's integration with Spring using either Maven or Gradle:

\n

Maven:

\n

Spring 5

\n
<dependency>\n    <groupId>io.sentry</groupId>\n    <artifactId>sentry-spring</artifactId>\n    <version>7.3.0</version>\n</dependency>
\n

Spring 6

\n
<dependency>\n    <groupId>io.sentry</groupId>\n    <artifactId>sentry-spring-jakarta</artifactId>\n    <version>7.3.0</version>\n</dependency>
\n

Source Context

\n

To upload your source code to Sentry so it can be shown in stack traces, use our Maven plugin.

\n
<build>\n    <plugins>\n        <plugin>\n            <groupId>io.sentry</groupId>\n            <artifactId>sentry-maven-plugin</artifactId>\n            <version>0.0.2</version>\n            <configuration>\n                <!-- for showing output of sentry-cli -->\n                <debugSentryCli>true</debugSentryCli>\n\n                <!-- download the latest sentry-cli and provide path to it here -->\n                <!-- download it here: https://github.com/getsentry/sentry-cli/releases -->\n                <!-- minimum required version is 2.17.3 -->\n                <sentryCliExecutablePath>/path/to/sentry-cli</sentryCliExecutablePath>\n\n                <org>___ORG_SLUG___</org>\n\n                <project>___PROJECT_SLUG___</project>\n\n                <!-- in case you're self hosting, provide the URL here -->\n                <!--<url>http://localhost:8000/</url>-->\n\n                <!-- provide your auth token via SENTRY_AUTH_TOKEN environment variable -->\n                <!-- you can find it in Sentry UI: Settings > Account > API > Auth Tokens -->\n                <authToken>${env.SENTRY_AUTH_TOKEN}</authToken>\n            </configuration>\n            <executions>\n                <execution>\n                    <phase>generate-resources</phase>\n                    <goals>\n                        <goal>uploadSourceBundle</goal>\n                    </goals>\n                </execution>\n            </executions>\n        </plugin>\n    </plugins>\n    ...\n</build>
\n

Gradle:

\n

Spring 5

\n
implementation 'io.sentry:sentry-spring:7.3.0'
\n

Spring 6

\n
implementation 'io.sentry:sentry-spring-jakarta:7.3.0'
\n

Source Context

\n

To upload your source code to Sentry so it can be shown in stack traces, use our Gradle plugin.

\n
buildscript {\n    repositories {\n        mavenCentral()\n    }\n}\n\nplugins {\n    id \"io.sentry.jvm.gradle\" version \"4.2.0\"\n}\n\nsentry {\n    // Generates a JVM (Java, Kotlin, etc.) source bundle and uploads your source code to Sentry.\n    // This enables source context, allowing you to see your source\n    // code as part of your stack traces in Sentry.\n    includeSourceContext = true\n\n    org = \"___ORG_SLUG___\"\n    projectName = \"___PROJECT_SLUG___\"\n    authToken = \"your-sentry-auth-token\"\n}
\n

For other dependency managers see the central Maven repository (Spring 5) and central Maven repository (Spring 6).

\n

Configure

\n

Configure Sentry as soon as possible in your application's lifecycle:

\n\n

The sentry-spring and sentry-spring-jakarta libraries provide an @EnableSentry annotation that registers all required Spring beans. @EnableSentry can be placed on any class annotated with @Configuration including the main entry class in Spring Boot applications annotated with @SpringBootApplication.

\n
\n

Java

\n

Spring 5

\n
import io.sentry.spring.EnableSentry;\n\n@EnableSentry(dsn = \"___PUBLIC_DSN___\")\n@Configuration\nclass SentryConfiguration {\n}
\n

Spring 6

\n
import io.sentry.spring.jakarta.EnableSentry;\n\n@EnableSentry(dsn = \"___PUBLIC_DSN___\")\n@Configuration\nclass SentryConfiguration {\n}
\n

Kotlin

\n

Spring 5

\n
import io.sentry.spring.EnableSentry\nimport org.springframework.core.Ordered\n\n@EnableSentry(\n  dsn = \"___PUBLIC_DSN___\",\n  exceptionResolverOrder = Ordered.LOWEST_PRECEDENCE\n)
\n

Spring 6

\n
import io.sentry.spring.jakarta.EnableSentry\nimport org.springframework.core.Ordered\n\n@EnableSentry(\n  dsn = \"___PUBLIC_DSN___\",\n  exceptionResolverOrder = Ordered.LOWEST_PRECEDENCE\n)
\n

Last, create an intentional error, so you can test that everything is working:

\n

Java

\n
import java.lang.Exception;\nimport io.sentry.Sentry;\n\ntry {\n  throw new Exception(\"This is a test.\");\n} catch (Exception e) {\n  Sentry.captureException(e);\n}
\n

Kotlin

\n
import java.lang.Exception\nimport io.sentry.Sentry\n\ntry {\n  throw Exception(\"This is a test.\")\n} catch (e: Exception) {\n  Sentry.captureException(e)\n}
\n

If you're new to Sentry, use the email alert to access your account and complete a product tour.

\n

If you're an existing user and have disabled alerts, you won't receive this email.

\n

Measure Performance

\n

Check out the documentation to learn how to configure and use Sentry Performance Monitoring with Spring.

"} \ No newline at end of file +{"key":"java.spring","type":"framework","doc_link":"https://https://docs.sentry.io/platforms/java/guides/spring/","name":"Spring","aliases":[],"categories":["desktop","server"],"body":"\n There are two variants of Sentry available for Spring. If you're using Spring 5, use `sentry-spring` ([GitHub](https://github.com/getsentry/sentry-java/tree/master/sentry-spring)). If you're using Spring 6, use `sentry-spring-jakarta` instead ([GitHub](https://github.com/getsentry/sentry-java/tree/master/sentry-spring-jakarta)).\n\n\n Sentry's integration with Spring supports Spring Framework 5.1.2 and above to report unhandled exceptions and optional user information. If you're on an older version, use our legacy integration.\n\n

Install

\n

Install Sentry's integration with Spring using either Maven or Gradle:

\n

Maven:

\n

Spring 5

\n
<dependency>\n    <groupId>io.sentry</groupId>\n    <artifactId>sentry-spring</artifactId>\n    <version>7.3.0</version>\n</dependency>
\n

Spring 6

\n
<dependency>\n    <groupId>io.sentry</groupId>\n    <artifactId>sentry-spring-jakarta</artifactId>\n    <version>7.3.0</version>\n</dependency>
\n

Source Context

\n

To upload your source code to Sentry so it can be shown in stack traces, use our Maven plugin.

\n
<build>\n    <plugins>\n        <plugin>\n            <groupId>io.sentry</groupId>\n            <artifactId>sentry-maven-plugin</artifactId>\n            <version>0.0.2</version>\n            <configuration>\n                <!-- for showing output of sentry-cli -->\n                <debugSentryCli>true</debugSentryCli>\n\n                <!-- download the latest sentry-cli and provide path to it here -->\n                <!-- download it here: https://github.com/getsentry/sentry-cli/releases -->\n                <!-- minimum required version is 2.17.3 -->\n                <sentryCliExecutablePath>/path/to/sentry-cli</sentryCliExecutablePath>\n\n                <org>___ORG_SLUG___</org>\n\n                <project>___PROJECT_SLUG___</project>\n\n                <!-- in case you're self hosting, provide the URL here -->\n                <!--<url>http://localhost:8000/</url>-->\n\n                <!-- provide your auth token via SENTRY_AUTH_TOKEN environment variable -->\n                <!-- you can find it in Sentry UI: Settings > Account > API > Auth Tokens -->\n                <authToken>${env.SENTRY_AUTH_TOKEN}</authToken>\n            </configuration>\n            <executions>\n                <execution>\n                    <phase>generate-resources</phase>\n                    <goals>\n                        <goal>uploadSourceBundle</goal>\n                    </goals>\n                </execution>\n            </executions>\n        </plugin>\n    </plugins>\n    ...\n</build>
\n

Gradle:

\n

Spring 5

\n
implementation 'io.sentry:sentry-spring:7.3.0'
\n

Spring 6

\n
implementation 'io.sentry:sentry-spring-jakarta:7.3.0'
\n

Source Context

\n

To upload your source code to Sentry so it can be shown in stack traces, use our Gradle plugin.

\n
buildscript {\n    repositories {\n        mavenCentral()\n    }\n}\n\nplugins {\n    id \"io.sentry.jvm.gradle\" version \"4.2.0\"\n}\n\nsentry {\n    // Generates a JVM (Java, Kotlin, etc.) source bundle and uploads your source code to Sentry.\n    // This enables source context, allowing you to see your source\n    // code as part of your stack traces in Sentry.\n    includeSourceContext = true\n\n    org = \"___ORG_SLUG___\"\n    projectName = \"___PROJECT_SLUG___\"\n    authToken = \"your-sentry-auth-token\"\n}
\n

For other dependency managers see the central Maven repository (Spring 5) and central Maven repository (Spring 6).

\n

Configure

\n

Configure Sentry as soon as possible in your application's lifecycle:

\n\n

The sentry-spring and sentry-spring-jakarta libraries provide an @EnableSentry annotation that registers all required Spring beans. @EnableSentry can be placed on any class annotated with @Configuration including the main entry class in Spring Boot applications annotated with @SpringBootApplication.

\n
\n

Java

\n

Spring 5

\n
import io.sentry.spring.EnableSentry;\n\n@EnableSentry(dsn = \"___PUBLIC_DSN___\")\n@Configuration\nclass SentryConfiguration {\n}
\n

Spring 6

\n
import io.sentry.spring.jakarta.EnableSentry;\n\n@EnableSentry(dsn = \"___PUBLIC_DSN___\")\n@Configuration\nclass SentryConfiguration {\n}
\n

Kotlin

\n

Spring 5

\n
import io.sentry.spring.EnableSentry\nimport org.springframework.core.Ordered\n\n@EnableSentry(\n  dsn = \"___PUBLIC_DSN___\",\n  exceptionResolverOrder = Ordered.LOWEST_PRECEDENCE\n)
\n

Spring 6

\n
import io.sentry.spring.jakarta.EnableSentry\nimport org.springframework.core.Ordered\n\n@EnableSentry(\n  dsn = \"___PUBLIC_DSN___\",\n  exceptionResolverOrder = Ordered.LOWEST_PRECEDENCE\n)
\n

Last, create an intentional error, so you can test that everything is working:

\n

Java

\n
import java.lang.Exception;\nimport io.sentry.Sentry;\n\ntry {\n  throw new Exception(\"This is a test.\");\n} catch (Exception e) {\n  Sentry.captureException(e);\n}
\n

Kotlin

\n
import java.lang.Exception\nimport io.sentry.Sentry\n\ntry {\n  throw Exception(\"This is a test.\")\n} catch (e: Exception) {\n  Sentry.captureException(e)\n}
\n

If you're new to Sentry, use the email alert to access your account and complete a product tour.

\n

If you're an existing user and have disabled alerts, you won't receive this email.

\n

Measure Performance

\n

Check out the documentation to learn how to configure and use Sentry Performance Monitoring with Spring.

"} diff --git a/public/_platforms/javascript/angular-with-error-monitoring-and-replay.json b/public/_platforms/javascript/angular-with-error-monitoring-and-replay.json index 910037bb7fb73..68273a407d4bc 100644 --- a/public/_platforms/javascript/angular-with-error-monitoring-and-replay.json +++ b/public/_platforms/javascript/angular-with-error-monitoring-and-replay.json @@ -1 +1 @@ -{"key":"javascript.angular-with-error-monitoring-and-replay","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/angular/","name":"Angular","aliases":[],"categories":[],"body":"

Install

\n

To use Sentry with your Angular application, you'll need @sentry/angular-ivy or @sentry/angular, Sentry’s Browser Angular SDKs:

\n\n

Add the Sentry SDK as a dependency using yarn or npm:

\n
# Using yarn (Angular 12+)\nyarn add @sentry/angular-ivy\n# Using yarn (Angular 10 and 11)\nyarn add @sentry/angular\n\n# Using npm (Angular 12+)\nnpm install --save @sentry/angular-ivy\n# Using npm (Angular 10 and 11)\nnpm install --save @sentry/angular
\n

Configure

\n

You should init the Sentry browser SDK in your main.ts file as soon as possible during application load up, before initializing Angular:

\n
import { enableProdMode } from \"@angular/core\";\nimport { platformBrowserDynamic } from \"@angular/platform-browser-dynamic\";\n// import * as Sentry from \"@sentry/angular\" // for Angular 10/11 instead\nimport * as Sentry from \"@sentry/angular-ivy\";\n\nimport { AppModule } from \"./app/app.module\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [new Sentry.Replay()],\n  // Session Replay\n  replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.\n  replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n});\n\nenableProdMode();\nplatformBrowserDynamic()\n  .bootstrapModule(AppModule)\n  .then((success) => console.log(`Bootstrap success`))\n  .catch((err) => console.error(err));
\n

ErrorHandler

\n

The Sentry Angular SDK exports a function to instantiate ErrorHandler provider that will automatically send JavaScript errors captured by the Angular's error handler.

\n
import { APP_INITIALIZER, ErrorHandler, NgModule } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n// import * as Sentry from \"@sentry/angular\" // for Angular 10/11 instead\nimport * as Sentry from \"@sentry/angular-ivy\";\n\n@NgModule({\n  // ...\n  providers: [\n    {\n      provide: ErrorHandler,\n      useValue: Sentry.createErrorHandler({\n        showDialog: true,\n      }),\n    },\n  ],\n  // ...\n})\nexport class AppModule {}
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
myUndefinedFunction();
\n
\n

Next Steps

\n"} \ No newline at end of file +{"key":"javascript.angular-with-error-monitoring-and-replay","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/angular/","name":"Angular","aliases":[],"categories":[],"body":"

Install

\n

To use Sentry with your Angular application, you'll need @sentry/angular-ivy or @sentry/angular, Sentry’s Browser Angular SDKs:

\n\n

Add the Sentry SDK as a dependency using yarn or npm:

\n
# Using yarn (Angular 12+)\nyarn add @sentry/angular-ivy\n# Using yarn (Angular 10 and 11)\nyarn add @sentry/angular\n\n# Using npm (Angular 12+)\nnpm install --save @sentry/angular-ivy\n# Using npm (Angular 10 and 11)\nnpm install --save @sentry/angular
\n

Configure

\n

You should init the Sentry browser SDK in your main.ts file as soon as possible during application load up, before initializing Angular:

\n
import { enableProdMode } from \"@angular/core\";\nimport { platformBrowserDynamic } from \"@angular/platform-browser-dynamic\";\n// import * as Sentry from \"@sentry/angular\" // for Angular 10/11 instead\nimport * as Sentry from \"@sentry/angular-ivy\";\n\nimport { AppModule } from \"./app/app.module\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [new Sentry.Replay()],\n  // Session Replay\n  replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.\n  replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n});\n\nenableProdMode();\nplatformBrowserDynamic()\n  .bootstrapModule(AppModule)\n  .then((success) => console.log(`Bootstrap success`))\n  .catch((err) => console.error(err));
\n

ErrorHandler

\n

The Sentry Angular SDK exports a function to instantiate ErrorHandler provider that will automatically send JavaScript errors captured by the Angular's error handler.

\n
import { APP_INITIALIZER, ErrorHandler, NgModule } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n// import * as Sentry from \"@sentry/angular\" // for Angular 10/11 instead\nimport * as Sentry from \"@sentry/angular-ivy\";\n\n@NgModule({\n  // ...\n  providers: [\n    {\n      provide: ErrorHandler,\n      useValue: Sentry.createErrorHandler({\n        showDialog: true,\n      }),\n    },\n  ],\n  // ...\n})\nexport class AppModule {}
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
myUndefinedFunction();
\n
\n

Next Steps

\n"} diff --git a/public/_platforms/javascript/angular-with-error-monitoring.json b/public/_platforms/javascript/angular-with-error-monitoring.json index 4c509a0fa4b55..c5a1719d5c63d 100644 --- a/public/_platforms/javascript/angular-with-error-monitoring.json +++ b/public/_platforms/javascript/angular-with-error-monitoring.json @@ -1 +1 @@ -{"key":"javascript.angular-with-error-monitoring","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/angular/","name":"Angular","aliases":[],"categories":[],"body":"

Install

\n

To use Sentry with your Angular application, you'll need @sentry/angular-ivy or @sentry/angular, Sentry’s Browser Angular SDKs:

\n\n

Add the Sentry SDK as a dependency using yarn or npm:

\n
# Using yarn (Angular 12+)\nyarn add @sentry/angular-ivy\n# Using yarn (Angular 10 and 11)\nyarn add @sentry/angular\n\n# Using npm (Angular 12+)\nnpm install --save @sentry/angular-ivy\n# Using npm (Angular 10 and 11)\nnpm install --save @sentry/angular
\n

Configure

\n

You should init the Sentry browser SDK in your main.ts file as soon as possible during application load up, before initializing Angular:

\n
import { enableProdMode } from \"@angular/core\";\nimport { platformBrowserDynamic } from \"@angular/platform-browser-dynamic\";\n// import * as Sentry from \"@sentry/angular\" // for Angular 10/11 instead\nimport * as Sentry from \"@sentry/angular-ivy\";\n\nimport { AppModule } from \"./app/app.module\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n});\n\nenableProdMode();\nplatformBrowserDynamic()\n  .bootstrapModule(AppModule)\n  .then((success) => console.log(`Bootstrap success`))\n  .catch((err) => console.error(err));
\n

ErrorHandler

\n

The Sentry Angular SDK exports a function to instantiate ErrorHandler provider that will automatically send JavaScript errors captured by the Angular's error handler.

\n
import { APP_INITIALIZER, ErrorHandler, NgModule } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n// import * as Sentry from \"@sentry/angular\" // for Angular 10/11 instead\nimport * as Sentry from \"@sentry/angular-ivy\";\n\n@NgModule({\n  // ...\n  providers: [\n    {\n      provide: ErrorHandler,\n      useValue: Sentry.createErrorHandler({\n        showDialog: true,\n      }),\n    },\n  ],\n  // ...\n})\nexport class AppModule {}
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
myUndefinedFunction();
\n
\n

Next Steps

\n"} \ No newline at end of file +{"key":"javascript.angular-with-error-monitoring","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/angular/","name":"Angular","aliases":[],"categories":[],"body":"

Install

\n

To use Sentry with your Angular application, you'll need @sentry/angular-ivy or @sentry/angular, Sentry’s Browser Angular SDKs:

\n\n

Add the Sentry SDK as a dependency using yarn or npm:

\n
# Using yarn (Angular 12+)\nyarn add @sentry/angular-ivy\n# Using yarn (Angular 10 and 11)\nyarn add @sentry/angular\n\n# Using npm (Angular 12+)\nnpm install --save @sentry/angular-ivy\n# Using npm (Angular 10 and 11)\nnpm install --save @sentry/angular
\n

Configure

\n

You should init the Sentry browser SDK in your main.ts file as soon as possible during application load up, before initializing Angular:

\n
import { enableProdMode } from \"@angular/core\";\nimport { platformBrowserDynamic } from \"@angular/platform-browser-dynamic\";\n// import * as Sentry from \"@sentry/angular\" // for Angular 10/11 instead\nimport * as Sentry from \"@sentry/angular-ivy\";\n\nimport { AppModule } from \"./app/app.module\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n});\n\nenableProdMode();\nplatformBrowserDynamic()\n  .bootstrapModule(AppModule)\n  .then((success) => console.log(`Bootstrap success`))\n  .catch((err) => console.error(err));
\n

ErrorHandler

\n

The Sentry Angular SDK exports a function to instantiate ErrorHandler provider that will automatically send JavaScript errors captured by the Angular's error handler.

\n
import { APP_INITIALIZER, ErrorHandler, NgModule } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n// import * as Sentry from \"@sentry/angular\" // for Angular 10/11 instead\nimport * as Sentry from \"@sentry/angular-ivy\";\n\n@NgModule({\n  // ...\n  providers: [\n    {\n      provide: ErrorHandler,\n      useValue: Sentry.createErrorHandler({\n        showDialog: true,\n      }),\n    },\n  ],\n  // ...\n})\nexport class AppModule {}
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
myUndefinedFunction();
\n
\n

Next Steps

\n"} diff --git a/public/_platforms/javascript/ember-with-error-monitoring-and-replay.json b/public/_platforms/javascript/ember-with-error-monitoring-and-replay.json index ad99955832f15..781774156c413 100644 --- a/public/_platforms/javascript/ember-with-error-monitoring-and-replay.json +++ b/public/_platforms/javascript/ember-with-error-monitoring-and-replay.json @@ -1 +1 @@ -{"key":"javascript.ember-with-error-monitoring-and-replay","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/ember/","name":"Ember","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using ember-cli\nember install @sentry/ember
\n

Configure

\n

You should init the Sentry SDK as soon as possible during your application load up in app.js, before initializing Ember:

\n
import Application from \"@ember/application\";\nimport Resolver from \"ember-resolver\";\nimport loadInitializers from \"ember-load-initializers\";\nimport config from \"./config/environment\";\n\nimport * as Sentry from \"@sentry/ember\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [new Sentry.Replay()],\n  // Session Replay\n  replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.\n  replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n});\n\nexport default class App extends Application {\n  modulePrefix = config.modulePrefix;\n  podModulePrefix = config.podModulePrefix;\n  Resolver = Resolver;\n}
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
myUndefinedFunction();
\n
\n

Next Steps

\n"} \ No newline at end of file +{"key":"javascript.ember-with-error-monitoring-and-replay","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/ember/","name":"Ember","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using ember-cli\nember install @sentry/ember
\n

Configure

\n

You should init the Sentry SDK as soon as possible during your application load up in app.js, before initializing Ember:

\n
import Application from \"@ember/application\";\nimport Resolver from \"ember-resolver\";\nimport loadInitializers from \"ember-load-initializers\";\nimport config from \"./config/environment\";\n\nimport * as Sentry from \"@sentry/ember\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [new Sentry.Replay()],\n  // Session Replay\n  replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.\n  replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n});\n\nexport default class App extends Application {\n  modulePrefix = config.modulePrefix;\n  podModulePrefix = config.podModulePrefix;\n  Resolver = Resolver;\n}
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
myUndefinedFunction();
\n
\n

Next Steps

\n"} diff --git a/public/_platforms/javascript/ember-with-error-monitoring.json b/public/_platforms/javascript/ember-with-error-monitoring.json index 90c19c5929620..19aea57e06cc8 100644 --- a/public/_platforms/javascript/ember-with-error-monitoring.json +++ b/public/_platforms/javascript/ember-with-error-monitoring.json @@ -1 +1 @@ -{"key":"javascript.ember-with-error-monitoring","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/ember/","name":"Ember","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using ember-cli\nember install @sentry/ember
\n

Configure

\n

You should init the Sentry SDK as soon as possible during your application load up in app.js, before initializing Ember:

\n
import Application from \"@ember/application\";\nimport Resolver from \"ember-resolver\";\nimport loadInitializers from \"ember-load-initializers\";\nimport config from \"./config/environment\";\n\nimport * as Sentry from \"@sentry/ember\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n});\n\nexport default class App extends Application {\n  modulePrefix = config.modulePrefix;\n  podModulePrefix = config.podModulePrefix;\n  Resolver = Resolver;\n}
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
myUndefinedFunction();
\n
\n

Next Steps

\n"} \ No newline at end of file +{"key":"javascript.ember-with-error-monitoring","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/ember/","name":"Ember","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using ember-cli\nember install @sentry/ember
\n

Configure

\n

You should init the Sentry SDK as soon as possible during your application load up in app.js, before initializing Ember:

\n
import Application from \"@ember/application\";\nimport Resolver from \"ember-resolver\";\nimport loadInitializers from \"ember-load-initializers\";\nimport config from \"./config/environment\";\n\nimport * as Sentry from \"@sentry/ember\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n});\n\nexport default class App extends Application {\n  modulePrefix = config.modulePrefix;\n  podModulePrefix = config.podModulePrefix;\n  Resolver = Resolver;\n}
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
myUndefinedFunction();
\n
\n

Next Steps

\n"} diff --git a/public/_platforms/javascript/gatsby-with-error-monitoring-and-replay.json b/public/_platforms/javascript/gatsby-with-error-monitoring-and-replay.json index bc5b7033874eb..52214e9ed2a93 100644 --- a/public/_platforms/javascript/gatsby-with-error-monitoring-and-replay.json +++ b/public/_platforms/javascript/gatsby-with-error-monitoring-and-replay.json @@ -1 +1 @@ -{"key":"javascript.gatsby-with-error-monitoring-and-replay","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/gatsby/","name":"Gatsby","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/gatsby\n\n# Using npm\nnpm install --save @sentry/gatsby
\n

Configure

\n

Register the @sentry/gatsby plugin in your Gatsby configuration file (typically gatsby-config.js).

\n
module.exports = {\n  plugins: [\n    {\n      resolve: \"@sentry/gatsby\",\n    },\n  ],\n};
\n

Then, configure your Sentry.init:

\n
import * as Sentry from \"@sentry/gatsby\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [new Sentry.Replay()],\n  // Session Replay\n  replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.\n  replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n});
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
myUndefinedFunction();
\n
\n

Next Steps

\n"} \ No newline at end of file +{"key":"javascript.gatsby-with-error-monitoring-and-replay","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/gatsby/","name":"Gatsby","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/gatsby\n\n# Using npm\nnpm install --save @sentry/gatsby
\n

Configure

\n

Register the @sentry/gatsby plugin in your Gatsby configuration file (typically gatsby-config.js).

\n
module.exports = {\n  plugins: [\n    {\n      resolve: \"@sentry/gatsby\",\n    },\n  ],\n};
\n

Then, configure your Sentry.init:

\n
import * as Sentry from \"@sentry/gatsby\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [new Sentry.Replay()],\n  // Session Replay\n  replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.\n  replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n});
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
myUndefinedFunction();
\n
\n

Next Steps

\n"} diff --git a/public/_platforms/javascript/gatsby-with-error-monitoring.json b/public/_platforms/javascript/gatsby-with-error-monitoring.json index 286e7c7874447..20e1f3bc93d4f 100644 --- a/public/_platforms/javascript/gatsby-with-error-monitoring.json +++ b/public/_platforms/javascript/gatsby-with-error-monitoring.json @@ -1 +1 @@ -{"key":"javascript.gatsby-with-error-monitoring","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/gatsby/","name":"Gatsby","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/gatsby\n\n# Using npm\nnpm install --save @sentry/gatsby
\n

Configure

\n

Register the @sentry/gatsby plugin in your Gatsby configuration file (typically gatsby-config.js).

\n
module.exports = {\n  plugins: [\n    {\n      resolve: \"@sentry/gatsby\",\n    },\n  ],\n};
\n

Then, configure your Sentry.init:

\n
import * as Sentry from \"@sentry/gatsby\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n});
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
myUndefinedFunction();
\n
\n

Next Steps

\n"} \ No newline at end of file +{"key":"javascript.gatsby-with-error-monitoring","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/gatsby/","name":"Gatsby","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/gatsby\n\n# Using npm\nnpm install --save @sentry/gatsby
\n

Configure

\n

Register the @sentry/gatsby plugin in your Gatsby configuration file (typically gatsby-config.js).

\n
module.exports = {\n  plugins: [\n    {\n      resolve: \"@sentry/gatsby\",\n    },\n  ],\n};
\n

Then, configure your Sentry.init:

\n
import * as Sentry from \"@sentry/gatsby\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n});
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
myUndefinedFunction();
\n
\n

Next Steps

\n"} diff --git a/public/_platforms/javascript/nextjs-with-error-monitoring-and-replay.json b/public/_platforms/javascript/nextjs-with-error-monitoring-and-replay.json index e00580e75cfae..b0746fad245b7 100644 --- a/public/_platforms/javascript/nextjs-with-error-monitoring-and-replay.json +++ b/public/_platforms/javascript/nextjs-with-error-monitoring-and-replay.json @@ -1 +1 @@ -{"key":"javascript.nextjs-with-error-monitoring-and-replay","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/nextjs/","name":"Next.js","aliases":[],"categories":[],"body":"

Install

\n

Add Sentry automatically to your app with the Sentry wizard:

\n
npx @sentry/wizard -i nextjs
\n

Configure

\n

The Sentry wizard will automatically patch your application:

\n\n

You can also configure it manually.

\n

Configure the Sentry initialization:

\n

Install Sentry’s Next.js SDK using either yarn or npm:

\n
yarn add @sentry/nextjs\n# or\nnpm install --save @sentry/nextjs
\n
Sentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [new Sentry.Replay()],\n  // Session Replay\n  replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.\n  replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n});
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
return <button onClick={() => methodDoesNotExist()}>Break the world</button>;
\n
\n

Next Steps

\n"} \ No newline at end of file +{"key":"javascript.nextjs-with-error-monitoring-and-replay","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/nextjs/","name":"Next.js","aliases":[],"categories":[],"body":"

Install

\n

Add Sentry automatically to your app with the Sentry wizard:

\n
npx @sentry/wizard -i nextjs
\n

Configure

\n

The Sentry wizard will automatically patch your application:

\n\n

You can also configure it manually.

\n

Configure the Sentry initialization:

\n

Install Sentry’s Next.js SDK using either yarn or npm:

\n
yarn add @sentry/nextjs\n# or\nnpm install --save @sentry/nextjs
\n
Sentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [new Sentry.Replay()],\n  // Session Replay\n  replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.\n  replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n});
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
return <button onClick={() => methodDoesNotExist()}>Break the world</button>;
\n
\n

Next Steps

\n"} diff --git a/public/_platforms/javascript/nextjs-with-error-monitoring.json b/public/_platforms/javascript/nextjs-with-error-monitoring.json index 55123258d63e3..6a3143b6ec7e3 100644 --- a/public/_platforms/javascript/nextjs-with-error-monitoring.json +++ b/public/_platforms/javascript/nextjs-with-error-monitoring.json @@ -1 +1 @@ -{"key":"javascript.nextjs-with-error-monitoring","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/nextjs/","name":"Next.js","aliases":[],"categories":[],"body":"

Install

\n

Add Sentry automatically to your app with the Sentry wizard:

\n
npx @sentry/wizard -i nextjs
\n

Configure

\n

The Sentry wizard will automatically patch your application:

\n\n

You can also configure it manually.

\n

Configure the Sentry initialization:

\n

Install Sentry’s Next.js SDK using either yarn or npm:

\n
yarn add @sentry/nextjs\n# or\nnpm install --save @sentry/nextjs
\n
Sentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n});
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
return <button onClick={() => methodDoesNotExist()}>Break the world</button>;
\n
\n

Next Steps

\n"} \ No newline at end of file +{"key":"javascript.nextjs-with-error-monitoring","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/nextjs/","name":"Next.js","aliases":[],"categories":[],"body":"

Install

\n

Add Sentry automatically to your app with the Sentry wizard:

\n
npx @sentry/wizard -i nextjs
\n

Configure

\n

The Sentry wizard will automatically patch your application:

\n\n

You can also configure it manually.

\n

Configure the Sentry initialization:

\n

Install Sentry’s Next.js SDK using either yarn or npm:

\n
yarn add @sentry/nextjs\n# or\nnpm install --save @sentry/nextjs
\n
Sentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n});
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
return <button onClick={() => methodDoesNotExist()}>Break the world</button>;
\n
\n

Next Steps

\n"} diff --git a/public/_platforms/javascript/performance-onboarding-1-install.json b/public/_platforms/javascript/performance-onboarding-1-install.json index 4ea6706a22d8b..8b6541d19959f 100644 --- a/public/_platforms/javascript/performance-onboarding-1-install.json +++ b/public/_platforms/javascript/performance-onboarding-1-install.json @@ -1 +1 @@ -{"key":"javascript.performance-onboarding-1-install","type":"language","doc_link":"https://docs.sentry.io/platforms/javascript/performance/","name":"JavaScript","aliases":[],"categories":[],"body":"

Install

\n

Install our JavaScript browser SDK using either yarn or npm:

\n
# Using yarn\nyarn add @sentry/browser\n\n# Using npm\nnpm install --save @sentry/browser
"} \ No newline at end of file +{"key":"javascript.performance-onboarding-1-install","type":"language","doc_link":"https://docs.sentry.io/platforms/javascript/tracing/","name":"JavaScript","aliases":[],"categories":[],"body":"

Install

\n

Install our JavaScript browser SDK using either yarn or npm:

\n
# Using yarn\nyarn add @sentry/browser\n\n# Using npm\nnpm install --save @sentry/browser
"} diff --git a/public/_platforms/javascript/performance-onboarding-2-configure.json b/public/_platforms/javascript/performance-onboarding-2-configure.json index d75328c422a3e..98e24ec3a6e6f 100644 --- a/public/_platforms/javascript/performance-onboarding-2-configure.json +++ b/public/_platforms/javascript/performance-onboarding-2-configure.json @@ -1 +1 @@ -{"key":"javascript.performance-onboarding-2-configure","type":"language","doc_link":"https://docs.sentry.io/platforms/javascript/performance/","name":"JavaScript","aliases":[],"categories":[],"body":"

Configure

\n

Configuration should happen as early as possible in your application's lifecycle.

\n

Once this is done, Sentry's JavaScript SDK captures all unhandled exceptions and transactions.

\n
import * as Sentry from \"@sentry/browser\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [new Sentry.BrowserTracing()],\n\n  // Set tracesSampleRate to 1.0 to capture 100%\n  // of transactions for performance monitoring.\n  // We recommend adjusting this value in production\n  tracesSampleRate: 1.0,\n  // Set `tracePropagationTargets` to control for which URLs distributed tracing should be enabled\n  tracePropagationTargets: [\"localhost\", /^https:\\/\\/yourserver\\.io\\/api/],\n});
\n

We recommend adjusting the value of tracesSampleRate in production. Learn more about configuring sampling in our full documentation.

"} \ No newline at end of file +{"key":"javascript.performance-onboarding-2-configure","type":"language","doc_link":"https://docs.sentry.io/platforms/javascript/tracing/","name":"JavaScript","aliases":[],"categories":[],"body":"

Configure

\n

Configuration should happen as early as possible in your application's lifecycle.

\n

Once this is done, Sentry's JavaScript SDK captures all unhandled exceptions and transactions.

\n
import * as Sentry from \"@sentry/browser\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [new Sentry.BrowserTracing()],\n\n  // Set tracesSampleRate to 1.0 to capture 100%\n  // of transactions for performance monitoring.\n  // We recommend adjusting this value in production\n  tracesSampleRate: 1.0,\n  // Set `tracePropagationTargets` to control for which URLs distributed tracing should be enabled\n  tracePropagationTargets: [\"localhost\", /^https:\\/\\/yourserver\\.io\\/api/],\n});
\n

We recommend adjusting the value of tracesSampleRate in production. Learn more about configuring sampling in our full documentation.

"} diff --git a/public/_platforms/javascript/performance-onboarding-3-verify.json b/public/_platforms/javascript/performance-onboarding-3-verify.json index 6aa34a4b79c6c..31e4026b8e548 100644 --- a/public/_platforms/javascript/performance-onboarding-3-verify.json +++ b/public/_platforms/javascript/performance-onboarding-3-verify.json @@ -1 +1 @@ -{"key":"javascript.performance-onboarding-3-verify","type":"language","doc_link":"https://docs.sentry.io/platforms/javascript/performance/","name":"JavaScript","aliases":[],"categories":[],"body":"

Verify

\n

Verify that performance monitoring is working correctly with our automatic instrumentation by simply using your JavaScript application.

\n

You have the option to manually construct a transaction using custom instrumentation:

\n
const transaction = Sentry.startTransaction({ name: \"test-transaction\" });\nconst span = transaction.startChild({ op: \"functionX\" }); // This function returns a Span\n// exampleFunctionCall();\nspan.finish(); // Remember that only finished spans will be sent with the transaction\ntransaction.finish(); // Finishing the transaction will send it to Sentry
"} \ No newline at end of file +{"key":"javascript.performance-onboarding-3-verify","type":"language","doc_link":"https://docs.sentry.io/platforms/javascript/tracing/","name":"JavaScript","aliases":[],"categories":[],"body":"

Verify

\n

Verify that performance monitoring is working correctly with our automatic instrumentation by simply using your JavaScript application.

\n

You have the option to manually construct a transaction using custom instrumentation:

\n
const transaction = Sentry.startTransaction({ name: \"test-transaction\" });\nconst span = transaction.startChild({ op: \"functionX\" }); // This function returns a Span\n// exampleFunctionCall();\nspan.finish(); // Remember that only finished spans will be sent with the transaction\ntransaction.finish(); // Finishing the transaction will send it to Sentry
"} diff --git a/public/_platforms/javascript/react-performance-onboarding-1-install.json b/public/_platforms/javascript/react-performance-onboarding-1-install.json index 3a8d8bcf63779..1e6562b72d9f4 100644 --- a/public/_platforms/javascript/react-performance-onboarding-1-install.json +++ b/public/_platforms/javascript/react-performance-onboarding-1-install.json @@ -1 +1 @@ -{"key":"javascript.react-performance-onboarding-1-install","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/performance/","name":"React","aliases":[],"categories":[],"body":"

Install

\n

Install our JavaScript browser SDK using either yarn or npm:

\n
# Using yarn\nyarn add @sentry/react\n\n# Using npm\nnpm install --save @sentry/react
"} \ No newline at end of file +{"key":"javascript.react-performance-onboarding-1-install","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/tracing/","name":"React","aliases":[],"categories":[],"body":"

Install

\n

Install our JavaScript browser SDK using either yarn or npm:

\n
# Using yarn\nyarn add @sentry/react\n\n# Using npm\nnpm install --save @sentry/react
"} diff --git a/public/_platforms/javascript/react-performance-onboarding-2-configure.json b/public/_platforms/javascript/react-performance-onboarding-2-configure.json index 6d5e1f7ccfd24..f9a082b4a3bde 100644 --- a/public/_platforms/javascript/react-performance-onboarding-2-configure.json +++ b/public/_platforms/javascript/react-performance-onboarding-2-configure.json @@ -1 +1 @@ -{"key":"javascript.react-performance-onboarding-2-configure","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/performance/","name":"React","aliases":[],"categories":[],"body":"

Configure

\n

Next, import and initialize the Sentry module as early as possible, before initializing React:

\n
import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport * as Sentry from \"@sentry/react\";\nimport App from \"./App\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [new Sentry.BrowserTracing()],\n\n  // Set tracesSampleRate to 1.0 to capture 100%\n  // of transactions for performance monitoring.\n  // We recommend adjusting this value in production\n  tracesSampleRate: 1.0,\n  // Set `tracePropagationTargets` to control for which URLs distributed tracing should be enabled\n  tracePropagationTargets: [\"localhost\", /^https:\\/\\/yourserver\\.io\\/api/],\n});\n\nReactDOM.render(<App />, document.getElementById(\"root\"));\n\n// Can also use with React Concurrent Mode\n// ReactDOM.createRoot(document.getElementById('root')).render(<App />);
\n

We recommend adjusting the value of tracesSampleRate in production. Learn more about configuring sampling in our full documentation.

"} \ No newline at end of file +{"key":"javascript.react-performance-onboarding-2-configure","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/tracing/","name":"React","aliases":[],"categories":[],"body":"

Configure

\n

Next, import and initialize the Sentry module as early as possible, before initializing React:

\n
import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport * as Sentry from \"@sentry/react\";\nimport App from \"./App\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [new Sentry.BrowserTracing()],\n\n  // Set tracesSampleRate to 1.0 to capture 100%\n  // of transactions for performance monitoring.\n  // We recommend adjusting this value in production\n  tracesSampleRate: 1.0,\n  // Set `tracePropagationTargets` to control for which URLs distributed tracing should be enabled\n  tracePropagationTargets: [\"localhost\", /^https:\\/\\/yourserver\\.io\\/api/],\n});\n\nReactDOM.render(<App />, document.getElementById(\"root\"));\n\n// Can also use with React Concurrent Mode\n// ReactDOM.createRoot(document.getElementById('root')).render(<App />);
\n

We recommend adjusting the value of tracesSampleRate in production. Learn more about configuring sampling in our full documentation.

"} diff --git a/public/_platforms/javascript/react-performance-onboarding-3-verify.json b/public/_platforms/javascript/react-performance-onboarding-3-verify.json index 0c80264717086..8f8036ea28ffb 100644 --- a/public/_platforms/javascript/react-performance-onboarding-3-verify.json +++ b/public/_platforms/javascript/react-performance-onboarding-3-verify.json @@ -1 +1 @@ -{"key":"javascript.react-performance-onboarding-3-verify","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/performance/","name":"React","aliases":[],"categories":[],"body":"

Verify

\n

Verify that performance monitoring is working correctly with our automatic instrumentation by simply using your React application.

\n

You have the option to manually construct a transaction using custom instrumentation:

\n
const transaction = Sentry.startTransaction({ name: \"test-transaction\" });\nconst span = transaction.startChild({ op: \"functionX\" }); // This function returns a Span\n// functionCallX\nspan.finish(); // Remember that only finished spans will be sent with the transaction\ntransaction.finish(); // Finishing the transaction will send it to Sentry
\n

In addition, @sentry/react exports a withProfiler higher order component that can be used to capture React-related spans for specific React components:

\n
import * as Sentry from \"@sentry/react\";\n\nfunction App(props) {\n  // ...\n  return <div />;\n}\n\nexport default Sentry.withProfiler(App);
\n

Learn more about the profiler in React Component Tracking.

"} \ No newline at end of file +{"key":"javascript.react-performance-onboarding-3-verify","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/tracing/","name":"React","aliases":[],"categories":[],"body":"

Verify

\n

Verify that performance monitoring is working correctly with our automatic instrumentation by simply using your React application.

\n

You have the option to manually construct a transaction using custom instrumentation:

\n
const transaction = Sentry.startTransaction({ name: \"test-transaction\" });\nconst span = transaction.startChild({ op: \"functionX\" }); // This function returns a Span\n// functionCallX\nspan.finish(); // Remember that only finished spans will be sent with the transaction\ntransaction.finish(); // Finishing the transaction will send it to Sentry
\n

In addition, @sentry/react exports a withProfiler higher order component that can be used to capture React-related spans for specific React components:

\n
import * as Sentry from \"@sentry/react\";\n\nfunction App(props) {\n  // ...\n  return <div />;\n}\n\nexport default Sentry.withProfiler(App);
\n

Learn more about the profiler in React Component Tracking.

"} diff --git a/public/_platforms/javascript/react-with-error-monitoring-and-replay.json b/public/_platforms/javascript/react-with-error-monitoring-and-replay.json index 58a4f80e43097..54c0cf19857f7 100644 --- a/public/_platforms/javascript/react-with-error-monitoring-and-replay.json +++ b/public/_platforms/javascript/react-with-error-monitoring-and-replay.json @@ -1 +1 @@ -{"key":"javascript.react-with-error-monitoring-and-replay","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/","name":"React","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/react\n\n# Using npm\nnpm install --save @sentry/react
\n

Configure

\n

Initialize Sentry as early as possible in your application's lifecycle.

\n
import { createRoot } React from \"react-dom/client\";\nimport React from \"react\";\nimport * as Sentry from \"@sentry/react\";\nimport App from \"./App\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [new Sentry.Replay()],\n  // Session Replay\n  replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.\n  replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n});\n\nconst container = document.getElementById(“app”);\nconst root = createRoot(container);\nroot.render(<App />)
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
return <button onClick={() => methodDoesNotExist()}>Break the world</button>;
\n
\n

Next Steps

\n"} \ No newline at end of file +{"key":"javascript.react-with-error-monitoring-and-replay","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/","name":"React","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/react\n\n# Using npm\nnpm install --save @sentry/react
\n

Configure

\n

Initialize Sentry as early as possible in your application's lifecycle.

\n
import { createRoot } React from \"react-dom/client\";\nimport React from \"react\";\nimport * as Sentry from \"@sentry/react\";\nimport App from \"./App\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [new Sentry.Replay()],\n  // Session Replay\n  replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.\n  replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n});\n\nconst container = document.getElementById(“app”);\nconst root = createRoot(container);\nroot.render(<App />)
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
return <button onClick={() => methodDoesNotExist()}>Break the world</button>;
\n
\n

Next Steps

\n"} diff --git a/public/_platforms/javascript/react-with-error-monitoring.json b/public/_platforms/javascript/react-with-error-monitoring.json index 6caf87d18111f..4de9eeb105358 100644 --- a/public/_platforms/javascript/react-with-error-monitoring.json +++ b/public/_platforms/javascript/react-with-error-monitoring.json @@ -1 +1 @@ -{"key":"javascript.react-with-error-monitoring","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/","name":"React","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/react\n\n# Using npm\nnpm install --save @sentry/react
\n

Configure

\n

Initialize Sentry as early as possible in your application's lifecycle.

\n
import { createRoot } React from \"react-dom/client\";\nimport React from \"react\";\nimport * as Sentry from \"@sentry/react\";\nimport App from \"./App\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n});\n\nconst container = document.getElementById(“app”);\nconst root = createRoot(container);\nroot.render(<App />)
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
return <button onClick={() => methodDoesNotExist()}>Break the world</button>;
\n
\n

Next Steps

\n"} \ No newline at end of file +{"key":"javascript.react-with-error-monitoring","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/","name":"React","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/react\n\n# Using npm\nnpm install --save @sentry/react
\n

Configure

\n

Initialize Sentry as early as possible in your application's lifecycle.

\n
import { createRoot } React from \"react-dom/client\";\nimport React from \"react\";\nimport * as Sentry from \"@sentry/react\";\nimport App from \"./App\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n});\n\nconst container = document.getElementById(“app”);\nconst root = createRoot(container);\nroot.render(<App />)
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
return <button onClick={() => methodDoesNotExist()}>Break the world</button>;
\n
\n

Next Steps

\n"} diff --git a/public/_platforms/javascript/react.json b/public/_platforms/javascript/react.json index eb8cbf58ed52b..ce06dbfd88e1a 100644 --- a/public/_platforms/javascript/react.json +++ b/public/_platforms/javascript/react.json @@ -1 +1 @@ -{"key":"javascript.react","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/","name":"React","aliases":[],"categories":["browser"],"body":"

In this quick guide you’ll set up @sentry/react for error monitoring and performance monitoring

\n
\n

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/react\n\n# Using npm\nnpm install --save @sentry/react
\n

Configure

\n

Initialize Sentry as early as possible in your application's lifecycle.

\n
import { createRoot } from \"react-dom/client\";\nimport React from \"react\";\nimport * as Sentry from \"@sentry/react\";\nimport App from \"./App\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [\n    new Sentry.BrowserTracing(),\n  ],\n  tracesSampleRate: 1.0,\n  // Set `tracePropagationTargets` to control for which URLs distributed tracing should be enabled\n  tracePropagationTargets: [\"localhost\", /^https:\\/\\/yourserver\\.io\\/api/],\n});\n\nconst container = document.getElementById(“app”);\nconst root = createRoot(container);\nroot.render(<App />);
\n
\n

tracesSampleRate: 1.0\nThe above setting ensures that 100% of transactions will be sent to Sentry, but we recommend lowering this number in production.

\n
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
return <button onClick={() => methodDoesNotExist()}>Break the world</button>;
\n
\n

Next Steps

\n"} \ No newline at end of file +{"key":"javascript.react","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/react/","name":"React","aliases":[],"categories":["browser"],"body":"

In this quick guide you’ll set up @sentry/react for error monitoring and performance monitoring

\n
\n

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/react\n\n# Using npm\nnpm install --save @sentry/react
\n

Configure

\n

Initialize Sentry as early as possible in your application's lifecycle.

\n
import { createRoot } from \"react-dom/client\";\nimport React from \"react\";\nimport * as Sentry from \"@sentry/react\";\nimport App from \"./App\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [\n    new Sentry.BrowserTracing(),\n  ],\n  tracesSampleRate: 1.0,\n  // Set `tracePropagationTargets` to control for which URLs distributed tracing should be enabled\n  tracePropagationTargets: [\"localhost\", /^https:\\/\\/yourserver\\.io\\/api/],\n});\n\nconst container = document.getElementById(“app”);\nconst root = createRoot(container);\nroot.render(<App />);
\n
\n

tracesSampleRate: 1.0\nThe above setting ensures that 100% of transactions will be sent to Sentry, but we recommend lowering this number in production.

\n
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
return <button onClick={() => methodDoesNotExist()}>Break the world</button>;
\n
\n

Next Steps

\n"} diff --git a/public/_platforms/javascript/remix-with-error-monitoring-and-replay.json b/public/_platforms/javascript/remix-with-error-monitoring-and-replay.json index a058802547edf..ad96fc30b7553 100644 --- a/public/_platforms/javascript/remix-with-error-monitoring-and-replay.json +++ b/public/_platforms/javascript/remix-with-error-monitoring-and-replay.json @@ -1 +1 @@ -{"key":"javascript.remix-with-error-monitoring-and-replay","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/remix/","name":"Remix","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/remix\n\n# Using npm\nnpm install --save @sentry/remix
\n

Configure

\n

Import and initialize Sentry in your Remix entry points for both the client and server:

\n
import { useLocation, useMatches } from \"@remix-run/react\";\nimport * as Sentry from \"@sentry/remix\";\nimport { useEffect } from \"react\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [new Sentry.Replay()],\n  // Session Replay\n  replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.\n  replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n});
\n

Initialize Sentry in your entry point for the server to capture exceptions and get performance metrics for your action and loader functions:

\n
import * as Sentry from \"@sentry/remix\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n});
\n

Lastly, wrap your Remix root with withSentry to catch React component errors and to get parameterized router transactions:

\n
import {\n  Links,\n  LiveReload,\n  Meta,\n  Outlet,\n  Scripts,\n  ScrollRestoration,\n} from \"@remix-run/react\";\n\nimport { withSentry } from \"@sentry/remix\";\n\nfunction App() {\n  return (\n    <html>\n      <head>\n        <Meta />\n        <Links />\n      </head>\n      <body>\n        <Outlet />\n        <ScrollRestoration />\n        <Scripts />\n        <LiveReload />\n      </body>\n    </html>\n  );\n}\n\nexport default withSentry(App);
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n

You can trigger your first event from your development environment by raising an exception somewhere within your application. An example of this would be rendering a button whose onClick handler attempts to invoke a method that does not exist:

\n
<button onClick={() => methodDoesNotExist()}>Break the world</button>
\n
\n

Next Steps

\n"} \ No newline at end of file +{"key":"javascript.remix-with-error-monitoring-and-replay","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/remix/","name":"Remix","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/remix\n\n# Using npm\nnpm install --save @sentry/remix
\n

Configure

\n

Import and initialize Sentry in your Remix entry points for both the client and server:

\n
import { useLocation, useMatches } from \"@remix-run/react\";\nimport * as Sentry from \"@sentry/remix\";\nimport { useEffect } from \"react\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [new Sentry.Replay()],\n  // Session Replay\n  replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.\n  replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n});
\n

Initialize Sentry in your entry point for the server to capture exceptions and get performance metrics for your action and loader functions:

\n
import * as Sentry from \"@sentry/remix\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n});
\n

Lastly, wrap your Remix root with withSentry to catch React component errors and to get parameterized router transactions:

\n
import {\n  Links,\n  LiveReload,\n  Meta,\n  Outlet,\n  Scripts,\n  ScrollRestoration,\n} from \"@remix-run/react\";\n\nimport { withSentry } from \"@sentry/remix\";\n\nfunction App() {\n  return (\n    <html>\n      <head>\n        <Meta />\n        <Links />\n      </head>\n      <body>\n        <Outlet />\n        <ScrollRestoration />\n        <Scripts />\n        <LiveReload />\n      </body>\n    </html>\n  );\n}\n\nexport default withSentry(App);
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n

You can trigger your first event from your development environment by raising an exception somewhere within your application. An example of this would be rendering a button whose onClick handler attempts to invoke a method that does not exist:

\n
<button onClick={() => methodDoesNotExist()}>Break the world</button>
\n
\n

Next Steps

\n"} diff --git a/public/_platforms/javascript/remix-with-error-monitoring.json b/public/_platforms/javascript/remix-with-error-monitoring.json index 078dbc297f8d3..cf08b87b3bfde 100644 --- a/public/_platforms/javascript/remix-with-error-monitoring.json +++ b/public/_platforms/javascript/remix-with-error-monitoring.json @@ -1 +1 @@ -{"key":"javascript.remix-with-error-monitoring","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/remix/","name":"Remix","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/remix\n\n# Using npm\nnpm install --save @sentry/remix
\n

Configure

\n

Import and initialize Sentry in your Remix entry points for both the client and server:

\n
import { useLocation, useMatches } from \"@remix-run/react\";\nimport * as Sentry from \"@sentry/remix\";\nimport { useEffect } from \"react\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n});
\n

Initialize Sentry in your entry point for the server to capture exceptions and get performance metrics for your action and loader functions:

\n
import * as Sentry from \"@sentry/remix\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n});
\n

Lastly, wrap your Remix root with withSentry to catch React component errors and to get parameterized router transactions:

\n
import {\n  Links,\n  LiveReload,\n  Meta,\n  Outlet,\n  Scripts,\n  ScrollRestoration,\n} from \"@remix-run/react\";\n\nimport { withSentry } from \"@sentry/remix\";\n\nfunction App() {\n  return (\n    <html>\n      <head>\n        <Meta />\n        <Links />\n      </head>\n      <body>\n        <Outlet />\n        <ScrollRestoration />\n        <Scripts />\n        <LiveReload />\n      </body>\n    </html>\n  );\n}\n\nexport default withSentry(App);
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n

You can trigger your first event from your development environment by raising an exception somewhere within your application. An example of this would be rendering a button whose onClick handler attempts to invoke a method that does not exist:

\n
return <button onClick={() => methodDoesNotExist()}>Break the world</button>;
\n
\n

Next Steps

\n"} \ No newline at end of file +{"key":"javascript.remix-with-error-monitoring","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/remix/","name":"Remix","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/remix\n\n# Using npm\nnpm install --save @sentry/remix
\n

Configure

\n

Import and initialize Sentry in your Remix entry points for both the client and server:

\n
import { useLocation, useMatches } from \"@remix-run/react\";\nimport * as Sentry from \"@sentry/remix\";\nimport { useEffect } from \"react\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n});
\n

Initialize Sentry in your entry point for the server to capture exceptions and get performance metrics for your action and loader functions:

\n
import * as Sentry from \"@sentry/remix\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n});
\n

Lastly, wrap your Remix root with withSentry to catch React component errors and to get parameterized router transactions:

\n
import {\n  Links,\n  LiveReload,\n  Meta,\n  Outlet,\n  Scripts,\n  ScrollRestoration,\n} from \"@remix-run/react\";\n\nimport { withSentry } from \"@sentry/remix\";\n\nfunction App() {\n  return (\n    <html>\n      <head>\n        <Meta />\n        <Links />\n      </head>\n      <body>\n        <Outlet />\n        <ScrollRestoration />\n        <Scripts />\n        <LiveReload />\n      </body>\n    </html>\n  );\n}\n\nexport default withSentry(App);
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n

You can trigger your first event from your development environment by raising an exception somewhere within your application. An example of this would be rendering a button whose onClick handler attempts to invoke a method that does not exist:

\n
return <button onClick={() => methodDoesNotExist()}>Break the world</button>;
\n
\n

Next Steps

\n"} diff --git a/public/_platforms/javascript/svelte-with-error-monitoring-and-replay.json b/public/_platforms/javascript/svelte-with-error-monitoring-and-replay.json index 917e70d43631a..328d9a4d24058 100644 --- a/public/_platforms/javascript/svelte-with-error-monitoring-and-replay.json +++ b/public/_platforms/javascript/svelte-with-error-monitoring-and-replay.json @@ -1 +1 @@ -{"key":"javascript.svelte-with-error-monitoring-and-replay","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/svelte/","name":"Svelte","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/svelte\n\n# Using npm\nnpm install --save @sentry/svelte
\n

Configure

\n

Initialize Sentry as early as possible in your application's lifecycle, usually your Svelte app's entry point (main.ts/js):

\n
import \"./app.css\";\nimport App from \"./App.svelte\";\n\nimport * as Sentry from \"@sentry/svelte\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [new Sentry.Replay()],\n  // Session Replay\n  replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.\n  replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n});\n\nconst app = new App({\n  target: document.getElementById(\"app\"),\n});\n\nexport default app;
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
// SomeComponent.svelte\n<button type=\"button\" on:click=\"{unknownFunction}\">Break the world</button>
\n
\n

Next Steps

\n"} \ No newline at end of file +{"key":"javascript.svelte-with-error-monitoring-and-replay","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/svelte/","name":"Svelte","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/svelte\n\n# Using npm\nnpm install --save @sentry/svelte
\n

Configure

\n

Initialize Sentry as early as possible in your application's lifecycle, usually your Svelte app's entry point (main.ts/js):

\n
import \"./app.css\";\nimport App from \"./App.svelte\";\n\nimport * as Sentry from \"@sentry/svelte\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [new Sentry.Replay()],\n  // Session Replay\n  replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.\n  replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n});\n\nconst app = new App({\n  target: document.getElementById(\"app\"),\n});\n\nexport default app;
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
// SomeComponent.svelte\n<button type=\"button\" on:click=\"{unknownFunction}\">Break the world</button>
\n
\n

Next Steps

\n"} diff --git a/public/_platforms/javascript/svelte-with-error-monitoring.json b/public/_platforms/javascript/svelte-with-error-monitoring.json index 9c734d5e8517f..99fbb5e684204 100644 --- a/public/_platforms/javascript/svelte-with-error-monitoring.json +++ b/public/_platforms/javascript/svelte-with-error-monitoring.json @@ -1 +1 @@ -{"key":"javascript.svelte-with-error-monitoring","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/svelte/","name":"Svelte","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/svelte\n\n# Using npm\nnpm install --save @sentry/svelte
\n

Configure

\n

Initialize Sentry as early as possible in your application's lifecycle, usually your Svelte app's entry point (main.ts/js):

\n
import \"./app.css\";\nimport App from \"./App.svelte\";\n\nimport * as Sentry from \"@sentry/svelte\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n});\n\nconst app = new App({\n  target: document.getElementById(\"app\"),\n});\n\nexport default app;
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
// SomeComponent.svelte\n<button type=\"button\" on:click=\"{unknownFunction}\">Break the world</button>
\n
\n

Next Steps

\n"} \ No newline at end of file +{"key":"javascript.svelte-with-error-monitoring","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/svelte/","name":"Svelte","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/svelte\n\n# Using npm\nnpm install --save @sentry/svelte
\n

Configure

\n

Initialize Sentry as early as possible in your application's lifecycle, usually your Svelte app's entry point (main.ts/js):

\n
import \"./app.css\";\nimport App from \"./App.svelte\";\n\nimport * as Sentry from \"@sentry/svelte\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n});\n\nconst app = new App({\n  target: document.getElementById(\"app\"),\n});\n\nexport default app;
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
// SomeComponent.svelte\n<button type=\"button\" on:click=\"{unknownFunction}\">Break the world</button>
\n
\n

Next Steps

\n"} diff --git a/public/_platforms/javascript/sveltekit-with-error-monitoring-and-replay.json b/public/_platforms/javascript/sveltekit-with-error-monitoring-and-replay.json index 55007a1192530..d4b701a63f06b 100644 --- a/public/_platforms/javascript/sveltekit-with-error-monitoring-and-replay.json +++ b/public/_platforms/javascript/sveltekit-with-error-monitoring-and-replay.json @@ -1 +1 @@ -{"key":"javascript.sveltekit-with-error-monitoring-and-replay","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/sveltekit/","name":"SvelteKit","aliases":[],"categories":[],"body":"

Install

\n

Configure your app automatically with the Sentry wizard.

\n
npx @sentry/wizard -i sveltekit
\n

Configure

\n

The Sentry wizard will automatically patch your application to configure the Sentry SDK:

\n\n

Alternatively, you can also set up the SDK manually.

\n

Configure the Sentry SDK:

\n

To configure the Sentry SDK, edit the Sentry.init options in hooks.client.(js|ts):

\n
import * as Sentry from \"@sentry/sveltekit\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  // Session Replay\n  integrations: [new Sentry.Replay()],\n  replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.\n  replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n});
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
<!-- +page.svelte -->\n<button type=\"button\" on:click={unknownFunction}>Break the world</button>
\n
\n

Next Steps

\n"} \ No newline at end of file +{"key":"javascript.sveltekit-with-error-monitoring-and-replay","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/sveltekit/","name":"SvelteKit","aliases":[],"categories":[],"body":"

Install

\n

Configure your app automatically with the Sentry wizard.

\n
npx @sentry/wizard -i sveltekit
\n

Configure

\n

The Sentry wizard will automatically patch your application to configure the Sentry SDK:

\n\n

Alternatively, you can also set up the SDK manually.

\n

Configure the Sentry SDK:

\n

To configure the Sentry SDK, edit the Sentry.init options in hooks.client.(js|ts):

\n
import * as Sentry from \"@sentry/sveltekit\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  // Session Replay\n  integrations: [new Sentry.Replay()],\n  replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.\n  replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n});
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
<!-- +page.svelte -->\n<button type=\"button\" on:click={unknownFunction}>Break the world</button>
\n
\n

Next Steps

\n"} diff --git a/public/_platforms/javascript/sveltekit-with-error-monitoring.json b/public/_platforms/javascript/sveltekit-with-error-monitoring.json index af772e9593b41..f3e7aed7b273f 100644 --- a/public/_platforms/javascript/sveltekit-with-error-monitoring.json +++ b/public/_platforms/javascript/sveltekit-with-error-monitoring.json @@ -1 +1 @@ -{"key":"javascript.sveltekit-with-error-monitoring","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/sveltekit/","name":"SvelteKit","aliases":[],"categories":[],"body":"

Install

\n

Configure your app automatically with the Sentry wizard.

\n
npx @sentry/wizard -i sveltekit
\n

Configure

\n

The Sentry wizard will automatically patch your application to configure the Sentry SDK:

\n\n

Alternatively, you can also set up the SDK manually.

\n

Configure the Sentry SDK:

\n

To configure the Sentry SDK, edit the Sentry.init options in hooks.(client|server).(js|ts):

\n
import * as Sentry from \"@sentry/sveltekit\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n});
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
<!-- +page.svelte -->\n<button type=\"button\" on:click={unknownFunction}>Break the world</button>
\n
\n

Next Steps

\n"} \ No newline at end of file +{"key":"javascript.sveltekit-with-error-monitoring","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/sveltekit/","name":"SvelteKit","aliases":[],"categories":[],"body":"

Install

\n

Configure your app automatically with the Sentry wizard.

\n
npx @sentry/wizard -i sveltekit
\n

Configure

\n

The Sentry wizard will automatically patch your application to configure the Sentry SDK:

\n\n

Alternatively, you can also set up the SDK manually.

\n

Configure the Sentry SDK:

\n

To configure the Sentry SDK, edit the Sentry.init options in hooks.(client|server).(js|ts):

\n
import * as Sentry from \"@sentry/sveltekit\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n});
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
<!-- +page.svelte -->\n<button type=\"button\" on:click={unknownFunction}>Break the world</button>
\n
\n

Next Steps

\n"} diff --git a/public/_platforms/javascript/vue-with-error-monitoring-and-replay.json b/public/_platforms/javascript/vue-with-error-monitoring-and-replay.json index f6b598a62f938..4519955fd26ba 100644 --- a/public/_platforms/javascript/vue-with-error-monitoring-and-replay.json +++ b/public/_platforms/javascript/vue-with-error-monitoring-and-replay.json @@ -1 +1 @@ -{"key":"javascript.vue-with-error-monitoring-and-replay","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/vue/","name":"Vue","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/vue\n\n# Using npm\nnpm install --save @sentry/vue
\n

Configure

\n

Initialize Sentry as early as possible in your application's lifecycle.

\n

Vue 2

\n
import Vue from \"vue\";\nimport Router from \"vue-router\";\nimport * as Sentry from \"@sentry/vue\";\n\nVue.use(Router);\n\nconst router = new Router({\n  // ...\n});\n\nSentry.init({\n  Vue,\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [new Sentry.Replay()],\n  // Session Replay\n  replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.\n  replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n});\n\n// ...\n\nnew Vue({\n  router,\n  render: (h) => h(App),\n}).$mount(\"#app\");
\n

Vue 3

\n
import { createApp } from \"vue\";\nimport { createRouter } from \"vue-router\";\nimport * as Sentry from \"@sentry/vue\";\n\nconst app = createApp({\n  // ...\n});\nconst router = createRouter({\n  // ...\n});\n\nSentry.init({\n  app,\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [new Sentry.Replay()],\n  // Session Replay\n  replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.\n  replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n});\n\napp.use(router);\napp.mount(\"#app\");
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
myUndefinedFunction();
\n
\n

Next Steps

\n"} \ No newline at end of file +{"key":"javascript.vue-with-error-monitoring-and-replay","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/vue/","name":"Vue","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/vue\n\n# Using npm\nnpm install --save @sentry/vue
\n

Configure

\n

Initialize Sentry as early as possible in your application's lifecycle.

\n

Vue 2

\n
import Vue from \"vue\";\nimport Router from \"vue-router\";\nimport * as Sentry from \"@sentry/vue\";\n\nVue.use(Router);\n\nconst router = new Router({\n  // ...\n});\n\nSentry.init({\n  Vue,\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [new Sentry.Replay()],\n  // Session Replay\n  replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.\n  replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n});\n\n// ...\n\nnew Vue({\n  router,\n  render: (h) => h(App),\n}).$mount(\"#app\");
\n

Vue 3

\n
import { createApp } from \"vue\";\nimport { createRouter } from \"vue-router\";\nimport * as Sentry from \"@sentry/vue\";\n\nconst app = createApp({\n  // ...\n});\nconst router = createRouter({\n  // ...\n});\n\nSentry.init({\n  app,\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [new Sentry.Replay()],\n  // Session Replay\n  replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.\n  replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n});\n\napp.use(router);\napp.mount(\"#app\");
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
myUndefinedFunction();
\n
\n

Next Steps

\n"} diff --git a/public/_platforms/javascript/vue-with-error-monitoring.json b/public/_platforms/javascript/vue-with-error-monitoring.json index 4d23a3f848a28..da0e2ce23ca84 100644 --- a/public/_platforms/javascript/vue-with-error-monitoring.json +++ b/public/_platforms/javascript/vue-with-error-monitoring.json @@ -1 +1 @@ -{"key":"javascript.vue-with-error-monitoring","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/vue/","name":"Vue","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/vue\n\n# Using npm\nnpm install --save @sentry/vue
\n

Configure

\n

Initialize Sentry as early as possible in your application's lifecycle.

\n

Vue 2

\n
import Vue from \"vue\";\nimport Router from \"vue-router\";\nimport * as Sentry from \"@sentry/vue\";\n\nVue.use(Router);\n\nconst router = new Router({\n  // ...\n});\n\nSentry.init({\n  Vue,\n  dsn: \"___PUBLIC_DSN___\",\n});\n\n// ...\n\nnew Vue({\n  router,\n  render: (h) => h(App),\n}).$mount(\"#app\");
\n

Vue 3

\n
import { createApp } from \"vue\";\nimport { createRouter } from \"vue-router\";\nimport * as Sentry from \"@sentry/vue\";\n\nconst app = createApp({\n  // ...\n});\nconst router = createRouter({\n  // ...\n});\n\nSentry.init({\n  app,\n  dsn: \"___PUBLIC_DSN___\",\n});\n\napp.use(router);\napp.mount(\"#app\");
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
myUndefinedFunction();
\n
\n

Next Steps

\n"} \ No newline at end of file +{"key":"javascript.vue-with-error-monitoring","type":"framework","doc_link":"https://docs.sentry.io/platforms/javascript/guides/vue/","name":"Vue","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/vue\n\n# Using npm\nnpm install --save @sentry/vue
\n

Configure

\n

Initialize Sentry as early as possible in your application's lifecycle.

\n

Vue 2

\n
import Vue from \"vue\";\nimport Router from \"vue-router\";\nimport * as Sentry from \"@sentry/vue\";\n\nVue.use(Router);\n\nconst router = new Router({\n  // ...\n});\n\nSentry.init({\n  Vue,\n  dsn: \"___PUBLIC_DSN___\",\n});\n\n// ...\n\nnew Vue({\n  router,\n  render: (h) => h(App),\n}).$mount(\"#app\");
\n

Vue 3

\n
import { createApp } from \"vue\";\nimport { createRouter } from \"vue-router\";\nimport * as Sentry from \"@sentry/vue\";\n\nconst app = createApp({\n  // ...\n});\nconst router = createRouter({\n  // ...\n});\n\nSentry.init({\n  app,\n  dsn: \"___PUBLIC_DSN___\",\n});\n\napp.use(router);\napp.mount(\"#app\");
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
myUndefinedFunction();
\n
\n

Next Steps

\n"} diff --git a/public/_platforms/javascript/with-error-monitoring-and-replay.json b/public/_platforms/javascript/with-error-monitoring-and-replay.json index 71abc393d9bc6..91ab2863fcdb3 100644 --- a/public/_platforms/javascript/with-error-monitoring-and-replay.json +++ b/public/_platforms/javascript/with-error-monitoring-and-replay.json @@ -1 +1 @@ -{"key":"javascript.with-error-monitoring-and-replay","type":"language","doc_link":"https://docs.sentry.io/platforms/javascript/","name":"Browser JavaScript","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/browser\n# Using npm\nnpm install --save @sentry/browser
\n

Configure

\n

Initialize Sentry as early as possible in your application's lifecycle.

\n
import * as Sentry from \"@sentry/browser\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [new Sentry.Replay()],\n  // Session Replay\n  replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.\n  replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n});
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
myUndefinedFunction();
\n
\n

Next Steps

\n"} \ No newline at end of file +{"key":"javascript.with-error-monitoring-and-replay","type":"language","doc_link":"https://docs.sentry.io/platforms/javascript/","name":"Browser JavaScript","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/browser\n# Using npm\nnpm install --save @sentry/browser
\n

Configure

\n

Initialize Sentry as early as possible in your application's lifecycle.

\n
import * as Sentry from \"@sentry/browser\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  integrations: [new Sentry.Replay()],\n  // Session Replay\n  replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.\n  replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n});
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
myUndefinedFunction();
\n
\n

Next Steps

\n"} diff --git a/public/_platforms/javascript/with-error-monitoring.json b/public/_platforms/javascript/with-error-monitoring.json index d3c93a0e39293..88347f61f7338 100644 --- a/public/_platforms/javascript/with-error-monitoring.json +++ b/public/_platforms/javascript/with-error-monitoring.json @@ -1 +1 @@ -{"key":"javascript.with-error-monitoring","type":"language","doc_link":"https://docs.sentry.io/platforms/javascript/","name":"Browser JavaScript","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/browser\n# Using npm\nnpm install --save @sentry/browser
\n

Configure

\n

Initialize Sentry as early as possible in your application's lifecycle.

\n
import * as Sentry from \"@sentry/browser\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n});
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
myUndefinedFunction();
\n
\n

Next Steps

\n"} \ No newline at end of file +{"key":"javascript.with-error-monitoring","type":"language","doc_link":"https://docs.sentry.io/platforms/javascript/","name":"Browser JavaScript","aliases":[],"categories":[],"body":"

Install

\n

Sentry captures data by using an SDK within your application’s runtime.

\n
# Using yarn\nyarn add @sentry/browser\n# Using npm\nnpm install --save @sentry/browser
\n

Configure

\n

Initialize Sentry as early as possible in your application's lifecycle.

\n
import * as Sentry from \"@sentry/browser\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n});
\n

Verify

\n

This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected.

\n
myUndefinedFunction();
\n
\n

Next Steps

\n"} diff --git a/public/_platforms/kotlin.json b/public/_platforms/kotlin.json index f7dfa5285a928..feb0309a60317 100644 --- a/public/_platforms/kotlin.json +++ b/public/_platforms/kotlin.json @@ -1 +1 @@ -{"key":"kotlin","type":"language","doc_link":"https://docs.sentry.io/platforms/kotlin/","name":"Kotlin","aliases":[],"categories":["mobile","desktop","server"],"body":"\nSentry supports Kotlin for both JVM and Android. This wizard guides you through set up in the JVM scenario.\n

If you're interested in Android, head over to the Getting Started for that SDK instead. At its core, Sentry for Java provides a raw client for sending events to Sentry. If you use Spring Boot, Spring, Logback, JUL, or Log4j2, head over to our Getting Started for Sentry Java.\n

\n

Install

\n

Install the SDK via Gradle or Maven:

\n

For Gradle, add to your build.gradle file:

\n
// Make sure mavenCentral is there.\nrepositories {\n    mavenCentral()\n}\n\ndependencies {\n    implementation 'io.sentry:sentry:7.3.0'\n}
\n

For Maven, add to your pom.xml file:

\n
<dependency>\n    <groupId>io.sentry</groupId>\n    <artifactId>sentry</artifactId>\n    <version>7.3.0</version>\n</dependency>
\n

Configure

\n

Configure Sentry as soon as possible in your application's lifecycle:

\n
import io.sentry.Sentry\n\nSentry.init { options ->\n  options.dsn = \"___PUBLIC_DSN___\"\n  // Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n  // We recommend adjusting this value in production.\n  options.tracesSampleRate = 1.0\n  // When first trying Sentry it's good to see what the SDK is doing:\n  options.isDebug = true\n}
\n

Send First Event

\n

Trigger your first event from your development environment by intentionally creating an error with the Sentry#captureException method, to test that everything is working:

\n
import java.lang.Exception\nimport io.sentry.Sentry\n\ntry {\n  throw Exception(\"This is a test.\")\n} catch (e: Exception) {\n  Sentry.captureException(e)\n}
\n

If you're new to Sentry, use the email alert to access your account and complete a product tour.

\n

If you're an existing user and have disabled alerts, you won't receive this email.

\n

Measure Performance

\n

You can capture transactions using the SDK. For example:

\n
import io.sentry.Sentry\nimport io.sentry.SpanStatus\n\n// A good name for the transaction is key, to help identify what this is about\nval transaction = Sentry.startTransaction(\"processOrderBatch()\", \"task\")\ntry {\n  processOrderBatch()\n} catch (e: Exception) {\n  transaction.throwable = e\n  transaction.status = SpanStatus.INTERNAL_ERROR\n  throw e\n} finally {\n  transaction.finish();\n}
\n

For more information about the API and automatic instrumentations included in the SDK, visit the docs.

"} \ No newline at end of file +{"key":"kotlin","type":"language","doc_link":"https://docs.sentry.io/platforms/kotlin/","name":"Kotlin","aliases":[],"categories":["mobile","desktop","server"],"body":"\nSentry supports Kotlin for both JVM and Android. This wizard guides you through set up in the JVM scenario.\n

If you're interested in Android, head over to the Getting Started for that SDK instead. At its core, Sentry for Java provides a raw client for sending events to Sentry. If you use Spring Boot, Spring, Logback, JUL, or Log4j2, head over to our Getting Started for Sentry Java.\n

\n

Install

\n

Install the SDK via Gradle or Maven:

\n

For Gradle, add to your build.gradle file:

\n
// Make sure mavenCentral is there.\nrepositories {\n    mavenCentral()\n}\n\ndependencies {\n    implementation 'io.sentry:sentry:7.3.0'\n}
\n

For Maven, add to your pom.xml file:

\n
<dependency>\n    <groupId>io.sentry</groupId>\n    <artifactId>sentry</artifactId>\n    <version>7.3.0</version>\n</dependency>
\n

Configure

\n

Configure Sentry as soon as possible in your application's lifecycle:

\n
import io.sentry.Sentry\n\nSentry.init { options ->\n  options.dsn = \"___PUBLIC_DSN___\"\n  // Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n  // We recommend adjusting this value in production.\n  options.tracesSampleRate = 1.0\n  // When first trying Sentry it's good to see what the SDK is doing:\n  options.isDebug = true\n}
\n

Send First Event

\n

Trigger your first event from your development environment by intentionally creating an error with the Sentry#captureException method, to test that everything is working:

\n
import java.lang.Exception\nimport io.sentry.Sentry\n\ntry {\n  throw Exception(\"This is a test.\")\n} catch (e: Exception) {\n  Sentry.captureException(e)\n}
\n

If you're new to Sentry, use the email alert to access your account and complete a product tour.

\n

If you're an existing user and have disabled alerts, you won't receive this email.

\n

Measure Performance

\n

You can capture transactions using the SDK. For example:

\n
import io.sentry.Sentry\nimport io.sentry.SpanStatus\n\n// A good name for the transaction is key, to help identify what this is about\nval transaction = Sentry.startTransaction(\"processOrderBatch()\", \"task\")\ntry {\n  processOrderBatch()\n} catch (e: Exception) {\n  transaction.throwable = e\n  transaction.status = SpanStatus.INTERNAL_ERROR\n  throw e\n} finally {\n  transaction.finish();\n}
\n

For more information about the API and automatic instrumentations included in the SDK, visit the docs.

"} diff --git a/public/_platforms/node/tracing.json b/public/_platforms/node/tracing.json index e56edfecb1304..85a460988c456 100644 --- a/public/_platforms/node/tracing.json +++ b/public/_platforms/node/tracing.json @@ -1 +1 @@ -{"key":"node.tracing","type":"framework","doc_link":"https://docs.sentry.io/platforms/node/performance/instrumentation/custom-instrumentation/","name":"Node.js","aliases":[],"categories":[],"body":"

To manually instrument a specific region of your code, you can create a transaction to capture it.

\n

The following example creates a transaction for a part of the code that contains an expensive operation (for example, processItem), and sends the result to Sentry:

\n
app.use(function processItems(req, res, next) {\n  const item = getFromQueue();\n  const transaction = Sentry.startTransaction({\n    op: \"task\",\n    name: item.getTransaction(),\n  });\n\n  // processItem may create more spans internally (see next examples)\n  processItem(item, transaction).then(() => {\n    transaction.finish();\n    next();\n  });\n});
"} \ No newline at end of file +{"key":"node.tracing","type":"framework","doc_link":"https://docs.sentry.io/platforms/node/tracing/instrumentation/custom-instrumentation/","name":"Node.js","aliases":[],"categories":[],"body":"

To manually instrument a specific region of your code, you can create a transaction to capture it.

\n

The following example creates a transaction for a part of the code that contains an expensive operation (for example, processItem), and sends the result to Sentry:

\n
app.use(function processItems(req, res, next) {\n  const item = getFromQueue();\n  const transaction = Sentry.startTransaction({\n    op: \"task\",\n    name: item.getTransaction(),\n  });\n\n  // processItem may create more spans internally (see next examples)\n  processItem(item, transaction).then(() => {\n    transaction.finish();\n    next();\n  });\n});
"} diff --git a/public/_platforms/php/laravel-profiling-onboarding-2-configure-performance.json b/public/_platforms/php/laravel-profiling-onboarding-2-configure-performance.json index 907b65e6e7d5d..1ec35756c59ab 100644 --- a/public/_platforms/php/laravel-profiling-onboarding-2-configure-performance.json +++ b/public/_platforms/php/laravel-profiling-onboarding-2-configure-performance.json @@ -1 +1 @@ -{"key":"php.laravel-profiling-onboarding-2-configure-performance","type":"language","doc_link":"https://docs.sentry.io/platforms/php/guides/laravel/profiling/","name":"PHP","aliases":[],"categories":[],"body":"

Configure Performance

\n

Sentry’s performance monitoring product has to be enabled in order for Profiling to work.\nAdd the traces_sample_rate option to the config/sentry.php config file.

\n
'traces_sample_rate' => 1.0,
\n

Check out the performance setup docs for more detailed information.

"} \ No newline at end of file +{"key":"php.laravel-profiling-onboarding-2-configure-performance","type":"language","doc_link":"https://docs.sentry.io/platforms/php/guides/laravel/profiling/","name":"PHP","aliases":[],"categories":[],"body":"

Configure Performance

\n

Sentry’s performance monitoring product has to be enabled in order for Profiling to work.\nAdd the traces_sample_rate option to the config/sentry.php config file.

\n
'traces_sample_rate' => 1.0,
\n

Check out the performance setup docs for more detailed information.

"} diff --git a/public/_platforms/php/profiling-onboarding-2-configure-performance.json b/public/_platforms/php/profiling-onboarding-2-configure-performance.json index 8f90a553fbbae..3cf53e70ba564 100644 --- a/public/_platforms/php/profiling-onboarding-2-configure-performance.json +++ b/public/_platforms/php/profiling-onboarding-2-configure-performance.json @@ -1 +1 @@ -{"key":"php.profiling-onboarding-2-configure-performance","type":"language","doc_link":"https://docs.sentry.io/platforms/php/profiling/","name":"PHP","aliases":[],"categories":[],"body":"

Configure Performance

\n

Sentry’s performance monitoring product has to be enabled in order for Profiling to work.

\n
\\Sentry\\init([\n    'dsn' => '___PUBLIC_DSN___',\n    'traces_sample_rate' => 1.0,\n]);
\n

In order to capture profiling data, you need to start a transaction.

\n

Check out the performance setup and instrumentation docs for more detailed information.

"} \ No newline at end of file +{"key":"php.profiling-onboarding-2-configure-performance","type":"language","doc_link":"https://docs.sentry.io/platforms/php/profiling/","name":"PHP","aliases":[],"categories":[],"body":"

Configure Performance

\n

Sentry’s performance monitoring product has to be enabled in order for Profiling to work.

\n
\\Sentry\\init([\n    'dsn' => '___PUBLIC_DSN___',\n    'traces_sample_rate' => 1.0,\n]);
\n

In order to capture profiling data, you need to start a transaction.

\n

Check out the performance setup and instrumentation docs for more detailed information.

"} diff --git a/public/_platforms/php/symfony.json b/public/_platforms/php/symfony.json index 8bfde9c573b0c..c4de886e448c7 100644 --- a/public/_platforms/php/symfony.json +++ b/public/_platforms/php/symfony.json @@ -1 +1 @@ -{"key":"php.symfony","type":"framework","doc_link":"https://docs.sentry.io/platforms/php/guides/symfony/","name":"Symfony","aliases":[],"categories":[],"body":"

Symfony is supported via the sentry-symfony package as a native bundle.

\n

Install

\n

Install the sentry/sentry-symfony bundle:

\n
composer require sentry/sentry-symfony
\n\n

Due to a bug in all versions below 6.0 of the SensioFrameworkExtraBundle bundle, you will likely receive an error during the execution of the command above related to the missing Nyholm\\Psr7\\Factory\\Psr17Factory class. To workaround the issue, if you are not using the PSR-7 bridge, please change the configuration of that bundle as follows:

\n\n
sensio_framework_extra:\n   psr_message:\n      enabled: false
\n

For more details about the issue see https://github.com/sensiolabs/SensioFrameworkExtraBundle/pull/710.

\n
\n

Configure

\n

Add your

DSNThe Data Source Name (DSN) key tells the Sentry SDK where to send events, ensuring they go to the right project.
to config/packages/sentry.yaml:

\n\n
sentry:\n    dsn: \"%env(SENTRY_DSN)%\"
\n

And in your .env file:

\n
###> sentry/sentry-symfony ###\nSENTRY_DSN=\"___PUBLIC_DSN___\"\n###< sentry/sentry-symfony ###
\n\n

Performance monitoring integrations to support

tracingThe process of logging the events that took place during a request, often across multiple services.
are enabled by default. To use them, update to the latest version of the SDK.

\n

These integrations hook into critical paths of the framework and of the vendors. As a result, there may be a performance penalty. To disable tracing, please see the Integrations documentation.

\n
\n

If you are not using Symfony Flex, you'll also need to enable the bundle in config/bundles.php:

\n
<?php\n\nreturn [\n    // ...\n    Sentry\\SentryBundle\\SentryBundle::class => ['all' => true],\n];
\n

Monolog Integration

\n

If you are using Monolog to report events instead of the typical error listener approach, you need this additional configuration to log the errors correctly:

\n\n
sentry:\n    register_error_listener: false # Disables the ErrorListener to avoid duplicated log in sentry\n    register_error_handler: false # Disables the ErrorListener, ExceptionListener and FatalErrorListener integrations of the base PHP SDK\n\nmonolog:\n    handlers:\n        sentry:\n            type: sentry\n            level: !php/const Monolog\\Logger::ERROR\n            hub_id: Sentry\\State\\HubInterface
\n

If you are using a version of MonologBundle prior to 3.7, you need to\nconfigure the handler as a service instead:

\n\n
monolog:\n    handlers:\n        sentry:\n            type: service\n            id: Sentry\\Monolog\\Handler\n\nservices:\n    Sentry\\Monolog\\Handler:\n        arguments:\n            $hub: '@Sentry\\State\\HubInterface'\n            $level: !php/const Monolog\\Logger::ERROR
\n

Additionally, you can register the PsrLogMessageProcessor to resolve PSR-3 placeholders in reported messages:

\n\n
services:\n    Monolog\\Processor\\PsrLogMessageProcessor:\n        tags: { name: monolog.processor, handler: sentry }
\n

Test the implementation

\n

To test that both logger error and exception are correctly sent to sentry.io, you can create the following controller:

\n
<?php\n\nnamespace App\\Controller;\n\nuse Psr\\Log\\LoggerInterface;\nuse Symfony\\Bundle\\FrameworkBundle\\Controller\\AbstractController;\nuse Symfony\\Component\\Routing\\Annotation\\Route;\n\nclass SentryTestController extends AbstractController\n{\n    /**\n     * @var LoggerInterface\n     */\n    private $logger;\n\n    public function __construct(LoggerInterface $logger)\n    {\n        $this->logger = $logger;\n    }\n\n    /**\n     * @Route(name=\"sentry_test\", path=\"/_sentry-test\")\n     */\n    public function testLog()\n    {\n        // the following code will test if monolog integration logs to sentry\n        $this->logger->error('My custom logged error.');\n\n        // the following code will test if an uncaught exception logs to sentry\n        throw new \\RuntimeException('Example exception.');\n    }\n}
\n

After you visit the /_sentry-test page, you can view and resolve the recorded error by logging into sentry.io and opening your

projectRepresents your service in Sentry and allows you to scope events to a distinct application.
. Clicking on the error's title will open a page where you can see detailed information and mark it as resolved.

"} \ No newline at end of file +{"key":"php.symfony","type":"framework","doc_link":"https://docs.sentry.io/platforms/php/guides/symfony/","name":"Symfony","aliases":[],"categories":[],"body":"

Symfony is supported via the sentry-symfony package as a native bundle.

\n

Install

\n

Install the sentry/sentry-symfony bundle:

\n
composer require sentry/sentry-symfony
\n\n

Due to a bug in all versions below 6.0 of the SensioFrameworkExtraBundle bundle, you will likely receive an error during the execution of the command above related to the missing Nyholm\\Psr7\\Factory\\Psr17Factory class. To workaround the issue, if you are not using the PSR-7 bridge, please change the configuration of that bundle as follows:

\n\n
sensio_framework_extra:\n   psr_message:\n      enabled: false
\n

For more details about the issue see https://github.com/sensiolabs/SensioFrameworkExtraBundle/pull/710.

\n
\n

Configure

\n

Add your

DSNThe Data Source Name (DSN) key tells the Sentry SDK where to send events, ensuring they go to the right project.
to config/packages/sentry.yaml:

\n\n
sentry:\n    dsn: \"%env(SENTRY_DSN)%\"
\n

And in your .env file:

\n
###> sentry/sentry-symfony ###\nSENTRY_DSN=\"___PUBLIC_DSN___\"\n###< sentry/sentry-symfony ###
\n\n

Performance monitoring integrations to support

tracingThe process of logging the events that took place during a request, often across multiple services.
are enabled by default. To use them, update to the latest version of the SDK.

\n

These integrations hook into critical paths of the framework and of the vendors. As a result, there may be a performance penalty. To disable tracing, please see the Integrations documentation.

\n
\n

If you are not using Symfony Flex, you'll also need to enable the bundle in config/bundles.php:

\n
<?php\n\nreturn [\n    // ...\n    Sentry\\SentryBundle\\SentryBundle::class => ['all' => true],\n];
\n

Monolog Integration

\n

If you are using Monolog to report events instead of the typical error listener approach, you need this additional configuration to log the errors correctly:

\n\n
sentry:\n    register_error_listener: false # Disables the ErrorListener to avoid duplicated log in sentry\n    register_error_handler: false # Disables the ErrorListener, ExceptionListener and FatalErrorListener integrations of the base PHP SDK\n\nmonolog:\n    handlers:\n        sentry:\n            type: sentry\n            level: !php/const Monolog\\Logger::ERROR\n            hub_id: Sentry\\State\\HubInterface
\n

If you are using a version of MonologBundle prior to 3.7, you need to\nconfigure the handler as a service instead:

\n\n
monolog:\n    handlers:\n        sentry:\n            type: service\n            id: Sentry\\Monolog\\Handler\n\nservices:\n    Sentry\\Monolog\\Handler:\n        arguments:\n            $hub: '@Sentry\\State\\HubInterface'\n            $level: !php/const Monolog\\Logger::ERROR
\n

Additionally, you can register the PsrLogMessageProcessor to resolve PSR-3 placeholders in reported messages:

\n\n
services:\n    Monolog\\Processor\\PsrLogMessageProcessor:\n        tags: { name: monolog.processor, handler: sentry }
\n

Test the implementation

\n

To test that both logger error and exception are correctly sent to sentry.io, you can create the following controller:

\n
<?php\n\nnamespace App\\Controller;\n\nuse Psr\\Log\\LoggerInterface;\nuse Symfony\\Bundle\\FrameworkBundle\\Controller\\AbstractController;\nuse Symfony\\Component\\Routing\\Annotation\\Route;\n\nclass SentryTestController extends AbstractController\n{\n    /**\n     * @var LoggerInterface\n     */\n    private $logger;\n\n    public function __construct(LoggerInterface $logger)\n    {\n        $this->logger = $logger;\n    }\n\n    /**\n     * @Route(name=\"sentry_test\", path=\"/_sentry-test\")\n     */\n    public function testLog()\n    {\n        // the following code will test if monolog integration logs to sentry\n        $this->logger->error('My custom logged error.');\n\n        // the following code will test if an uncaught exception logs to sentry\n        throw new \\RuntimeException('Example exception.');\n    }\n}
\n

After you visit the /_sentry-test page, you can view and resolve the recorded error by logging into sentry.io and opening your

projectRepresents your service in Sentry and allows you to scope events to a distinct application.
. Clicking on the error's title will open a page where you can see detailed information and mark it as resolved.

"} diff --git a/public/_platforms/php/symfony2-profiling-onboarding-2-configure-performance.json b/public/_platforms/php/symfony2-profiling-onboarding-2-configure-performance.json index f4b02986a7da1..f280bfc9ed1a1 100644 --- a/public/_platforms/php/symfony2-profiling-onboarding-2-configure-performance.json +++ b/public/_platforms/php/symfony2-profiling-onboarding-2-configure-performance.json @@ -1 +1 @@ -{"key":"php.symfony2-profiling-onboarding-2-configure-performance","type":"language","doc_link":"https://docs.sentry.io/platforms/php/guides/symfony/profiling/","name":"PHP","aliases":[],"categories":[],"body":"

Configure Performance

\n

Sentry’s performance monitoring product has to be enabled in order for Profiling to work.\nAdd the traces_sample_rate option to the config/packages/sentry.yaml config file.

\n\n
sentry:\n    options:\n        traces_sample_rate: 1.0
\n

Check out the performance setup docs for more detailed information.

"} \ No newline at end of file +{"key":"php.symfony2-profiling-onboarding-2-configure-performance","type":"language","doc_link":"https://docs.sentry.io/platforms/php/guides/symfony/profiling/","name":"PHP","aliases":[],"categories":[],"body":"

Configure Performance

\n

Sentry’s performance monitoring product has to be enabled in order for Profiling to work.\nAdd the traces_sample_rate option to the config/packages/sentry.yaml config file.

\n\n
sentry:\n    options:\n        traces_sample_rate: 1.0
\n

Check out the performance setup docs for more detailed information.

"} diff --git a/public/_platforms/python/tracing.json b/public/_platforms/python/tracing.json index e25e2fcf604a8..6c9b1cc6f232a 100644 --- a/public/_platforms/python/tracing.json +++ b/public/_platforms/python/tracing.json @@ -1 +1 @@ -{"key":"python.tracing","type":"language","doc_link":"https://docs.sentry.io/platforms/python/performance/","name":"Python","aliases":[],"categories":[],"body":"

The Sentry SDK for Python does a very good job of auto instrumenting your application. Here a short introduction on how to do custom performance instrumentation. If you'd like to learn more, read our custom instrumentation documentation.

\n

Adding a Transaction

\n

Adding transactions will allow you to instrument and capture certain regions of your code.

\n\n

If you're using one of Sentry's SDK integrations, transactions will be created for you automatically.

\n
\n

The following example creates a transaction for an expensive operation (in this case,eat_pizza), and then sends the result to Sentry:

\n
import sentry_sdk\n\ndef eat_slice(slice):\n    ...\n\ndef eat_pizza(pizza):\n    with sentry_sdk.start_transaction(op=\"task\", name=\"Eat Pizza\"):\n        while pizza.slices > 0:\n            eat_slice(pizza.slices.pop())
\n

Adding More Spans to the Transaction

\n

If you want to have more fine-grained performance monitoring, you can add child spans to your transaction, which can be done by either:

\n\n

Calling a sentry_sdk.start_span() will find the current active transaction and attach the span to it.

\n
import sentry_sdk\n\ndef eat_slice(slice):\n    ...\n\ndef eat_pizza(pizza):\n    with sentry_sdk.start_transaction(op=\"task\", name=\"Eat Pizza\"):\n        while pizza.slices > 0:\n            with sentry_sdk.start_span(description=\"Eat Slice\"):\n                eat_slice(pizza.slices.pop())\n
\n
import sentry_sdk\n\n@sentry_sdk.trace\ndef eat_slice(slice):\n    ...\n\ndef eat_pizza(pizza):\n    with sentry_sdk.start_transaction(op=\"task\", name=\"Eat Pizza\"):\n        while pizza.slices > 0:\n            eat_slice(pizza.slices.pop())\n
"} \ No newline at end of file +{"key":"python.tracing","type":"language","doc_link":"https://docs.sentry.io/platforms/python/tracing/","name":"Python","aliases":[],"categories":[],"body":"

The Sentry SDK for Python does a very good job of auto instrumenting your application. Here a short introduction on how to do custom performance instrumentation. If you'd like to learn more, read our custom instrumentation documentation.

\n

Adding a Transaction

\n

Adding transactions will allow you to instrument and capture certain regions of your code.

\n\n

If you're using one of Sentry's SDK integrations, transactions will be created for you automatically.

\n
\n

The following example creates a transaction for an expensive operation (in this case,eat_pizza), and then sends the result to Sentry:

\n
import sentry_sdk\n\ndef eat_slice(slice):\n    ...\n\ndef eat_pizza(pizza):\n    with sentry_sdk.start_transaction(op=\"task\", name=\"Eat Pizza\"):\n        while pizza.slices > 0:\n            eat_slice(pizza.slices.pop())
\n

Adding More Spans to the Transaction

\n

If you want to have more fine-grained performance monitoring, you can add child spans to your transaction, which can be done by either:

\n\n

Calling a sentry_sdk.start_span() will find the current active transaction and attach the span to it.

\n
import sentry_sdk\n\ndef eat_slice(slice):\n    ...\n\ndef eat_pizza(pizza):\n    with sentry_sdk.start_transaction(op=\"task\", name=\"Eat Pizza\"):\n        while pizza.slices > 0:\n            with sentry_sdk.start_span(description=\"Eat Slice\"):\n                eat_slice(pizza.slices.pop())\n
\n
import sentry_sdk\n\n@sentry_sdk.trace\ndef eat_slice(slice):\n    ...\n\ndef eat_pizza(pizza):\n    with sentry_sdk.start_transaction(op=\"task\", name=\"Eat Pizza\"):\n        while pizza.slices > 0:\n            eat_slice(pizza.slices.pop())\n
"} diff --git a/public/_platforms/react-native.json b/public/_platforms/react-native.json index f9c975bffb5e5..fcb02f9dce7a3 100644 --- a/public/_platforms/react-native.json +++ b/public/_platforms/react-native.json @@ -1 +1 @@ -{"key":"react-native","type":"language","doc_link":"https://docs.sentry.io/platforms/react-native/","name":"React Native","aliases":[],"categories":["mobile"],"body":"

Sentry captures data by using an SDK within your application’s runtime.

\n
\n

If you are using Expo, see How to Add Sentry to Your Expo Project. This SDK works for both managed and bare projects.

\n
\n

Run @sentry/wizard:

\n
npx @sentry/wizard -s -i reactNative
\n

Sentry Wizard will patch your

projectRepresents your service in Sentry and allows you to scope events to a distinct application.
accordingly, though you can setup manually if you prefer.

\n\n

Initialize the SDK

\n
import * as Sentry from \"@sentry/react-native\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  // Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n  // We recommend adjusting this value in production.\n  tracesSampleRate: 1.0,\n});
\n

The sentry-wizard will try to add it to your App.tsx

\n

Wrap your app

\n

Wrap your app with Sentry to automatically instrument it with touch event tracking and automatic performance monitoring:

\n
export default Sentry.wrap(App);
\n

You do not need to do this for Sentry to work or if your app does not have a single parent \"App\" component.

\n

Verify

\n

Then create an intentional error, so you can test that everything is working:

\n
throw new Error(\"My first Sentry error!\");
\n

Or, try a native crash with:

\n
Sentry.nativeCrash();
\n

If you're new to Sentry, use the email alert to access your account and complete a product tour.

\n

If you're an existing user and have disabled alerts, you won't receive this email.

\n

Performance

\n

Sentry can measure the performance of your app automatically when instrumented with the following routers:

\n\n

Additionally, you can create transactions and spans programatically:

\n

For example:

\n
// Let's say this function is invoked when a user clicks on the checkout button of your shop\nshopCheckout() {\n  // This will create a new Transaction for you\n  const transaction = Sentry.startTransaction({ name: \"shopCheckout\" });\n  // Set transaction on scope to associate with errors and get included span instrumentation\n  // If there's currently an unfinished transaction, it may be dropped\n  Sentry.getCurrentHub().configureScope(scope => scope.setSpan(transaction));\n\n  // Assume this function makes an xhr/fetch call\n  const result = validateShoppingCartOnServer();\n\n  const span = transaction.startChild({\n    data: {\n      result\n    },\n    op: 'task',\n    description: `processing shopping cart result`,\n  });\n  try {\n    processAndValidateShoppingCart(result);\n    span.setStatus('ok');\n  } catch (err) {\n    span.setStatus('unknown_error');\n    throw err;\n  } finally {\n    span.finish();\n    transaction.finish();\n  }\n}
\n

For more information, please refer to the Sentry React Native documentation.

\n

Debug Symbols

\n

We offer a range of methods to provide Sentry with debug symbols so that you can see symbolicated stack traces and triage issues faster.

\n

Complete stack traces will be shown for React Native Javascript errors by default using Sentry's automatic source maps upload. To set up manual source maps upload follow this guide.

\n

You'll also need to upload Debug Symbols generated by the native iOS and Android tooling for native crashes.

\n

Source Context

\n

If Sentry has access to your application's source code, it can show snippets of code (source context) around the location of stack frames, which helps to quickly pinpoint problematic code.

\n

Source Context will be shown for React Native Javascript error by default if source maps are uploaded. To set up source maps upload, follow the Source Maps guide.

\n

To enable source context for native errors, you'll need to upload native debug symbols to Sentry by following the instructions at Uploading Source Code Context With Sentry Gradle Plugin and Uploading Source Context With Xcode.

"} \ No newline at end of file +{"key":"react-native","type":"language","doc_link":"https://docs.sentry.io/platforms/react-native/","name":"React Native","aliases":[],"categories":["mobile"],"body":"

Sentry captures data by using an SDK within your application’s runtime.

\n
\n

If you are using Expo, see How to Add Sentry to Your Expo Project. This SDK works for both managed and bare projects.

\n
\n

Run @sentry/wizard:

\n
npx @sentry/wizard -s -i reactNative
\n

Sentry Wizard will patch your

projectRepresents your service in Sentry and allows you to scope events to a distinct application.
accordingly, though you can setup manually if you prefer.

\n\n

Initialize the SDK

\n
import * as Sentry from \"@sentry/react-native\";\n\nSentry.init({\n  dsn: \"___PUBLIC_DSN___\",\n  // Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.\n  // We recommend adjusting this value in production.\n  tracesSampleRate: 1.0,\n});
\n

The sentry-wizard will try to add it to your App.tsx

\n

Wrap your app

\n

Wrap your app with Sentry to automatically instrument it with touch event tracking and automatic performance monitoring:

\n
export default Sentry.wrap(App);
\n

You do not need to do this for Sentry to work or if your app does not have a single parent \"App\" component.

\n

Verify

\n

Then create an intentional error, so you can test that everything is working:

\n
throw new Error(\"My first Sentry error!\");
\n

Or, try a native crash with:

\n
Sentry.nativeCrash();
\n

If you're new to Sentry, use the email alert to access your account and complete a product tour.

\n

If you're an existing user and have disabled alerts, you won't receive this email.

\n

Performance

\n

Sentry can measure the performance of your app automatically when instrumented with the following routers:

\n\n

Additionally, you can create transactions and spans programatically:

\n

For example:

\n
// Let's say this function is invoked when a user clicks on the checkout button of your shop\nshopCheckout() {\n  // This will create a new Transaction for you\n  const transaction = Sentry.startTransaction({ name: \"shopCheckout\" });\n  // Set transaction on scope to associate with errors and get included span instrumentation\n  // If there's currently an unfinished transaction, it may be dropped\n  Sentry.getCurrentHub().configureScope(scope => scope.setSpan(transaction));\n\n  // Assume this function makes an xhr/fetch call\n  const result = validateShoppingCartOnServer();\n\n  const span = transaction.startChild({\n    data: {\n      result\n    },\n    op: 'task',\n    description: `processing shopping cart result`,\n  });\n  try {\n    processAndValidateShoppingCart(result);\n    span.setStatus('ok');\n  } catch (err) {\n    span.setStatus('unknown_error');\n    throw err;\n  } finally {\n    span.finish();\n    transaction.finish();\n  }\n}
\n

For more information, please refer to the Sentry React Native documentation.

\n

Debug Symbols

\n

We offer a range of methods to provide Sentry with debug symbols so that you can see symbolicated stack traces and triage issues faster.

\n

Complete stack traces will be shown for React Native Javascript errors by default using Sentry's automatic source maps upload. To set up manual source maps upload follow this guide.

\n

You'll also need to upload Debug Symbols generated by the native iOS and Android tooling for native crashes.

\n

Source Context

\n

If Sentry has access to your application's source code, it can show snippets of code (source context) around the location of stack frames, which helps to quickly pinpoint problematic code.

\n

Source Context will be shown for React Native Javascript error by default if source maps are uploaded. To set up source maps upload, follow the Source Maps guide.

\n

To enable source context for native errors, you'll need to upload native debug symbols to Sentry by following the instructions at Uploading Source Code Context With Sentry Gradle Plugin and Uploading Source Context With Xcode.

"} diff --git a/public/_platforms/react-native/tracing.json b/public/_platforms/react-native/tracing.json index 3bb93f0101726..691441b6ba3f5 100644 --- a/public/_platforms/react-native/tracing.json +++ b/public/_platforms/react-native/tracing.json @@ -1 +1 @@ -{"key":"react-native.tracing","type":"language","doc_link":"https://docs.sentry.io/platforms/react-native/performance/instrumentation/custom-instrumentation/","name":"React-Native","aliases":[],"categories":[],"body":"

To manually instrument certain regions of your code, you can create a transaction to capture them.

\n
const transaction = Sentry.startTransaction({ name: \"test-transaction\" });\nconst span = transaction.startChild({ op: \"functionX\" }); // This function returns a Span\n// functionCallX\nspan.finish(); // Remember that only finished spans will be sent with the transaction\ntransaction.finish(); // Finishing the transaction will send it to Sentry
"} \ No newline at end of file +{"key":"react-native.tracing","type":"language","doc_link":"https://docs.sentry.io/platforms/react-native/tracing/instrumentation/custom-instrumentation/","name":"React-Native","aliases":[],"categories":[],"body":"

To manually instrument certain regions of your code, you can create a transaction to capture them.

\n
const transaction = Sentry.startTransaction({ name: \"test-transaction\" });\nconst span = transaction.startChild({ op: \"functionX\" }); // This function returns a Span\n// functionCallX\nspan.finish(); // Remember that only finished spans will be sent with the transaction\ntransaction.finish(); // Finishing the transaction will send it to Sentry
"}