ابرووا
شروع رایگان
☰ فهرست مستندات · SDK نکست

Next.js SDK

ثبت خطا، تشخیص کرش، breadcrumbها و یکپارچگی با React برای اپ‌های Next.js با App Router یا Pages Router.

Next.js 0.1.8Next.js 12+React 17+Node 16+به‌روزرسانی: ۵ آبان ۱۴۰۵
ثبت خطا

ثبت خودکار خطاهای مدیریت‌نشده، promise rejectionها و خطاهای React

تشخیص کرش

تشخیص کرش و از کار افتادن تب مرورگر

Breadcrumbها

ثبت کارهای کاربر و رویدادها برای فهمیدن زمینه‌ی خطا

Source map

پشتیبانی خودکار از source map برای stack traceهای خوانا

بهینه برای Next.js

ساخته‌شده برای App Router و Pages Router

یکپارچگی با React

error boundary، hookها و کامپوننت‌ها

همه‌جا

در مرورگر و Node.js (API routeها و server componentها) کار می‌کند

زمینه‌ی کامل

ثبت جابه‌جایی بین صفحه‌ها، نشست‌های کاربر و metadata دلخواه

قابل تنظیم

نمونه‌برداری، فیلتر و hookها

نصب#

پکیج‌ها از Abrova Center می‌آیند. دو مرحله:

۱. مخزن ابرووا را اضافه کنید به فایل .npmrc در ریشه‌ی پروژه (npm، yarn و pnpm همه آن را می‌خوانند):

# .npmrc
@abrova-trace:registry=https://center.abrova.ir/api/packages/abrova/npm/

۲. پکیج را نصب کنید:

bash
npm install @abrova-trace/nextjs-sdk
# or
yarn add @abrova-trace/nextjs-sdk
# or
pnpm add @abrova-trace/nextjs-sdk

شروع سریع#

App Router (Next.js 13+)

فایل app/providers.tsx را بسازید:

tsx
'use client';

import { useEffect } from 'react';
import { AbrovaTrace } from '@abrova-trace/nextjs-sdk';
import { useAbrovaTraceNavigation } from '@abrova-trace/nextjs-sdk/react';

export function Providers({ children }: { children: React.ReactNode }) {
  useEffect(() => {
    AbrovaTrace.init({
      apiKey: 'ab_live_your_api_key',
      environment: process.env.NODE_ENV,
      release: process.env.NEXT_PUBLIC_APP_VERSION,
      debug: process.env.NODE_ENV === 'development',
    });
  }, []);

  // Track navigation
  useAbrovaTraceNavigation();

  return <>{children}</>;
}

هوک useAbrovaTraceNavigation() از useSearchParams() استفاده می‌کند. اگر next build درباره‌ی نبودن Suspense boundary خطا داد، آن را به‌جای این‌جا از یک کامپوننت کوچک داخل <Suspense> صدا بزنید (NavigationTracker را در بخش «ثبت جابه‌جایی بین صفحه‌ها» در پایین ببینید).

فایل app/layout.tsx را به‌روز کنید:

tsx
import { Providers } from './providers';

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    <html lang="en">
      <body>
        <Providers>{children}</Providers>
      </body>
    </html>
  );
}

Pages Router (Next.js 12 و قبل‌تر)

فایل pages/_app.tsx را به‌روز کنید:

tsx
import { useEffect } from 'react';
import type { AppProps } from 'next/app';
import { AbrovaTrace } from '@abrova-trace/nextjs-sdk';
import { useAbrovaTracePagesRouter } from '@abrova-trace/nextjs-sdk/react';

function MyApp({ Component, pageProps }: AppProps) {
  useEffect(() => {
    AbrovaTrace.init({
      apiKey: 'ab_live_your_api_key',
      environment: process.env.NODE_ENV,
      release: process.env.NEXT_PUBLIC_APP_VERSION,
    });
  }, []);

  // Track navigation
  useAbrovaTracePagesRouter();

  return <Component {...pageProps} />;
}

export default MyApp;

Error Boundary#

