--- name: applicationinsights-web-ts description: "Instrument browser/web apps with the Application Insights JavaScript SDK (@microsoft/applicationinsights-web)." risk: critical source: https://github.com/microsoft/skills/tree/main/.github/plugins/azure-sdk-typescript/skills/applicationinsights-web-ts source_repo: microsoft/skills source_type: official date_added: 2026-07-01 license: MIT license_source: https://github.com/microsoft/skills/blob/main/LICENSE --- # Application Insights JavaScript SDK (Web) for TypeScript ## When to Use Use this skill when you need instrument browser/web apps with the Application Insights JavaScript SDK (@microsoft/applicationinsights-web). Use for Real User Monitoring (RUM) — page views, clicks, AJAX/fetch dependencies, exceptions, custom events, and browser-side GenAI agent traces with explicitly verified backend correlation. Real User Monitoring (RUM) for browser apps with `@microsoft/applicationinsights-web`. Auto-collects page views, AJAX/fetch dependencies, unhandled exceptions, and (with the Click Analytics plugin) clicks. Supports custom events, metrics, and **GenAI agent traces** that follow OpenTelemetry GenAI semantic conventions and correlate to backend spans via W3C Trace Context. > **Distinct from `azure-monitor-opentelemetry-ts`**, which is for Node.js server apps. This skill is for **browser/web** code (and React Native). ## Before Implementation Search `microsoft-docs` MCP for current API patterns: - Query: "Application Insights JavaScript SDK setup" - Query: "Application Insights JavaScript SDK configuration" - Query: "Application Insights JavaScript framework extensions React Angular" - Verify package version: `npm view @microsoft/applicationinsights-web version` ## Packages | Package | Purpose | | --- | --- | | `@microsoft/applicationinsights-web` | Core RUM SDK (page views, AJAX, exceptions). | | `@microsoft/applicationinsights-clickanalytics-js` | Auto-collect click telemetry. | | `@microsoft/applicationinsights-react-js` | React plugin (router instrumentation, hooks, HOC, ErrorBoundary). | | `@microsoft/applicationinsights-react-native` | React Native plugin (native crashes, sessions). | | `@microsoft/applicationinsights-angularplugin-js` | Angular plugin (router events, ErrorHandler). | | `@microsoft/applicationinsights-debugplugin-js` | Dev-only telemetry inspector. | | `@microsoft/applicationinsights-perfmarkmeasure-js` | User Timing (`performance.mark/measure`) integration. | ## Installation ```bash npm i --save @microsoft/applicationinsights-web # Optional plugins (install only what you use): npm i --save @microsoft/applicationinsights-clickanalytics-js npm i --save @microsoft/applicationinsights-react-js @microsoft/applicationinsights-react-native @microsoft/applicationinsights-angularplugin-js ``` Typings ship with the package — no separate `@types/...` install needed. ## Connection String The browser SDK requires a connection string at init time. **It ships in plaintext to clients** — Microsoft Entra ID auth is not supported for browser telemetry. Use a separate App Insights resource with local auth enabled for browser RUM if you need to isolate it from backend telemetry. ```bash # Vite / CRA / Next.js — expose to client via the public env prefix VITE_APPINSIGHTS_CONNECTION_STRING="InstrumentationKey=...;IngestionEndpoint=https://...;LiveEndpoint=https://..." NEXT_PUBLIC_APPINSIGHTS_CONNECTION_STRING="InstrumentationKey=..." ``` ## Quick Start (npm) ```typescript import { ApplicationInsights, DistributedTracingModes } from "@microsoft/applicationinsights-web"; export const appInsights = new ApplicationInsights({ config: { connectionString: import.meta.env.VITE_APPINSIGHTS_CONNECTION_STRING, enableAutoRouteTracking: true, // SPA route changes -> page views enableCorsCorrelation: false, // opt in only for approved backend origins // propagate Request-Id / traceparent to cross-origin AJAX enableRequestHeaderTracking: false, // avoid collecting credentials/PII enableResponseHeaderTracking: false, distributedTracingMode: DistributedTracingModes.W3C, // import the enum; do not infer names from numeric literals autoTrackPageVisitTime: true, disableFetchTracking: false, // fetch() is auto-instrumented by default excludeRequestFromAutoTrackingPatterns: [/livemetrics\.azure\.com/i] } }); appInsights.loadAppInsights(); appInsights.trackPageView(); ``` Call `loadAppInsights()` exactly once, as early as possible (before user interactions you want tracked). Then `trackPageView()` for the initial load — when `enableAutoRouteTracking` is on, subsequent route changes are automatic. ## Quick Start (SDK Loader Script) Recommended when you want auto-updating SDK and zero build pipeline. Paste this as the **first** `