You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Angular2+应用中集成Sentry用户反馈插件并配置错误触发弹窗

How to Trigger Sentry User Feedback Modal on Every Error in Angular 2+ Apps

I get it, the official Sentry docs don’t spell this out clearly for Angular 2+, so let’s walk through it step by step to get that feedback modal popping up automatically whenever an error hits your app.

1. Confirm Sentry is Already Integrated in Your Angular App

First, make sure you’ve got the Sentry Angular SDK set up. You should have code similar to this in your app.module.ts (or a dedicated Sentry config file):

import { NgModule, ErrorHandler } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { Router } from '@angular/router';
import * as Sentry from '@sentry/angular';
import { BrowserTracing } from '@sentry/tracing';

import { AppComponent } from './app.component';

@NgModule({
  declarations: [AppComponent],
  imports: [BrowserModule],
  providers: [
    {
      provide: ErrorHandler,
      useValue: Sentry.createErrorHandler({
        showDialog: false, // We'll replace the default dialog with our feedback modal
      }),
    },
  ],
  bootstrap: [AppComponent],
})
export class AppModule {
  constructor(router: Router) {
    Sentry.init({
      dsn: 'YOUR_DSN_HERE',
      integrations: [
        new BrowserTracing({
          routingInstrumentation: Sentry.routingInstrumentation,
          tracePropagationTargets: ['localhost', /^https:\/\/yourserver\.io\/api/],
        }),
        // We'll add the Feedback integration next
      ],
      tracesSampleRate: 1.0,
    });
  }
}

Setting showDialog: false disables Sentry’s default error dialog—we want to trigger the user feedback modal instead.

2. Add the Sentry Feedback Integration

First, install the dedicated Feedback package if you haven’t already:

npm install @sentry/feedback

Then import and add it to your Sentry initialization in app.module.ts:

import { Feedback } from '@sentry/feedback';

// Inside the Sentry.init() block
integrations: [
  new BrowserTracing({ /* ... your existing tracing config ... */ }),
  new Feedback({
    // Optional: Customize modal defaults here
    colorScheme: 'light',
    isNameRequired: false,
    isEmailRequired: true,
  }),
],

3. Trigger the Modal on Every Error

Now we need to hook into Angular’s error handling to launch the feedback modal whenever Sentry captures an error. You’ve got two solid options here:

Option A: Extend the Sentry Error Handler

Modify your error handler in app.module.ts to manually trigger the modal right after capturing the error:

providers: [
  {
    provide: ErrorHandler,
    useFactory: () => {
      const errorHandler = Sentry.createErrorHandler({
        showDialog: false,
      });

      return {
        handleError(error: any) {
          // Let Sentry capture the error first
          errorHandler.handleError(error);
          
          // Launch the feedback modal
          Sentry.showReportDialog();
        },
      };
    },
  },
],

Option B: Use Sentry’s Event Listener

Alternatively, listen for when an error is sent to Sentry and trigger the modal then. Add this right after your Sentry.init() call:

Sentry.on('eventSent', (event) => {
  // Only trigger for error events (ignore transactions or other event types)
  if (event.type === 'error') {
    Sentry.showReportDialog({
      // Link the feedback directly to the error's event ID
      eventId: event.event_id,
    });
  }
});

This ensures user feedback is tied directly to the specific error that occurred, which makes debugging way easier.

4. Test It Out

To verify everything works, intentionally throw an error in your app (like adding a button that runs throw new Error('Test error')). When the error fires, the Sentry feedback modal should pop up automatically, asking users for details about what went wrong.

Bonus: Customize the Modal

You can tweak the modal’s look and behavior by passing options to showReportDialog(). For example:

Sentry.showReportDialog({
  title: 'Oops! Something went wrong',
  subtitle: 'We’re sorry for the hassle—could you tell us what happened?',
  submitButtonLabel: 'Send Feedback',
  cancelButtonLabel: 'Close',
  // Pre-fill user email if you have it from your app's auth system
  user: { email: 'current-user@example.com' },
});

内容的提问来源于stack exchange,提问作者Suparna Gharpure

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:21:17