کامپوننت‌ها را داخل error boundary قرار دهید تا خطاهای React خودکار گرفته و گزارش شوند:

استفاده‌ی پایه

tsx
import { ErrorBoundary } from '@abrova-trace/nextjs-sdk/react';

export default function Page() {
  return (
    <ErrorBoundary fallback={<div>Something went wrong!</div>}>
      <YourComponent />
    </ErrorBoundary>
  );
}

همراه با تابع reset

tsx
<ErrorBoundary
  fallback={(error, errorInfo, resetError) => (
    <div>
      <h1>Error: {error.message}</h1>
      <button onClick={resetError}>Try again</button>
    </div>
  )}
>
  <YourComponent />
</ErrorBoundary>

همراه با handler خطا

tsx
<ErrorBoundary
  onError={(error, errorInfo) => {
    console.log('Error occurred:', error);
    // Custom error handling
  }}
>
  <YourComponent />
</ErrorBoundary>

Fallback پیش‌فرض

بدون fallback، این boundary یک پنل داخلی نمایش می‌دهد: عنوان «Something went wrong»، یک پیام کوتاه و دکمه‌ی Try again که boundary را reset می‌کند. از نسخه‌ی 0.1.8، پیام خطا، stack trace و component stack دیگر در production نمایش داده نمی‌شوند: این‌ها فقط وقتی showErrorDetails برابر true باشد در یک بخش جمع‌شونده‌ی «Error details» نمایش داده می‌شوند، و مقدار پیش‌فرض آن process.env.NODE_ENV !== 'production' است (در development نمایش داده می‌شود و در buildهای production پنهان است). اگر fallback دلخواه بدهید، همان‌طور که نوشته‌اید نمایش داده می‌شود و showErrorDetails روی آن اثری ندارد.

tsx
<ErrorBoundary
  fallbackMessage="We could not load this section."
  showErrorDetails={false}
>
  <YourComponent />
</ErrorBoundary>

Propها

گزینهنوعاجباریتوضیح
childrenReactNodeبلهکامپوننت‌هایی که باید محافظت شوند
fallbackReactNode | functionخیررابط کاربری دلخواه بعد از خطا: یک element، یا تابعی با ورودی (error, errorInfo, resetError) که یک element برمی‌گرداند. جایگزین fallback پیش‌فرض می‌شود
onErrorfunctionخیربعد از گزارش خطا با (error, errorInfo) صدا زده می‌شود
showDefaultFallbackbooleanخیروقتی fallback داده نشده، fallback داخلی نمایش داده شود (پیش‌فرض: true). با false چیزی نمایش داده نمی‌شود
fallbackMessagestringخیرپیام fallback داخلی (پیش‌فرض: "An unexpected error occurred. Our team has been notified.")
showErrorDetailsbooleanخیرنمایش پیام خطا و stack trace در fallback داخلی (پیش‌فرض: در development برابر true و در production برابر false)

ثبت دستی خطا#

با hookها

tsx
import { useAbrovaTrace } from '@abrova-trace/nextjs-sdk/react';

function MyComponent() {
  const { captureException, captureMessage, setUserId } = useAbrovaTrace();

  const handleClick = async () => {
    try {
      await riskyOperation();
    } catch (error) {
      captureException(error as Error, 'Failed to complete operation', {
        userId: user.id,
        action: 'button_click',
      });
    }
  };

  return <button onClick={handleClick}>Click me</button>;
}

استفاده‌ی مستقیم از API

typescript
import { AbrovaTrace } from '@abrova-trace/nextjs-sdk';

// Capture exception
try {
  throw new Error('Something broke');
} catch (error) {
  AbrovaTrace.getInstance()?.captureException(error as Error, 'Custom context', {
    userId: '123',
    customData: 'value',
  });
}

// Capture a message (level: 'debug' | 'info' | 'warning' | 'error')
AbrovaTrace.getInstance()?.captureMessage(
  'User completed checkout',
  'info',
  { orderId: '456' }
);
پیام‌ها کجا نمایش داده می‌شوند.

