В версии 3.0 изменились инициализация модулей, их отключение и подключение Web Vitals. Ниже описано, что нужно изменить в приложении при переходе с 2.x.
npm install @apptracer/sdk --save
Если SDK подключён в нескольких бандлах приложения, обновите его во всех. Версии 2.x и 3.0 хранят данные отдельно и не передают друг другу настройки. При одновременной загрузке обе версии могут собрать и отправить одну и ту же ошибку.
Обычные импорты — @apptracer/sdk и @apptracer/sdk/lite. Для старых браузеров предусмотрены @apptracer/sdk/legacy и @apptracer/sdk/legacy/lite. Legacy — это API 3.0 с ES5-синтаксисом, а не совместимость с API 2.x. Полифилы и преобразование внешних библиотек обеспечивает приложение. П одробнее о платформах и точках входа.
В 3.0 повторная инициализация отклоняется для всех публичных модулей, включая модули отправки и Web Vitals. Повторный вызов initTracer* вызывает исключение, даже если параметры не изменились. Чтобы получить уже подключённый модуль, используйте getTracerModules():
import { getTracerModules } from '@apptracer/sdk'; getTracerModules().error?.error(new Error('Operation failed'));
В Lite передайте имя экземпляра: getTracerModules('myModule') из @apptracer/sdk/lite. Разместите инициализацию при запуске приложения, чтобы она не повторялась при HMR, повторном монтировании компонента или загрузке другого бандла.
initTracerSdk подключает модули в указанном порядке. Если один из них не удалось подключить, предыдущие продолжают работать, а следующие не запускаются.
disableTracerModules() теперь приостанавливает основную версию SDK. По умолчанию неотправленные данные очищаются, а сами модули, настройки, контекст, пользователь, плагины и сессия сохраняются. Для продолжения работы вызовите enableTracerModules(). Повторно вызывать initTracer* не нужно.
В 3.0 появился параметр keepData: передайте disableTracerModules({ keepData: true }), чтобы сохранить неотправленные ошибки, метрики и накопленные логи на время паузы. В 2.x этого параметра не было. Незавершённые таймеры и замеры при этом отменяются. Уже отправленные HTTP-запросы завершаются, а отменённые повторные отправки после паузы не возобновляются.
Пауза основной версии SDK не влияет на Lite и отдельно подключённый экспортёр OpenTelemetry. Подробнее см. в описании отключения модулей.
| В 2.x | В 3.0 |
|---|---|
initTracerWebVitals | initTracerPerformanceWebVitals({ webVitals, ... }). Приложение устанавливает web-vitals и передаёт onCLS, onFCP, onLCP, onINP, onTTFB. |
initTracerWebVitalsUploader | Общий initTracerPerformanceUploader; инициализируйте его один раз вместе с остальными метриками. |
addMetricAttributes | webVitalsMetricAttributes. |
Библиотеку web-vitals теперь нужно установить отдельно и передать её функции в объекте webVitals. Это нужно сделать и в том случае, если вы уже использовали initTracerPerformanceWebVitals в 2.x: вызова без аргумента или только с webVitalsMetricAttributes больше недостаточно.
В TypeScript замените удалённый интерфейс ITracerWebVitalsConfig на ITracerPerformanceWebVitalsConfig<typeof webVitals>. Пример подключения приведён на странице Web Vitals.