پیام‌ها در کنسول، در بخش ابرووا تریس › پیام‌ها، همراه با سطح، پلتفرم، داده‌های اضافه و breadcrumbها نمایش داده می‌شوند. پیام‌ها هیچ‌وقت مشکل (issue) نمی‌سازند. سطح‌ها: 'debug'، 'info' (پیش‌فرض)، 'warning' و 'error'. پیام‌ها را برای چیزهایی به کار ببرید که اپ عمداً گزارش می‌دهد («پرداخت شروع شد»، «همگام‌سازی تمام شد»)؛ برای داده‌های عیب‌یابی پرحجم از لاگ‌ها استفاده کنید.

Breadcrumbها کارهای کاربر را ثبت می‌کنند و زمینه‌ی خطاها را فراهم می‌کنند. جابه‌جایی بین صفحه‌ها (بعد از استفاده از یکی از hookهای navigation) و فراخوانی‌های console.error / console.warn خودکار ثبت می‌شوند.

Breadcrumbهای دستی

typescript
import { BreadcrumbService, BreadcrumbType } from '@abrova-trace/nextjs-sdk';

// Generic breadcrumb
BreadcrumbService.add('User action', BreadcrumbType.User, { button: 'submit' });

// Specific types
BreadcrumbService.addUser('Clicked checkout button');
BreadcrumbService.addHttp('POST', '/api/orders', 200);
BreadcrumbService.addState('Cart updated', { items: 3 });
BreadcrumbService.addNavigation('/cart', '/checkout');

با hookها

tsx
import { useBreadcrumbs } from '@abrova-trace/nextjs-sdk/react';

function Component() {
  const { addBreadcrumb, addHttp, addState } = useBreadcrumbs();

  const handleSubmit = async (data) => {
    addBreadcrumb('Form submitted', { formName: 'contact' });

    const response = await fetch('/api/contact', {
      method: 'POST',
      body: JSON.stringify(data),
    });

    addHttp('POST', '/api/contact', response.status);
  };

  return <form onSubmit={handleSubmit}>...</form>;
}

تشخیص کرش#

SDK با یک سیستم heartbeat مبتنی بر localStorage، کرش و از کار افتادن تب مرورگر را تشخیص می‌دهد.

  • کرش تب — کرش تب مرورگر را تشخیص می‌دهد
  • تب بدون پاسخ — تب‌های هنگ‌کرده را تشخیص می‌دهد
  • بستن اجباری — حالت‌های بستن اجباری را تشخیص می‌دهد
  • گزارش پس از وقوع — گزارش در اجرای بعدی

چطور کار می‌کند

  1. اپ شروع می‌شود — یک نشانگر کرش در localStorage ساخته می‌شود
  2. heartbeat هر ۵ ثانیه اجرا می‌شود
  3. اپ به‌طور عادی بسته می‌شود — نشانگر حذف می‌شود
  4. اپ کرش می‌کند — نشانگر باقی می‌ماند
  5. نشست بعدی — کرش تشخیص داده و گزارش می‌شود

API Routeها و Server Componentها#

فراخوانی init() در Providers / _app.tsx فقط در مرورگر اجرا می‌شود، پس روی سرور تا وقتی SDK را آن‌جا هم راه‌اندازی نکنید، AbrovaTrace.getInstance() مقدار null برمی‌گرداند. یک helper کوچک سمت سرور بسازید (اگر نمونه‌ای از قبل راه‌اندازی شده باشد، init() همان را برمی‌گرداند):

typescript
// lib/abrova-trace-server.ts
import { AbrovaTrace } from '@abrova-trace/nextjs-sdk';

export const trace =
  AbrovaTrace.getInstance() ??
  AbrovaTrace.init({
    apiKey: process.env.ABROVA_TRACE_API_KEY!,
    environment: process.env.NODE_ENV,
  });

API Routeها

typescript
// pages/api/example.ts
import type { NextApiRequest, NextApiResponse } from 'next';
import { trace } from '@/lib/abrova-trace-server';

export default async function handler(req: NextApiRequest, res: NextApiResponse) {
  try {
    // Your API logic
  } catch (error) {
    trace.captureException(error as Error, 'API Error', {
      endpoint: '/api/example',
      method: req.method,
    });
    res.status(500).json({ error: 'Internal Server Error' });
  }
}

Server Componentها (App Router)

tsx
// app/page.tsx
import { trace } from '@/lib/abrova-trace-server';

export default async function Page() {
  try {
    const data = await fetchData();
    return <div>{data}</div>;
  } catch (error) {
    trace.captureException(error as Error, 'Server Component Error');
    return <div>Error loading data</div>;
  }
}

Source Mapها#

برای داشتن stack traceهای خوانا، source mapهای production را در next.config.js فعال کنید:

javascript
// next.config.js
module.exports = {
  productionBrowserSourceMaps: true,
};

بعد از build اپ، فایل‌های .map را با CLI ابرووا تریس آپلود کنید و همان release را بدهید که به AbrovaTrace.init() می‌دهید:

bash
npx @abrova-trace/cli sourcemaps upload .next/static --release 1.0.0 --project YOUR_PROJECT_ID --token ab_pat_xxx

گزینه‌های پیکربندی#

typescript
AbrovaTrace.init({
apiKey: 'ab_live_your_api_key',           // Required
environment: 'production',              // Default: 'production'
release: '1.0.0',                       // Optional
captureUncaughtErrors: true,            // Default: true
enabled: true,                          // Default: true
debug: false,                           // Default: false
timeout: 10,                            // Default: 10 seconds
enableServerSide: true,                 // Default: true
enableClientSide: true,                 // Default: true
enableCrashDetection: true,             // Default: true
maxBreadcrumbs: 20,                     // Default: 20
sampleRate: 1.0,                        // 0.0 to 1.0
tags: { team: 'frontend' },            // Custom tags
ignoreErrors: ['ResizeObserver loop limit exceeded'],
ignoreUrls: [/chrome-extension:\/\//],   // matched against the stack trace
beforeSend: (error) => error,           // Filter/modify errors
});
گزینهنوعاجباریتوضیح
apiKeystringبلهکلید API پروژه
environmentstringخیرنام محیط (پیش‌فرض: "production")
releasestringخیرشناسه‌ی نسخه‌ی اپ
captureUncaughtErrorsbooleanخیرگرفتن خودکار خطاهای مدیریت‌نشده (پیش‌فرض: true)
enabledbooleanخیرفعال/غیرفعال کردن SDK (پیش‌فرض: true)
debugbooleanخیرفعال کردن لاگ‌های debug (پیش‌فرض: false)
timeoutnumberخیرمهلت درخواست HTTP بر حسب ثانیه (پیش‌فرض: 10)
enableServerSidebooleanخیرثبت خودکار خطاهای مدیریت‌نشده و unhandled rejectionها روی سرور (پیش‌فرض: true)
enableClientSidebooleanخیرثبت خودکار خطاهای مدیریت‌نشده و unhandled rejectionها در مرورگر (پیش‌فرض: true)
enableCrashDetectionbooleanخیرفعال کردن تشخیص کرش (پیش‌فرض: true)
maxBreadcrumbsnumberخیرحداکثر تعداد breadcrumbهای نگه‌داشته‌شده (پیش‌فرض: 20)
sampleRatenumberخیرنرخ نمونه‌برداری خطاها و پیام‌ها بین 0.0 تا 1.0 (پیش‌فرض: 1.0)
tagsobjectخیرتگ‌های دلخواه که به همه‌ی خطاها اضافه می‌شوند
ignoreErrorsarrayخیرپیام‌های خطایی که نادیده گرفته می‌شوند (رشته یا RegExp)
ignoreUrlsarrayخیررشته یا RegExp که با stack trace خطا مقایسه می‌شود؛ در صورت تطابق، خطا کنار گذاشته می‌شود
beforeSendfunctionخیرhook برای تغییر یا فیلتر خطاها پیش از ارسال؛ با برگرداندن null یا false خطا کنار گذاشته می‌شود
apiUrlstringخیرآدرس پایه‌ی Trace API (پیش‌فرض: "https://trace.abrova.ir"). فقط برای نسخه‌ی self-hosted تنظیمش کنید

شناسایی کاربر#

typescript
import { AbrovaTrace } from '@abrova-trace/nextjs-sdk';

// Set user ID after authentication
AbrovaTrace.getInstance()?.setUserId('user-123');

// Get user ID
const userId = AbrovaTrace.getInstance()?.getUserId();

App Router (Next.js 13+)

tsx
'use client';

import { useAbrovaTraceNavigation } from '@abrova-trace/nextjs-sdk/react';

export function NavigationTracker() {
  useAbrovaTraceNavigation();
  return null;
}

Pages Router

tsx
import { useAbrovaTracePagesRouter } from '@abrova-trace/nextjs-sdk/react';

function MyApp({ Component, pageProps }) {
  useAbrovaTracePagesRouter();
  return <Component {...pageProps} />;
}

ثبت دستی

typescript
import { RouterIntegration } from '@abrova-trace/nextjs-sdk';

RouterIntegration.setCurrentRoute('/custom-route');

زمینه و تگ‌ها#

metadata ماندگار را به همه‌ی خطاها و پیام‌ها اضافه کنید. تگ‌ها برای فیلتر کردن بر اساس دسته‌اند؛ extraها داده‌ی غنی‌تری برای هر رویدادند. (لاگ‌ها، spanها و Web Vitals این‌ها را همراه ندارند.)

Extraهای سراسری

typescript
const sdk = AbrovaTrace.getInstance();

sdk?.setExtra('organizationId', 'org-123');
sdk?.setExtra('feature', 'checkout-v2');

sdk?.setExtras({
  organizationId: 'org-123',
  feature: 'checkout-v2',
  experiment: 'new-flow',
});

const orgId = sdk?.getExtra('organizationId');
const allExtras = sdk?.getExtras();

sdk?.clearExtras();

تگ‌ها

typescript
const sdk = AbrovaTrace.getInstance();

sdk?.setTag('team', 'payments');
sdk?.setTag('region', 'us-east');

sdk?.setTags({ team: 'payments', version: '2.1' });

const team = sdk?.getTag('team');
const allTags = sdk?.getTags();

sdk?.clearTags();

شناسه‌ی نشست

هنگام راه‌اندازی SDK یک شناسه‌ی نشست یکتا خودکار ساخته می‌شود (۱۶ بایت تصادفی hex) و به همه‌ی خطاها و پیام‌ها اضافه می‌شود تا در کنسول ابرووا بر اساس نشست گروه‌بندی شوند:

typescript
const sessionId = AbrovaTrace.getInstance()?.getSessionId();

Web Vitals#

Core Web Vitals را با کتابخانه‌ی رسمی گوگل، web-vitals، اندازه بگیرید (فقط در مرورگر). این معیارها در کنسول ابرووا، در بخش ابرووا تریس › عملکرد، کنار spanهای HTTP نمایش داده می‌شوند.

typescript
const sdk = AbrovaTrace.getInstance();

sdk?.enableWebVitals({
  reportAllChanges: false, // Only report final values (default)
  batchInterval: 5000,     // Send 5 s after the last metric (default); also sent when the page is hidden
});

معیارهای اندازه‌گیری‌شده:

گزینهنوعاجباریتوضیح
LCP--Largest Contentful Paint
CLS--Cumulative Layout Shift
INP--Interaction to Next Paint
TTFB--Time to First Byte
FCP--First Contentful Paint

رویدادهای Web Vitals خودکار نوع دستگاه (mobile/tablet/desktop)، نوع اتصال، آدرس صفحه و اطلاعات route را همراه دارند.

TypeScript#

این SDK با TypeScript نوشته شده و تعریف کامل typeها را همراه دارد. وقتی برای اشیای پیکربندی یا payload رویدادها annotation صریح لازم دارید، typeها را import کنید:

typescript
import type {
  AbrovaTraceConfig,
  AbrovaTraceError,
  Breadcrumb,
} from '@abrova-trace/nextjs-sdk';

import type {
  PerformanceSpan,
  WebVitalsData,
  LogEntry,
  LogLevel,
  LogServiceConfig,
} from '@abrova-trace/nextjs-sdk';

لاگ#

لاگ ساخت‌یافته‌ی سمت سرور که در App Router، Pages Router و API Routeها کار می‌کند. لاگ از یک نمونه‌ی جداگانه‌ی LogService استفاده می‌کند — آن را در lib/logger.ts بسازید و از هر جا import کنید:

typescript
import { LogService } from '@abrova-trace/nextjs-sdk';

export const logger = new LogService({
  apiKey: process.env.ABROVA_TRACE_API_KEY!,
  sourceId: 'nextjs-app',
  platform: 'nextjs',
  environment: process.env.NODE_ENV,
});

logger.log('Users fetched', 'info', { count: 42 });

می‌توانید از طریق نمونه‌ی SDK هم لاگ بفرستید که از پیکربندی init() استفاده می‌کند: AbrovaTrace.getInstance()?.info('Users fetched', { count: 42 }) (جدول «لاگ» را در «مرجع API» پایین ببینید). لاگ‌ها از captureMessage() جدا هستند: به‌صورت دسته‌ای ارسال می‌شوند و در بخش ابرووا تریس › لاگ‌ها نمایش داده می‌شوند.

برای جزئیات کامل — App Router، Pages Router، API Routeها، سطح‌های لاگ و middleware درخواست — صفحه‌ی لاگ در Next.js SDK را ببینید.

مرجع API#

AbrovaTrace — راه‌اندازی و چرخه‌ی حیات

گزینهنوعاجباریتوضیح
init(config)--راه‌اندازی SDK
getInstance()--گرفتن نمونه‌ی singleton از SDK
close()--پاک‌سازی SDK و ارسال داده‌های در صف

ثبت خطا

گزینهنوعاجباریتوضیح
captureException(error, message?, extra?, level?, callback?)--ثبت یک خطا / exception
captureMessage(message, level?, extra?, callback?)--ارسال پیام به ابرووا تریس › پیام‌ها (مشکل ساخته نمی‌شود)

کاربر و نشست

گزینهنوعاجباریتوضیح
setUserId(userId)--تعیین شناسه‌ی کاربر فعلی
getUserId()--گرفتن شناسه‌ی کاربر فعلی
getSessionId()--گرفتن شناسه‌ی نشستی که خودکار ساخته شده

زمینه‌ی سراسری (extraها)

گزینهنوعاجباریتوضیح
setExtra(key, value)--تعیین یک extra
setExtras(extras)--تعیین چند extra به‌طور هم‌زمان
getExtra(key)--گرفتن مقدار یک extra
getExtras()--گرفتن همه‌ی extraها
clearExtras()--پاک کردن همه‌ی extraها

تگ‌ها

گزینهنوعاجباریتوضیح
setTag(key, value)--تعیین یک تگ
setTags(tags)--تعیین چند تگ به‌طور هم‌زمان
getTag(key)--گرفتن مقدار یک تگ
getTags()--گرفتن همه‌ی تگ‌ها
clearTags()--پاک کردن همه‌ی تگ‌ها

پایش عملکرد

گزینهنوعاجباریتوضیح
enablePerformanceTracking(options?)--روشن کردن گزارش عملکرد؛ در مرورگر همه‌ی فراخوانی‌های fetch را هم اندازه می‌گیرد. گزینه‌ها: batchSize (پیش‌فرض: 5) و flushInterval بر حسب میلی‌ثانیه (پیش‌فرض: 5000)
enableWebVitals(options?)--روشن کردن اندازه‌گیری Web Vitals
reportPerformanceSpan(span)--گزارش یک span
reportPerformanceSpanBatch(spans)--گزارش چند span به‌طور هم‌زمان
trackOperation(operation, fn, options?)--اندازه‌گیری زمان و گزارش یک عملیات async
createPerformanceFetch()--ساخت یک wrapper برای fetch که برای هر درخواست یک span گزارش می‌دهد. فقط بعد از فراخوانی enablePerformanceTracking()، trackOperation() یا reportPerformanceSpan() گزارش می‌دهد
flushPerformance()--ارسال فوری داده‌های عملکرد بافرشده

لاگ

گزینهنوعاجباریتوضیح
enableLogging(options?)--روشن کردن مسیر ارسال لاگ
log(message, level?, metadata?)--لاگ با سطح مشخص
trace(message, metadata?)--لاگ در سطح trace
logDebug(message, metadata?)--لاگ در سطح debug
info(message, metadata?)--لاگ در سطح info
warn(message, metadata?)--لاگ در سطح warn
logError(message, metadata?)--لاگ در سطح error
fatal(message, metadata?)--لاگ در سطح fatal
flushLogs()--ارسال فوری لاگ‌های بافرشده
pendingLogCount--تعداد لاگ‌هایی که هنوز در بافر هستند

BreadcrumbService

گزینهنوعاجباریتوضیح
add(message, type, data?, level?)--افزودن یک breadcrumb عمومی
addNavigation(from, to, data?)--افزودن breadcrumb جابه‌جایی بین صفحه‌ها
addUser(action, data?)--افزودن breadcrumb کار کاربر
addHttp(method, url, status?, data?)--افزودن breadcrumb HTTP
addState(message, data?)--افزودن breadcrumb تغییر state
getAll()--گرفتن همه‌ی breadcrumbها
clear()--پاک کردن همه‌ی breadcrumbها

RouterIntegration

گزینهنوعاجباریتوضیح
trackAppRouterNavigation(pathname, searchParams?)--ثبت دستی جابه‌جایی در App Router
initializePagesRouter(router)--راه‌اندازی ثبت جابه‌جایی در Pages Router
setCurrentRoute(route)--جایگزین کردن route فعلی
getCurrentRoute()--گرفتن route فعلی
getNavigationContext()--گرفتن زمینه‌ی فعلی navigation

CrashDetector

گزینهنوعاجباریتوضیح
enable()--روشن کردن تشخیص کرش
disable()--خاموش کردن تشخیص کرش
didCrashLastSession()--اگر نشست قبلی با کرش تمام شده باشد true برمی‌گرداند
getCrashReport()--گرفتن جزئیات کرش قبلی

هوک‌های React

گزینهنوعاجباریتوضیح
useAbrovaTrace()--برمی‌گرداند: { captureException, captureMessage, setUserId, setExtra, setExtras, setTag, setTags }
useAbrovaTraceNavigation()--ثبت خودکار جابه‌جایی در App Router
useAbrovaTracePagesRouter()--ثبت خودکار جابه‌جایی در Pages Router
useBreadcrumbs()--برمی‌گرداند: { addBreadcrumb, addNavigation, addHttp, addState }

کامپوننت‌های React

گزینهنوعاجباریتوضیح
ErrorBoundary--error boundary برای React با گزارش خودکار خطا (نام دیگر: AbrovaTraceErrorBoundary)

توصیه‌ها#

زود راه‌اندازی کنید

ابرووا تریس را تا جای ممکن زود در چرخه‌ی حیات اپ راه‌اندازی کنید تا همه‌ی خطاها گرفته شوند

شناسه‌ی کاربر را تنظیم کنید

بعد از احراز هویت، شناسه‌ی کاربر را تنظیم کنید تا خطاها به کاربران نسبت داده شوند

از error boundary استفاده کنید

بخش‌های اصلی اپ را داخل error boundary قرار دهید تا خطاهای React خودکار ثبت شوند

به خطاها زمینه اضافه کنید

هنگام ثبت خطا، شناسه‌ی کاربر، مبالغ و داده‌های مرتبط را همراهش بفرستید

از breadcrumb استفاده کنید

برای کارهای مهم کاربر breadcrumb اضافه کنید تا زمینه‌ی خطا روشن باشد

پیکربندی جدا برای هر محیط

برای production و development پیکربندی جدا داشته باشید (حالت debug، نرخ نمونه‌برداری)

هنگام unmount پاک‌سازی کنید

برای عملکرد درست تشخیص کرش، هنگام پاک‌سازی AbrovaTrace.getInstance()?.close() را صدا بزنید

این صفحه مفید بود؟
گزارش مشکل