[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-openai-observability":3,"mdc--ics9c2-key":35,"related-repo-openai-observability":10664,"related-org-openai-observability":10785},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":30,"sourceUrl":33,"mdContent":34},"observability","configure Vercel observability and monitoring","Vercel Observability expert guidance — Drains (logs, traces, speed insights, web analytics), Web Analytics, Speed Insights, runtime logs, custom events, OpenTelemetry integration, and monitoring dashboards. Use when instrumenting, debugging, or optimizing application performance and user experience on Vercel.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"openai","OpenAI","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fopenai.png",[12,15,18,21],{"name":13,"slug":4,"type":14},"Observability","tag",{"name":16,"slug":17,"type":14},"Vercel","vercel",{"name":19,"slug":20,"type":14},"Monitoring","monitoring",{"name":22,"slug":23,"type":14},"Analytics","analytics",3992,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins","2026-04-06T18:41:14.936662",null,465,[],{"repoUrl":25,"stars":24,"forks":28,"topics":31,"description":32},[],"OpenAI Plugins","https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins\u002Ftree\u002FHEAD\u002Fplugins\u002Fvercel\u002Fskills\u002Fobservability","---\nname: observability\ndescription: Vercel Observability expert guidance — Drains (logs, traces, speed insights, web analytics), Web Analytics, Speed Insights, runtime logs, custom events, OpenTelemetry integration, and monitoring dashboards. Use when instrumenting, debugging, or optimizing application performance and user experience on Vercel.\nmetadata:\n  priority: 6\n  docs:\n    - \"https:\u002F\u002Fvercel.com\u002Fdocs\u002Fobservability\"\n    - \"https:\u002F\u002Fvercel.com\u002Fdocs\u002Fobservability\u002Fotel-overview\"\n  sitemap: \"https:\u002F\u002Fvercel.com\u002Fsitemap\u002Fdocs.xml\"\n  pathPatterns:\n    - 'instrumentation.ts'\n    - 'instrumentation.js'\n    - 'src\u002Finstrumentation.ts'\n    - 'src\u002Finstrumentation.js'\n    - 'app\u002Flayout.*'\n    - 'src\u002Fapp\u002Flayout.*'\n    - 'pages\u002F_app.*'\n    - 'src\u002Fpages\u002F_app.*'\n    - 'apps\u002F*\u002Finstrumentation.ts'\n    - 'apps\u002F*\u002Finstrumentation.js'\n    - 'apps\u002F*\u002Fapp\u002Flayout.*'\n    - 'apps\u002F*\u002Fsrc\u002Fapp\u002Flayout.*'\n    - 'apps\u002F*\u002Fpages\u002F_app.*'\n    - 'apps\u002F*\u002Fsrc\u002Fpages\u002F_app.*'\n    - 'sentry.client.config.*'\n    - 'sentry.server.config.*'\n    - 'sentry.edge.config.*'\n  bashPatterns:\n    - '\\bvercel\\s+logs?\\b'\n    - '\\bvercel\\s+logs?\\s+.*--follow\\b'\n    - '\\bvercel\\s+logs?\\s+.*--level\\b'\n    - '\\bvercel\\s+logs?\\s+.*--since\\b'\n    - '\\bcurl\\s+.*deployments.*events\\b'\n    - '\\bnpm\\s+(install|i|add)\\s+[^\\n]*@vercel\u002Fanalytics\\b'\n    - '\\bpnpm\\s+(install|i|add)\\s+[^\\n]*@vercel\u002Fanalytics\\b'\n    - '\\bbun\\s+(install|i|add)\\s+[^\\n]*@vercel\u002Fanalytics\\b'\n    - '\\byarn\\s+add\\s+[^\\n]*@vercel\u002Fanalytics\\b'\n    - '\\bnpm\\s+(install|i|add)\\s+[^\\n]*@vercel\u002Fspeed-insights\\b'\n    - '\\bpnpm\\s+(install|i|add)\\s+[^\\n]*@vercel\u002Fspeed-insights\\b'\n    - '\\bbun\\s+(install|i|add)\\s+[^\\n]*@vercel\u002Fspeed-insights\\b'\n    - '\\byarn\\s+add\\s+[^\\n]*@vercel\u002Fspeed-insights\\b'\n    - '\\bnpm\\s+(install|i|add)\\s+[^\\n]*@sentry\u002Fnextjs\\b'\n    - '\\bpnpm\\s+(install|i|add)\\s+[^\\n]*@sentry\u002Fnextjs\\b'\n    - '\\bbun\\s+(install|i|add)\\s+[^\\n]*@sentry\u002Fnextjs\\b'\n    - '\\byarn\\s+add\\s+[^\\n]*@sentry\u002Fnextjs\\b'\n    - '\\bnpm\\s+(install|i|add)\\s+[^\\n]*@sentry\u002Fnode\\b'\n    - '\\bpnpm\\s+(install|i|add)\\s+[^\\n]*@sentry\u002Fnode\\b'\n    - '\\bbun\\s+(install|i|add)\\s+[^\\n]*@sentry\u002Fnode\\b'\n    - '\\byarn\\s+add\\s+[^\\n]*@sentry\u002Fnode\\b'\n    - '\\bnpm\\s+(install|i|add)\\s+[^\\n]*@datadog\u002Fbrowser-rum\\b'\n    - '\\bpnpm\\s+(install|i|add)\\s+[^\\n]*@datadog\u002Fbrowser-rum\\b'\n    - '\\bbun\\s+(install|i|add)\\s+[^\\n]*@datadog\u002Fbrowser-rum\\b'\n    - '\\byarn\\s+add\\s+[^\\n]*@datadog\u002Fbrowser-rum\\b'\n    - '\\bnpm\\s+(install|i|add)\\s+[^\\n]*\\bcheckly\\b'\n    - '\\bpnpm\\s+(install|i|add)\\s+[^\\n]*\\bcheckly\\b'\n    - '\\bbun\\s+(install|i|add)\\s+[^\\n]*\\bcheckly\\b'\n    - '\\byarn\\s+add\\s+[^\\n]*\\bcheckly\\b'\n    - '\\bnpm\\s+(install|i|add)\\s+[^\\n]*\\bnewrelic\\b'\n    - '\\bpnpm\\s+(install|i|add)\\s+[^\\n]*\\bnewrelic\\b'\n    - '\\bbun\\s+(install|i|add)\\s+[^\\n]*\\bnewrelic\\b'\n    - '\\byarn\\s+add\\s+[^\\n]*\\bnewrelic\\b'\n  promptSignals:\n    phrases:\n      - \"add logging\"\n      - \"add logs\"\n      - \"set up logging\"\n      - \"setup logging\"\n      - \"configure logging\"\n      - \"structured logging\"\n      - \"log drain\"\n      - \"log drains\"\n      - \"vercel analytics\"\n      - \"speed insights\"\n      - \"web analytics\"\n      - \"opentelemetry\"\n      - \"otel\"\n      - \"instrumentation\"\n      - \"monitoring\"\n      - \"set up monitoring\"\n      - \"add observability\"\n      - \"track errors\"\n      - \"error tracking\"\n      - \"sentry\"\n      - \"datadog\"\n      - \"check the logs\"\n      - \"show me the error\"\n      - \"what went wrong\"\n      - \"where did it fail\"\n      - \"show me the logs\"\n      - \"find the error\"\n      - \"why did it fail\"\n      - \"debug the error\"\n    allOf:\n      - [add, logging]\n      - [add, monitoring]\n      - [set up, logs]\n      - [configure, analytics]\n      - [vercel, logs]\n      - [vercel, analytics]\n      - [track, performance]\n      - [track, errors]\n    anyOf:\n      - \"logging\"\n      - \"monitoring\"\n      - \"analytics\"\n      - \"observability\"\n      - \"telemetry\"\n      - \"traces\"\n      - \"metrics\"\n      - \"debug\"\n      - \"debugging\"\n      - \"stuck\"\n      - \"hanging\"\n      - \"hung\"\n      - \"waiting\"\n      - \"stalled\"\n      - \"spinning\"\n      - \"timeout\"\n      - \"slow\"\n      - \"pending\"\n      - \"unresponsive\"\n    minScore: 6\n---\n\n# Vercel Observability\n\nYou are an expert in Vercel's observability stack — runtime logs, structured logging, Drains, Web Analytics, Speed Insights, and monitoring integrations. **Always start with logging.** When something is stuck, slow, or broken, the first step is always to check or add logs.\n\n## Structured Logging Baseline\n\nAdd this to every API route and server action as a minimum. If the user reports something stuck, hanging, or slow, verify this baseline exists first:\n\n```ts\nconst start = Date.now();\nconsole.log(JSON.stringify({ level: \"info\", msg: \"start\", route: \"\u002Fapi\u002Fexample\", requestId: req.headers.get(\"x-vercel-id\") }));\n\u002F\u002F ... your logic ...\nconsole.log(JSON.stringify({ level: \"info\", msg: \"done\", route: \"\u002Fapi\u002Fexample\", ms: Date.now() - start }));\n\u002F\u002F On error:\nconsole.error(JSON.stringify({ level: \"error\", msg: \"failed\", route: \"\u002Fapi\u002Fexample\", error: err.message, ms: Date.now() - start }));\n```\n\n## Runtime Logs\n\nVercel provides real-time logs for all function invocations.\n\n### Structured Logging\n\n```ts\n\u002F\u002F app\u002Fapi\u002Fprocess\u002Froute.ts\nexport async function POST(req: Request) {\n  const start = Date.now()\n  const data = await req.json()\n\n  \u002F\u002F Structured logs appear in Vercel's log viewer\n  console.log(JSON.stringify({\n    level: 'info',\n    message: 'Processing request',\n    requestId: req.headers.get('x-vercel-id'),\n    payload_size: JSON.stringify(data).length,\n  }))\n\n  try {\n    const result = await processData(data)\n    console.log(JSON.stringify({\n      level: 'info',\n      message: 'Request completed',\n      duration_ms: Date.now() - start,\n    }))\n    return Response.json(result)\n  } catch (error) {\n    console.error(JSON.stringify({\n      level: 'error',\n      message: 'Processing failed',\n      error: error instanceof Error ? error.message : String(error),\n      duration_ms: Date.now() - start,\n    }))\n    return Response.json({ error: 'Internal error' }, { status: 500 })\n  }\n}\n```\n\n### Next.js Instrumentation\n\n```ts\n\u002F\u002F instrumentation.ts (Next.js 16)\nexport async function register() {\n  if (process.env.NEXT_RUNTIME === 'nodejs') {\n    \u002F\u002F Initialize monitoring on server startup\n    const { initMonitoring } = await import('.\u002Flib\u002Fmonitoring')\n    initMonitoring()\n  }\n}\n```\n\n### Runtime Logs via REST API\n\nQuery deployment runtime logs programmatically. The endpoint returns `application\u002Fstream+json` — a streaming response where each line is a separate JSON object.\n\n```bash\n# Stream runtime logs for a deployment (returns application\u002Fstream+json)\ncurl -N -H \"Authorization: Bearer $VERCEL_TOKEN\" \\\n  \"https:\u002F\u002Fapi.vercel.com\u002Fv3\u002Fdeployments\u002F\u003Cdeployment-id>\u002Fevents\" \\\n  --max-time 120\n```\n\n> **Streaming guidance:** The response is unbounded — always set a timeout (`--max-time` in curl, `AbortController` with `setTimeout` in fetch). Parse line-by-line as NDJSON. Each line contains `{ timestamp, text, level, source }`.\n\n```ts\n\u002F\u002F Programmatic streaming with timeout\nconst controller = new AbortController()\nconst timeout = setTimeout(() => controller.abort(), 60_000) \u002F\u002F 60s max\n\nconst res = await fetch(\n  `https:\u002F\u002Fapi.vercel.com\u002Fv3\u002Fdeployments\u002F${deploymentId}\u002Fevents`,\n  {\n    headers: { Authorization: `Bearer ${process.env.VERCEL_TOKEN}` },\n    signal: controller.signal,\n  }\n)\n\nconst reader = res.body!.getReader()\nconst decoder = new TextDecoder()\nlet buffer = ''\n\ntry {\n  while (true) {\n    const { done, value } = await reader.read()\n    if (done) break\n    buffer += decoder.decode(value, { stream: true })\n    const lines = buffer.split('\\n')\n    buffer = lines.pop()! \u002F\u002F keep incomplete line in buffer\n    for (const line of lines) {\n      if (!line.trim()) continue\n      const event = JSON.parse(line)\n      console.log(`[${event.level}] ${event.text}`)\n    }\n  }\n} finally {\n  clearTimeout(timeout)\n}\n```\n\n> **MCP alternative:** Use `get_runtime_logs` via the Vercel MCP server for agent-friendly log queries without managing streams directly. See `⤳ skill: vercel-api`.\n\n## Web Analytics\n\nPrivacy-friendly, first-party analytics with no cookie banners required.\n\n### Installation\n\n```bash\nnpm install @vercel\u002Fanalytics\n```\n\n### Setup (Next.js App Router)\n\n```tsx\n\u002F\u002F app\u002Flayout.tsx\nimport { Analytics } from '@vercel\u002Fanalytics\u002Fnext'\n\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\n  return (\n    \u003Chtml>\n      \u003Cbody>\n        {children}\n        \u003CAnalytics \u002F>\n      \u003C\u002Fbody>\n    \u003C\u002Fhtml>\n  )\n}\n```\n\n### Custom Events (Pro\u002FEnterprise)\n\nTrack business-specific events beyond pageviews.\n\n```ts\nimport { track } from '@vercel\u002Fanalytics'\n\n\u002F\u002F Track a conversion\ntrack('purchase', {\n  product: 'pro-plan',\n  value: 20,\n  currency: 'USD',\n})\n\n\u002F\u002F Track a feature usage\ntrack('feature_used', {\n  name: 'ai-chat',\n  duration_ms: 3200,\n})\n```\n\n### Server-Side Tracking\n\n```ts\nimport { track } from '@vercel\u002Fanalytics\u002Fserver'\n\nexport async function POST(req: Request) {\n  const data = await req.json()\n  await processOrder(data)\n\n  track('order_completed', {\n    order_id: data.id,\n    total: data.total,\n  })\n\n  return Response.json({ success: true })\n}\n```\n\n## Speed Insights\n\nReal-user performance monitoring built on Core Web Vitals.\n\n### Installation\n\n```bash\nnpm install @vercel\u002Fspeed-insights\n```\n\n### Setup (Next.js App Router)\n\n```tsx\n\u002F\u002F app\u002Flayout.tsx\nimport { SpeedInsights } from '@vercel\u002Fspeed-insights\u002Fnext'\n\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\n  return (\n    \u003Chtml>\n      \u003Cbody>\n        {children}\n        \u003CSpeedInsights \u002F>\n      \u003C\u002Fbody>\n    \u003C\u002Fhtml>\n  )\n}\n```\n\n### Metrics Tracked\n\n| Metric | What It Measures | Good Threshold |\n|--------|-----------------|----------------|\n| LCP | Largest Contentful Paint | \u003C 2.5s |\n| INP | Interaction to Next Paint | \u003C 200ms |\n| CLS | Cumulative Layout Shift | \u003C 0.1 |\n| FCP | First Contentful Paint | \u003C 1.8s |\n| TTFB | Time to First Byte | \u003C 800ms |\n\n### Performance Attribution\n\nSpeed Insights attributes metrics to specific routes and pages, letting you identify which pages are slow and why.\n\n## Drains\n\nDrains forward observability data from Vercel to external endpoints. They are the primary mechanism for exporting logs, traces, Speed Insights, and Web Analytics data to third-party platforms.\n\n> **Plan requirement:** Drains require a **Pro or Enterprise** plan. For Hobby plans, see the [Fallback Guidance](#fallback-guidance-no-drains) section below.\n\n### Data Types\n\nDrains can forward multiple categories of telemetry:\n\n| Data Type | What It Contains | Use Case |\n|-----------|-----------------|----------|\n| **Logs** | Runtime function logs, build logs, static access logs | Centralized log aggregation |\n| **Traces** | OpenTelemetry-compatible distributed traces | End-to-end request tracing |\n| **Speed Insights** | Core Web Vitals and performance metrics | Performance monitoring pipelines |\n| **Web Analytics** | Pageviews, custom events, visitor data | Analytics data warehousing |\n\n### Supported Formats\n\n| Format | Protocol | Best For |\n|--------|----------|----------|\n| JSON | HTTPS POST | Custom backends, generic log collectors |\n| NDJSON | HTTPS POST | Streaming-friendly consumers, high-volume pipelines |\n| Syslog | TLS syslog | Traditional log management (rsyslog, syslog-ng) |\n\n### Setting Up Drains\n\nDrains are configured via the **Vercel Dashboard** at `https:\u002F\u002Fvercel.com\u002Fdashboard\u002F{team}\u002F~\u002Fsettings\u002Flog-drains` or the **REST API**.\n\n#### Via Dashboard\n\n1. Open `https:\u002F\u002Fvercel.com\u002Fdashboard\u002F{team}\u002F~\u002Fsettings\u002Flog-drains` (replace `{team}` with your team slug)\n2. Click **Add Log Drain**\n3. Select the drain type (JSON, NDJSON, or syslog) and enter the endpoint URL\n4. Choose which environments and sources to include\n5. Click **Create** to activate the drain\n\n#### Via REST API (`\u002Fv1\u002Fdrains`)\n\n```bash\n# List all drains\ncurl -s -H \"Authorization: Bearer $VERCEL_TOKEN\" \\\n  \"https:\u002F\u002Fapi.vercel.com\u002Fv1\u002Fdrains?teamId=$TEAM_ID\" | jq\n\n# Create a JSON drain\ncurl -X POST -H \"Authorization: Bearer $VERCEL_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  \"https:\u002F\u002Fapi.vercel.com\u002Fv1\u002Fdrains?teamId=$TEAM_ID\" \\\n  -d '{\n    \"url\": \"https:\u002F\u002Fyour-endpoint.example.com\u002Flogs\",\n    \"type\": \"json\",\n    \"sources\": [\"lambda\", \"edge\", \"static\"],\n    \"environments\": [\"production\"]\n  }'\n\n# Test a drain (sends a test payload to your endpoint)\ncurl -X POST -H \"Authorization: Bearer $VERCEL_TOKEN\" \\\n  \"https:\u002F\u002Fapi.vercel.com\u002Fv1\u002Fdrains\u002F\u003Cdrain-id>\u002Ftest?teamId=$TEAM_ID\"\n\n# Update a drain (change URL, sources, or environments)\ncurl -X PATCH -H \"Authorization: Bearer $VERCEL_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  \"https:\u002F\u002Fapi.vercel.com\u002Fv1\u002Fdrains\u002F\u003Cdrain-id>?teamId=$TEAM_ID\" \\\n  -d '{\n    \"url\": \"https:\u002F\u002Fnew-endpoint.example.com\u002Flogs\",\n    \"environments\": [\"production\", \"preview\"]\n  }'\n\n# Delete a drain\ncurl -X DELETE -H \"Authorization: Bearer $VERCEL_TOKEN\" \\\n  \"https:\u002F\u002Fapi.vercel.com\u002Fv1\u002Fdrains\u002F\u003Cdrain-id>?teamId=$TEAM_ID\"\n```\n\n### Web Analytics Drains Reference\n\nWhen a drain is configured to receive Web Analytics data, payloads arrive as batched events. The format depends on your drain type.\n\n#### JSON Payload Schema\n\n```json\n[\n  {\n    \"type\": \"pageview\",\n    \"url\": \"https:\u002F\u002Fexample.com\u002Fblog\u002Fpost-1\",\n    \"referrer\": \"https:\u002F\u002Fgoogle.com\",\n    \"timestamp\": 1709568000000,\n    \"geo\": { \"country\": \"US\", \"region\": \"CA\", \"city\": \"San Francisco\" },\n    \"device\": { \"os\": \"macOS\", \"browser\": \"Chrome\", \"isBot\": false },\n    \"projectId\": \"prj_xxxxx\",\n    \"environment\": \"production\"\n  },\n  {\n    \"type\": \"custom_event\",\n    \"name\": \"purchase\",\n    \"url\": \"https:\u002F\u002Fexample.com\u002Fcheckout\",\n    \"properties\": { \"product\": \"pro-plan\", \"value\": 20 },\n    \"timestamp\": 1709568100000,\n    \"geo\": { \"country\": \"US\" },\n    \"device\": { \"os\": \"macOS\", \"browser\": \"Chrome\", \"isBot\": false },\n    \"projectId\": \"prj_xxxxx\",\n    \"environment\": \"production\"\n  }\n]\n```\n\n#### NDJSON Payload Format\n\nEach line is a separate JSON object (one event per line):\n\n```\n{\"type\":\"pageview\",\"url\":\"https:\u002F\u002Fexample.com\u002F\",\"timestamp\":1709568000000,\"geo\":{\"country\":\"US\"},\"device\":{\"browser\":\"Chrome\"},...}\n{\"type\":\"pageview\",\"url\":\"https:\u002F\u002Fexample.com\u002Fabout\",\"timestamp\":1709568001000,\"geo\":{\"country\":\"DE\"},\"device\":{\"browser\":\"Firefox\"},...}\n{\"type\":\"custom_event\",\"name\":\"signup\",\"url\":\"https:\u002F\u002Fexample.com\u002Fregister\",\"timestamp\":1709568002000,...}\n```\n\n> **Ingestion tip:** For NDJSON, process line-by-line as events arrive. This format is preferred for high-volume pipelines where batch parsing overhead matters.\n\n### Security: Signature Verification\n\nVercel signs every drain payload with an HMAC-SHA1 signature in the `x-vercel-signature` header. **Always verify signatures in production** to prevent spoofed data.\n\n> **Critical:** You must verify against the **raw request body** (not a parsed\u002Fre-serialized version). JSON parsing and re-stringifying can change key order or whitespace, breaking the signature match.\n\n```ts\nimport { createHmac, timingSafeEqual } from 'crypto'\n\nfunction verifyDrainSignature(rawBody: string, signature: string, secret: string): boolean {\n  const expected = createHmac('sha1', secret).update(rawBody).digest('hex')\n  \u002F\u002F Use timing-safe comparison to prevent timing attacks\n  if (expected.length !== signature.length) return false\n  return timingSafeEqual(Buffer.from(expected), Buffer.from(signature))\n}\n```\n\nUsage in a drain endpoint:\n\n```ts\n\u002F\u002F app\u002Fapi\u002Fdrain\u002Froute.ts\nexport async function POST(req: Request) {\n  const rawBody = await req.text()\n  const signature = req.headers.get('x-vercel-signature')\n  const secret = process.env.DRAIN_SECRET!\n\n  if (!signature || !verifyDrainSignature(rawBody, signature, secret)) {\n    return new Response('Unauthorized', { status: 401 })\n  }\n\n  const events = JSON.parse(rawBody)\n  \u002F\u002F Process verified events...\n  return new Response('OK', { status: 200 })\n}\n```\n\n> **Secret management:** The drain signing secret is shown once when you create the drain. Store it in an environment variable (e.g., `DRAIN_SECRET`). If lost, delete and recreate the drain.\n\n### OpenTelemetry Integration\n\nVercel exports traces in OpenTelemetry-compatible format via Drains. Configure an OTel-compatible drain endpoint at `https:\u002F\u002Fvercel.com\u002Fdashboard\u002F{team}\u002F~\u002Fsettings\u002Flog-drains` → **Add Log Drain** → select **OTLP** format, or via the REST API.\n\n### Vendor Integrations\n\n```bash\n# Install via Marketplace (recommended — auto-configures drain)\nvercel integration add datadog\n```\n\nOr manually create a drain at `https:\u002F\u002Fvercel.com\u002Fdashboard\u002F{team}\u002F~\u002Fsettings\u002Flog-drains` → **Add Log Drain**, or via REST API, pointing to:\n\n| Vendor | Endpoint | Auth Header |\n|--------|----------|-------------|\n| **Datadog** | `https:\u002F\u002Fhttp-intake.logs.datadoghq.com\u002Fapi\u002Fv2\u002Flogs` | `DD-API-KEY` |\n| **Honeycomb** | `https:\u002F\u002Fapi.honeycomb.io\u002F1\u002Fbatch\u002F\u003Cdataset>` | `X-Honeycomb-Team` |\n\n### Fallback Guidance (No Drains)\n\nIf drains are unavailable (Hobby plan or not yet configured), use these alternatives:\n\n| Need | Alternative | How |\n|------|-------------|-----|\n| View runtime logs | **Vercel Dashboard** | `https:\u002F\u002Fvercel.com\u002F{team}\u002F{project}\u002Fdeployments` → select deployment → Logs tab |\n| Stream logs from terminal | **Vercel CLI** | `vercel logs \u003Cdeployment-url> --follow` (see `⤳ skill: vercel-cli`) |\n| Query logs programmatically | **MCP \u002F REST API** | `get_runtime_logs` tool or `\u002Fv3\u002Fdeployments\u002F:id\u002Fevents` (see `⤳ skill: vercel-api`) |\n| Monitor errors post-deploy | **CLI** | `vercel logs \u003Curl> --level error --since 1h` |\n| Web Analytics data | **Dashboard only** | `https:\u002F\u002Fvercel.com\u002F{team}\u002F{project}\u002Fanalytics` |\n| Performance metrics | **Dashboard only** | `https:\u002F\u002Fvercel.com\u002F{team}\u002F{project}\u002Fspeed-insights` |\n\n> **Upgrade path:** When ready for centralized observability, upgrade to Pro and configure drains at `https:\u002F\u002Fvercel.com\u002Fdashboard\u002F{team}\u002F~\u002Fsettings\u002Flog-drains` or via REST API. The drain setup is typically \u003C 5 minutes.\n\n### Deploy Preflight Observability\n\nBefore promoting to production, verify observability readiness:\n\n- **Drains check**: Query configured drains via MCP `list_drains` or REST API. If no drains are configured on a Pro\u002FEnterprise plan, warn:\n  > ⚠️ No drains configured. Production errors won't be forwarded to external monitoring.\n  > Configure drains via Dashboard or REST API before promoting. See `⤳ skill: observability`.\n- **Errored drains**: If any drain is in error state, warn and suggest remediation before deploying:\n  > ⚠️ Drain \"\u003Curl>\" is errored. Fix or recreate before production deploy to avoid monitoring gaps.\n- **Error monitoring**: Check that at least one of these is in place: configured drains, an error tracking integration (e.g., Sentry, Datadog via `vercel integration ls`), or `@vercel\u002Fanalytics` in the project.\n- These are warnings, not blockers — the user may proceed after acknowledgment.\n\n### Post-Deploy Error Scan\n\nFor production deployments, wait 60 seconds after READY state, then scan for early runtime errors:\n\n```bash\nvercel logs \u003Cdeployment-url> --level error --since 1h\n```\n\nOr via MCP if available: use `get_runtime_logs` with level filter `error`.\n\n**Interpret results:**\n\n| Finding | Action |\n|---------|--------|\n| No errors | ✓ Clean deploy — no runtime errors in first hour |\n| Errors detected | List error count and first 5 unique error messages. Suggest: check drain payloads for correlated traces, review function logs in Dashboard |\n| 500 status codes in logs | Correlate timestamps with drain data (if configured) or `vercel logs \u003Curl> --json` for structured output. Flag for immediate investigation |\n| Timeout errors | Check function duration limits in `vercel.json` or project settings. Consider increasing `maxDuration` |\n\n**Fallback (no drains):**\n\nIf no drains are configured, the error scan relies on CLI and Dashboard:\n\n```bash\n# Stream live errors\nvercel logs \u003Cdeployment-url> --level error --follow\n\n# JSON output for parsing\nvercel logs \u003Cdeployment-url> --level error --since 1h --json\n```\n\n> For richer post-deploy monitoring, configure drains to forward logs\u002Ftraces to an external platform. See `⤳ skill: observability`.\n\n### Performance Audit Checklist\n\nRun through this when asked to optimize a Vercel application:\n\n1. **Measure first**: Check Speed Insights dashboard for real-user CWV data\n2. **Identify LCP element**: Use Chrome DevTools → Performance → identify the LCP element\n3. **Audit `'use client'`**: Every `'use client'` file ships JS to the browser — minimize\n4. **Check images**: All above-fold images use `next\u002Fimage` with `priority`\n5. **Check fonts**: All fonts loaded via `next\u002Ffont` (zero CLS)\n6. **Check third-party scripts**: All use `next\u002Fscript` with correct strategy\n7. **Check data fetching**: Server Components fetch in parallel, no waterfalls\n8. **Check caching**: Cache Components used for expensive operations\n9. **Check bundle**: Run analyzer, look for low-hanging fruit\n10. **Check infrastructure**: Functions in correct region, Fluid Compute enabled\n\n## Monitoring Dashboard Patterns\n\n### Full-Stack Observability Setup\n\nCombine all Vercel observability tools for comprehensive coverage.\n\n```tsx\n\u002F\u002F app\u002Flayout.tsx — complete observability setup\nimport { Analytics } from '@vercel\u002Fanalytics\u002Fnext'\nimport { SpeedInsights } from '@vercel\u002Fspeed-insights\u002Fnext'\n\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\n  return (\n    \u003Chtml>\n      \u003Cbody>\n        {children}\n        \u003CAnalytics \u002F>\n        \u003CSpeedInsights \u002F>\n      \u003C\u002Fbody>\n    \u003C\u002Fhtml>\n  )\n}\n```\n\n### Custom Monitoring with `waitUntil`\n\nFire-and-forget telemetry that doesn't block responses.\n\n```ts\nimport { waitUntil } from '@vercel\u002Ffunctions'\n\nexport async function GET(req: Request) {\n  const start = Date.now()\n  const result = await fetchData()\n\n  \u002F\u002F Send response immediately\n  const response = Response.json(result)\n\n  \u002F\u002F Report metrics in background\n  waitUntil(async () => {\n    await reportMetric('api_latency', Date.now() - start, {\n      route: '\u002Fapi\u002Fdata',\n      status: 200,\n    })\n  })\n\n  return response\n}\n```\n\n### Error Tracking Pattern\n\n```ts\n\u002F\u002F lib\u002Ferror-reporting.ts\nexport async function reportError(error: unknown, context: Record\u003Cstring, unknown>) {\n  const payload = {\n    message: error instanceof Error ? error.message : String(error),\n    stack: error instanceof Error ? error.stack : undefined,\n    timestamp: new Date().toISOString(),\n    ...context,\n  }\n\n  \u002F\u002F Log for Vercel's runtime logs\n  console.error(JSON.stringify(payload))\n\n  \u002F\u002F Also send to external service if configured\n  if (process.env.ERROR_WEBHOOK_URL) {\n    await fetch(process.env.ERROR_WEBHOOK_URL, {\n      method: 'POST',\n      headers: { 'Content-Type': 'application\u002Fjson' },\n      body: JSON.stringify(payload),\n    })\n  }\n}\n```\n\n## Marketplace Observability Integrations\n\n### Sentry — Error & Performance Monitoring\n\nNative Vercel Marketplace integration. Auto-configures source maps and release tracking.\n\n```bash\nnpx @sentry\u002Fwizard@latest -i nextjs\n# Or install manually:\nnpm install @sentry\u002Fnextjs\n```\n\nSentry wizard creates `sentry.client.config.ts`, `sentry.server.config.ts`, and `sentry.edge.config.ts`. It also wraps `next.config.js` with `withSentryConfig`.\n\nInstall via Marketplace: `vercel integration add sentry`\n\n### Datadog — Full-Stack Monitoring\n\nAPM, logs, and Real User Monitoring (RUM). Auto-configures log drain on Marketplace install.\n\n```bash\nnpm install @datadog\u002Fbrowser-rum\n```\n\n```ts\nimport { datadogRum } from '@datadog\u002Fbrowser-rum'\n\ndatadogRum.init({\n  applicationId: process.env.NEXT_PUBLIC_DD_APPLICATION_ID!,\n  clientToken: process.env.NEXT_PUBLIC_DD_CLIENT_TOKEN!,\n  site: 'datadoghq.com',\n  service: 'my-app',\n  sessionSampleRate: 100,\n  trackResources: true,\n  trackLongTasks: true,\n})\n```\n\nInstall via Marketplace: `vercel integration add datadog`\n\n### Checkly — Synthetic Monitoring & Testing\n\nAPI and browser checks that run continuously against your deployments.\n\n```bash\nnpm install -D checkly\nnpx checkly init\n```\n\nCheckly integrates with Vercel deployment events to trigger checks on every deploy.\n\nInstall via Marketplace: `vercel integration add checkly`\n\n### New Relic — Application Performance Monitoring\n\nFull-stack observability with distributed tracing and alerting.\n\n```bash\nnpm install newrelic\n```\n\nRequires a `newrelic.js` config file at the project root. Install via Marketplace: `vercel integration add newrelic`\n\n## Decision Matrix\n\n| Need | Use | Why |\n|------|-----|-----|\n| Page views, traffic sources | Web Analytics | First-party, privacy-friendly |\n| Business event tracking | Web Analytics custom events | Track conversions, feature usage |\n| Core Web Vitals monitoring | Speed Insights | Real user data per route |\n| Function debugging | Runtime Logs (CLI `vercel logs` \u002F Dashboard (`https:\u002F\u002Fvercel.com\u002F{team}\u002F{project}\u002Flogs`) \u002F REST) | Real-time, per-invocation logs |\n| Export logs to external platform | Drains (JSON\u002FNDJSON\u002FSyslog) | Centralize observability (Pro+) |\n| Export analytics data | Drains (Web Analytics type) | Warehouse pageviews + custom events (Pro+) |\n| OpenTelemetry traces | Drains (OTel-compatible endpoint) | Standards-based distributed tracing (Pro+) |\n| Post-response telemetry | `waitUntil` + custom reporting | Non-blocking metrics |\n| Server-side event tracking | `@vercel\u002Fanalytics\u002Fserver` | Track API-triggered events |\n| Hobby plan log access | CLI `vercel logs` + Dashboard (`https:\u002F\u002Fvercel.com\u002F{team}\u002F{project}\u002Flogs`) | No drains needed |\n\n## Cross-References\n\n- **Drains REST API & runtime logs endpoint** → `⤳ skill: vercel-api` (Observability APIs section)\n- **CLI log streaming (`--follow`, `--since`, `--level`)** → `⤳ skill: vercel-cli` (Logs & Inspection section)\n- **Marketplace vendor integrations** → `⤳ skill: marketplace`\n\n## Official Documentation\n\n- [Vercel Analytics](https:\u002F\u002Fvercel.com\u002Fdocs\u002Fanalytics)\n- [Speed Insights](https:\u002F\u002Fvercel.com\u002Fdocs\u002Fspeed-insights)\n- [Runtime Logs](https:\u002F\u002Fvercel.com\u002Fdocs\u002Flogs\u002Fruntime)\n- [Drains Overview](https:\u002F\u002Fvercel.com\u002Fdocs\u002Fdrains)\n- [Drains REST API](https:\u002F\u002Fvercel.com\u002Fdocs\u002Frest-api\u002Freference\u002Fendpoints\u002Fdrains\u002Fretrieve-a-list-of-all-drains)\n- [Drains Security](https:\u002F\u002Fvercel.com\u002Fdocs\u002Fdrains\u002Fsecurity)\n- [Web Analytics Drains Reference](https:\u002F\u002Fvercel.com\u002Fdocs\u002Fdrains\u002Freference\u002Fanalytics)\n- [Monitoring](https:\u002F\u002Fvercel.com\u002Fdocs\u002Fquery\u002Fmonitoring)\n- [@vercel\u002Fanalytics npm](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@vercel\u002Fanalytics)\n- [@vercel\u002Fspeed-insights npm](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@vercel\u002Fspeed-insights)\n",{"data":36,"body":158},{"name":4,"description":6,"metadata":37},{"priority":38,"docs":39,"sitemap":42,"pathPatterns":43,"bashPatterns":61,"promptSignals":95},6,[40,41],"https:\u002F\u002Fvercel.com\u002Fdocs\u002Fobservability","https:\u002F\u002Fvercel.com\u002Fdocs\u002Fobservability\u002Fotel-overview","https:\u002F\u002Fvercel.com\u002Fsitemap\u002Fdocs.xml",[44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60],"instrumentation.ts","instrumentation.js","src\u002Finstrumentation.ts","src\u002Finstrumentation.js","app\u002Flayout.*","src\u002Fapp\u002Flayout.*","pages\u002F_app.*","src\u002Fpages\u002F_app.*","apps\u002F*\u002Finstrumentation.ts","apps\u002F*\u002Finstrumentation.js","apps\u002F*\u002Fapp\u002Flayout.*","apps\u002F*\u002Fsrc\u002Fapp\u002Flayout.*","apps\u002F*\u002Fpages\u002F_app.*","apps\u002F*\u002Fsrc\u002Fpages\u002F_app.*","sentry.client.config.*","sentry.server.config.*","sentry.edge.config.*",[62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94],"\\bvercel\\s+logs?\\b","\\bvercel\\s+logs?\\s+.*--follow\\b","\\bvercel\\s+logs?\\s+.*--level\\b","\\bvercel\\s+logs?\\s+.*--since\\b","\\bcurl\\s+.*deployments.*events\\b","\\bnpm\\s+(install|i|add)\\s+[^\\n]*@vercel\u002Fanalytics\\b","\\bpnpm\\s+(install|i|add)\\s+[^\\n]*@vercel\u002Fanalytics\\b","\\bbun\\s+(install|i|add)\\s+[^\\n]*@vercel\u002Fanalytics\\b","\\byarn\\s+add\\s+[^\\n]*@vercel\u002Fanalytics\\b","\\bnpm\\s+(install|i|add)\\s+[^\\n]*@vercel\u002Fspeed-insights\\b","\\bpnpm\\s+(install|i|add)\\s+[^\\n]*@vercel\u002Fspeed-insights\\b","\\bbun\\s+(install|i|add)\\s+[^\\n]*@vercel\u002Fspeed-insights\\b","\\byarn\\s+add\\s+[^\\n]*@vercel\u002Fspeed-insights\\b","\\bnpm\\s+(install|i|add)\\s+[^\\n]*@sentry\u002Fnextjs\\b","\\bpnpm\\s+(install|i|add)\\s+[^\\n]*@sentry\u002Fnextjs\\b","\\bbun\\s+(install|i|add)\\s+[^\\n]*@sentry\u002Fnextjs\\b","\\byarn\\s+add\\s+[^\\n]*@sentry\u002Fnextjs\\b","\\bnpm\\s+(install|i|add)\\s+[^\\n]*@sentry\u002Fnode\\b","\\bpnpm\\s+(install|i|add)\\s+[^\\n]*@sentry\u002Fnode\\b","\\bbun\\s+(install|i|add)\\s+[^\\n]*@sentry\u002Fnode\\b","\\byarn\\s+add\\s+[^\\n]*@sentry\u002Fnode\\b","\\bnpm\\s+(install|i|add)\\s+[^\\n]*@datadog\u002Fbrowser-rum\\b","\\bpnpm\\s+(install|i|add)\\s+[^\\n]*@datadog\u002Fbrowser-rum\\b","\\bbun\\s+(install|i|add)\\s+[^\\n]*@datadog\u002Fbrowser-rum\\b","\\byarn\\s+add\\s+[^\\n]*@datadog\u002Fbrowser-rum\\b","\\bnpm\\s+(install|i|add)\\s+[^\\n]*\\bcheckly\\b","\\bpnpm\\s+(install|i|add)\\s+[^\\n]*\\bcheckly\\b","\\bbun\\s+(install|i|add)\\s+[^\\n]*\\bcheckly\\b","\\byarn\\s+add\\s+[^\\n]*\\bcheckly\\b","\\bnpm\\s+(install|i|add)\\s+[^\\n]*\\bnewrelic\\b","\\bpnpm\\s+(install|i|add)\\s+[^\\n]*\\bnewrelic\\b","\\bbun\\s+(install|i|add)\\s+[^\\n]*\\bnewrelic\\b","\\byarn\\s+add\\s+[^\\n]*\\bnewrelic\\b",{"phrases":96,"allOf":125,"anyOf":142,"minScore":38},[97,98,99,100,101,102,103,104,105,106,107,108,109,110,20,111,112,113,114,115,116,117,118,119,120,121,122,123,124],"add logging","add logs","set up logging","setup logging","configure logging","structured logging","log drain","log drains","vercel analytics","speed insights","web analytics","opentelemetry","otel","instrumentation","set up monitoring","add observability","track errors","error tracking","sentry","datadog","check the logs","show me the error","what went wrong","where did it fail","show me the logs","find the error","why did it fail","debug the error",[126,129,130,133,135,136,137,140],[127,128],"add","logging",[127,20],[131,132],"set up","logs",[134,23],"configure",[17,132],[17,23],[138,139],"track","performance",[138,141],"errors",[128,20,23,4,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157],"telemetry","traces","metrics","debug","debugging","stuck","hanging","hung","waiting","stalled","spinning","timeout","slow","pending","unresponsive",{"type":159,"children":160},"root",[161,170,184,191,196,807,813,818,825,1812,1818,2010,2016,2029,2121,2166,3120,3148,3154,3159,3165,3190,3196,3459,3465,3470,3759,3765,4089,4095,4100,4105,4128,4133,4370,4376,4499,4505,4510,4516,4521,4550,4556,4561,4670,4676,4755,4761,4787,4794,4850,4863,5400,5406,5411,5417,6374,6380,6385,6395,6408,6414,6434,6454,6834,6839,7295,7315,7321,7346,7352,7389,7406,7491,7497,7502,7702,7722,7728,7733,7823,7829,7834,7892,7910,7918,8014,8022,8027,8146,8160,8166,8171,8316,8322,8328,8333,8618,8630,8635,9052,9058,9654,9660,9666,9671,9725,9768,9779,9785,9790,9813,10094,10104,10110,10115,10160,10165,10175,10181,10186,10209,10228,10234,10475,10481,10552,10558,10658],{"type":162,"tag":163,"props":164,"children":166},"element","h1",{"id":165},"vercel-observability",[167],{"type":168,"value":169},"text","Vercel Observability",{"type":162,"tag":171,"props":172,"children":173},"p",{},[174,176,182],{"type":168,"value":175},"You are an expert in Vercel's observability stack — runtime logs, structured logging, Drains, Web Analytics, Speed Insights, and monitoring integrations. ",{"type":162,"tag":177,"props":178,"children":179},"strong",{},[180],{"type":168,"value":181},"Always start with logging.",{"type":168,"value":183}," When something is stuck, slow, or broken, the first step is always to check or add logs.",{"type":162,"tag":185,"props":186,"children":188},"h2",{"id":187},"structured-logging-baseline",[189],{"type":168,"value":190},"Structured Logging Baseline",{"type":162,"tag":171,"props":192,"children":193},{},[194],{"type":168,"value":195},"Add this to every API route and server action as a minimum. If the user reports something stuck, hanging, or slow, verify this baseline exists first:",{"type":162,"tag":197,"props":198,"children":203},"pre",{"className":199,"code":200,"language":201,"meta":202,"style":202},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const start = Date.now();\nconsole.log(JSON.stringify({ level: \"info\", msg: \"start\", route: \"\u002Fapi\u002Fexample\", requestId: req.headers.get(\"x-vercel-id\") }));\n\u002F\u002F ... your logic ...\nconsole.log(JSON.stringify({ level: \"info\", msg: \"done\", route: \"\u002Fapi\u002Fexample\", ms: Date.now() - start }));\n\u002F\u002F On error:\nconsole.error(JSON.stringify({ level: \"error\", msg: \"failed\", route: \"\u002Fapi\u002Fexample\", error: err.message, ms: Date.now() - start }));\n","ts","",[204],{"type":162,"tag":205,"props":206,"children":207},"code",{"__ignoreMap":202},[208,258,452,462,618,627],{"type":162,"tag":209,"props":210,"children":213},"span",{"class":211,"line":212},"line",1,[214,220,226,232,237,242,248,253],{"type":162,"tag":209,"props":215,"children":217},{"style":216},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[218],{"type":168,"value":219},"const",{"type":162,"tag":209,"props":221,"children":223},{"style":222},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[224],{"type":168,"value":225}," start ",{"type":162,"tag":209,"props":227,"children":229},{"style":228},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[230],{"type":168,"value":231},"=",{"type":162,"tag":209,"props":233,"children":234},{"style":222},[235],{"type":168,"value":236}," Date",{"type":162,"tag":209,"props":238,"children":239},{"style":228},[240],{"type":168,"value":241},".",{"type":162,"tag":209,"props":243,"children":245},{"style":244},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[246],{"type":168,"value":247},"now",{"type":162,"tag":209,"props":249,"children":250},{"style":222},[251],{"type":168,"value":252},"()",{"type":162,"tag":209,"props":254,"children":255},{"style":228},[256],{"type":168,"value":257},";\n",{"type":162,"tag":209,"props":259,"children":261},{"class":211,"line":260},2,[262,267,271,276,281,285,290,295,300,306,311,316,322,327,332,337,341,345,350,354,358,363,367,371,376,380,384,389,393,398,402,407,411,416,420,424,429,433,438,443,448],{"type":162,"tag":209,"props":263,"children":264},{"style":222},[265],{"type":168,"value":266},"console",{"type":162,"tag":209,"props":268,"children":269},{"style":228},[270],{"type":168,"value":241},{"type":162,"tag":209,"props":272,"children":273},{"style":244},[274],{"type":168,"value":275},"log",{"type":162,"tag":209,"props":277,"children":278},{"style":222},[279],{"type":168,"value":280},"(JSON",{"type":162,"tag":209,"props":282,"children":283},{"style":228},[284],{"type":168,"value":241},{"type":162,"tag":209,"props":286,"children":287},{"style":244},[288],{"type":168,"value":289},"stringify",{"type":162,"tag":209,"props":291,"children":292},{"style":222},[293],{"type":168,"value":294},"(",{"type":162,"tag":209,"props":296,"children":297},{"style":228},[298],{"type":168,"value":299},"{",{"type":162,"tag":209,"props":301,"children":303},{"style":302},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[304],{"type":168,"value":305}," level",{"type":162,"tag":209,"props":307,"children":308},{"style":228},[309],{"type":168,"value":310},":",{"type":162,"tag":209,"props":312,"children":313},{"style":228},[314],{"type":168,"value":315}," \"",{"type":162,"tag":209,"props":317,"children":319},{"style":318},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[320],{"type":168,"value":321},"info",{"type":162,"tag":209,"props":323,"children":324},{"style":228},[325],{"type":168,"value":326},"\"",{"type":162,"tag":209,"props":328,"children":329},{"style":228},[330],{"type":168,"value":331},",",{"type":162,"tag":209,"props":333,"children":334},{"style":302},[335],{"type":168,"value":336}," msg",{"type":162,"tag":209,"props":338,"children":339},{"style":228},[340],{"type":168,"value":310},{"type":162,"tag":209,"props":342,"children":343},{"style":228},[344],{"type":168,"value":315},{"type":162,"tag":209,"props":346,"children":347},{"style":318},[348],{"type":168,"value":349},"start",{"type":162,"tag":209,"props":351,"children":352},{"style":228},[353],{"type":168,"value":326},{"type":162,"tag":209,"props":355,"children":356},{"style":228},[357],{"type":168,"value":331},{"type":162,"tag":209,"props":359,"children":360},{"style":302},[361],{"type":168,"value":362}," route",{"type":162,"tag":209,"props":364,"children":365},{"style":228},[366],{"type":168,"value":310},{"type":162,"tag":209,"props":368,"children":369},{"style":228},[370],{"type":168,"value":315},{"type":162,"tag":209,"props":372,"children":373},{"style":318},[374],{"type":168,"value":375},"\u002Fapi\u002Fexample",{"type":162,"tag":209,"props":377,"children":378},{"style":228},[379],{"type":168,"value":326},{"type":162,"tag":209,"props":381,"children":382},{"style":228},[383],{"type":168,"value":331},{"type":162,"tag":209,"props":385,"children":386},{"style":302},[387],{"type":168,"value":388}," requestId",{"type":162,"tag":209,"props":390,"children":391},{"style":228},[392],{"type":168,"value":310},{"type":162,"tag":209,"props":394,"children":395},{"style":222},[396],{"type":168,"value":397}," req",{"type":162,"tag":209,"props":399,"children":400},{"style":228},[401],{"type":168,"value":241},{"type":162,"tag":209,"props":403,"children":404},{"style":222},[405],{"type":168,"value":406},"headers",{"type":162,"tag":209,"props":408,"children":409},{"style":228},[410],{"type":168,"value":241},{"type":162,"tag":209,"props":412,"children":413},{"style":244},[414],{"type":168,"value":415},"get",{"type":162,"tag":209,"props":417,"children":418},{"style":222},[419],{"type":168,"value":294},{"type":162,"tag":209,"props":421,"children":422},{"style":228},[423],{"type":168,"value":326},{"type":162,"tag":209,"props":425,"children":426},{"style":318},[427],{"type":168,"value":428},"x-vercel-id",{"type":162,"tag":209,"props":430,"children":431},{"style":228},[432],{"type":168,"value":326},{"type":162,"tag":209,"props":434,"children":435},{"style":222},[436],{"type":168,"value":437},") ",{"type":162,"tag":209,"props":439,"children":440},{"style":228},[441],{"type":168,"value":442},"}",{"type":162,"tag":209,"props":444,"children":445},{"style":222},[446],{"type":168,"value":447},"))",{"type":162,"tag":209,"props":449,"children":450},{"style":228},[451],{"type":168,"value":257},{"type":162,"tag":209,"props":453,"children":455},{"class":211,"line":454},3,[456],{"type":162,"tag":209,"props":457,"children":459},{"style":458},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[460],{"type":168,"value":461},"\u002F\u002F ... your logic ...\n",{"type":162,"tag":209,"props":463,"children":465},{"class":211,"line":464},4,[466,470,474,478,482,486,490,494,498,502,506,510,514,518,522,526,530,534,539,543,547,551,555,559,563,567,571,576,580,584,588,592,597,602,606,610,614],{"type":162,"tag":209,"props":467,"children":468},{"style":222},[469],{"type":168,"value":266},{"type":162,"tag":209,"props":471,"children":472},{"style":228},[473],{"type":168,"value":241},{"type":162,"tag":209,"props":475,"children":476},{"style":244},[477],{"type":168,"value":275},{"type":162,"tag":209,"props":479,"children":480},{"style":222},[481],{"type":168,"value":280},{"type":162,"tag":209,"props":483,"children":484},{"style":228},[485],{"type":168,"value":241},{"type":162,"tag":209,"props":487,"children":488},{"style":244},[489],{"type":168,"value":289},{"type":162,"tag":209,"props":491,"children":492},{"style":222},[493],{"type":168,"value":294},{"type":162,"tag":209,"props":495,"children":496},{"style":228},[497],{"type":168,"value":299},{"type":162,"tag":209,"props":499,"children":500},{"style":302},[501],{"type":168,"value":305},{"type":162,"tag":209,"props":503,"children":504},{"style":228},[505],{"type":168,"value":310},{"type":162,"tag":209,"props":507,"children":508},{"style":228},[509],{"type":168,"value":315},{"type":162,"tag":209,"props":511,"children":512},{"style":318},[513],{"type":168,"value":321},{"type":162,"tag":209,"props":515,"children":516},{"style":228},[517],{"type":168,"value":326},{"type":162,"tag":209,"props":519,"children":520},{"style":228},[521],{"type":168,"value":331},{"type":162,"tag":209,"props":523,"children":524},{"style":302},[525],{"type":168,"value":336},{"type":162,"tag":209,"props":527,"children":528},{"style":228},[529],{"type":168,"value":310},{"type":162,"tag":209,"props":531,"children":532},{"style":228},[533],{"type":168,"value":315},{"type":162,"tag":209,"props":535,"children":536},{"style":318},[537],{"type":168,"value":538},"done",{"type":162,"tag":209,"props":540,"children":541},{"style":228},[542],{"type":168,"value":326},{"type":162,"tag":209,"props":544,"children":545},{"style":228},[546],{"type":168,"value":331},{"type":162,"tag":209,"props":548,"children":549},{"style":302},[550],{"type":168,"value":362},{"type":162,"tag":209,"props":552,"children":553},{"style":228},[554],{"type":168,"value":310},{"type":162,"tag":209,"props":556,"children":557},{"style":228},[558],{"type":168,"value":315},{"type":162,"tag":209,"props":560,"children":561},{"style":318},[562],{"type":168,"value":375},{"type":162,"tag":209,"props":564,"children":565},{"style":228},[566],{"type":168,"value":326},{"type":162,"tag":209,"props":568,"children":569},{"style":228},[570],{"type":168,"value":331},{"type":162,"tag":209,"props":572,"children":573},{"style":302},[574],{"type":168,"value":575}," ms",{"type":162,"tag":209,"props":577,"children":578},{"style":228},[579],{"type":168,"value":310},{"type":162,"tag":209,"props":581,"children":582},{"style":222},[583],{"type":168,"value":236},{"type":162,"tag":209,"props":585,"children":586},{"style":228},[587],{"type":168,"value":241},{"type":162,"tag":209,"props":589,"children":590},{"style":244},[591],{"type":168,"value":247},{"type":162,"tag":209,"props":593,"children":594},{"style":222},[595],{"type":168,"value":596},"() ",{"type":162,"tag":209,"props":598,"children":599},{"style":228},[600],{"type":168,"value":601},"-",{"type":162,"tag":209,"props":603,"children":604},{"style":222},[605],{"type":168,"value":225},{"type":162,"tag":209,"props":607,"children":608},{"style":228},[609],{"type":168,"value":442},{"type":162,"tag":209,"props":611,"children":612},{"style":222},[613],{"type":168,"value":447},{"type":162,"tag":209,"props":615,"children":616},{"style":228},[617],{"type":168,"value":257},{"type":162,"tag":209,"props":619,"children":621},{"class":211,"line":620},5,[622],{"type":162,"tag":209,"props":623,"children":624},{"style":458},[625],{"type":168,"value":626},"\u002F\u002F On error:\n",{"type":162,"tag":209,"props":628,"children":629},{"class":211,"line":38},[630,634,638,643,647,651,655,659,663,667,671,675,679,683,687,691,695,699,704,708,712,716,720,724,728,732,736,741,745,750,754,759,763,767,771,775,779,783,787,791,795,799,803],{"type":162,"tag":209,"props":631,"children":632},{"style":222},[633],{"type":168,"value":266},{"type":162,"tag":209,"props":635,"children":636},{"style":228},[637],{"type":168,"value":241},{"type":162,"tag":209,"props":639,"children":640},{"style":244},[641],{"type":168,"value":642},"error",{"type":162,"tag":209,"props":644,"children":645},{"style":222},[646],{"type":168,"value":280},{"type":162,"tag":209,"props":648,"children":649},{"style":228},[650],{"type":168,"value":241},{"type":162,"tag":209,"props":652,"children":653},{"style":244},[654],{"type":168,"value":289},{"type":162,"tag":209,"props":656,"children":657},{"style":222},[658],{"type":168,"value":294},{"type":162,"tag":209,"props":660,"children":661},{"style":228},[662],{"type":168,"value":299},{"type":162,"tag":209,"props":664,"children":665},{"style":302},[666],{"type":168,"value":305},{"type":162,"tag":209,"props":668,"children":669},{"style":228},[670],{"type":168,"value":310},{"type":162,"tag":209,"props":672,"children":673},{"style":228},[674],{"type":168,"value":315},{"type":162,"tag":209,"props":676,"children":677},{"style":318},[678],{"type":168,"value":642},{"type":162,"tag":209,"props":680,"children":681},{"style":228},[682],{"type":168,"value":326},{"type":162,"tag":209,"props":684,"children":685},{"style":228},[686],{"type":168,"value":331},{"type":162,"tag":209,"props":688,"children":689},{"style":302},[690],{"type":168,"value":336},{"type":162,"tag":209,"props":692,"children":693},{"style":228},[694],{"type":168,"value":310},{"type":162,"tag":209,"props":696,"children":697},{"style":228},[698],{"type":168,"value":315},{"type":162,"tag":209,"props":700,"children":701},{"style":318},[702],{"type":168,"value":703},"failed",{"type":162,"tag":209,"props":705,"children":706},{"style":228},[707],{"type":168,"value":326},{"type":162,"tag":209,"props":709,"children":710},{"style":228},[711],{"type":168,"value":331},{"type":162,"tag":209,"props":713,"children":714},{"style":302},[715],{"type":168,"value":362},{"type":162,"tag":209,"props":717,"children":718},{"style":228},[719],{"type":168,"value":310},{"type":162,"tag":209,"props":721,"children":722},{"style":228},[723],{"type":168,"value":315},{"type":162,"tag":209,"props":725,"children":726},{"style":318},[727],{"type":168,"value":375},{"type":162,"tag":209,"props":729,"children":730},{"style":228},[731],{"type":168,"value":326},{"type":162,"tag":209,"props":733,"children":734},{"style":228},[735],{"type":168,"value":331},{"type":162,"tag":209,"props":737,"children":738},{"style":302},[739],{"type":168,"value":740}," error",{"type":162,"tag":209,"props":742,"children":743},{"style":228},[744],{"type":168,"value":310},{"type":162,"tag":209,"props":746,"children":747},{"style":222},[748],{"type":168,"value":749}," err",{"type":162,"tag":209,"props":751,"children":752},{"style":228},[753],{"type":168,"value":241},{"type":162,"tag":209,"props":755,"children":756},{"style":222},[757],{"type":168,"value":758},"message",{"type":162,"tag":209,"props":760,"children":761},{"style":228},[762],{"type":168,"value":331},{"type":162,"tag":209,"props":764,"children":765},{"style":302},[766],{"type":168,"value":575},{"type":162,"tag":209,"props":768,"children":769},{"style":228},[770],{"type":168,"value":310},{"type":162,"tag":209,"props":772,"children":773},{"style":222},[774],{"type":168,"value":236},{"type":162,"tag":209,"props":776,"children":777},{"style":228},[778],{"type":168,"value":241},{"type":162,"tag":209,"props":780,"children":781},{"style":244},[782],{"type":168,"value":247},{"type":162,"tag":209,"props":784,"children":785},{"style":222},[786],{"type":168,"value":596},{"type":162,"tag":209,"props":788,"children":789},{"style":228},[790],{"type":168,"value":601},{"type":162,"tag":209,"props":792,"children":793},{"style":222},[794],{"type":168,"value":225},{"type":162,"tag":209,"props":796,"children":797},{"style":228},[798],{"type":168,"value":442},{"type":162,"tag":209,"props":800,"children":801},{"style":222},[802],{"type":168,"value":447},{"type":162,"tag":209,"props":804,"children":805},{"style":228},[806],{"type":168,"value":257},{"type":162,"tag":185,"props":808,"children":810},{"id":809},"runtime-logs",[811],{"type":168,"value":812},"Runtime Logs",{"type":162,"tag":171,"props":814,"children":815},{},[816],{"type":168,"value":817},"Vercel provides real-time logs for all function invocations.",{"type":162,"tag":819,"props":820,"children":822},"h3",{"id":821},"structured-logging",[823],{"type":168,"value":824},"Structured Logging",{"type":162,"tag":197,"props":826,"children":828},{"className":199,"code":827,"language":201,"meta":202,"style":202},"\u002F\u002F app\u002Fapi\u002Fprocess\u002Froute.ts\nexport async function POST(req: Request) {\n  const start = Date.now()\n  const data = await req.json()\n\n  \u002F\u002F Structured logs appear in Vercel's log viewer\n  console.log(JSON.stringify({\n    level: 'info',\n    message: 'Processing request',\n    requestId: req.headers.get('x-vercel-id'),\n    payload_size: JSON.stringify(data).length,\n  }))\n\n  try {\n    const result = await processData(data)\n    console.log(JSON.stringify({\n      level: 'info',\n      message: 'Request completed',\n      duration_ms: Date.now() - start,\n    }))\n    return Response.json(result)\n  } catch (error) {\n    console.error(JSON.stringify({\n      level: 'error',\n      message: 'Processing failed',\n      error: error instanceof Error ? error.message : String(error),\n      duration_ms: Date.now() - start,\n    }))\n    return Response.json({ error: 'Internal error' }, { status: 500 })\n  }\n}\n",[829],{"type":162,"tag":205,"props":830,"children":831},{"__ignoreMap":202},[832,840,894,929,967,976,984,1027,1059,1089,1146,1198,1212,1220,1233,1273,1314,1343,1373,1414,1427,1462,1492,1532,1560,1589,1659,1699,1711,1794,1803],{"type":162,"tag":209,"props":833,"children":834},{"class":211,"line":212},[835],{"type":162,"tag":209,"props":836,"children":837},{"style":458},[838],{"type":168,"value":839},"\u002F\u002F app\u002Fapi\u002Fprocess\u002Froute.ts\n",{"type":162,"tag":209,"props":841,"children":842},{"class":211,"line":260},[843,849,854,859,864,868,874,878,884,889],{"type":162,"tag":209,"props":844,"children":846},{"style":845},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[847],{"type":168,"value":848},"export",{"type":162,"tag":209,"props":850,"children":851},{"style":216},[852],{"type":168,"value":853}," async",{"type":162,"tag":209,"props":855,"children":856},{"style":216},[857],{"type":168,"value":858}," function",{"type":162,"tag":209,"props":860,"children":861},{"style":244},[862],{"type":168,"value":863}," POST",{"type":162,"tag":209,"props":865,"children":866},{"style":228},[867],{"type":168,"value":294},{"type":162,"tag":209,"props":869,"children":871},{"style":870},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[872],{"type":168,"value":873},"req",{"type":162,"tag":209,"props":875,"children":876},{"style":228},[877],{"type":168,"value":310},{"type":162,"tag":209,"props":879,"children":881},{"style":880},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[882],{"type":168,"value":883}," Request",{"type":162,"tag":209,"props":885,"children":886},{"style":228},[887],{"type":168,"value":888},")",{"type":162,"tag":209,"props":890,"children":891},{"style":228},[892],{"type":168,"value":893}," {\n",{"type":162,"tag":209,"props":895,"children":896},{"class":211,"line":454},[897,902,907,912,916,920,924],{"type":162,"tag":209,"props":898,"children":899},{"style":216},[900],{"type":168,"value":901},"  const",{"type":162,"tag":209,"props":903,"children":904},{"style":222},[905],{"type":168,"value":906}," start",{"type":162,"tag":209,"props":908,"children":909},{"style":228},[910],{"type":168,"value":911}," =",{"type":162,"tag":209,"props":913,"children":914},{"style":222},[915],{"type":168,"value":236},{"type":162,"tag":209,"props":917,"children":918},{"style":228},[919],{"type":168,"value":241},{"type":162,"tag":209,"props":921,"children":922},{"style":244},[923],{"type":168,"value":247},{"type":162,"tag":209,"props":925,"children":926},{"style":302},[927],{"type":168,"value":928},"()\n",{"type":162,"tag":209,"props":930,"children":931},{"class":211,"line":464},[932,936,941,945,950,954,958,963],{"type":162,"tag":209,"props":933,"children":934},{"style":216},[935],{"type":168,"value":901},{"type":162,"tag":209,"props":937,"children":938},{"style":222},[939],{"type":168,"value":940}," data",{"type":162,"tag":209,"props":942,"children":943},{"style":228},[944],{"type":168,"value":911},{"type":162,"tag":209,"props":946,"children":947},{"style":845},[948],{"type":168,"value":949}," await",{"type":162,"tag":209,"props":951,"children":952},{"style":222},[953],{"type":168,"value":397},{"type":162,"tag":209,"props":955,"children":956},{"style":228},[957],{"type":168,"value":241},{"type":162,"tag":209,"props":959,"children":960},{"style":244},[961],{"type":168,"value":962},"json",{"type":162,"tag":209,"props":964,"children":965},{"style":302},[966],{"type":168,"value":928},{"type":162,"tag":209,"props":968,"children":969},{"class":211,"line":620},[970],{"type":162,"tag":209,"props":971,"children":973},{"emptyLinePlaceholder":972},true,[974],{"type":168,"value":975},"\n",{"type":162,"tag":209,"props":977,"children":978},{"class":211,"line":38},[979],{"type":162,"tag":209,"props":980,"children":981},{"style":458},[982],{"type":168,"value":983},"  \u002F\u002F Structured logs appear in Vercel's log viewer\n",{"type":162,"tag":209,"props":985,"children":987},{"class":211,"line":986},7,[988,993,997,1001,1005,1010,1014,1018,1022],{"type":162,"tag":209,"props":989,"children":990},{"style":222},[991],{"type":168,"value":992},"  console",{"type":162,"tag":209,"props":994,"children":995},{"style":228},[996],{"type":168,"value":241},{"type":162,"tag":209,"props":998,"children":999},{"style":244},[1000],{"type":168,"value":275},{"type":162,"tag":209,"props":1002,"children":1003},{"style":302},[1004],{"type":168,"value":294},{"type":162,"tag":209,"props":1006,"children":1007},{"style":222},[1008],{"type":168,"value":1009},"JSON",{"type":162,"tag":209,"props":1011,"children":1012},{"style":228},[1013],{"type":168,"value":241},{"type":162,"tag":209,"props":1015,"children":1016},{"style":244},[1017],{"type":168,"value":289},{"type":162,"tag":209,"props":1019,"children":1020},{"style":302},[1021],{"type":168,"value":294},{"type":162,"tag":209,"props":1023,"children":1024},{"style":228},[1025],{"type":168,"value":1026},"{\n",{"type":162,"tag":209,"props":1028,"children":1030},{"class":211,"line":1029},8,[1031,1036,1040,1045,1049,1054],{"type":162,"tag":209,"props":1032,"children":1033},{"style":302},[1034],{"type":168,"value":1035},"    level",{"type":162,"tag":209,"props":1037,"children":1038},{"style":228},[1039],{"type":168,"value":310},{"type":162,"tag":209,"props":1041,"children":1042},{"style":228},[1043],{"type":168,"value":1044}," '",{"type":162,"tag":209,"props":1046,"children":1047},{"style":318},[1048],{"type":168,"value":321},{"type":162,"tag":209,"props":1050,"children":1051},{"style":228},[1052],{"type":168,"value":1053},"'",{"type":162,"tag":209,"props":1055,"children":1056},{"style":228},[1057],{"type":168,"value":1058},",\n",{"type":162,"tag":209,"props":1060,"children":1062},{"class":211,"line":1061},9,[1063,1068,1072,1076,1081,1085],{"type":162,"tag":209,"props":1064,"children":1065},{"style":302},[1066],{"type":168,"value":1067},"    message",{"type":162,"tag":209,"props":1069,"children":1070},{"style":228},[1071],{"type":168,"value":310},{"type":162,"tag":209,"props":1073,"children":1074},{"style":228},[1075],{"type":168,"value":1044},{"type":162,"tag":209,"props":1077,"children":1078},{"style":318},[1079],{"type":168,"value":1080},"Processing request",{"type":162,"tag":209,"props":1082,"children":1083},{"style":228},[1084],{"type":168,"value":1053},{"type":162,"tag":209,"props":1086,"children":1087},{"style":228},[1088],{"type":168,"value":1058},{"type":162,"tag":209,"props":1090,"children":1092},{"class":211,"line":1091},10,[1093,1098,1102,1106,1110,1114,1118,1122,1126,1130,1134,1138,1142],{"type":162,"tag":209,"props":1094,"children":1095},{"style":302},[1096],{"type":168,"value":1097},"    requestId",{"type":162,"tag":209,"props":1099,"children":1100},{"style":228},[1101],{"type":168,"value":310},{"type":162,"tag":209,"props":1103,"children":1104},{"style":222},[1105],{"type":168,"value":397},{"type":162,"tag":209,"props":1107,"children":1108},{"style":228},[1109],{"type":168,"value":241},{"type":162,"tag":209,"props":1111,"children":1112},{"style":222},[1113],{"type":168,"value":406},{"type":162,"tag":209,"props":1115,"children":1116},{"style":228},[1117],{"type":168,"value":241},{"type":162,"tag":209,"props":1119,"children":1120},{"style":244},[1121],{"type":168,"value":415},{"type":162,"tag":209,"props":1123,"children":1124},{"style":302},[1125],{"type":168,"value":294},{"type":162,"tag":209,"props":1127,"children":1128},{"style":228},[1129],{"type":168,"value":1053},{"type":162,"tag":209,"props":1131,"children":1132},{"style":318},[1133],{"type":168,"value":428},{"type":162,"tag":209,"props":1135,"children":1136},{"style":228},[1137],{"type":168,"value":1053},{"type":162,"tag":209,"props":1139,"children":1140},{"style":302},[1141],{"type":168,"value":888},{"type":162,"tag":209,"props":1143,"children":1144},{"style":228},[1145],{"type":168,"value":1058},{"type":162,"tag":209,"props":1147,"children":1149},{"class":211,"line":1148},11,[1150,1155,1159,1164,1168,1172,1176,1181,1185,1189,1194],{"type":162,"tag":209,"props":1151,"children":1152},{"style":302},[1153],{"type":168,"value":1154},"    payload_size",{"type":162,"tag":209,"props":1156,"children":1157},{"style":228},[1158],{"type":168,"value":310},{"type":162,"tag":209,"props":1160,"children":1161},{"style":222},[1162],{"type":168,"value":1163}," JSON",{"type":162,"tag":209,"props":1165,"children":1166},{"style":228},[1167],{"type":168,"value":241},{"type":162,"tag":209,"props":1169,"children":1170},{"style":244},[1171],{"type":168,"value":289},{"type":162,"tag":209,"props":1173,"children":1174},{"style":302},[1175],{"type":168,"value":294},{"type":162,"tag":209,"props":1177,"children":1178},{"style":222},[1179],{"type":168,"value":1180},"data",{"type":162,"tag":209,"props":1182,"children":1183},{"style":302},[1184],{"type":168,"value":888},{"type":162,"tag":209,"props":1186,"children":1187},{"style":228},[1188],{"type":168,"value":241},{"type":162,"tag":209,"props":1190,"children":1191},{"style":222},[1192],{"type":168,"value":1193},"length",{"type":162,"tag":209,"props":1195,"children":1196},{"style":228},[1197],{"type":168,"value":1058},{"type":162,"tag":209,"props":1199,"children":1201},{"class":211,"line":1200},12,[1202,1207],{"type":162,"tag":209,"props":1203,"children":1204},{"style":228},[1205],{"type":168,"value":1206},"  }",{"type":162,"tag":209,"props":1208,"children":1209},{"style":302},[1210],{"type":168,"value":1211},"))\n",{"type":162,"tag":209,"props":1213,"children":1215},{"class":211,"line":1214},13,[1216],{"type":162,"tag":209,"props":1217,"children":1218},{"emptyLinePlaceholder":972},[1219],{"type":168,"value":975},{"type":162,"tag":209,"props":1221,"children":1223},{"class":211,"line":1222},14,[1224,1229],{"type":162,"tag":209,"props":1225,"children":1226},{"style":845},[1227],{"type":168,"value":1228},"  try",{"type":162,"tag":209,"props":1230,"children":1231},{"style":228},[1232],{"type":168,"value":893},{"type":162,"tag":209,"props":1234,"children":1236},{"class":211,"line":1235},15,[1237,1242,1247,1251,1255,1260,1264,1268],{"type":162,"tag":209,"props":1238,"children":1239},{"style":216},[1240],{"type":168,"value":1241},"    const",{"type":162,"tag":209,"props":1243,"children":1244},{"style":222},[1245],{"type":168,"value":1246}," result",{"type":162,"tag":209,"props":1248,"children":1249},{"style":228},[1250],{"type":168,"value":911},{"type":162,"tag":209,"props":1252,"children":1253},{"style":845},[1254],{"type":168,"value":949},{"type":162,"tag":209,"props":1256,"children":1257},{"style":244},[1258],{"type":168,"value":1259}," processData",{"type":162,"tag":209,"props":1261,"children":1262},{"style":302},[1263],{"type":168,"value":294},{"type":162,"tag":209,"props":1265,"children":1266},{"style":222},[1267],{"type":168,"value":1180},{"type":162,"tag":209,"props":1269,"children":1270},{"style":302},[1271],{"type":168,"value":1272},")\n",{"type":162,"tag":209,"props":1274,"children":1276},{"class":211,"line":1275},16,[1277,1282,1286,1290,1294,1298,1302,1306,1310],{"type":162,"tag":209,"props":1278,"children":1279},{"style":222},[1280],{"type":168,"value":1281},"    console",{"type":162,"tag":209,"props":1283,"children":1284},{"style":228},[1285],{"type":168,"value":241},{"type":162,"tag":209,"props":1287,"children":1288},{"style":244},[1289],{"type":168,"value":275},{"type":162,"tag":209,"props":1291,"children":1292},{"style":302},[1293],{"type":168,"value":294},{"type":162,"tag":209,"props":1295,"children":1296},{"style":222},[1297],{"type":168,"value":1009},{"type":162,"tag":209,"props":1299,"children":1300},{"style":228},[1301],{"type":168,"value":241},{"type":162,"tag":209,"props":1303,"children":1304},{"style":244},[1305],{"type":168,"value":289},{"type":162,"tag":209,"props":1307,"children":1308},{"style":302},[1309],{"type":168,"value":294},{"type":162,"tag":209,"props":1311,"children":1312},{"style":228},[1313],{"type":168,"value":1026},{"type":162,"tag":209,"props":1315,"children":1317},{"class":211,"line":1316},17,[1318,1323,1327,1331,1335,1339],{"type":162,"tag":209,"props":1319,"children":1320},{"style":302},[1321],{"type":168,"value":1322},"      level",{"type":162,"tag":209,"props":1324,"children":1325},{"style":228},[1326],{"type":168,"value":310},{"type":162,"tag":209,"props":1328,"children":1329},{"style":228},[1330],{"type":168,"value":1044},{"type":162,"tag":209,"props":1332,"children":1333},{"style":318},[1334],{"type":168,"value":321},{"type":162,"tag":209,"props":1336,"children":1337},{"style":228},[1338],{"type":168,"value":1053},{"type":162,"tag":209,"props":1340,"children":1341},{"style":228},[1342],{"type":168,"value":1058},{"type":162,"tag":209,"props":1344,"children":1346},{"class":211,"line":1345},18,[1347,1352,1356,1360,1365,1369],{"type":162,"tag":209,"props":1348,"children":1349},{"style":302},[1350],{"type":168,"value":1351},"      message",{"type":162,"tag":209,"props":1353,"children":1354},{"style":228},[1355],{"type":168,"value":310},{"type":162,"tag":209,"props":1357,"children":1358},{"style":228},[1359],{"type":168,"value":1044},{"type":162,"tag":209,"props":1361,"children":1362},{"style":318},[1363],{"type":168,"value":1364},"Request completed",{"type":162,"tag":209,"props":1366,"children":1367},{"style":228},[1368],{"type":168,"value":1053},{"type":162,"tag":209,"props":1370,"children":1371},{"style":228},[1372],{"type":168,"value":1058},{"type":162,"tag":209,"props":1374,"children":1376},{"class":211,"line":1375},19,[1377,1382,1386,1390,1394,1398,1402,1406,1410],{"type":162,"tag":209,"props":1378,"children":1379},{"style":302},[1380],{"type":168,"value":1381},"      duration_ms",{"type":162,"tag":209,"props":1383,"children":1384},{"style":228},[1385],{"type":168,"value":310},{"type":162,"tag":209,"props":1387,"children":1388},{"style":222},[1389],{"type":168,"value":236},{"type":162,"tag":209,"props":1391,"children":1392},{"style":228},[1393],{"type":168,"value":241},{"type":162,"tag":209,"props":1395,"children":1396},{"style":244},[1397],{"type":168,"value":247},{"type":162,"tag":209,"props":1399,"children":1400},{"style":302},[1401],{"type":168,"value":596},{"type":162,"tag":209,"props":1403,"children":1404},{"style":228},[1405],{"type":168,"value":601},{"type":162,"tag":209,"props":1407,"children":1408},{"style":222},[1409],{"type":168,"value":906},{"type":162,"tag":209,"props":1411,"children":1412},{"style":228},[1413],{"type":168,"value":1058},{"type":162,"tag":209,"props":1415,"children":1417},{"class":211,"line":1416},20,[1418,1423],{"type":162,"tag":209,"props":1419,"children":1420},{"style":228},[1421],{"type":168,"value":1422},"    }",{"type":162,"tag":209,"props":1424,"children":1425},{"style":302},[1426],{"type":168,"value":1211},{"type":162,"tag":209,"props":1428,"children":1430},{"class":211,"line":1429},21,[1431,1436,1441,1445,1449,1453,1458],{"type":162,"tag":209,"props":1432,"children":1433},{"style":845},[1434],{"type":168,"value":1435},"    return",{"type":162,"tag":209,"props":1437,"children":1438},{"style":222},[1439],{"type":168,"value":1440}," Response",{"type":162,"tag":209,"props":1442,"children":1443},{"style":228},[1444],{"type":168,"value":241},{"type":162,"tag":209,"props":1446,"children":1447},{"style":244},[1448],{"type":168,"value":962},{"type":162,"tag":209,"props":1450,"children":1451},{"style":302},[1452],{"type":168,"value":294},{"type":162,"tag":209,"props":1454,"children":1455},{"style":222},[1456],{"type":168,"value":1457},"result",{"type":162,"tag":209,"props":1459,"children":1460},{"style":302},[1461],{"type":168,"value":1272},{"type":162,"tag":209,"props":1463,"children":1465},{"class":211,"line":1464},22,[1466,1470,1475,1480,1484,1488],{"type":162,"tag":209,"props":1467,"children":1468},{"style":228},[1469],{"type":168,"value":1206},{"type":162,"tag":209,"props":1471,"children":1472},{"style":845},[1473],{"type":168,"value":1474}," catch",{"type":162,"tag":209,"props":1476,"children":1477},{"style":302},[1478],{"type":168,"value":1479}," (",{"type":162,"tag":209,"props":1481,"children":1482},{"style":222},[1483],{"type":168,"value":642},{"type":162,"tag":209,"props":1485,"children":1486},{"style":302},[1487],{"type":168,"value":437},{"type":162,"tag":209,"props":1489,"children":1490},{"style":228},[1491],{"type":168,"value":1026},{"type":162,"tag":209,"props":1493,"children":1495},{"class":211,"line":1494},23,[1496,1500,1504,1508,1512,1516,1520,1524,1528],{"type":162,"tag":209,"props":1497,"children":1498},{"style":222},[1499],{"type":168,"value":1281},{"type":162,"tag":209,"props":1501,"children":1502},{"style":228},[1503],{"type":168,"value":241},{"type":162,"tag":209,"props":1505,"children":1506},{"style":244},[1507],{"type":168,"value":642},{"type":162,"tag":209,"props":1509,"children":1510},{"style":302},[1511],{"type":168,"value":294},{"type":162,"tag":209,"props":1513,"children":1514},{"style":222},[1515],{"type":168,"value":1009},{"type":162,"tag":209,"props":1517,"children":1518},{"style":228},[1519],{"type":168,"value":241},{"type":162,"tag":209,"props":1521,"children":1522},{"style":244},[1523],{"type":168,"value":289},{"type":162,"tag":209,"props":1525,"children":1526},{"style":302},[1527],{"type":168,"value":294},{"type":162,"tag":209,"props":1529,"children":1530},{"style":228},[1531],{"type":168,"value":1026},{"type":162,"tag":209,"props":1533,"children":1535},{"class":211,"line":1534},24,[1536,1540,1544,1548,1552,1556],{"type":162,"tag":209,"props":1537,"children":1538},{"style":302},[1539],{"type":168,"value":1322},{"type":162,"tag":209,"props":1541,"children":1542},{"style":228},[1543],{"type":168,"value":310},{"type":162,"tag":209,"props":1545,"children":1546},{"style":228},[1547],{"type":168,"value":1044},{"type":162,"tag":209,"props":1549,"children":1550},{"style":318},[1551],{"type":168,"value":642},{"type":162,"tag":209,"props":1553,"children":1554},{"style":228},[1555],{"type":168,"value":1053},{"type":162,"tag":209,"props":1557,"children":1558},{"style":228},[1559],{"type":168,"value":1058},{"type":162,"tag":209,"props":1561,"children":1563},{"class":211,"line":1562},25,[1564,1568,1572,1576,1581,1585],{"type":162,"tag":209,"props":1565,"children":1566},{"style":302},[1567],{"type":168,"value":1351},{"type":162,"tag":209,"props":1569,"children":1570},{"style":228},[1571],{"type":168,"value":310},{"type":162,"tag":209,"props":1573,"children":1574},{"style":228},[1575],{"type":168,"value":1044},{"type":162,"tag":209,"props":1577,"children":1578},{"style":318},[1579],{"type":168,"value":1580},"Processing failed",{"type":162,"tag":209,"props":1582,"children":1583},{"style":228},[1584],{"type":168,"value":1053},{"type":162,"tag":209,"props":1586,"children":1587},{"style":228},[1588],{"type":168,"value":1058},{"type":162,"tag":209,"props":1590,"children":1592},{"class":211,"line":1591},26,[1593,1598,1602,1606,1611,1616,1621,1625,1629,1633,1638,1643,1647,1651,1655],{"type":162,"tag":209,"props":1594,"children":1595},{"style":302},[1596],{"type":168,"value":1597},"      error",{"type":162,"tag":209,"props":1599,"children":1600},{"style":228},[1601],{"type":168,"value":310},{"type":162,"tag":209,"props":1603,"children":1604},{"style":222},[1605],{"type":168,"value":740},{"type":162,"tag":209,"props":1607,"children":1608},{"style":228},[1609],{"type":168,"value":1610}," instanceof",{"type":162,"tag":209,"props":1612,"children":1613},{"style":880},[1614],{"type":168,"value":1615}," Error",{"type":162,"tag":209,"props":1617,"children":1618},{"style":228},[1619],{"type":168,"value":1620}," ?",{"type":162,"tag":209,"props":1622,"children":1623},{"style":222},[1624],{"type":168,"value":740},{"type":162,"tag":209,"props":1626,"children":1627},{"style":228},[1628],{"type":168,"value":241},{"type":162,"tag":209,"props":1630,"children":1631},{"style":222},[1632],{"type":168,"value":758},{"type":162,"tag":209,"props":1634,"children":1635},{"style":228},[1636],{"type":168,"value":1637}," :",{"type":162,"tag":209,"props":1639,"children":1640},{"style":244},[1641],{"type":168,"value":1642}," String",{"type":162,"tag":209,"props":1644,"children":1645},{"style":302},[1646],{"type":168,"value":294},{"type":162,"tag":209,"props":1648,"children":1649},{"style":222},[1650],{"type":168,"value":642},{"type":162,"tag":209,"props":1652,"children":1653},{"style":302},[1654],{"type":168,"value":888},{"type":162,"tag":209,"props":1656,"children":1657},{"style":228},[1658],{"type":168,"value":1058},{"type":162,"tag":209,"props":1660,"children":1662},{"class":211,"line":1661},27,[1663,1667,1671,1675,1679,1683,1687,1691,1695],{"type":162,"tag":209,"props":1664,"children":1665},{"style":302},[1666],{"type":168,"value":1381},{"type":162,"tag":209,"props":1668,"children":1669},{"style":228},[1670],{"type":168,"value":310},{"type":162,"tag":209,"props":1672,"children":1673},{"style":222},[1674],{"type":168,"value":236},{"type":162,"tag":209,"props":1676,"children":1677},{"style":228},[1678],{"type":168,"value":241},{"type":162,"tag":209,"props":1680,"children":1681},{"style":244},[1682],{"type":168,"value":247},{"type":162,"tag":209,"props":1684,"children":1685},{"style":302},[1686],{"type":168,"value":596},{"type":162,"tag":209,"props":1688,"children":1689},{"style":228},[1690],{"type":168,"value":601},{"type":162,"tag":209,"props":1692,"children":1693},{"style":222},[1694],{"type":168,"value":906},{"type":162,"tag":209,"props":1696,"children":1697},{"style":228},[1698],{"type":168,"value":1058},{"type":162,"tag":209,"props":1700,"children":1702},{"class":211,"line":1701},28,[1703,1707],{"type":162,"tag":209,"props":1704,"children":1705},{"style":228},[1706],{"type":168,"value":1422},{"type":162,"tag":209,"props":1708,"children":1709},{"style":302},[1710],{"type":168,"value":1211},{"type":162,"tag":209,"props":1712,"children":1714},{"class":211,"line":1713},29,[1715,1719,1723,1727,1731,1735,1739,1743,1747,1751,1756,1760,1765,1770,1775,1779,1785,1790],{"type":162,"tag":209,"props":1716,"children":1717},{"style":845},[1718],{"type":168,"value":1435},{"type":162,"tag":209,"props":1720,"children":1721},{"style":222},[1722],{"type":168,"value":1440},{"type":162,"tag":209,"props":1724,"children":1725},{"style":228},[1726],{"type":168,"value":241},{"type":162,"tag":209,"props":1728,"children":1729},{"style":244},[1730],{"type":168,"value":962},{"type":162,"tag":209,"props":1732,"children":1733},{"style":302},[1734],{"type":168,"value":294},{"type":162,"tag":209,"props":1736,"children":1737},{"style":228},[1738],{"type":168,"value":299},{"type":162,"tag":209,"props":1740,"children":1741},{"style":302},[1742],{"type":168,"value":740},{"type":162,"tag":209,"props":1744,"children":1745},{"style":228},[1746],{"type":168,"value":310},{"type":162,"tag":209,"props":1748,"children":1749},{"style":228},[1750],{"type":168,"value":1044},{"type":162,"tag":209,"props":1752,"children":1753},{"style":318},[1754],{"type":168,"value":1755},"Internal error",{"type":162,"tag":209,"props":1757,"children":1758},{"style":228},[1759],{"type":168,"value":1053},{"type":162,"tag":209,"props":1761,"children":1762},{"style":228},[1763],{"type":168,"value":1764}," },",{"type":162,"tag":209,"props":1766,"children":1767},{"style":228},[1768],{"type":168,"value":1769}," {",{"type":162,"tag":209,"props":1771,"children":1772},{"style":302},[1773],{"type":168,"value":1774}," status",{"type":162,"tag":209,"props":1776,"children":1777},{"style":228},[1778],{"type":168,"value":310},{"type":162,"tag":209,"props":1780,"children":1782},{"style":1781},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1783],{"type":168,"value":1784}," 500",{"type":162,"tag":209,"props":1786,"children":1787},{"style":228},[1788],{"type":168,"value":1789}," }",{"type":162,"tag":209,"props":1791,"children":1792},{"style":302},[1793],{"type":168,"value":1272},{"type":162,"tag":209,"props":1795,"children":1797},{"class":211,"line":1796},30,[1798],{"type":162,"tag":209,"props":1799,"children":1800},{"style":228},[1801],{"type":168,"value":1802},"  }\n",{"type":162,"tag":209,"props":1804,"children":1806},{"class":211,"line":1805},31,[1807],{"type":162,"tag":209,"props":1808,"children":1809},{"style":228},[1810],{"type":168,"value":1811},"}\n",{"type":162,"tag":819,"props":1813,"children":1815},{"id":1814},"nextjs-instrumentation",[1816],{"type":168,"value":1817},"Next.js Instrumentation",{"type":162,"tag":197,"props":1819,"children":1821},{"className":199,"code":1820,"language":201,"meta":202,"style":202},"\u002F\u002F instrumentation.ts (Next.js 16)\nexport async function register() {\n  if (process.env.NEXT_RUNTIME === 'nodejs') {\n    \u002F\u002F Initialize monitoring on server startup\n    const { initMonitoring } = await import('.\u002Flib\u002Fmonitoring')\n    initMonitoring()\n  }\n}\n",[1822],{"type":162,"tag":205,"props":1823,"children":1824},{"__ignoreMap":202},[1825,1833,1861,1922,1930,1984,1996,2003],{"type":162,"tag":209,"props":1826,"children":1827},{"class":211,"line":212},[1828],{"type":162,"tag":209,"props":1829,"children":1830},{"style":458},[1831],{"type":168,"value":1832},"\u002F\u002F instrumentation.ts (Next.js 16)\n",{"type":162,"tag":209,"props":1834,"children":1835},{"class":211,"line":260},[1836,1840,1844,1848,1853,1857],{"type":162,"tag":209,"props":1837,"children":1838},{"style":845},[1839],{"type":168,"value":848},{"type":162,"tag":209,"props":1841,"children":1842},{"style":216},[1843],{"type":168,"value":853},{"type":162,"tag":209,"props":1845,"children":1846},{"style":216},[1847],{"type":168,"value":858},{"type":162,"tag":209,"props":1849,"children":1850},{"style":244},[1851],{"type":168,"value":1852}," register",{"type":162,"tag":209,"props":1854,"children":1855},{"style":228},[1856],{"type":168,"value":252},{"type":162,"tag":209,"props":1858,"children":1859},{"style":228},[1860],{"type":168,"value":893},{"type":162,"tag":209,"props":1862,"children":1863},{"class":211,"line":454},[1864,1869,1873,1878,1882,1887,1891,1896,1901,1905,1910,1914,1918],{"type":162,"tag":209,"props":1865,"children":1866},{"style":845},[1867],{"type":168,"value":1868},"  if",{"type":162,"tag":209,"props":1870,"children":1871},{"style":302},[1872],{"type":168,"value":1479},{"type":162,"tag":209,"props":1874,"children":1875},{"style":222},[1876],{"type":168,"value":1877},"process",{"type":162,"tag":209,"props":1879,"children":1880},{"style":228},[1881],{"type":168,"value":241},{"type":162,"tag":209,"props":1883,"children":1884},{"style":222},[1885],{"type":168,"value":1886},"env",{"type":162,"tag":209,"props":1888,"children":1889},{"style":228},[1890],{"type":168,"value":241},{"type":162,"tag":209,"props":1892,"children":1893},{"style":222},[1894],{"type":168,"value":1895},"NEXT_RUNTIME",{"type":162,"tag":209,"props":1897,"children":1898},{"style":228},[1899],{"type":168,"value":1900}," ===",{"type":162,"tag":209,"props":1902,"children":1903},{"style":228},[1904],{"type":168,"value":1044},{"type":162,"tag":209,"props":1906,"children":1907},{"style":318},[1908],{"type":168,"value":1909},"nodejs",{"type":162,"tag":209,"props":1911,"children":1912},{"style":228},[1913],{"type":168,"value":1053},{"type":162,"tag":209,"props":1915,"children":1916},{"style":302},[1917],{"type":168,"value":437},{"type":162,"tag":209,"props":1919,"children":1920},{"style":228},[1921],{"type":168,"value":1026},{"type":162,"tag":209,"props":1923,"children":1924},{"class":211,"line":464},[1925],{"type":162,"tag":209,"props":1926,"children":1927},{"style":458},[1928],{"type":168,"value":1929},"    \u002F\u002F Initialize monitoring on server startup\n",{"type":162,"tag":209,"props":1931,"children":1932},{"class":211,"line":620},[1933,1937,1941,1946,1950,1954,1958,1963,1967,1971,1976,1980],{"type":162,"tag":209,"props":1934,"children":1935},{"style":216},[1936],{"type":168,"value":1241},{"type":162,"tag":209,"props":1938,"children":1939},{"style":228},[1940],{"type":168,"value":1769},{"type":162,"tag":209,"props":1942,"children":1943},{"style":222},[1944],{"type":168,"value":1945}," initMonitoring",{"type":162,"tag":209,"props":1947,"children":1948},{"style":228},[1949],{"type":168,"value":1789},{"type":162,"tag":209,"props":1951,"children":1952},{"style":228},[1953],{"type":168,"value":911},{"type":162,"tag":209,"props":1955,"children":1956},{"style":845},[1957],{"type":168,"value":949},{"type":162,"tag":209,"props":1959,"children":1960},{"style":228},[1961],{"type":168,"value":1962}," import",{"type":162,"tag":209,"props":1964,"children":1965},{"style":302},[1966],{"type":168,"value":294},{"type":162,"tag":209,"props":1968,"children":1969},{"style":228},[1970],{"type":168,"value":1053},{"type":162,"tag":209,"props":1972,"children":1973},{"style":318},[1974],{"type":168,"value":1975},".\u002Flib\u002Fmonitoring",{"type":162,"tag":209,"props":1977,"children":1978},{"style":228},[1979],{"type":168,"value":1053},{"type":162,"tag":209,"props":1981,"children":1982},{"style":302},[1983],{"type":168,"value":1272},{"type":162,"tag":209,"props":1985,"children":1986},{"class":211,"line":38},[1987,1992],{"type":162,"tag":209,"props":1988,"children":1989},{"style":244},[1990],{"type":168,"value":1991},"    initMonitoring",{"type":162,"tag":209,"props":1993,"children":1994},{"style":302},[1995],{"type":168,"value":928},{"type":162,"tag":209,"props":1997,"children":1998},{"class":211,"line":986},[1999],{"type":162,"tag":209,"props":2000,"children":2001},{"style":228},[2002],{"type":168,"value":1802},{"type":162,"tag":209,"props":2004,"children":2005},{"class":211,"line":1029},[2006],{"type":162,"tag":209,"props":2007,"children":2008},{"style":228},[2009],{"type":168,"value":1811},{"type":162,"tag":819,"props":2011,"children":2013},{"id":2012},"runtime-logs-via-rest-api",[2014],{"type":168,"value":2015},"Runtime Logs via REST API",{"type":162,"tag":171,"props":2017,"children":2018},{},[2019,2021,2027],{"type":168,"value":2020},"Query deployment runtime logs programmatically. The endpoint returns ",{"type":162,"tag":205,"props":2022,"children":2024},{"className":2023},[],[2025],{"type":168,"value":2026},"application\u002Fstream+json",{"type":168,"value":2028}," — a streaming response where each line is a separate JSON object.",{"type":162,"tag":197,"props":2030,"children":2034},{"className":2031,"code":2032,"language":2033,"meta":202,"style":202},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Stream runtime logs for a deployment (returns application\u002Fstream+json)\ncurl -N -H \"Authorization: Bearer $VERCEL_TOKEN\" \\\n  \"https:\u002F\u002Fapi.vercel.com\u002Fv3\u002Fdeployments\u002F\u003Cdeployment-id>\u002Fevents\" \\\n  --max-time 120\n","bash",[2035],{"type":162,"tag":205,"props":2036,"children":2037},{"__ignoreMap":202},[2038,2046,2087,2108],{"type":162,"tag":209,"props":2039,"children":2040},{"class":211,"line":212},[2041],{"type":162,"tag":209,"props":2042,"children":2043},{"style":458},[2044],{"type":168,"value":2045},"# Stream runtime logs for a deployment (returns application\u002Fstream+json)\n",{"type":162,"tag":209,"props":2047,"children":2048},{"class":211,"line":260},[2049,2054,2059,2064,2068,2073,2078,2082],{"type":162,"tag":209,"props":2050,"children":2051},{"style":880},[2052],{"type":168,"value":2053},"curl",{"type":162,"tag":209,"props":2055,"children":2056},{"style":318},[2057],{"type":168,"value":2058}," -N",{"type":162,"tag":209,"props":2060,"children":2061},{"style":318},[2062],{"type":168,"value":2063}," -H",{"type":162,"tag":209,"props":2065,"children":2066},{"style":228},[2067],{"type":168,"value":315},{"type":162,"tag":209,"props":2069,"children":2070},{"style":318},[2071],{"type":168,"value":2072},"Authorization: Bearer ",{"type":162,"tag":209,"props":2074,"children":2075},{"style":222},[2076],{"type":168,"value":2077},"$VERCEL_TOKEN",{"type":162,"tag":209,"props":2079,"children":2080},{"style":228},[2081],{"type":168,"value":326},{"type":162,"tag":209,"props":2083,"children":2084},{"style":222},[2085],{"type":168,"value":2086}," \\\n",{"type":162,"tag":209,"props":2088,"children":2089},{"class":211,"line":454},[2090,2095,2100,2104],{"type":162,"tag":209,"props":2091,"children":2092},{"style":228},[2093],{"type":168,"value":2094},"  \"",{"type":162,"tag":209,"props":2096,"children":2097},{"style":318},[2098],{"type":168,"value":2099},"https:\u002F\u002Fapi.vercel.com\u002Fv3\u002Fdeployments\u002F\u003Cdeployment-id>\u002Fevents",{"type":162,"tag":209,"props":2101,"children":2102},{"style":228},[2103],{"type":168,"value":326},{"type":162,"tag":209,"props":2105,"children":2106},{"style":222},[2107],{"type":168,"value":2086},{"type":162,"tag":209,"props":2109,"children":2110},{"class":211,"line":464},[2111,2116],{"type":162,"tag":209,"props":2112,"children":2113},{"style":318},[2114],{"type":168,"value":2115},"  --max-time",{"type":162,"tag":209,"props":2117,"children":2118},{"style":1781},[2119],{"type":168,"value":2120}," 120\n",{"type":162,"tag":2122,"props":2123,"children":2124},"blockquote",{},[2125],{"type":162,"tag":171,"props":2126,"children":2127},{},[2128,2133,2135,2141,2143,2149,2151,2157,2159,2165],{"type":162,"tag":177,"props":2129,"children":2130},{},[2131],{"type":168,"value":2132},"Streaming guidance:",{"type":168,"value":2134}," The response is unbounded — always set a timeout (",{"type":162,"tag":205,"props":2136,"children":2138},{"className":2137},[],[2139],{"type":168,"value":2140},"--max-time",{"type":168,"value":2142}," in curl, ",{"type":162,"tag":205,"props":2144,"children":2146},{"className":2145},[],[2147],{"type":168,"value":2148},"AbortController",{"type":168,"value":2150}," with ",{"type":162,"tag":205,"props":2152,"children":2154},{"className":2153},[],[2155],{"type":168,"value":2156},"setTimeout",{"type":168,"value":2158}," in fetch). Parse line-by-line as NDJSON. Each line contains ",{"type":162,"tag":205,"props":2160,"children":2162},{"className":2161},[],[2163],{"type":168,"value":2164},"{ timestamp, text, level, source }",{"type":168,"value":241},{"type":162,"tag":197,"props":2167,"children":2169},{"className":199,"code":2168,"language":201,"meta":202,"style":202},"\u002F\u002F Programmatic streaming with timeout\nconst controller = new AbortController()\nconst timeout = setTimeout(() => controller.abort(), 60_000) \u002F\u002F 60s max\n\nconst res = await fetch(\n  `https:\u002F\u002Fapi.vercel.com\u002Fv3\u002Fdeployments\u002F${deploymentId}\u002Fevents`,\n  {\n    headers: { Authorization: `Bearer ${process.env.VERCEL_TOKEN}` },\n    signal: controller.signal,\n  }\n)\n\nconst reader = res.body!.getReader()\nconst decoder = new TextDecoder()\nlet buffer = ''\n\ntry {\n  while (true) {\n    const { done, value } = await reader.read()\n    if (done) break\n    buffer += decoder.decode(value, { stream: true })\n    const lines = buffer.split('\\n')\n    buffer = lines.pop()! \u002F\u002F keep incomplete line in buffer\n    for (const line of lines) {\n      if (!line.trim()) continue\n      const event = JSON.parse(line)\n      console.log(`[${event.level}] ${event.text}`)\n    }\n  }\n} finally {\n  clearTimeout(timeout)\n}\n",[2170],{"type":162,"tag":205,"props":2171,"children":2172},{"__ignoreMap":202},[2173,2181,2211,2281,2288,2318,2359,2367,2437,2466,2473,2480,2487,2531,2560,2582,2589,2601,2627,2682,2707,2773,2824,2862,2900,2939,2981,3061,3069,3076,3092,3112],{"type":162,"tag":209,"props":2174,"children":2175},{"class":211,"line":212},[2176],{"type":162,"tag":209,"props":2177,"children":2178},{"style":458},[2179],{"type":168,"value":2180},"\u002F\u002F Programmatic streaming with timeout\n",{"type":162,"tag":209,"props":2182,"children":2183},{"class":211,"line":260},[2184,2188,2193,2197,2202,2207],{"type":162,"tag":209,"props":2185,"children":2186},{"style":216},[2187],{"type":168,"value":219},{"type":162,"tag":209,"props":2189,"children":2190},{"style":222},[2191],{"type":168,"value":2192}," controller ",{"type":162,"tag":209,"props":2194,"children":2195},{"style":228},[2196],{"type":168,"value":231},{"type":162,"tag":209,"props":2198,"children":2199},{"style":228},[2200],{"type":168,"value":2201}," new",{"type":162,"tag":209,"props":2203,"children":2204},{"style":244},[2205],{"type":168,"value":2206}," AbortController",{"type":162,"tag":209,"props":2208,"children":2209},{"style":222},[2210],{"type":168,"value":928},{"type":162,"tag":209,"props":2212,"children":2213},{"class":211,"line":454},[2214,2218,2223,2227,2232,2236,2240,2245,2250,2254,2259,2263,2267,2272,2276],{"type":162,"tag":209,"props":2215,"children":2216},{"style":216},[2217],{"type":168,"value":219},{"type":162,"tag":209,"props":2219,"children":2220},{"style":222},[2221],{"type":168,"value":2222}," timeout ",{"type":162,"tag":209,"props":2224,"children":2225},{"style":228},[2226],{"type":168,"value":231},{"type":162,"tag":209,"props":2228,"children":2229},{"style":244},[2230],{"type":168,"value":2231}," setTimeout",{"type":162,"tag":209,"props":2233,"children":2234},{"style":222},[2235],{"type":168,"value":294},{"type":162,"tag":209,"props":2237,"children":2238},{"style":228},[2239],{"type":168,"value":252},{"type":162,"tag":209,"props":2241,"children":2242},{"style":216},[2243],{"type":168,"value":2244}," =>",{"type":162,"tag":209,"props":2246,"children":2247},{"style":222},[2248],{"type":168,"value":2249}," controller",{"type":162,"tag":209,"props":2251,"children":2252},{"style":228},[2253],{"type":168,"value":241},{"type":162,"tag":209,"props":2255,"children":2256},{"style":244},[2257],{"type":168,"value":2258},"abort",{"type":162,"tag":209,"props":2260,"children":2261},{"style":222},[2262],{"type":168,"value":252},{"type":162,"tag":209,"props":2264,"children":2265},{"style":228},[2266],{"type":168,"value":331},{"type":162,"tag":209,"props":2268,"children":2269},{"style":1781},[2270],{"type":168,"value":2271}," 60_000",{"type":162,"tag":209,"props":2273,"children":2274},{"style":222},[2275],{"type":168,"value":437},{"type":162,"tag":209,"props":2277,"children":2278},{"style":458},[2279],{"type":168,"value":2280},"\u002F\u002F 60s max\n",{"type":162,"tag":209,"props":2282,"children":2283},{"class":211,"line":464},[2284],{"type":162,"tag":209,"props":2285,"children":2286},{"emptyLinePlaceholder":972},[2287],{"type":168,"value":975},{"type":162,"tag":209,"props":2289,"children":2290},{"class":211,"line":620},[2291,2295,2300,2304,2308,2313],{"type":162,"tag":209,"props":2292,"children":2293},{"style":216},[2294],{"type":168,"value":219},{"type":162,"tag":209,"props":2296,"children":2297},{"style":222},[2298],{"type":168,"value":2299}," res ",{"type":162,"tag":209,"props":2301,"children":2302},{"style":228},[2303],{"type":168,"value":231},{"type":162,"tag":209,"props":2305,"children":2306},{"style":845},[2307],{"type":168,"value":949},{"type":162,"tag":209,"props":2309,"children":2310},{"style":244},[2311],{"type":168,"value":2312}," fetch",{"type":162,"tag":209,"props":2314,"children":2315},{"style":222},[2316],{"type":168,"value":2317},"(\n",{"type":162,"tag":209,"props":2319,"children":2320},{"class":211,"line":38},[2321,2326,2331,2336,2341,2345,2350,2355],{"type":162,"tag":209,"props":2322,"children":2323},{"style":228},[2324],{"type":168,"value":2325},"  `",{"type":162,"tag":209,"props":2327,"children":2328},{"style":318},[2329],{"type":168,"value":2330},"https:\u002F\u002Fapi.vercel.com\u002Fv3\u002Fdeployments\u002F",{"type":162,"tag":209,"props":2332,"children":2333},{"style":228},[2334],{"type":168,"value":2335},"${",{"type":162,"tag":209,"props":2337,"children":2338},{"style":222},[2339],{"type":168,"value":2340},"deploymentId",{"type":162,"tag":209,"props":2342,"children":2343},{"style":228},[2344],{"type":168,"value":442},{"type":162,"tag":209,"props":2346,"children":2347},{"style":318},[2348],{"type":168,"value":2349},"\u002Fevents",{"type":162,"tag":209,"props":2351,"children":2352},{"style":228},[2353],{"type":168,"value":2354},"`",{"type":162,"tag":209,"props":2356,"children":2357},{"style":228},[2358],{"type":168,"value":1058},{"type":162,"tag":209,"props":2360,"children":2361},{"class":211,"line":986},[2362],{"type":162,"tag":209,"props":2363,"children":2364},{"style":228},[2365],{"type":168,"value":2366},"  {\n",{"type":162,"tag":209,"props":2368,"children":2369},{"class":211,"line":1029},[2370,2375,2379,2383,2388,2392,2397,2402,2406,2410,2414,2418,2422,2427,2432],{"type":162,"tag":209,"props":2371,"children":2372},{"style":302},[2373],{"type":168,"value":2374},"    headers",{"type":162,"tag":209,"props":2376,"children":2377},{"style":228},[2378],{"type":168,"value":310},{"type":162,"tag":209,"props":2380,"children":2381},{"style":228},[2382],{"type":168,"value":1769},{"type":162,"tag":209,"props":2384,"children":2385},{"style":302},[2386],{"type":168,"value":2387}," Authorization",{"type":162,"tag":209,"props":2389,"children":2390},{"style":228},[2391],{"type":168,"value":310},{"type":162,"tag":209,"props":2393,"children":2394},{"style":228},[2395],{"type":168,"value":2396}," `",{"type":162,"tag":209,"props":2398,"children":2399},{"style":318},[2400],{"type":168,"value":2401},"Bearer ",{"type":162,"tag":209,"props":2403,"children":2404},{"style":228},[2405],{"type":168,"value":2335},{"type":162,"tag":209,"props":2407,"children":2408},{"style":222},[2409],{"type":168,"value":1877},{"type":162,"tag":209,"props":2411,"children":2412},{"style":228},[2413],{"type":168,"value":241},{"type":162,"tag":209,"props":2415,"children":2416},{"style":222},[2417],{"type":168,"value":1886},{"type":162,"tag":209,"props":2419,"children":2420},{"style":228},[2421],{"type":168,"value":241},{"type":162,"tag":209,"props":2423,"children":2424},{"style":222},[2425],{"type":168,"value":2426},"VERCEL_TOKEN",{"type":162,"tag":209,"props":2428,"children":2429},{"style":228},[2430],{"type":168,"value":2431},"}`",{"type":162,"tag":209,"props":2433,"children":2434},{"style":228},[2435],{"type":168,"value":2436}," },\n",{"type":162,"tag":209,"props":2438,"children":2439},{"class":211,"line":1061},[2440,2445,2449,2453,2457,2462],{"type":162,"tag":209,"props":2441,"children":2442},{"style":302},[2443],{"type":168,"value":2444},"    signal",{"type":162,"tag":209,"props":2446,"children":2447},{"style":228},[2448],{"type":168,"value":310},{"type":162,"tag":209,"props":2450,"children":2451},{"style":222},[2452],{"type":168,"value":2249},{"type":162,"tag":209,"props":2454,"children":2455},{"style":228},[2456],{"type":168,"value":241},{"type":162,"tag":209,"props":2458,"children":2459},{"style":222},[2460],{"type":168,"value":2461},"signal",{"type":162,"tag":209,"props":2463,"children":2464},{"style":228},[2465],{"type":168,"value":1058},{"type":162,"tag":209,"props":2467,"children":2468},{"class":211,"line":1091},[2469],{"type":162,"tag":209,"props":2470,"children":2471},{"style":228},[2472],{"type":168,"value":1802},{"type":162,"tag":209,"props":2474,"children":2475},{"class":211,"line":1148},[2476],{"type":162,"tag":209,"props":2477,"children":2478},{"style":222},[2479],{"type":168,"value":1272},{"type":162,"tag":209,"props":2481,"children":2482},{"class":211,"line":1200},[2483],{"type":162,"tag":209,"props":2484,"children":2485},{"emptyLinePlaceholder":972},[2486],{"type":168,"value":975},{"type":162,"tag":209,"props":2488,"children":2489},{"class":211,"line":1214},[2490,2494,2499,2503,2508,2512,2517,2522,2527],{"type":162,"tag":209,"props":2491,"children":2492},{"style":216},[2493],{"type":168,"value":219},{"type":162,"tag":209,"props":2495,"children":2496},{"style":222},[2497],{"type":168,"value":2498}," reader ",{"type":162,"tag":209,"props":2500,"children":2501},{"style":228},[2502],{"type":168,"value":231},{"type":162,"tag":209,"props":2504,"children":2505},{"style":222},[2506],{"type":168,"value":2507}," res",{"type":162,"tag":209,"props":2509,"children":2510},{"style":228},[2511],{"type":168,"value":241},{"type":162,"tag":209,"props":2513,"children":2514},{"style":222},[2515],{"type":168,"value":2516},"body",{"type":162,"tag":209,"props":2518,"children":2519},{"style":228},[2520],{"type":168,"value":2521},"!.",{"type":162,"tag":209,"props":2523,"children":2524},{"style":244},[2525],{"type":168,"value":2526},"getReader",{"type":162,"tag":209,"props":2528,"children":2529},{"style":222},[2530],{"type":168,"value":928},{"type":162,"tag":209,"props":2532,"children":2533},{"class":211,"line":1222},[2534,2538,2543,2547,2551,2556],{"type":162,"tag":209,"props":2535,"children":2536},{"style":216},[2537],{"type":168,"value":219},{"type":162,"tag":209,"props":2539,"children":2540},{"style":222},[2541],{"type":168,"value":2542}," decoder ",{"type":162,"tag":209,"props":2544,"children":2545},{"style":228},[2546],{"type":168,"value":231},{"type":162,"tag":209,"props":2548,"children":2549},{"style":228},[2550],{"type":168,"value":2201},{"type":162,"tag":209,"props":2552,"children":2553},{"style":244},[2554],{"type":168,"value":2555}," TextDecoder",{"type":162,"tag":209,"props":2557,"children":2558},{"style":222},[2559],{"type":168,"value":928},{"type":162,"tag":209,"props":2561,"children":2562},{"class":211,"line":1235},[2563,2568,2573,2577],{"type":162,"tag":209,"props":2564,"children":2565},{"style":216},[2566],{"type":168,"value":2567},"let",{"type":162,"tag":209,"props":2569,"children":2570},{"style":222},[2571],{"type":168,"value":2572}," buffer ",{"type":162,"tag":209,"props":2574,"children":2575},{"style":228},[2576],{"type":168,"value":231},{"type":162,"tag":209,"props":2578,"children":2579},{"style":228},[2580],{"type":168,"value":2581}," ''\n",{"type":162,"tag":209,"props":2583,"children":2584},{"class":211,"line":1275},[2585],{"type":162,"tag":209,"props":2586,"children":2587},{"emptyLinePlaceholder":972},[2588],{"type":168,"value":975},{"type":162,"tag":209,"props":2590,"children":2591},{"class":211,"line":1316},[2592,2597],{"type":162,"tag":209,"props":2593,"children":2594},{"style":845},[2595],{"type":168,"value":2596},"try",{"type":162,"tag":209,"props":2598,"children":2599},{"style":228},[2600],{"type":168,"value":893},{"type":162,"tag":209,"props":2602,"children":2603},{"class":211,"line":1345},[2604,2609,2613,2619,2623],{"type":162,"tag":209,"props":2605,"children":2606},{"style":845},[2607],{"type":168,"value":2608},"  while",{"type":162,"tag":209,"props":2610,"children":2611},{"style":302},[2612],{"type":168,"value":1479},{"type":162,"tag":209,"props":2614,"children":2616},{"style":2615},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[2617],{"type":168,"value":2618},"true",{"type":162,"tag":209,"props":2620,"children":2621},{"style":302},[2622],{"type":168,"value":437},{"type":162,"tag":209,"props":2624,"children":2625},{"style":228},[2626],{"type":168,"value":1026},{"type":162,"tag":209,"props":2628,"children":2629},{"class":211,"line":1375},[2630,2634,2638,2643,2647,2652,2656,2660,2664,2669,2673,2678],{"type":162,"tag":209,"props":2631,"children":2632},{"style":216},[2633],{"type":168,"value":1241},{"type":162,"tag":209,"props":2635,"children":2636},{"style":228},[2637],{"type":168,"value":1769},{"type":162,"tag":209,"props":2639,"children":2640},{"style":222},[2641],{"type":168,"value":2642}," done",{"type":162,"tag":209,"props":2644,"children":2645},{"style":228},[2646],{"type":168,"value":331},{"type":162,"tag":209,"props":2648,"children":2649},{"style":222},[2650],{"type":168,"value":2651}," value",{"type":162,"tag":209,"props":2653,"children":2654},{"style":228},[2655],{"type":168,"value":1789},{"type":162,"tag":209,"props":2657,"children":2658},{"style":228},[2659],{"type":168,"value":911},{"type":162,"tag":209,"props":2661,"children":2662},{"style":845},[2663],{"type":168,"value":949},{"type":162,"tag":209,"props":2665,"children":2666},{"style":222},[2667],{"type":168,"value":2668}," reader",{"type":162,"tag":209,"props":2670,"children":2671},{"style":228},[2672],{"type":168,"value":241},{"type":162,"tag":209,"props":2674,"children":2675},{"style":244},[2676],{"type":168,"value":2677},"read",{"type":162,"tag":209,"props":2679,"children":2680},{"style":302},[2681],{"type":168,"value":928},{"type":162,"tag":209,"props":2683,"children":2684},{"class":211,"line":1416},[2685,2690,2694,2698,2702],{"type":162,"tag":209,"props":2686,"children":2687},{"style":845},[2688],{"type":168,"value":2689},"    if",{"type":162,"tag":209,"props":2691,"children":2692},{"style":302},[2693],{"type":168,"value":1479},{"type":162,"tag":209,"props":2695,"children":2696},{"style":222},[2697],{"type":168,"value":538},{"type":162,"tag":209,"props":2699,"children":2700},{"style":302},[2701],{"type":168,"value":437},{"type":162,"tag":209,"props":2703,"children":2704},{"style":845},[2705],{"type":168,"value":2706},"break\n",{"type":162,"tag":209,"props":2708,"children":2709},{"class":211,"line":1429},[2710,2715,2720,2725,2729,2734,2738,2743,2747,2751,2756,2760,2765,2769],{"type":162,"tag":209,"props":2711,"children":2712},{"style":222},[2713],{"type":168,"value":2714},"    buffer",{"type":162,"tag":209,"props":2716,"children":2717},{"style":228},[2718],{"type":168,"value":2719}," +=",{"type":162,"tag":209,"props":2721,"children":2722},{"style":222},[2723],{"type":168,"value":2724}," decoder",{"type":162,"tag":209,"props":2726,"children":2727},{"style":228},[2728],{"type":168,"value":241},{"type":162,"tag":209,"props":2730,"children":2731},{"style":244},[2732],{"type":168,"value":2733},"decode",{"type":162,"tag":209,"props":2735,"children":2736},{"style":302},[2737],{"type":168,"value":294},{"type":162,"tag":209,"props":2739,"children":2740},{"style":222},[2741],{"type":168,"value":2742},"value",{"type":162,"tag":209,"props":2744,"children":2745},{"style":228},[2746],{"type":168,"value":331},{"type":162,"tag":209,"props":2748,"children":2749},{"style":228},[2750],{"type":168,"value":1769},{"type":162,"tag":209,"props":2752,"children":2753},{"style":302},[2754],{"type":168,"value":2755}," stream",{"type":162,"tag":209,"props":2757,"children":2758},{"style":228},[2759],{"type":168,"value":310},{"type":162,"tag":209,"props":2761,"children":2762},{"style":2615},[2763],{"type":168,"value":2764}," true",{"type":162,"tag":209,"props":2766,"children":2767},{"style":228},[2768],{"type":168,"value":1789},{"type":162,"tag":209,"props":2770,"children":2771},{"style":302},[2772],{"type":168,"value":1272},{"type":162,"tag":209,"props":2774,"children":2775},{"class":211,"line":1464},[2776,2780,2785,2789,2794,2798,2803,2807,2811,2816,2820],{"type":162,"tag":209,"props":2777,"children":2778},{"style":216},[2779],{"type":168,"value":1241},{"type":162,"tag":209,"props":2781,"children":2782},{"style":222},[2783],{"type":168,"value":2784}," lines",{"type":162,"tag":209,"props":2786,"children":2787},{"style":228},[2788],{"type":168,"value":911},{"type":162,"tag":209,"props":2790,"children":2791},{"style":222},[2792],{"type":168,"value":2793}," buffer",{"type":162,"tag":209,"props":2795,"children":2796},{"style":228},[2797],{"type":168,"value":241},{"type":162,"tag":209,"props":2799,"children":2800},{"style":244},[2801],{"type":168,"value":2802},"split",{"type":162,"tag":209,"props":2804,"children":2805},{"style":302},[2806],{"type":168,"value":294},{"type":162,"tag":209,"props":2808,"children":2809},{"style":228},[2810],{"type":168,"value":1053},{"type":162,"tag":209,"props":2812,"children":2813},{"style":222},[2814],{"type":168,"value":2815},"\\n",{"type":162,"tag":209,"props":2817,"children":2818},{"style":228},[2819],{"type":168,"value":1053},{"type":162,"tag":209,"props":2821,"children":2822},{"style":302},[2823],{"type":168,"value":1272},{"type":162,"tag":209,"props":2825,"children":2826},{"class":211,"line":1494},[2827,2831,2835,2839,2843,2848,2852,2857],{"type":162,"tag":209,"props":2828,"children":2829},{"style":222},[2830],{"type":168,"value":2714},{"type":162,"tag":209,"props":2832,"children":2833},{"style":228},[2834],{"type":168,"value":911},{"type":162,"tag":209,"props":2836,"children":2837},{"style":222},[2838],{"type":168,"value":2784},{"type":162,"tag":209,"props":2840,"children":2841},{"style":228},[2842],{"type":168,"value":241},{"type":162,"tag":209,"props":2844,"children":2845},{"style":244},[2846],{"type":168,"value":2847},"pop",{"type":162,"tag":209,"props":2849,"children":2850},{"style":302},[2851],{"type":168,"value":252},{"type":162,"tag":209,"props":2853,"children":2854},{"style":228},[2855],{"type":168,"value":2856},"!",{"type":162,"tag":209,"props":2858,"children":2859},{"style":458},[2860],{"type":168,"value":2861}," \u002F\u002F keep incomplete line in buffer\n",{"type":162,"tag":209,"props":2863,"children":2864},{"class":211,"line":1534},[2865,2870,2874,2878,2883,2888,2892,2896],{"type":162,"tag":209,"props":2866,"children":2867},{"style":845},[2868],{"type":168,"value":2869},"    for",{"type":162,"tag":209,"props":2871,"children":2872},{"style":302},[2873],{"type":168,"value":1479},{"type":162,"tag":209,"props":2875,"children":2876},{"style":216},[2877],{"type":168,"value":219},{"type":162,"tag":209,"props":2879,"children":2880},{"style":222},[2881],{"type":168,"value":2882}," line",{"type":162,"tag":209,"props":2884,"children":2885},{"style":228},[2886],{"type":168,"value":2887}," of",{"type":162,"tag":209,"props":2889,"children":2890},{"style":222},[2891],{"type":168,"value":2784},{"type":162,"tag":209,"props":2893,"children":2894},{"style":302},[2895],{"type":168,"value":437},{"type":162,"tag":209,"props":2897,"children":2898},{"style":228},[2899],{"type":168,"value":1026},{"type":162,"tag":209,"props":2901,"children":2902},{"class":211,"line":1562},[2903,2908,2912,2916,2920,2924,2929,2934],{"type":162,"tag":209,"props":2904,"children":2905},{"style":845},[2906],{"type":168,"value":2907},"      if",{"type":162,"tag":209,"props":2909,"children":2910},{"style":302},[2911],{"type":168,"value":1479},{"type":162,"tag":209,"props":2913,"children":2914},{"style":228},[2915],{"type":168,"value":2856},{"type":162,"tag":209,"props":2917,"children":2918},{"style":222},[2919],{"type":168,"value":211},{"type":162,"tag":209,"props":2921,"children":2922},{"style":228},[2923],{"type":168,"value":241},{"type":162,"tag":209,"props":2925,"children":2926},{"style":244},[2927],{"type":168,"value":2928},"trim",{"type":162,"tag":209,"props":2930,"children":2931},{"style":302},[2932],{"type":168,"value":2933},"()) ",{"type":162,"tag":209,"props":2935,"children":2936},{"style":845},[2937],{"type":168,"value":2938},"continue\n",{"type":162,"tag":209,"props":2940,"children":2941},{"class":211,"line":1591},[2942,2947,2952,2956,2960,2964,2969,2973,2977],{"type":162,"tag":209,"props":2943,"children":2944},{"style":216},[2945],{"type":168,"value":2946},"      const",{"type":162,"tag":209,"props":2948,"children":2949},{"style":222},[2950],{"type":168,"value":2951}," event",{"type":162,"tag":209,"props":2953,"children":2954},{"style":228},[2955],{"type":168,"value":911},{"type":162,"tag":209,"props":2957,"children":2958},{"style":222},[2959],{"type":168,"value":1163},{"type":162,"tag":209,"props":2961,"children":2962},{"style":228},[2963],{"type":168,"value":241},{"type":162,"tag":209,"props":2965,"children":2966},{"style":244},[2967],{"type":168,"value":2968},"parse",{"type":162,"tag":209,"props":2970,"children":2971},{"style":302},[2972],{"type":168,"value":294},{"type":162,"tag":209,"props":2974,"children":2975},{"style":222},[2976],{"type":168,"value":211},{"type":162,"tag":209,"props":2978,"children":2979},{"style":302},[2980],{"type":168,"value":1272},{"type":162,"tag":209,"props":2982,"children":2983},{"class":211,"line":1661},[2984,2989,2993,2997,3001,3005,3010,3014,3019,3023,3028,3032,3037,3041,3045,3049,3053,3057],{"type":162,"tag":209,"props":2985,"children":2986},{"style":222},[2987],{"type":168,"value":2988},"      console",{"type":162,"tag":209,"props":2990,"children":2991},{"style":228},[2992],{"type":168,"value":241},{"type":162,"tag":209,"props":2994,"children":2995},{"style":244},[2996],{"type":168,"value":275},{"type":162,"tag":209,"props":2998,"children":2999},{"style":302},[3000],{"type":168,"value":294},{"type":162,"tag":209,"props":3002,"children":3003},{"style":228},[3004],{"type":168,"value":2354},{"type":162,"tag":209,"props":3006,"children":3007},{"style":318},[3008],{"type":168,"value":3009},"[",{"type":162,"tag":209,"props":3011,"children":3012},{"style":228},[3013],{"type":168,"value":2335},{"type":162,"tag":209,"props":3015,"children":3016},{"style":222},[3017],{"type":168,"value":3018},"event",{"type":162,"tag":209,"props":3020,"children":3021},{"style":228},[3022],{"type":168,"value":241},{"type":162,"tag":209,"props":3024,"children":3025},{"style":222},[3026],{"type":168,"value":3027},"level",{"type":162,"tag":209,"props":3029,"children":3030},{"style":228},[3031],{"type":168,"value":442},{"type":162,"tag":209,"props":3033,"children":3034},{"style":318},[3035],{"type":168,"value":3036},"] ",{"type":162,"tag":209,"props":3038,"children":3039},{"style":228},[3040],{"type":168,"value":2335},{"type":162,"tag":209,"props":3042,"children":3043},{"style":222},[3044],{"type":168,"value":3018},{"type":162,"tag":209,"props":3046,"children":3047},{"style":228},[3048],{"type":168,"value":241},{"type":162,"tag":209,"props":3050,"children":3051},{"style":222},[3052],{"type":168,"value":168},{"type":162,"tag":209,"props":3054,"children":3055},{"style":228},[3056],{"type":168,"value":2431},{"type":162,"tag":209,"props":3058,"children":3059},{"style":302},[3060],{"type":168,"value":1272},{"type":162,"tag":209,"props":3062,"children":3063},{"class":211,"line":1701},[3064],{"type":162,"tag":209,"props":3065,"children":3066},{"style":228},[3067],{"type":168,"value":3068},"    }\n",{"type":162,"tag":209,"props":3070,"children":3071},{"class":211,"line":1713},[3072],{"type":162,"tag":209,"props":3073,"children":3074},{"style":228},[3075],{"type":168,"value":1802},{"type":162,"tag":209,"props":3077,"children":3078},{"class":211,"line":1796},[3079,3083,3088],{"type":162,"tag":209,"props":3080,"children":3081},{"style":228},[3082],{"type":168,"value":442},{"type":162,"tag":209,"props":3084,"children":3085},{"style":845},[3086],{"type":168,"value":3087}," finally",{"type":162,"tag":209,"props":3089,"children":3090},{"style":228},[3091],{"type":168,"value":893},{"type":162,"tag":209,"props":3093,"children":3094},{"class":211,"line":1805},[3095,3100,3104,3108],{"type":162,"tag":209,"props":3096,"children":3097},{"style":244},[3098],{"type":168,"value":3099},"  clearTimeout",{"type":162,"tag":209,"props":3101,"children":3102},{"style":302},[3103],{"type":168,"value":294},{"type":162,"tag":209,"props":3105,"children":3106},{"style":222},[3107],{"type":168,"value":154},{"type":162,"tag":209,"props":3109,"children":3110},{"style":302},[3111],{"type":168,"value":1272},{"type":162,"tag":209,"props":3113,"children":3115},{"class":211,"line":3114},32,[3116],{"type":162,"tag":209,"props":3117,"children":3118},{"style":228},[3119],{"type":168,"value":1811},{"type":162,"tag":2122,"props":3121,"children":3122},{},[3123],{"type":162,"tag":171,"props":3124,"children":3125},{},[3126,3131,3133,3139,3141,3147],{"type":162,"tag":177,"props":3127,"children":3128},{},[3129],{"type":168,"value":3130},"MCP alternative:",{"type":168,"value":3132}," Use ",{"type":162,"tag":205,"props":3134,"children":3136},{"className":3135},[],[3137],{"type":168,"value":3138},"get_runtime_logs",{"type":168,"value":3140}," via the Vercel MCP server for agent-friendly log queries without managing streams directly. See ",{"type":162,"tag":205,"props":3142,"children":3144},{"className":3143},[],[3145],{"type":168,"value":3146},"⤳ skill: vercel-api",{"type":168,"value":241},{"type":162,"tag":185,"props":3149,"children":3151},{"id":3150},"web-analytics",[3152],{"type":168,"value":3153},"Web Analytics",{"type":162,"tag":171,"props":3155,"children":3156},{},[3157],{"type":168,"value":3158},"Privacy-friendly, first-party analytics with no cookie banners required.",{"type":162,"tag":819,"props":3160,"children":3162},{"id":3161},"installation",[3163],{"type":168,"value":3164},"Installation",{"type":162,"tag":197,"props":3166,"children":3168},{"className":2031,"code":3167,"language":2033,"meta":202,"style":202},"npm install @vercel\u002Fanalytics\n",[3169],{"type":162,"tag":205,"props":3170,"children":3171},{"__ignoreMap":202},[3172],{"type":162,"tag":209,"props":3173,"children":3174},{"class":211,"line":212},[3175,3180,3185],{"type":162,"tag":209,"props":3176,"children":3177},{"style":880},[3178],{"type":168,"value":3179},"npm",{"type":162,"tag":209,"props":3181,"children":3182},{"style":318},[3183],{"type":168,"value":3184}," install",{"type":162,"tag":209,"props":3186,"children":3187},{"style":318},[3188],{"type":168,"value":3189}," @vercel\u002Fanalytics\n",{"type":162,"tag":819,"props":3191,"children":3193},{"id":3192},"setup-nextjs-app-router",[3194],{"type":168,"value":3195},"Setup (Next.js App Router)",{"type":162,"tag":197,"props":3197,"children":3201},{"className":3198,"code":3199,"language":3200,"meta":202,"style":202},"language-tsx shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F app\u002Flayout.tsx\nimport { Analytics } from '@vercel\u002Fanalytics\u002Fnext'\n\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\n  return (\n    \u003Chtml>\n      \u003Cbody>\n        {children}\n        \u003CAnalytics \u002F>\n      \u003C\u002Fbody>\n    \u003C\u002Fhtml>\n  )\n}\n","tsx",[3202],{"type":162,"tag":205,"props":3203,"children":3204},{"__ignoreMap":202},[3205,3213,3253,3260,3331,3344,3362,3378,3395,3412,3428,3444,3452],{"type":162,"tag":209,"props":3206,"children":3207},{"class":211,"line":212},[3208],{"type":162,"tag":209,"props":3209,"children":3210},{"style":458},[3211],{"type":168,"value":3212},"\u002F\u002F app\u002Flayout.tsx\n",{"type":162,"tag":209,"props":3214,"children":3215},{"class":211,"line":260},[3216,3221,3225,3230,3234,3239,3243,3248],{"type":162,"tag":209,"props":3217,"children":3218},{"style":845},[3219],{"type":168,"value":3220},"import",{"type":162,"tag":209,"props":3222,"children":3223},{"style":228},[3224],{"type":168,"value":1769},{"type":162,"tag":209,"props":3226,"children":3227},{"style":222},[3228],{"type":168,"value":3229}," Analytics",{"type":162,"tag":209,"props":3231,"children":3232},{"style":228},[3233],{"type":168,"value":1789},{"type":162,"tag":209,"props":3235,"children":3236},{"style":845},[3237],{"type":168,"value":3238}," from",{"type":162,"tag":209,"props":3240,"children":3241},{"style":228},[3242],{"type":168,"value":1044},{"type":162,"tag":209,"props":3244,"children":3245},{"style":318},[3246],{"type":168,"value":3247},"@vercel\u002Fanalytics\u002Fnext",{"type":162,"tag":209,"props":3249,"children":3250},{"style":228},[3251],{"type":168,"value":3252},"'\n",{"type":162,"tag":209,"props":3254,"children":3255},{"class":211,"line":454},[3256],{"type":162,"tag":209,"props":3257,"children":3258},{"emptyLinePlaceholder":972},[3259],{"type":168,"value":975},{"type":162,"tag":209,"props":3261,"children":3262},{"class":211,"line":464},[3263,3267,3272,3276,3281,3286,3291,3296,3300,3304,3308,3313,3317,3322,3327],{"type":162,"tag":209,"props":3264,"children":3265},{"style":845},[3266],{"type":168,"value":848},{"type":162,"tag":209,"props":3268,"children":3269},{"style":845},[3270],{"type":168,"value":3271}," default",{"type":162,"tag":209,"props":3273,"children":3274},{"style":216},[3275],{"type":168,"value":858},{"type":162,"tag":209,"props":3277,"children":3278},{"style":244},[3279],{"type":168,"value":3280}," RootLayout",{"type":162,"tag":209,"props":3282,"children":3283},{"style":228},[3284],{"type":168,"value":3285},"({",{"type":162,"tag":209,"props":3287,"children":3288},{"style":870},[3289],{"type":168,"value":3290}," children",{"type":162,"tag":209,"props":3292,"children":3293},{"style":228},[3294],{"type":168,"value":3295}," }:",{"type":162,"tag":209,"props":3297,"children":3298},{"style":228},[3299],{"type":168,"value":1769},{"type":162,"tag":209,"props":3301,"children":3302},{"style":302},[3303],{"type":168,"value":3290},{"type":162,"tag":209,"props":3305,"children":3306},{"style":228},[3307],{"type":168,"value":310},{"type":162,"tag":209,"props":3309,"children":3310},{"style":880},[3311],{"type":168,"value":3312}," React",{"type":162,"tag":209,"props":3314,"children":3315},{"style":228},[3316],{"type":168,"value":241},{"type":162,"tag":209,"props":3318,"children":3319},{"style":880},[3320],{"type":168,"value":3321},"ReactNode",{"type":162,"tag":209,"props":3323,"children":3324},{"style":228},[3325],{"type":168,"value":3326}," })",{"type":162,"tag":209,"props":3328,"children":3329},{"style":228},[3330],{"type":168,"value":893},{"type":162,"tag":209,"props":3332,"children":3333},{"class":211,"line":620},[3334,3339],{"type":162,"tag":209,"props":3335,"children":3336},{"style":845},[3337],{"type":168,"value":3338},"  return",{"type":162,"tag":209,"props":3340,"children":3341},{"style":302},[3342],{"type":168,"value":3343}," (\n",{"type":162,"tag":209,"props":3345,"children":3346},{"class":211,"line":38},[3347,3352,3357],{"type":162,"tag":209,"props":3348,"children":3349},{"style":228},[3350],{"type":168,"value":3351},"    \u003C",{"type":162,"tag":209,"props":3353,"children":3354},{"style":302},[3355],{"type":168,"value":3356},"html",{"type":162,"tag":209,"props":3358,"children":3359},{"style":228},[3360],{"type":168,"value":3361},">\n",{"type":162,"tag":209,"props":3363,"children":3364},{"class":211,"line":986},[3365,3370,3374],{"type":162,"tag":209,"props":3366,"children":3367},{"style":228},[3368],{"type":168,"value":3369},"      \u003C",{"type":162,"tag":209,"props":3371,"children":3372},{"style":302},[3373],{"type":168,"value":2516},{"type":162,"tag":209,"props":3375,"children":3376},{"style":228},[3377],{"type":168,"value":3361},{"type":162,"tag":209,"props":3379,"children":3380},{"class":211,"line":1029},[3381,3386,3391],{"type":162,"tag":209,"props":3382,"children":3383},{"style":228},[3384],{"type":168,"value":3385},"        {",{"type":162,"tag":209,"props":3387,"children":3388},{"style":222},[3389],{"type":168,"value":3390},"children",{"type":162,"tag":209,"props":3392,"children":3393},{"style":228},[3394],{"type":168,"value":1811},{"type":162,"tag":209,"props":3396,"children":3397},{"class":211,"line":1061},[3398,3403,3407],{"type":162,"tag":209,"props":3399,"children":3400},{"style":228},[3401],{"type":168,"value":3402},"        \u003C",{"type":162,"tag":209,"props":3404,"children":3405},{"style":880},[3406],{"type":168,"value":22},{"type":162,"tag":209,"props":3408,"children":3409},{"style":228},[3410],{"type":168,"value":3411}," \u002F>\n",{"type":162,"tag":209,"props":3413,"children":3414},{"class":211,"line":1091},[3415,3420,3424],{"type":162,"tag":209,"props":3416,"children":3417},{"style":228},[3418],{"type":168,"value":3419},"      \u003C\u002F",{"type":162,"tag":209,"props":3421,"children":3422},{"style":302},[3423],{"type":168,"value":2516},{"type":162,"tag":209,"props":3425,"children":3426},{"style":228},[3427],{"type":168,"value":3361},{"type":162,"tag":209,"props":3429,"children":3430},{"class":211,"line":1148},[3431,3436,3440],{"type":162,"tag":209,"props":3432,"children":3433},{"style":228},[3434],{"type":168,"value":3435},"    \u003C\u002F",{"type":162,"tag":209,"props":3437,"children":3438},{"style":302},[3439],{"type":168,"value":3356},{"type":162,"tag":209,"props":3441,"children":3442},{"style":228},[3443],{"type":168,"value":3361},{"type":162,"tag":209,"props":3445,"children":3446},{"class":211,"line":1200},[3447],{"type":162,"tag":209,"props":3448,"children":3449},{"style":302},[3450],{"type":168,"value":3451},"  )\n",{"type":162,"tag":209,"props":3453,"children":3454},{"class":211,"line":1214},[3455],{"type":162,"tag":209,"props":3456,"children":3457},{"style":228},[3458],{"type":168,"value":1811},{"type":162,"tag":819,"props":3460,"children":3462},{"id":3461},"custom-events-proenterprise",[3463],{"type":168,"value":3464},"Custom Events (Pro\u002FEnterprise)",{"type":162,"tag":171,"props":3466,"children":3467},{},[3468],{"type":168,"value":3469},"Track business-specific events beyond pageviews.",{"type":162,"tag":197,"props":3471,"children":3473},{"className":199,"code":3472,"language":201,"meta":202,"style":202},"import { track } from '@vercel\u002Fanalytics'\n\n\u002F\u002F Track a conversion\ntrack('purchase', {\n  product: 'pro-plan',\n  value: 20,\n  currency: 'USD',\n})\n\n\u002F\u002F Track a feature usage\ntrack('feature_used', {\n  name: 'ai-chat',\n  duration_ms: 3200,\n})\n",[3474],{"type":162,"tag":205,"props":3475,"children":3476},{"__ignoreMap":202},[3477,3514,3521,3529,3561,3590,3611,3640,3651,3658,3666,3698,3727,3748],{"type":162,"tag":209,"props":3478,"children":3479},{"class":211,"line":212},[3480,3484,3488,3493,3497,3501,3505,3510],{"type":162,"tag":209,"props":3481,"children":3482},{"style":845},[3483],{"type":168,"value":3220},{"type":162,"tag":209,"props":3485,"children":3486},{"style":228},[3487],{"type":168,"value":1769},{"type":162,"tag":209,"props":3489,"children":3490},{"style":222},[3491],{"type":168,"value":3492}," track",{"type":162,"tag":209,"props":3494,"children":3495},{"style":228},[3496],{"type":168,"value":1789},{"type":162,"tag":209,"props":3498,"children":3499},{"style":845},[3500],{"type":168,"value":3238},{"type":162,"tag":209,"props":3502,"children":3503},{"style":228},[3504],{"type":168,"value":1044},{"type":162,"tag":209,"props":3506,"children":3507},{"style":318},[3508],{"type":168,"value":3509},"@vercel\u002Fanalytics",{"type":162,"tag":209,"props":3511,"children":3512},{"style":228},[3513],{"type":168,"value":3252},{"type":162,"tag":209,"props":3515,"children":3516},{"class":211,"line":260},[3517],{"type":162,"tag":209,"props":3518,"children":3519},{"emptyLinePlaceholder":972},[3520],{"type":168,"value":975},{"type":162,"tag":209,"props":3522,"children":3523},{"class":211,"line":454},[3524],{"type":162,"tag":209,"props":3525,"children":3526},{"style":458},[3527],{"type":168,"value":3528},"\u002F\u002F Track a conversion\n",{"type":162,"tag":209,"props":3530,"children":3531},{"class":211,"line":464},[3532,3536,3540,3544,3549,3553,3557],{"type":162,"tag":209,"props":3533,"children":3534},{"style":244},[3535],{"type":168,"value":138},{"type":162,"tag":209,"props":3537,"children":3538},{"style":222},[3539],{"type":168,"value":294},{"type":162,"tag":209,"props":3541,"children":3542},{"style":228},[3543],{"type":168,"value":1053},{"type":162,"tag":209,"props":3545,"children":3546},{"style":318},[3547],{"type":168,"value":3548},"purchase",{"type":162,"tag":209,"props":3550,"children":3551},{"style":228},[3552],{"type":168,"value":1053},{"type":162,"tag":209,"props":3554,"children":3555},{"style":228},[3556],{"type":168,"value":331},{"type":162,"tag":209,"props":3558,"children":3559},{"style":228},[3560],{"type":168,"value":893},{"type":162,"tag":209,"props":3562,"children":3563},{"class":211,"line":620},[3564,3569,3573,3577,3582,3586],{"type":162,"tag":209,"props":3565,"children":3566},{"style":302},[3567],{"type":168,"value":3568},"  product",{"type":162,"tag":209,"props":3570,"children":3571},{"style":228},[3572],{"type":168,"value":310},{"type":162,"tag":209,"props":3574,"children":3575},{"style":228},[3576],{"type":168,"value":1044},{"type":162,"tag":209,"props":3578,"children":3579},{"style":318},[3580],{"type":168,"value":3581},"pro-plan",{"type":162,"tag":209,"props":3583,"children":3584},{"style":228},[3585],{"type":168,"value":1053},{"type":162,"tag":209,"props":3587,"children":3588},{"style":228},[3589],{"type":168,"value":1058},{"type":162,"tag":209,"props":3591,"children":3592},{"class":211,"line":38},[3593,3598,3602,3607],{"type":162,"tag":209,"props":3594,"children":3595},{"style":302},[3596],{"type":168,"value":3597},"  value",{"type":162,"tag":209,"props":3599,"children":3600},{"style":228},[3601],{"type":168,"value":310},{"type":162,"tag":209,"props":3603,"children":3604},{"style":1781},[3605],{"type":168,"value":3606}," 20",{"type":162,"tag":209,"props":3608,"children":3609},{"style":228},[3610],{"type":168,"value":1058},{"type":162,"tag":209,"props":3612,"children":3613},{"class":211,"line":986},[3614,3619,3623,3627,3632,3636],{"type":162,"tag":209,"props":3615,"children":3616},{"style":302},[3617],{"type":168,"value":3618},"  currency",{"type":162,"tag":209,"props":3620,"children":3621},{"style":228},[3622],{"type":168,"value":310},{"type":162,"tag":209,"props":3624,"children":3625},{"style":228},[3626],{"type":168,"value":1044},{"type":162,"tag":209,"props":3628,"children":3629},{"style":318},[3630],{"type":168,"value":3631},"USD",{"type":162,"tag":209,"props":3633,"children":3634},{"style":228},[3635],{"type":168,"value":1053},{"type":162,"tag":209,"props":3637,"children":3638},{"style":228},[3639],{"type":168,"value":1058},{"type":162,"tag":209,"props":3641,"children":3642},{"class":211,"line":1029},[3643,3647],{"type":162,"tag":209,"props":3644,"children":3645},{"style":228},[3646],{"type":168,"value":442},{"type":162,"tag":209,"props":3648,"children":3649},{"style":222},[3650],{"type":168,"value":1272},{"type":162,"tag":209,"props":3652,"children":3653},{"class":211,"line":1061},[3654],{"type":162,"tag":209,"props":3655,"children":3656},{"emptyLinePlaceholder":972},[3657],{"type":168,"value":975},{"type":162,"tag":209,"props":3659,"children":3660},{"class":211,"line":1091},[3661],{"type":162,"tag":209,"props":3662,"children":3663},{"style":458},[3664],{"type":168,"value":3665},"\u002F\u002F Track a feature usage\n",{"type":162,"tag":209,"props":3667,"children":3668},{"class":211,"line":1148},[3669,3673,3677,3681,3686,3690,3694],{"type":162,"tag":209,"props":3670,"children":3671},{"style":244},[3672],{"type":168,"value":138},{"type":162,"tag":209,"props":3674,"children":3675},{"style":222},[3676],{"type":168,"value":294},{"type":162,"tag":209,"props":3678,"children":3679},{"style":228},[3680],{"type":168,"value":1053},{"type":162,"tag":209,"props":3682,"children":3683},{"style":318},[3684],{"type":168,"value":3685},"feature_used",{"type":162,"tag":209,"props":3687,"children":3688},{"style":228},[3689],{"type":168,"value":1053},{"type":162,"tag":209,"props":3691,"children":3692},{"style":228},[3693],{"type":168,"value":331},{"type":162,"tag":209,"props":3695,"children":3696},{"style":228},[3697],{"type":168,"value":893},{"type":162,"tag":209,"props":3699,"children":3700},{"class":211,"line":1200},[3701,3706,3710,3714,3719,3723],{"type":162,"tag":209,"props":3702,"children":3703},{"style":302},[3704],{"type":168,"value":3705},"  name",{"type":162,"tag":209,"props":3707,"children":3708},{"style":228},[3709],{"type":168,"value":310},{"type":162,"tag":209,"props":3711,"children":3712},{"style":228},[3713],{"type":168,"value":1044},{"type":162,"tag":209,"props":3715,"children":3716},{"style":318},[3717],{"type":168,"value":3718},"ai-chat",{"type":162,"tag":209,"props":3720,"children":3721},{"style":228},[3722],{"type":168,"value":1053},{"type":162,"tag":209,"props":3724,"children":3725},{"style":228},[3726],{"type":168,"value":1058},{"type":162,"tag":209,"props":3728,"children":3729},{"class":211,"line":1214},[3730,3735,3739,3744],{"type":162,"tag":209,"props":3731,"children":3732},{"style":302},[3733],{"type":168,"value":3734},"  duration_ms",{"type":162,"tag":209,"props":3736,"children":3737},{"style":228},[3738],{"type":168,"value":310},{"type":162,"tag":209,"props":3740,"children":3741},{"style":1781},[3742],{"type":168,"value":3743}," 3200",{"type":162,"tag":209,"props":3745,"children":3746},{"style":228},[3747],{"type":168,"value":1058},{"type":162,"tag":209,"props":3749,"children":3750},{"class":211,"line":1222},[3751,3755],{"type":162,"tag":209,"props":3752,"children":3753},{"style":228},[3754],{"type":168,"value":442},{"type":162,"tag":209,"props":3756,"children":3757},{"style":222},[3758],{"type":168,"value":1272},{"type":162,"tag":819,"props":3760,"children":3762},{"id":3761},"server-side-tracking",[3763],{"type":168,"value":3764},"Server-Side Tracking",{"type":162,"tag":197,"props":3766,"children":3768},{"className":199,"code":3767,"language":201,"meta":202,"style":202},"import { track } from '@vercel\u002Fanalytics\u002Fserver'\n\nexport async function POST(req: Request) {\n  const data = await req.json()\n  await processOrder(data)\n\n  track('order_completed', {\n    order_id: data.id,\n    total: data.total,\n  })\n\n  return Response.json({ success: true })\n}\n",[3769],{"type":162,"tag":205,"props":3770,"children":3771},{"__ignoreMap":202},[3772,3808,3815,3858,3893,3918,3925,3958,3987,4016,4027,4034,4082],{"type":162,"tag":209,"props":3773,"children":3774},{"class":211,"line":212},[3775,3779,3783,3787,3791,3795,3799,3804],{"type":162,"tag":209,"props":3776,"children":3777},{"style":845},[3778],{"type":168,"value":3220},{"type":162,"tag":209,"props":3780,"children":3781},{"style":228},[3782],{"type":168,"value":1769},{"type":162,"tag":209,"props":3784,"children":3785},{"style":222},[3786],{"type":168,"value":3492},{"type":162,"tag":209,"props":3788,"children":3789},{"style":228},[3790],{"type":168,"value":1789},{"type":162,"tag":209,"props":3792,"children":3793},{"style":845},[3794],{"type":168,"value":3238},{"type":162,"tag":209,"props":3796,"children":3797},{"style":228},[3798],{"type":168,"value":1044},{"type":162,"tag":209,"props":3800,"children":3801},{"style":318},[3802],{"type":168,"value":3803},"@vercel\u002Fanalytics\u002Fserver",{"type":162,"tag":209,"props":3805,"children":3806},{"style":228},[3807],{"type":168,"value":3252},{"type":162,"tag":209,"props":3809,"children":3810},{"class":211,"line":260},[3811],{"type":162,"tag":209,"props":3812,"children":3813},{"emptyLinePlaceholder":972},[3814],{"type":168,"value":975},{"type":162,"tag":209,"props":3816,"children":3817},{"class":211,"line":454},[3818,3822,3826,3830,3834,3838,3842,3846,3850,3854],{"type":162,"tag":209,"props":3819,"children":3820},{"style":845},[3821],{"type":168,"value":848},{"type":162,"tag":209,"props":3823,"children":3824},{"style":216},[3825],{"type":168,"value":853},{"type":162,"tag":209,"props":3827,"children":3828},{"style":216},[3829],{"type":168,"value":858},{"type":162,"tag":209,"props":3831,"children":3832},{"style":244},[3833],{"type":168,"value":863},{"type":162,"tag":209,"props":3835,"children":3836},{"style":228},[3837],{"type":168,"value":294},{"type":162,"tag":209,"props":3839,"children":3840},{"style":870},[3841],{"type":168,"value":873},{"type":162,"tag":209,"props":3843,"children":3844},{"style":228},[3845],{"type":168,"value":310},{"type":162,"tag":209,"props":3847,"children":3848},{"style":880},[3849],{"type":168,"value":883},{"type":162,"tag":209,"props":3851,"children":3852},{"style":228},[3853],{"type":168,"value":888},{"type":162,"tag":209,"props":3855,"children":3856},{"style":228},[3857],{"type":168,"value":893},{"type":162,"tag":209,"props":3859,"children":3860},{"class":211,"line":464},[3861,3865,3869,3873,3877,3881,3885,3889],{"type":162,"tag":209,"props":3862,"children":3863},{"style":216},[3864],{"type":168,"value":901},{"type":162,"tag":209,"props":3866,"children":3867},{"style":222},[3868],{"type":168,"value":940},{"type":162,"tag":209,"props":3870,"children":3871},{"style":228},[3872],{"type":168,"value":911},{"type":162,"tag":209,"props":3874,"children":3875},{"style":845},[3876],{"type":168,"value":949},{"type":162,"tag":209,"props":3878,"children":3879},{"style":222},[3880],{"type":168,"value":397},{"type":162,"tag":209,"props":3882,"children":3883},{"style":228},[3884],{"type":168,"value":241},{"type":162,"tag":209,"props":3886,"children":3887},{"style":244},[3888],{"type":168,"value":962},{"type":162,"tag":209,"props":3890,"children":3891},{"style":302},[3892],{"type":168,"value":928},{"type":162,"tag":209,"props":3894,"children":3895},{"class":211,"line":620},[3896,3901,3906,3910,3914],{"type":162,"tag":209,"props":3897,"children":3898},{"style":845},[3899],{"type":168,"value":3900},"  await",{"type":162,"tag":209,"props":3902,"children":3903},{"style":244},[3904],{"type":168,"value":3905}," processOrder",{"type":162,"tag":209,"props":3907,"children":3908},{"style":302},[3909],{"type":168,"value":294},{"type":162,"tag":209,"props":3911,"children":3912},{"style":222},[3913],{"type":168,"value":1180},{"type":162,"tag":209,"props":3915,"children":3916},{"style":302},[3917],{"type":168,"value":1272},{"type":162,"tag":209,"props":3919,"children":3920},{"class":211,"line":38},[3921],{"type":162,"tag":209,"props":3922,"children":3923},{"emptyLinePlaceholder":972},[3924],{"type":168,"value":975},{"type":162,"tag":209,"props":3926,"children":3927},{"class":211,"line":986},[3928,3933,3937,3941,3946,3950,3954],{"type":162,"tag":209,"props":3929,"children":3930},{"style":244},[3931],{"type":168,"value":3932},"  track",{"type":162,"tag":209,"props":3934,"children":3935},{"style":302},[3936],{"type":168,"value":294},{"type":162,"tag":209,"props":3938,"children":3939},{"style":228},[3940],{"type":168,"value":1053},{"type":162,"tag":209,"props":3942,"children":3943},{"style":318},[3944],{"type":168,"value":3945},"order_completed",{"type":162,"tag":209,"props":3947,"children":3948},{"style":228},[3949],{"type":168,"value":1053},{"type":162,"tag":209,"props":3951,"children":3952},{"style":228},[3953],{"type":168,"value":331},{"type":162,"tag":209,"props":3955,"children":3956},{"style":228},[3957],{"type":168,"value":893},{"type":162,"tag":209,"props":3959,"children":3960},{"class":211,"line":1029},[3961,3966,3970,3974,3978,3983],{"type":162,"tag":209,"props":3962,"children":3963},{"style":302},[3964],{"type":168,"value":3965},"    order_id",{"type":162,"tag":209,"props":3967,"children":3968},{"style":228},[3969],{"type":168,"value":310},{"type":162,"tag":209,"props":3971,"children":3972},{"style":222},[3973],{"type":168,"value":940},{"type":162,"tag":209,"props":3975,"children":3976},{"style":228},[3977],{"type":168,"value":241},{"type":162,"tag":209,"props":3979,"children":3980},{"style":222},[3981],{"type":168,"value":3982},"id",{"type":162,"tag":209,"props":3984,"children":3985},{"style":228},[3986],{"type":168,"value":1058},{"type":162,"tag":209,"props":3988,"children":3989},{"class":211,"line":1061},[3990,3995,3999,4003,4007,4012],{"type":162,"tag":209,"props":3991,"children":3992},{"style":302},[3993],{"type":168,"value":3994},"    total",{"type":162,"tag":209,"props":3996,"children":3997},{"style":228},[3998],{"type":168,"value":310},{"type":162,"tag":209,"props":4000,"children":4001},{"style":222},[4002],{"type":168,"value":940},{"type":162,"tag":209,"props":4004,"children":4005},{"style":228},[4006],{"type":168,"value":241},{"type":162,"tag":209,"props":4008,"children":4009},{"style":222},[4010],{"type":168,"value":4011},"total",{"type":162,"tag":209,"props":4013,"children":4014},{"style":228},[4015],{"type":168,"value":1058},{"type":162,"tag":209,"props":4017,"children":4018},{"class":211,"line":1091},[4019,4023],{"type":162,"tag":209,"props":4020,"children":4021},{"style":228},[4022],{"type":168,"value":1206},{"type":162,"tag":209,"props":4024,"children":4025},{"style":302},[4026],{"type":168,"value":1272},{"type":162,"tag":209,"props":4028,"children":4029},{"class":211,"line":1148},[4030],{"type":162,"tag":209,"props":4031,"children":4032},{"emptyLinePlaceholder":972},[4033],{"type":168,"value":975},{"type":162,"tag":209,"props":4035,"children":4036},{"class":211,"line":1200},[4037,4041,4045,4049,4053,4057,4061,4066,4070,4074,4078],{"type":162,"tag":209,"props":4038,"children":4039},{"style":845},[4040],{"type":168,"value":3338},{"type":162,"tag":209,"props":4042,"children":4043},{"style":222},[4044],{"type":168,"value":1440},{"type":162,"tag":209,"props":4046,"children":4047},{"style":228},[4048],{"type":168,"value":241},{"type":162,"tag":209,"props":4050,"children":4051},{"style":244},[4052],{"type":168,"value":962},{"type":162,"tag":209,"props":4054,"children":4055},{"style":302},[4056],{"type":168,"value":294},{"type":162,"tag":209,"props":4058,"children":4059},{"style":228},[4060],{"type":168,"value":299},{"type":162,"tag":209,"props":4062,"children":4063},{"style":302},[4064],{"type":168,"value":4065}," success",{"type":162,"tag":209,"props":4067,"children":4068},{"style":228},[4069],{"type":168,"value":310},{"type":162,"tag":209,"props":4071,"children":4072},{"style":2615},[4073],{"type":168,"value":2764},{"type":162,"tag":209,"props":4075,"children":4076},{"style":228},[4077],{"type":168,"value":1789},{"type":162,"tag":209,"props":4079,"children":4080},{"style":302},[4081],{"type":168,"value":1272},{"type":162,"tag":209,"props":4083,"children":4084},{"class":211,"line":1214},[4085],{"type":162,"tag":209,"props":4086,"children":4087},{"style":228},[4088],{"type":168,"value":1811},{"type":162,"tag":185,"props":4090,"children":4092},{"id":4091},"speed-insights",[4093],{"type":168,"value":4094},"Speed Insights",{"type":162,"tag":171,"props":4096,"children":4097},{},[4098],{"type":168,"value":4099},"Real-user performance monitoring built on Core Web Vitals.",{"type":162,"tag":819,"props":4101,"children":4103},{"id":4102},"installation-1",[4104],{"type":168,"value":3164},{"type":162,"tag":197,"props":4106,"children":4108},{"className":2031,"code":4107,"language":2033,"meta":202,"style":202},"npm install @vercel\u002Fspeed-insights\n",[4109],{"type":162,"tag":205,"props":4110,"children":4111},{"__ignoreMap":202},[4112],{"type":162,"tag":209,"props":4113,"children":4114},{"class":211,"line":212},[4115,4119,4123],{"type":162,"tag":209,"props":4116,"children":4117},{"style":880},[4118],{"type":168,"value":3179},{"type":162,"tag":209,"props":4120,"children":4121},{"style":318},[4122],{"type":168,"value":3184},{"type":162,"tag":209,"props":4124,"children":4125},{"style":318},[4126],{"type":168,"value":4127}," @vercel\u002Fspeed-insights\n",{"type":162,"tag":819,"props":4129,"children":4131},{"id":4130},"setup-nextjs-app-router-1",[4132],{"type":168,"value":3195},{"type":162,"tag":197,"props":4134,"children":4136},{"className":3198,"code":4135,"language":3200,"meta":202,"style":202},"\u002F\u002F app\u002Flayout.tsx\nimport { SpeedInsights } from '@vercel\u002Fspeed-insights\u002Fnext'\n\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\n  return (\n    \u003Chtml>\n      \u003Cbody>\n        {children}\n        \u003CSpeedInsights \u002F>\n      \u003C\u002Fbody>\n    \u003C\u002Fhtml>\n  )\n}\n",[4137],{"type":162,"tag":205,"props":4138,"children":4139},{"__ignoreMap":202},[4140,4147,4184,4191,4254,4265,4280,4295,4310,4326,4341,4356,4363],{"type":162,"tag":209,"props":4141,"children":4142},{"class":211,"line":212},[4143],{"type":162,"tag":209,"props":4144,"children":4145},{"style":458},[4146],{"type":168,"value":3212},{"type":162,"tag":209,"props":4148,"children":4149},{"class":211,"line":260},[4150,4154,4158,4163,4167,4171,4175,4180],{"type":162,"tag":209,"props":4151,"children":4152},{"style":845},[4153],{"type":168,"value":3220},{"type":162,"tag":209,"props":4155,"children":4156},{"style":228},[4157],{"type":168,"value":1769},{"type":162,"tag":209,"props":4159,"children":4160},{"style":222},[4161],{"type":168,"value":4162}," SpeedInsights",{"type":162,"tag":209,"props":4164,"children":4165},{"style":228},[4166],{"type":168,"value":1789},{"type":162,"tag":209,"props":4168,"children":4169},{"style":845},[4170],{"type":168,"value":3238},{"type":162,"tag":209,"props":4172,"children":4173},{"style":228},[4174],{"type":168,"value":1044},{"type":162,"tag":209,"props":4176,"children":4177},{"style":318},[4178],{"type":168,"value":4179},"@vercel\u002Fspeed-insights\u002Fnext",{"type":162,"tag":209,"props":4181,"children":4182},{"style":228},[4183],{"type":168,"value":3252},{"type":162,"tag":209,"props":4185,"children":4186},{"class":211,"line":454},[4187],{"type":162,"tag":209,"props":4188,"children":4189},{"emptyLinePlaceholder":972},[4190],{"type":168,"value":975},{"type":162,"tag":209,"props":4192,"children":4193},{"class":211,"line":464},[4194,4198,4202,4206,4210,4214,4218,4222,4226,4230,4234,4238,4242,4246,4250],{"type":162,"tag":209,"props":4195,"children":4196},{"style":845},[4197],{"type":168,"value":848},{"type":162,"tag":209,"props":4199,"children":4200},{"style":845},[4201],{"type":168,"value":3271},{"type":162,"tag":209,"props":4203,"children":4204},{"style":216},[4205],{"type":168,"value":858},{"type":162,"tag":209,"props":4207,"children":4208},{"style":244},[4209],{"type":168,"value":3280},{"type":162,"tag":209,"props":4211,"children":4212},{"style":228},[4213],{"type":168,"value":3285},{"type":162,"tag":209,"props":4215,"children":4216},{"style":870},[4217],{"type":168,"value":3290},{"type":162,"tag":209,"props":4219,"children":4220},{"style":228},[4221],{"type":168,"value":3295},{"type":162,"tag":209,"props":4223,"children":4224},{"style":228},[4225],{"type":168,"value":1769},{"type":162,"tag":209,"props":4227,"children":4228},{"style":302},[4229],{"type":168,"value":3290},{"type":162,"tag":209,"props":4231,"children":4232},{"style":228},[4233],{"type":168,"value":310},{"type":162,"tag":209,"props":4235,"children":4236},{"style":880},[4237],{"type":168,"value":3312},{"type":162,"tag":209,"props":4239,"children":4240},{"style":228},[4241],{"type":168,"value":241},{"type":162,"tag":209,"props":4243,"children":4244},{"style":880},[4245],{"type":168,"value":3321},{"type":162,"tag":209,"props":4247,"children":4248},{"style":228},[4249],{"type":168,"value":3326},{"type":162,"tag":209,"props":4251,"children":4252},{"style":228},[4253],{"type":168,"value":893},{"type":162,"tag":209,"props":4255,"children":4256},{"class":211,"line":620},[4257,4261],{"type":162,"tag":209,"props":4258,"children":4259},{"style":845},[4260],{"type":168,"value":3338},{"type":162,"tag":209,"props":4262,"children":4263},{"style":302},[4264],{"type":168,"value":3343},{"type":162,"tag":209,"props":4266,"children":4267},{"class":211,"line":38},[4268,4272,4276],{"type":162,"tag":209,"props":4269,"children":4270},{"style":228},[4271],{"type":168,"value":3351},{"type":162,"tag":209,"props":4273,"children":4274},{"style":302},[4275],{"type":168,"value":3356},{"type":162,"tag":209,"props":4277,"children":4278},{"style":228},[4279],{"type":168,"value":3361},{"type":162,"tag":209,"props":4281,"children":4282},{"class":211,"line":986},[4283,4287,4291],{"type":162,"tag":209,"props":4284,"children":4285},{"style":228},[4286],{"type":168,"value":3369},{"type":162,"tag":209,"props":4288,"children":4289},{"style":302},[4290],{"type":168,"value":2516},{"type":162,"tag":209,"props":4292,"children":4293},{"style":228},[4294],{"type":168,"value":3361},{"type":162,"tag":209,"props":4296,"children":4297},{"class":211,"line":1029},[4298,4302,4306],{"type":162,"tag":209,"props":4299,"children":4300},{"style":228},[4301],{"type":168,"value":3385},{"type":162,"tag":209,"props":4303,"children":4304},{"style":222},[4305],{"type":168,"value":3390},{"type":162,"tag":209,"props":4307,"children":4308},{"style":228},[4309],{"type":168,"value":1811},{"type":162,"tag":209,"props":4311,"children":4312},{"class":211,"line":1061},[4313,4317,4322],{"type":162,"tag":209,"props":4314,"children":4315},{"style":228},[4316],{"type":168,"value":3402},{"type":162,"tag":209,"props":4318,"children":4319},{"style":880},[4320],{"type":168,"value":4321},"SpeedInsights",{"type":162,"tag":209,"props":4323,"children":4324},{"style":228},[4325],{"type":168,"value":3411},{"type":162,"tag":209,"props":4327,"children":4328},{"class":211,"line":1091},[4329,4333,4337],{"type":162,"tag":209,"props":4330,"children":4331},{"style":228},[4332],{"type":168,"value":3419},{"type":162,"tag":209,"props":4334,"children":4335},{"style":302},[4336],{"type":168,"value":2516},{"type":162,"tag":209,"props":4338,"children":4339},{"style":228},[4340],{"type":168,"value":3361},{"type":162,"tag":209,"props":4342,"children":4343},{"class":211,"line":1148},[4344,4348,4352],{"type":162,"tag":209,"props":4345,"children":4346},{"style":228},[4347],{"type":168,"value":3435},{"type":162,"tag":209,"props":4349,"children":4350},{"style":302},[4351],{"type":168,"value":3356},{"type":162,"tag":209,"props":4353,"children":4354},{"style":228},[4355],{"type":168,"value":3361},{"type":162,"tag":209,"props":4357,"children":4358},{"class":211,"line":1200},[4359],{"type":162,"tag":209,"props":4360,"children":4361},{"style":302},[4362],{"type":168,"value":3451},{"type":162,"tag":209,"props":4364,"children":4365},{"class":211,"line":1214},[4366],{"type":162,"tag":209,"props":4367,"children":4368},{"style":228},[4369],{"type":168,"value":1811},{"type":162,"tag":819,"props":4371,"children":4373},{"id":4372},"metrics-tracked",[4374],{"type":168,"value":4375},"Metrics Tracked",{"type":162,"tag":4377,"props":4378,"children":4379},"table",{},[4380,4404],{"type":162,"tag":4381,"props":4382,"children":4383},"thead",{},[4384],{"type":162,"tag":4385,"props":4386,"children":4387},"tr",{},[4388,4394,4399],{"type":162,"tag":4389,"props":4390,"children":4391},"th",{},[4392],{"type":168,"value":4393},"Metric",{"type":162,"tag":4389,"props":4395,"children":4396},{},[4397],{"type":168,"value":4398},"What It Measures",{"type":162,"tag":4389,"props":4400,"children":4401},{},[4402],{"type":168,"value":4403},"Good Threshold",{"type":162,"tag":4405,"props":4406,"children":4407},"tbody",{},[4408,4427,4445,4463,4481],{"type":162,"tag":4385,"props":4409,"children":4410},{},[4411,4417,4422],{"type":162,"tag":4412,"props":4413,"children":4414},"td",{},[4415],{"type":168,"value":4416},"LCP",{"type":162,"tag":4412,"props":4418,"children":4419},{},[4420],{"type":168,"value":4421},"Largest Contentful Paint",{"type":162,"tag":4412,"props":4423,"children":4424},{},[4425],{"type":168,"value":4426},"\u003C 2.5s",{"type":162,"tag":4385,"props":4428,"children":4429},{},[4430,4435,4440],{"type":162,"tag":4412,"props":4431,"children":4432},{},[4433],{"type":168,"value":4434},"INP",{"type":162,"tag":4412,"props":4436,"children":4437},{},[4438],{"type":168,"value":4439},"Interaction to Next Paint",{"type":162,"tag":4412,"props":4441,"children":4442},{},[4443],{"type":168,"value":4444},"\u003C 200ms",{"type":162,"tag":4385,"props":4446,"children":4447},{},[4448,4453,4458],{"type":162,"tag":4412,"props":4449,"children":4450},{},[4451],{"type":168,"value":4452},"CLS",{"type":162,"tag":4412,"props":4454,"children":4455},{},[4456],{"type":168,"value":4457},"Cumulative Layout Shift",{"type":162,"tag":4412,"props":4459,"children":4460},{},[4461],{"type":168,"value":4462},"\u003C 0.1",{"type":162,"tag":4385,"props":4464,"children":4465},{},[4466,4471,4476],{"type":162,"tag":4412,"props":4467,"children":4468},{},[4469],{"type":168,"value":4470},"FCP",{"type":162,"tag":4412,"props":4472,"children":4473},{},[4474],{"type":168,"value":4475},"First Contentful Paint",{"type":162,"tag":4412,"props":4477,"children":4478},{},[4479],{"type":168,"value":4480},"\u003C 1.8s",{"type":162,"tag":4385,"props":4482,"children":4483},{},[4484,4489,4494],{"type":162,"tag":4412,"props":4485,"children":4486},{},[4487],{"type":168,"value":4488},"TTFB",{"type":162,"tag":4412,"props":4490,"children":4491},{},[4492],{"type":168,"value":4493},"Time to First Byte",{"type":162,"tag":4412,"props":4495,"children":4496},{},[4497],{"type":168,"value":4498},"\u003C 800ms",{"type":162,"tag":819,"props":4500,"children":4502},{"id":4501},"performance-attribution",[4503],{"type":168,"value":4504},"Performance Attribution",{"type":162,"tag":171,"props":4506,"children":4507},{},[4508],{"type":168,"value":4509},"Speed Insights attributes metrics to specific routes and pages, letting you identify which pages are slow and why.",{"type":162,"tag":185,"props":4511,"children":4513},{"id":4512},"drains",[4514],{"type":168,"value":4515},"Drains",{"type":162,"tag":171,"props":4517,"children":4518},{},[4519],{"type":168,"value":4520},"Drains forward observability data from Vercel to external endpoints. They are the primary mechanism for exporting logs, traces, Speed Insights, and Web Analytics data to third-party platforms.",{"type":162,"tag":2122,"props":4522,"children":4523},{},[4524],{"type":162,"tag":171,"props":4525,"children":4526},{},[4527,4532,4534,4539,4541,4548],{"type":162,"tag":177,"props":4528,"children":4529},{},[4530],{"type":168,"value":4531},"Plan requirement:",{"type":168,"value":4533}," Drains require a ",{"type":162,"tag":177,"props":4535,"children":4536},{},[4537],{"type":168,"value":4538},"Pro or Enterprise",{"type":168,"value":4540}," plan. For Hobby plans, see the ",{"type":162,"tag":4542,"props":4543,"children":4545},"a",{"href":4544},"#fallback-guidance-no-drains",[4546],{"type":168,"value":4547},"Fallback Guidance",{"type":168,"value":4549}," section below.",{"type":162,"tag":819,"props":4551,"children":4553},{"id":4552},"data-types",[4554],{"type":168,"value":4555},"Data Types",{"type":162,"tag":171,"props":4557,"children":4558},{},[4559],{"type":168,"value":4560},"Drains can forward multiple categories of telemetry:",{"type":162,"tag":4377,"props":4562,"children":4563},{},[4564,4585],{"type":162,"tag":4381,"props":4565,"children":4566},{},[4567],{"type":162,"tag":4385,"props":4568,"children":4569},{},[4570,4575,4580],{"type":162,"tag":4389,"props":4571,"children":4572},{},[4573],{"type":168,"value":4574},"Data Type",{"type":162,"tag":4389,"props":4576,"children":4577},{},[4578],{"type":168,"value":4579},"What It Contains",{"type":162,"tag":4389,"props":4581,"children":4582},{},[4583],{"type":168,"value":4584},"Use Case",{"type":162,"tag":4405,"props":4586,"children":4587},{},[4588,4609,4630,4650],{"type":162,"tag":4385,"props":4589,"children":4590},{},[4591,4599,4604],{"type":162,"tag":4412,"props":4592,"children":4593},{},[4594],{"type":162,"tag":177,"props":4595,"children":4596},{},[4597],{"type":168,"value":4598},"Logs",{"type":162,"tag":4412,"props":4600,"children":4601},{},[4602],{"type":168,"value":4603},"Runtime function logs, build logs, static access logs",{"type":162,"tag":4412,"props":4605,"children":4606},{},[4607],{"type":168,"value":4608},"Centralized log aggregation",{"type":162,"tag":4385,"props":4610,"children":4611},{},[4612,4620,4625],{"type":162,"tag":4412,"props":4613,"children":4614},{},[4615],{"type":162,"tag":177,"props":4616,"children":4617},{},[4618],{"type":168,"value":4619},"Traces",{"type":162,"tag":4412,"props":4621,"children":4622},{},[4623],{"type":168,"value":4624},"OpenTelemetry-compatible distributed traces",{"type":162,"tag":4412,"props":4626,"children":4627},{},[4628],{"type":168,"value":4629},"End-to-end request tracing",{"type":162,"tag":4385,"props":4631,"children":4632},{},[4633,4640,4645],{"type":162,"tag":4412,"props":4634,"children":4635},{},[4636],{"type":162,"tag":177,"props":4637,"children":4638},{},[4639],{"type":168,"value":4094},{"type":162,"tag":4412,"props":4641,"children":4642},{},[4643],{"type":168,"value":4644},"Core Web Vitals and performance metrics",{"type":162,"tag":4412,"props":4646,"children":4647},{},[4648],{"type":168,"value":4649},"Performance monitoring pipelines",{"type":162,"tag":4385,"props":4651,"children":4652},{},[4653,4660,4665],{"type":162,"tag":4412,"props":4654,"children":4655},{},[4656],{"type":162,"tag":177,"props":4657,"children":4658},{},[4659],{"type":168,"value":3153},{"type":162,"tag":4412,"props":4661,"children":4662},{},[4663],{"type":168,"value":4664},"Pageviews, custom events, visitor data",{"type":162,"tag":4412,"props":4666,"children":4667},{},[4668],{"type":168,"value":4669},"Analytics data warehousing",{"type":162,"tag":819,"props":4671,"children":4673},{"id":4672},"supported-formats",[4674],{"type":168,"value":4675},"Supported Formats",{"type":162,"tag":4377,"props":4677,"children":4678},{},[4679,4700],{"type":162,"tag":4381,"props":4680,"children":4681},{},[4682],{"type":162,"tag":4385,"props":4683,"children":4684},{},[4685,4690,4695],{"type":162,"tag":4389,"props":4686,"children":4687},{},[4688],{"type":168,"value":4689},"Format",{"type":162,"tag":4389,"props":4691,"children":4692},{},[4693],{"type":168,"value":4694},"Protocol",{"type":162,"tag":4389,"props":4696,"children":4697},{},[4698],{"type":168,"value":4699},"Best For",{"type":162,"tag":4405,"props":4701,"children":4702},{},[4703,4720,4737],{"type":162,"tag":4385,"props":4704,"children":4705},{},[4706,4710,4715],{"type":162,"tag":4412,"props":4707,"children":4708},{},[4709],{"type":168,"value":1009},{"type":162,"tag":4412,"props":4711,"children":4712},{},[4713],{"type":168,"value":4714},"HTTPS POST",{"type":162,"tag":4412,"props":4716,"children":4717},{},[4718],{"type":168,"value":4719},"Custom backends, generic log collectors",{"type":162,"tag":4385,"props":4721,"children":4722},{},[4723,4728,4732],{"type":162,"tag":4412,"props":4724,"children":4725},{},[4726],{"type":168,"value":4727},"NDJSON",{"type":162,"tag":4412,"props":4729,"children":4730},{},[4731],{"type":168,"value":4714},{"type":162,"tag":4412,"props":4733,"children":4734},{},[4735],{"type":168,"value":4736},"Streaming-friendly consumers, high-volume pipelines",{"type":162,"tag":4385,"props":4738,"children":4739},{},[4740,4745,4750],{"type":162,"tag":4412,"props":4741,"children":4742},{},[4743],{"type":168,"value":4744},"Syslog",{"type":162,"tag":4412,"props":4746,"children":4747},{},[4748],{"type":168,"value":4749},"TLS syslog",{"type":162,"tag":4412,"props":4751,"children":4752},{},[4753],{"type":168,"value":4754},"Traditional log management (rsyslog, syslog-ng)",{"type":162,"tag":819,"props":4756,"children":4758},{"id":4757},"setting-up-drains",[4759],{"type":168,"value":4760},"Setting Up Drains",{"type":162,"tag":171,"props":4762,"children":4763},{},[4764,4766,4771,4773,4779,4781,4786],{"type":168,"value":4765},"Drains are configured via the ",{"type":162,"tag":177,"props":4767,"children":4768},{},[4769],{"type":168,"value":4770},"Vercel Dashboard",{"type":168,"value":4772}," at ",{"type":162,"tag":205,"props":4774,"children":4776},{"className":4775},[],[4777],{"type":168,"value":4778},"https:\u002F\u002Fvercel.com\u002Fdashboard\u002F{team}\u002F~\u002Fsettings\u002Flog-drains",{"type":168,"value":4780}," or the ",{"type":162,"tag":177,"props":4782,"children":4783},{},[4784],{"type":168,"value":4785},"REST API",{"type":168,"value":241},{"type":162,"tag":4788,"props":4789,"children":4791},"h4",{"id":4790},"via-dashboard",[4792],{"type":168,"value":4793},"Via Dashboard",{"type":162,"tag":4795,"props":4796,"children":4797},"ol",{},[4798,4819,4829,4834,4839],{"type":162,"tag":4799,"props":4800,"children":4801},"li",{},[4802,4804,4809,4811,4817],{"type":168,"value":4803},"Open ",{"type":162,"tag":205,"props":4805,"children":4807},{"className":4806},[],[4808],{"type":168,"value":4778},{"type":168,"value":4810}," (replace ",{"type":162,"tag":205,"props":4812,"children":4814},{"className":4813},[],[4815],{"type":168,"value":4816},"{team}",{"type":168,"value":4818}," with your team slug)",{"type":162,"tag":4799,"props":4820,"children":4821},{},[4822,4824],{"type":168,"value":4823},"Click ",{"type":162,"tag":177,"props":4825,"children":4826},{},[4827],{"type":168,"value":4828},"Add Log Drain",{"type":162,"tag":4799,"props":4830,"children":4831},{},[4832],{"type":168,"value":4833},"Select the drain type (JSON, NDJSON, or syslog) and enter the endpoint URL",{"type":162,"tag":4799,"props":4835,"children":4836},{},[4837],{"type":168,"value":4838},"Choose which environments and sources to include",{"type":162,"tag":4799,"props":4840,"children":4841},{},[4842,4843,4848],{"type":168,"value":4823},{"type":162,"tag":177,"props":4844,"children":4845},{},[4846],{"type":168,"value":4847},"Create",{"type":168,"value":4849}," to activate the drain",{"type":162,"tag":4788,"props":4851,"children":4853},{"id":4852},"via-rest-api-v1drains",[4854,4856,4862],{"type":168,"value":4855},"Via REST API (",{"type":162,"tag":205,"props":4857,"children":4859},{"className":4858},[],[4860],{"type":168,"value":4861},"\u002Fv1\u002Fdrains",{"type":168,"value":888},{"type":162,"tag":197,"props":4864,"children":4866},{"className":2031,"code":4865,"language":2033,"meta":202,"style":202},"# List all drains\ncurl -s -H \"Authorization: Bearer $VERCEL_TOKEN\" \\\n  \"https:\u002F\u002Fapi.vercel.com\u002Fv1\u002Fdrains?teamId=$TEAM_ID\" | jq\n\n# Create a JSON drain\ncurl -X POST -H \"Authorization: Bearer $VERCEL_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  \"https:\u002F\u002Fapi.vercel.com\u002Fv1\u002Fdrains?teamId=$TEAM_ID\" \\\n  -d '{\n    \"url\": \"https:\u002F\u002Fyour-endpoint.example.com\u002Flogs\",\n    \"type\": \"json\",\n    \"sources\": [\"lambda\", \"edge\", \"static\"],\n    \"environments\": [\"production\"]\n  }'\n\n# Test a drain (sends a test payload to your endpoint)\ncurl -X POST -H \"Authorization: Bearer $VERCEL_TOKEN\" \\\n  \"https:\u002F\u002Fapi.vercel.com\u002Fv1\u002Fdrains\u002F\u003Cdrain-id>\u002Ftest?teamId=$TEAM_ID\"\n\n# Update a drain (change URL, sources, or environments)\ncurl -X PATCH -H \"Authorization: Bearer $VERCEL_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  \"https:\u002F\u002Fapi.vercel.com\u002Fv1\u002Fdrains\u002F\u003Cdrain-id>?teamId=$TEAM_ID\" \\\n  -d '{\n    \"url\": \"https:\u002F\u002Fnew-endpoint.example.com\u002Flogs\",\n    \"environments\": [\"production\", \"preview\"]\n  }'\n\n# Delete a drain\ncurl -X DELETE -H \"Authorization: Bearer $VERCEL_TOKEN\" \\\n  \"https:\u002F\u002Fapi.vercel.com\u002Fv1\u002Fdrains\u002F\u003Cdrain-id>?teamId=$TEAM_ID\"\n",[4867],{"type":162,"tag":205,"props":4868,"children":4869},{"__ignoreMap":202},[4870,4878,4914,4945,4952,4960,5000,5025,5048,5064,5072,5080,5088,5096,5107,5114,5122,5161,5182,5189,5197,5237,5260,5284,5299,5307,5315,5326,5333,5341,5381],{"type":162,"tag":209,"props":4871,"children":4872},{"class":211,"line":212},[4873],{"type":162,"tag":209,"props":4874,"children":4875},{"style":458},[4876],{"type":168,"value":4877},"# List all drains\n",{"type":162,"tag":209,"props":4879,"children":4880},{"class":211,"line":260},[4881,4885,4890,4894,4898,4902,4906,4910],{"type":162,"tag":209,"props":4882,"children":4883},{"style":880},[4884],{"type":168,"value":2053},{"type":162,"tag":209,"props":4886,"children":4887},{"style":318},[4888],{"type":168,"value":4889}," -s",{"type":162,"tag":209,"props":4891,"children":4892},{"style":318},[4893],{"type":168,"value":2063},{"type":162,"tag":209,"props":4895,"children":4896},{"style":228},[4897],{"type":168,"value":315},{"type":162,"tag":209,"props":4899,"children":4900},{"style":318},[4901],{"type":168,"value":2072},{"type":162,"tag":209,"props":4903,"children":4904},{"style":222},[4905],{"type":168,"value":2077},{"type":162,"tag":209,"props":4907,"children":4908},{"style":228},[4909],{"type":168,"value":326},{"type":162,"tag":209,"props":4911,"children":4912},{"style":222},[4913],{"type":168,"value":2086},{"type":162,"tag":209,"props":4915,"children":4916},{"class":211,"line":454},[4917,4921,4926,4931,4935,4940],{"type":162,"tag":209,"props":4918,"children":4919},{"style":228},[4920],{"type":168,"value":2094},{"type":162,"tag":209,"props":4922,"children":4923},{"style":318},[4924],{"type":168,"value":4925},"https:\u002F\u002Fapi.vercel.com\u002Fv1\u002Fdrains?teamId=",{"type":162,"tag":209,"props":4927,"children":4928},{"style":222},[4929],{"type":168,"value":4930},"$TEAM_ID",{"type":162,"tag":209,"props":4932,"children":4933},{"style":228},[4934],{"type":168,"value":326},{"type":162,"tag":209,"props":4936,"children":4937},{"style":228},[4938],{"type":168,"value":4939}," |",{"type":162,"tag":209,"props":4941,"children":4942},{"style":880},[4943],{"type":168,"value":4944}," jq\n",{"type":162,"tag":209,"props":4946,"children":4947},{"class":211,"line":464},[4948],{"type":162,"tag":209,"props":4949,"children":4950},{"emptyLinePlaceholder":972},[4951],{"type":168,"value":975},{"type":162,"tag":209,"props":4953,"children":4954},{"class":211,"line":620},[4955],{"type":162,"tag":209,"props":4956,"children":4957},{"style":458},[4958],{"type":168,"value":4959},"# Create a JSON drain\n",{"type":162,"tag":209,"props":4961,"children":4962},{"class":211,"line":38},[4963,4967,4972,4976,4980,4984,4988,4992,4996],{"type":162,"tag":209,"props":4964,"children":4965},{"style":880},[4966],{"type":168,"value":2053},{"type":162,"tag":209,"props":4968,"children":4969},{"style":318},[4970],{"type":168,"value":4971}," -X",{"type":162,"tag":209,"props":4973,"children":4974},{"style":318},[4975],{"type":168,"value":863},{"type":162,"tag":209,"props":4977,"children":4978},{"style":318},[4979],{"type":168,"value":2063},{"type":162,"tag":209,"props":4981,"children":4982},{"style":228},[4983],{"type":168,"value":315},{"type":162,"tag":209,"props":4985,"children":4986},{"style":318},[4987],{"type":168,"value":2072},{"type":162,"tag":209,"props":4989,"children":4990},{"style":222},[4991],{"type":168,"value":2077},{"type":162,"tag":209,"props":4993,"children":4994},{"style":228},[4995],{"type":168,"value":326},{"type":162,"tag":209,"props":4997,"children":4998},{"style":222},[4999],{"type":168,"value":2086},{"type":162,"tag":209,"props":5001,"children":5002},{"class":211,"line":986},[5003,5008,5012,5017,5021],{"type":162,"tag":209,"props":5004,"children":5005},{"style":318},[5006],{"type":168,"value":5007},"  -H",{"type":162,"tag":209,"props":5009,"children":5010},{"style":228},[5011],{"type":168,"value":315},{"type":162,"tag":209,"props":5013,"children":5014},{"style":318},[5015],{"type":168,"value":5016},"Content-Type: application\u002Fjson",{"type":162,"tag":209,"props":5018,"children":5019},{"style":228},[5020],{"type":168,"value":326},{"type":162,"tag":209,"props":5022,"children":5023},{"style":222},[5024],{"type":168,"value":2086},{"type":162,"tag":209,"props":5026,"children":5027},{"class":211,"line":1029},[5028,5032,5036,5040,5044],{"type":162,"tag":209,"props":5029,"children":5030},{"style":228},[5031],{"type":168,"value":2094},{"type":162,"tag":209,"props":5033,"children":5034},{"style":318},[5035],{"type":168,"value":4925},{"type":162,"tag":209,"props":5037,"children":5038},{"style":222},[5039],{"type":168,"value":4930},{"type":162,"tag":209,"props":5041,"children":5042},{"style":228},[5043],{"type":168,"value":326},{"type":162,"tag":209,"props":5045,"children":5046},{"style":222},[5047],{"type":168,"value":2086},{"type":162,"tag":209,"props":5049,"children":5050},{"class":211,"line":1061},[5051,5056,5060],{"type":162,"tag":209,"props":5052,"children":5053},{"style":318},[5054],{"type":168,"value":5055},"  -d",{"type":162,"tag":209,"props":5057,"children":5058},{"style":228},[5059],{"type":168,"value":1044},{"type":162,"tag":209,"props":5061,"children":5062},{"style":318},[5063],{"type":168,"value":1026},{"type":162,"tag":209,"props":5065,"children":5066},{"class":211,"line":1091},[5067],{"type":162,"tag":209,"props":5068,"children":5069},{"style":318},[5070],{"type":168,"value":5071},"    \"url\": \"https:\u002F\u002Fyour-endpoint.example.com\u002Flogs\",\n",{"type":162,"tag":209,"props":5073,"children":5074},{"class":211,"line":1148},[5075],{"type":162,"tag":209,"props":5076,"children":5077},{"style":318},[5078],{"type":168,"value":5079},"    \"type\": \"json\",\n",{"type":162,"tag":209,"props":5081,"children":5082},{"class":211,"line":1200},[5083],{"type":162,"tag":209,"props":5084,"children":5085},{"style":318},[5086],{"type":168,"value":5087},"    \"sources\": [\"lambda\", \"edge\", \"static\"],\n",{"type":162,"tag":209,"props":5089,"children":5090},{"class":211,"line":1214},[5091],{"type":162,"tag":209,"props":5092,"children":5093},{"style":318},[5094],{"type":168,"value":5095},"    \"environments\": [\"production\"]\n",{"type":162,"tag":209,"props":5097,"children":5098},{"class":211,"line":1222},[5099,5103],{"type":162,"tag":209,"props":5100,"children":5101},{"style":318},[5102],{"type":168,"value":1206},{"type":162,"tag":209,"props":5104,"children":5105},{"style":228},[5106],{"type":168,"value":3252},{"type":162,"tag":209,"props":5108,"children":5109},{"class":211,"line":1235},[5110],{"type":162,"tag":209,"props":5111,"children":5112},{"emptyLinePlaceholder":972},[5113],{"type":168,"value":975},{"type":162,"tag":209,"props":5115,"children":5116},{"class":211,"line":1275},[5117],{"type":162,"tag":209,"props":5118,"children":5119},{"style":458},[5120],{"type":168,"value":5121},"# Test a drain (sends a test payload to your endpoint)\n",{"type":162,"tag":209,"props":5123,"children":5124},{"class":211,"line":1316},[5125,5129,5133,5137,5141,5145,5149,5153,5157],{"type":162,"tag":209,"props":5126,"children":5127},{"style":880},[5128],{"type":168,"value":2053},{"type":162,"tag":209,"props":5130,"children":5131},{"style":318},[5132],{"type":168,"value":4971},{"type":162,"tag":209,"props":5134,"children":5135},{"style":318},[5136],{"type":168,"value":863},{"type":162,"tag":209,"props":5138,"children":5139},{"style":318},[5140],{"type":168,"value":2063},{"type":162,"tag":209,"props":5142,"children":5143},{"style":228},[5144],{"type":168,"value":315},{"type":162,"tag":209,"props":5146,"children":5147},{"style":318},[5148],{"type":168,"value":2072},{"type":162,"tag":209,"props":5150,"children":5151},{"style":222},[5152],{"type":168,"value":2077},{"type":162,"tag":209,"props":5154,"children":5155},{"style":228},[5156],{"type":168,"value":326},{"type":162,"tag":209,"props":5158,"children":5159},{"style":222},[5160],{"type":168,"value":2086},{"type":162,"tag":209,"props":5162,"children":5163},{"class":211,"line":1345},[5164,5168,5173,5177],{"type":162,"tag":209,"props":5165,"children":5166},{"style":228},[5167],{"type":168,"value":2094},{"type":162,"tag":209,"props":5169,"children":5170},{"style":318},[5171],{"type":168,"value":5172},"https:\u002F\u002Fapi.vercel.com\u002Fv1\u002Fdrains\u002F\u003Cdrain-id>\u002Ftest?teamId=",{"type":162,"tag":209,"props":5174,"children":5175},{"style":222},[5176],{"type":168,"value":4930},{"type":162,"tag":209,"props":5178,"children":5179},{"style":228},[5180],{"type":168,"value":5181},"\"\n",{"type":162,"tag":209,"props":5183,"children":5184},{"class":211,"line":1375},[5185],{"type":162,"tag":209,"props":5186,"children":5187},{"emptyLinePlaceholder":972},[5188],{"type":168,"value":975},{"type":162,"tag":209,"props":5190,"children":5191},{"class":211,"line":1416},[5192],{"type":162,"tag":209,"props":5193,"children":5194},{"style":458},[5195],{"type":168,"value":5196},"# Update a drain (change URL, sources, or environments)\n",{"type":162,"tag":209,"props":5198,"children":5199},{"class":211,"line":1429},[5200,5204,5208,5213,5217,5221,5225,5229,5233],{"type":162,"tag":209,"props":5201,"children":5202},{"style":880},[5203],{"type":168,"value":2053},{"type":162,"tag":209,"props":5205,"children":5206},{"style":318},[5207],{"type":168,"value":4971},{"type":162,"tag":209,"props":5209,"children":5210},{"style":318},[5211],{"type":168,"value":5212}," PATCH",{"type":162,"tag":209,"props":5214,"children":5215},{"style":318},[5216],{"type":168,"value":2063},{"type":162,"tag":209,"props":5218,"children":5219},{"style":228},[5220],{"type":168,"value":315},{"type":162,"tag":209,"props":5222,"children":5223},{"style":318},[5224],{"type":168,"value":2072},{"type":162,"tag":209,"props":5226,"children":5227},{"style":222},[5228],{"type":168,"value":2077},{"type":162,"tag":209,"props":5230,"children":5231},{"style":228},[5232],{"type":168,"value":326},{"type":162,"tag":209,"props":5234,"children":5235},{"style":222},[5236],{"type":168,"value":2086},{"type":162,"tag":209,"props":5238,"children":5239},{"class":211,"line":1464},[5240,5244,5248,5252,5256],{"type":162,"tag":209,"props":5241,"children":5242},{"style":318},[5243],{"type":168,"value":5007},{"type":162,"tag":209,"props":5245,"children":5246},{"style":228},[5247],{"type":168,"value":315},{"type":162,"tag":209,"props":5249,"children":5250},{"style":318},[5251],{"type":168,"value":5016},{"type":162,"tag":209,"props":5253,"children":5254},{"style":228},[5255],{"type":168,"value":326},{"type":162,"tag":209,"props":5257,"children":5258},{"style":222},[5259],{"type":168,"value":2086},{"type":162,"tag":209,"props":5261,"children":5262},{"class":211,"line":1494},[5263,5267,5272,5276,5280],{"type":162,"tag":209,"props":5264,"children":5265},{"style":228},[5266],{"type":168,"value":2094},{"type":162,"tag":209,"props":5268,"children":5269},{"style":318},[5270],{"type":168,"value":5271},"https:\u002F\u002Fapi.vercel.com\u002Fv1\u002Fdrains\u002F\u003Cdrain-id>?teamId=",{"type":162,"tag":209,"props":5273,"children":5274},{"style":222},[5275],{"type":168,"value":4930},{"type":162,"tag":209,"props":5277,"children":5278},{"style":228},[5279],{"type":168,"value":326},{"type":162,"tag":209,"props":5281,"children":5282},{"style":222},[5283],{"type":168,"value":2086},{"type":162,"tag":209,"props":5285,"children":5286},{"class":211,"line":1534},[5287,5291,5295],{"type":162,"tag":209,"props":5288,"children":5289},{"style":318},[5290],{"type":168,"value":5055},{"type":162,"tag":209,"props":5292,"children":5293},{"style":228},[5294],{"type":168,"value":1044},{"type":162,"tag":209,"props":5296,"children":5297},{"style":318},[5298],{"type":168,"value":1026},{"type":162,"tag":209,"props":5300,"children":5301},{"class":211,"line":1562},[5302],{"type":162,"tag":209,"props":5303,"children":5304},{"style":318},[5305],{"type":168,"value":5306},"    \"url\": \"https:\u002F\u002Fnew-endpoint.example.com\u002Flogs\",\n",{"type":162,"tag":209,"props":5308,"children":5309},{"class":211,"line":1591},[5310],{"type":162,"tag":209,"props":5311,"children":5312},{"style":318},[5313],{"type":168,"value":5314},"    \"environments\": [\"production\", \"preview\"]\n",{"type":162,"tag":209,"props":5316,"children":5317},{"class":211,"line":1661},[5318,5322],{"type":162,"tag":209,"props":5319,"children":5320},{"style":318},[5321],{"type":168,"value":1206},{"type":162,"tag":209,"props":5323,"children":5324},{"style":228},[5325],{"type":168,"value":3252},{"type":162,"tag":209,"props":5327,"children":5328},{"class":211,"line":1701},[5329],{"type":162,"tag":209,"props":5330,"children":5331},{"emptyLinePlaceholder":972},[5332],{"type":168,"value":975},{"type":162,"tag":209,"props":5334,"children":5335},{"class":211,"line":1713},[5336],{"type":162,"tag":209,"props":5337,"children":5338},{"style":458},[5339],{"type":168,"value":5340},"# Delete a drain\n",{"type":162,"tag":209,"props":5342,"children":5343},{"class":211,"line":1796},[5344,5348,5352,5357,5361,5365,5369,5373,5377],{"type":162,"tag":209,"props":5345,"children":5346},{"style":880},[5347],{"type":168,"value":2053},{"type":162,"tag":209,"props":5349,"children":5350},{"style":318},[5351],{"type":168,"value":4971},{"type":162,"tag":209,"props":5353,"children":5354},{"style":318},[5355],{"type":168,"value":5356}," DELETE",{"type":162,"tag":209,"props":5358,"children":5359},{"style":318},[5360],{"type":168,"value":2063},{"type":162,"tag":209,"props":5362,"children":5363},{"style":228},[5364],{"type":168,"value":315},{"type":162,"tag":209,"props":5366,"children":5367},{"style":318},[5368],{"type":168,"value":2072},{"type":162,"tag":209,"props":5370,"children":5371},{"style":222},[5372],{"type":168,"value":2077},{"type":162,"tag":209,"props":5374,"children":5375},{"style":228},[5376],{"type":168,"value":326},{"type":162,"tag":209,"props":5378,"children":5379},{"style":222},[5380],{"type":168,"value":2086},{"type":162,"tag":209,"props":5382,"children":5383},{"class":211,"line":1805},[5384,5388,5392,5396],{"type":162,"tag":209,"props":5385,"children":5386},{"style":228},[5387],{"type":168,"value":2094},{"type":162,"tag":209,"props":5389,"children":5390},{"style":318},[5391],{"type":168,"value":5271},{"type":162,"tag":209,"props":5393,"children":5394},{"style":222},[5395],{"type":168,"value":4930},{"type":162,"tag":209,"props":5397,"children":5398},{"style":228},[5399],{"type":168,"value":5181},{"type":162,"tag":819,"props":5401,"children":5403},{"id":5402},"web-analytics-drains-reference",[5404],{"type":168,"value":5405},"Web Analytics Drains Reference",{"type":162,"tag":171,"props":5407,"children":5408},{},[5409],{"type":168,"value":5410},"When a drain is configured to receive Web Analytics data, payloads arrive as batched events. The format depends on your drain type.",{"type":162,"tag":4788,"props":5412,"children":5414},{"id":5413},"json-payload-schema",[5415],{"type":168,"value":5416},"JSON Payload Schema",{"type":162,"tag":197,"props":5418,"children":5421},{"className":5419,"code":5420,"language":962,"meta":202,"style":202},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[\n  {\n    \"type\": \"pageview\",\n    \"url\": \"https:\u002F\u002Fexample.com\u002Fblog\u002Fpost-1\",\n    \"referrer\": \"https:\u002F\u002Fgoogle.com\",\n    \"timestamp\": 1709568000000,\n    \"geo\": { \"country\": \"US\", \"region\": \"CA\", \"city\": \"San Francisco\" },\n    \"device\": { \"os\": \"macOS\", \"browser\": \"Chrome\", \"isBot\": false },\n    \"projectId\": \"prj_xxxxx\",\n    \"environment\": \"production\"\n  },\n  {\n    \"type\": \"custom_event\",\n    \"name\": \"purchase\",\n    \"url\": \"https:\u002F\u002Fexample.com\u002Fcheckout\",\n    \"properties\": { \"product\": \"pro-plan\", \"value\": 20 },\n    \"timestamp\": 1709568100000,\n    \"geo\": { \"country\": \"US\" },\n    \"device\": { \"os\": \"macOS\", \"browser\": \"Chrome\", \"isBot\": false },\n    \"projectId\": \"prj_xxxxx\",\n    \"environment\": \"production\"\n  }\n]\n",[5422],{"type":162,"tag":205,"props":5423,"children":5424},{"__ignoreMap":202},[5425,5433,5440,5478,5515,5552,5581,5707,5825,5862,5895,5903,5910,5946,5982,6018,6099,6127,6182,6293,6328,6359,6366],{"type":162,"tag":209,"props":5426,"children":5427},{"class":211,"line":212},[5428],{"type":162,"tag":209,"props":5429,"children":5430},{"style":228},[5431],{"type":168,"value":5432},"[\n",{"type":162,"tag":209,"props":5434,"children":5435},{"class":211,"line":260},[5436],{"type":162,"tag":209,"props":5437,"children":5438},{"style":228},[5439],{"type":168,"value":2366},{"type":162,"tag":209,"props":5441,"children":5442},{"class":211,"line":454},[5443,5448,5453,5457,5461,5465,5470,5474],{"type":162,"tag":209,"props":5444,"children":5445},{"style":228},[5446],{"type":168,"value":5447},"    \"",{"type":162,"tag":209,"props":5449,"children":5450},{"style":216},[5451],{"type":168,"value":5452},"type",{"type":162,"tag":209,"props":5454,"children":5455},{"style":228},[5456],{"type":168,"value":326},{"type":162,"tag":209,"props":5458,"children":5459},{"style":228},[5460],{"type":168,"value":310},{"type":162,"tag":209,"props":5462,"children":5463},{"style":228},[5464],{"type":168,"value":315},{"type":162,"tag":209,"props":5466,"children":5467},{"style":318},[5468],{"type":168,"value":5469},"pageview",{"type":162,"tag":209,"props":5471,"children":5472},{"style":228},[5473],{"type":168,"value":326},{"type":162,"tag":209,"props":5475,"children":5476},{"style":228},[5477],{"type":168,"value":1058},{"type":162,"tag":209,"props":5479,"children":5480},{"class":211,"line":464},[5481,5485,5490,5494,5498,5502,5507,5511],{"type":162,"tag":209,"props":5482,"children":5483},{"style":228},[5484],{"type":168,"value":5447},{"type":162,"tag":209,"props":5486,"children":5487},{"style":216},[5488],{"type":168,"value":5489},"url",{"type":162,"tag":209,"props":5491,"children":5492},{"style":228},[5493],{"type":168,"value":326},{"type":162,"tag":209,"props":5495,"children":5496},{"style":228},[5497],{"type":168,"value":310},{"type":162,"tag":209,"props":5499,"children":5500},{"style":228},[5501],{"type":168,"value":315},{"type":162,"tag":209,"props":5503,"children":5504},{"style":318},[5505],{"type":168,"value":5506},"https:\u002F\u002Fexample.com\u002Fblog\u002Fpost-1",{"type":162,"tag":209,"props":5508,"children":5509},{"style":228},[5510],{"type":168,"value":326},{"type":162,"tag":209,"props":5512,"children":5513},{"style":228},[5514],{"type":168,"value":1058},{"type":162,"tag":209,"props":5516,"children":5517},{"class":211,"line":620},[5518,5522,5527,5531,5535,5539,5544,5548],{"type":162,"tag":209,"props":5519,"children":5520},{"style":228},[5521],{"type":168,"value":5447},{"type":162,"tag":209,"props":5523,"children":5524},{"style":216},[5525],{"type":168,"value":5526},"referrer",{"type":162,"tag":209,"props":5528,"children":5529},{"style":228},[5530],{"type":168,"value":326},{"type":162,"tag":209,"props":5532,"children":5533},{"style":228},[5534],{"type":168,"value":310},{"type":162,"tag":209,"props":5536,"children":5537},{"style":228},[5538],{"type":168,"value":315},{"type":162,"tag":209,"props":5540,"children":5541},{"style":318},[5542],{"type":168,"value":5543},"https:\u002F\u002Fgoogle.com",{"type":162,"tag":209,"props":5545,"children":5546},{"style":228},[5547],{"type":168,"value":326},{"type":162,"tag":209,"props":5549,"children":5550},{"style":228},[5551],{"type":168,"value":1058},{"type":162,"tag":209,"props":5553,"children":5554},{"class":211,"line":38},[5555,5559,5564,5568,5572,5577],{"type":162,"tag":209,"props":5556,"children":5557},{"style":228},[5558],{"type":168,"value":5447},{"type":162,"tag":209,"props":5560,"children":5561},{"style":216},[5562],{"type":168,"value":5563},"timestamp",{"type":162,"tag":209,"props":5565,"children":5566},{"style":228},[5567],{"type":168,"value":326},{"type":162,"tag":209,"props":5569,"children":5570},{"style":228},[5571],{"type":168,"value":310},{"type":162,"tag":209,"props":5573,"children":5574},{"style":1781},[5575],{"type":168,"value":5576}," 1709568000000",{"type":162,"tag":209,"props":5578,"children":5579},{"style":228},[5580],{"type":168,"value":1058},{"type":162,"tag":209,"props":5582,"children":5583},{"class":211,"line":986},[5584,5588,5593,5597,5601,5605,5609,5614,5618,5622,5626,5631,5635,5639,5643,5648,5652,5656,5660,5665,5669,5673,5677,5682,5686,5690,5694,5699,5703],{"type":162,"tag":209,"props":5585,"children":5586},{"style":228},[5587],{"type":168,"value":5447},{"type":162,"tag":209,"props":5589,"children":5590},{"style":216},[5591],{"type":168,"value":5592},"geo",{"type":162,"tag":209,"props":5594,"children":5595},{"style":228},[5596],{"type":168,"value":326},{"type":162,"tag":209,"props":5598,"children":5599},{"style":228},[5600],{"type":168,"value":310},{"type":162,"tag":209,"props":5602,"children":5603},{"style":228},[5604],{"type":168,"value":1769},{"type":162,"tag":209,"props":5606,"children":5607},{"style":228},[5608],{"type":168,"value":315},{"type":162,"tag":209,"props":5610,"children":5611},{"style":880},[5612],{"type":168,"value":5613},"country",{"type":162,"tag":209,"props":5615,"children":5616},{"style":228},[5617],{"type":168,"value":326},{"type":162,"tag":209,"props":5619,"children":5620},{"style":228},[5621],{"type":168,"value":310},{"type":162,"tag":209,"props":5623,"children":5624},{"style":228},[5625],{"type":168,"value":315},{"type":162,"tag":209,"props":5627,"children":5628},{"style":318},[5629],{"type":168,"value":5630},"US",{"type":162,"tag":209,"props":5632,"children":5633},{"style":228},[5634],{"type":168,"value":326},{"type":162,"tag":209,"props":5636,"children":5637},{"style":228},[5638],{"type":168,"value":331},{"type":162,"tag":209,"props":5640,"children":5641},{"style":228},[5642],{"type":168,"value":315},{"type":162,"tag":209,"props":5644,"children":5645},{"style":880},[5646],{"type":168,"value":5647},"region",{"type":162,"tag":209,"props":5649,"children":5650},{"style":228},[5651],{"type":168,"value":326},{"type":162,"tag":209,"props":5653,"children":5654},{"style":228},[5655],{"type":168,"value":310},{"type":162,"tag":209,"props":5657,"children":5658},{"style":228},[5659],{"type":168,"value":315},{"type":162,"tag":209,"props":5661,"children":5662},{"style":318},[5663],{"type":168,"value":5664},"CA",{"type":162,"tag":209,"props":5666,"children":5667},{"style":228},[5668],{"type":168,"value":326},{"type":162,"tag":209,"props":5670,"children":5671},{"style":228},[5672],{"type":168,"value":331},{"type":162,"tag":209,"props":5674,"children":5675},{"style":228},[5676],{"type":168,"value":315},{"type":162,"tag":209,"props":5678,"children":5679},{"style":880},[5680],{"type":168,"value":5681},"city",{"type":162,"tag":209,"props":5683,"children":5684},{"style":228},[5685],{"type":168,"value":326},{"type":162,"tag":209,"props":5687,"children":5688},{"style":228},[5689],{"type":168,"value":310},{"type":162,"tag":209,"props":5691,"children":5692},{"style":228},[5693],{"type":168,"value":315},{"type":162,"tag":209,"props":5695,"children":5696},{"style":318},[5697],{"type":168,"value":5698},"San Francisco",{"type":162,"tag":209,"props":5700,"children":5701},{"style":228},[5702],{"type":168,"value":326},{"type":162,"tag":209,"props":5704,"children":5705},{"style":228},[5706],{"type":168,"value":2436},{"type":162,"tag":209,"props":5708,"children":5709},{"class":211,"line":1029},[5710,5714,5719,5723,5727,5731,5735,5740,5744,5748,5752,5757,5761,5765,5769,5774,5778,5782,5786,5791,5795,5799,5803,5808,5812,5816,5821],{"type":162,"tag":209,"props":5711,"children":5712},{"style":228},[5713],{"type":168,"value":5447},{"type":162,"tag":209,"props":5715,"children":5716},{"style":216},[5717],{"type":168,"value":5718},"device",{"type":162,"tag":209,"props":5720,"children":5721},{"style":228},[5722],{"type":168,"value":326},{"type":162,"tag":209,"props":5724,"children":5725},{"style":228},[5726],{"type":168,"value":310},{"type":162,"tag":209,"props":5728,"children":5729},{"style":228},[5730],{"type":168,"value":1769},{"type":162,"tag":209,"props":5732,"children":5733},{"style":228},[5734],{"type":168,"value":315},{"type":162,"tag":209,"props":5736,"children":5737},{"style":880},[5738],{"type":168,"value":5739},"os",{"type":162,"tag":209,"props":5741,"children":5742},{"style":228},[5743],{"type":168,"value":326},{"type":162,"tag":209,"props":5745,"children":5746},{"style":228},[5747],{"type":168,"value":310},{"type":162,"tag":209,"props":5749,"children":5750},{"style":228},[5751],{"type":168,"value":315},{"type":162,"tag":209,"props":5753,"children":5754},{"style":318},[5755],{"type":168,"value":5756},"macOS",{"type":162,"tag":209,"props":5758,"children":5759},{"style":228},[5760],{"type":168,"value":326},{"type":162,"tag":209,"props":5762,"children":5763},{"style":228},[5764],{"type":168,"value":331},{"type":162,"tag":209,"props":5766,"children":5767},{"style":228},[5768],{"type":168,"value":315},{"type":162,"tag":209,"props":5770,"children":5771},{"style":880},[5772],{"type":168,"value":5773},"browser",{"type":162,"tag":209,"props":5775,"children":5776},{"style":228},[5777],{"type":168,"value":326},{"type":162,"tag":209,"props":5779,"children":5780},{"style":228},[5781],{"type":168,"value":310},{"type":162,"tag":209,"props":5783,"children":5784},{"style":228},[5785],{"type":168,"value":315},{"type":162,"tag":209,"props":5787,"children":5788},{"style":318},[5789],{"type":168,"value":5790},"Chrome",{"type":162,"tag":209,"props":5792,"children":5793},{"style":228},[5794],{"type":168,"value":326},{"type":162,"tag":209,"props":5796,"children":5797},{"style":228},[5798],{"type":168,"value":331},{"type":162,"tag":209,"props":5800,"children":5801},{"style":228},[5802],{"type":168,"value":315},{"type":162,"tag":209,"props":5804,"children":5805},{"style":880},[5806],{"type":168,"value":5807},"isBot",{"type":162,"tag":209,"props":5809,"children":5810},{"style":228},[5811],{"type":168,"value":326},{"type":162,"tag":209,"props":5813,"children":5814},{"style":228},[5815],{"type":168,"value":310},{"type":162,"tag":209,"props":5817,"children":5818},{"style":228},[5819],{"type":168,"value":5820}," false",{"type":162,"tag":209,"props":5822,"children":5823},{"style":228},[5824],{"type":168,"value":2436},{"type":162,"tag":209,"props":5826,"children":5827},{"class":211,"line":1061},[5828,5832,5837,5841,5845,5849,5854,5858],{"type":162,"tag":209,"props":5829,"children":5830},{"style":228},[5831],{"type":168,"value":5447},{"type":162,"tag":209,"props":5833,"children":5834},{"style":216},[5835],{"type":168,"value":5836},"projectId",{"type":162,"tag":209,"props":5838,"children":5839},{"style":228},[5840],{"type":168,"value":326},{"type":162,"tag":209,"props":5842,"children":5843},{"style":228},[5844],{"type":168,"value":310},{"type":162,"tag":209,"props":5846,"children":5847},{"style":228},[5848],{"type":168,"value":315},{"type":162,"tag":209,"props":5850,"children":5851},{"style":318},[5852],{"type":168,"value":5853},"prj_xxxxx",{"type":162,"tag":209,"props":5855,"children":5856},{"style":228},[5857],{"type":168,"value":326},{"type":162,"tag":209,"props":5859,"children":5860},{"style":228},[5861],{"type":168,"value":1058},{"type":162,"tag":209,"props":5863,"children":5864},{"class":211,"line":1091},[5865,5869,5874,5878,5882,5886,5891],{"type":162,"tag":209,"props":5866,"children":5867},{"style":228},[5868],{"type":168,"value":5447},{"type":162,"tag":209,"props":5870,"children":5871},{"style":216},[5872],{"type":168,"value":5873},"environment",{"type":162,"tag":209,"props":5875,"children":5876},{"style":228},[5877],{"type":168,"value":326},{"type":162,"tag":209,"props":5879,"children":5880},{"style":228},[5881],{"type":168,"value":310},{"type":162,"tag":209,"props":5883,"children":5884},{"style":228},[5885],{"type":168,"value":315},{"type":162,"tag":209,"props":5887,"children":5888},{"style":318},[5889],{"type":168,"value":5890},"production",{"type":162,"tag":209,"props":5892,"children":5893},{"style":228},[5894],{"type":168,"value":5181},{"type":162,"tag":209,"props":5896,"children":5897},{"class":211,"line":1148},[5898],{"type":162,"tag":209,"props":5899,"children":5900},{"style":228},[5901],{"type":168,"value":5902},"  },\n",{"type":162,"tag":209,"props":5904,"children":5905},{"class":211,"line":1200},[5906],{"type":162,"tag":209,"props":5907,"children":5908},{"style":228},[5909],{"type":168,"value":2366},{"type":162,"tag":209,"props":5911,"children":5912},{"class":211,"line":1214},[5913,5917,5921,5925,5929,5933,5938,5942],{"type":162,"tag":209,"props":5914,"children":5915},{"style":228},[5916],{"type":168,"value":5447},{"type":162,"tag":209,"props":5918,"children":5919},{"style":216},[5920],{"type":168,"value":5452},{"type":162,"tag":209,"props":5922,"children":5923},{"style":228},[5924],{"type":168,"value":326},{"type":162,"tag":209,"props":5926,"children":5927},{"style":228},[5928],{"type":168,"value":310},{"type":162,"tag":209,"props":5930,"children":5931},{"style":228},[5932],{"type":168,"value":315},{"type":162,"tag":209,"props":5934,"children":5935},{"style":318},[5936],{"type":168,"value":5937},"custom_event",{"type":162,"tag":209,"props":5939,"children":5940},{"style":228},[5941],{"type":168,"value":326},{"type":162,"tag":209,"props":5943,"children":5944},{"style":228},[5945],{"type":168,"value":1058},{"type":162,"tag":209,"props":5947,"children":5948},{"class":211,"line":1222},[5949,5953,5958,5962,5966,5970,5974,5978],{"type":162,"tag":209,"props":5950,"children":5951},{"style":228},[5952],{"type":168,"value":5447},{"type":162,"tag":209,"props":5954,"children":5955},{"style":216},[5956],{"type":168,"value":5957},"name",{"type":162,"tag":209,"props":5959,"children":5960},{"style":228},[5961],{"type":168,"value":326},{"type":162,"tag":209,"props":5963,"children":5964},{"style":228},[5965],{"type":168,"value":310},{"type":162,"tag":209,"props":5967,"children":5968},{"style":228},[5969],{"type":168,"value":315},{"type":162,"tag":209,"props":5971,"children":5972},{"style":318},[5973],{"type":168,"value":3548},{"type":162,"tag":209,"props":5975,"children":5976},{"style":228},[5977],{"type":168,"value":326},{"type":162,"tag":209,"props":5979,"children":5980},{"style":228},[5981],{"type":168,"value":1058},{"type":162,"tag":209,"props":5983,"children":5984},{"class":211,"line":1235},[5985,5989,5993,5997,6001,6005,6010,6014],{"type":162,"tag":209,"props":5986,"children":5987},{"style":228},[5988],{"type":168,"value":5447},{"type":162,"tag":209,"props":5990,"children":5991},{"style":216},[5992],{"type":168,"value":5489},{"type":162,"tag":209,"props":5994,"children":5995},{"style":228},[5996],{"type":168,"value":326},{"type":162,"tag":209,"props":5998,"children":5999},{"style":228},[6000],{"type":168,"value":310},{"type":162,"tag":209,"props":6002,"children":6003},{"style":228},[6004],{"type":168,"value":315},{"type":162,"tag":209,"props":6006,"children":6007},{"style":318},[6008],{"type":168,"value":6009},"https:\u002F\u002Fexample.com\u002Fcheckout",{"type":162,"tag":209,"props":6011,"children":6012},{"style":228},[6013],{"type":168,"value":326},{"type":162,"tag":209,"props":6015,"children":6016},{"style":228},[6017],{"type":168,"value":1058},{"type":162,"tag":209,"props":6019,"children":6020},{"class":211,"line":1275},[6021,6025,6030,6034,6038,6042,6046,6051,6055,6059,6063,6067,6071,6075,6079,6083,6087,6091,6095],{"type":162,"tag":209,"props":6022,"children":6023},{"style":228},[6024],{"type":168,"value":5447},{"type":162,"tag":209,"props":6026,"children":6027},{"style":216},[6028],{"type":168,"value":6029},"properties",{"type":162,"tag":209,"props":6031,"children":6032},{"style":228},[6033],{"type":168,"value":326},{"type":162,"tag":209,"props":6035,"children":6036},{"style":228},[6037],{"type":168,"value":310},{"type":162,"tag":209,"props":6039,"children":6040},{"style":228},[6041],{"type":168,"value":1769},{"type":162,"tag":209,"props":6043,"children":6044},{"style":228},[6045],{"type":168,"value":315},{"type":162,"tag":209,"props":6047,"children":6048},{"style":880},[6049],{"type":168,"value":6050},"product",{"type":162,"tag":209,"props":6052,"children":6053},{"style":228},[6054],{"type":168,"value":326},{"type":162,"tag":209,"props":6056,"children":6057},{"style":228},[6058],{"type":168,"value":310},{"type":162,"tag":209,"props":6060,"children":6061},{"style":228},[6062],{"type":168,"value":315},{"type":162,"tag":209,"props":6064,"children":6065},{"style":318},[6066],{"type":168,"value":3581},{"type":162,"tag":209,"props":6068,"children":6069},{"style":228},[6070],{"type":168,"value":326},{"type":162,"tag":209,"props":6072,"children":6073},{"style":228},[6074],{"type":168,"value":331},{"type":162,"tag":209,"props":6076,"children":6077},{"style":228},[6078],{"type":168,"value":315},{"type":162,"tag":209,"props":6080,"children":6081},{"style":880},[6082],{"type":168,"value":2742},{"type":162,"tag":209,"props":6084,"children":6085},{"style":228},[6086],{"type":168,"value":326},{"type":162,"tag":209,"props":6088,"children":6089},{"style":228},[6090],{"type":168,"value":310},{"type":162,"tag":209,"props":6092,"children":6093},{"style":1781},[6094],{"type":168,"value":3606},{"type":162,"tag":209,"props":6096,"children":6097},{"style":228},[6098],{"type":168,"value":2436},{"type":162,"tag":209,"props":6100,"children":6101},{"class":211,"line":1316},[6102,6106,6110,6114,6118,6123],{"type":162,"tag":209,"props":6103,"children":6104},{"style":228},[6105],{"type":168,"value":5447},{"type":162,"tag":209,"props":6107,"children":6108},{"style":216},[6109],{"type":168,"value":5563},{"type":162,"tag":209,"props":6111,"children":6112},{"style":228},[6113],{"type":168,"value":326},{"type":162,"tag":209,"props":6115,"children":6116},{"style":228},[6117],{"type":168,"value":310},{"type":162,"tag":209,"props":6119,"children":6120},{"style":1781},[6121],{"type":168,"value":6122}," 1709568100000",{"type":162,"tag":209,"props":6124,"children":6125},{"style":228},[6126],{"type":168,"value":1058},{"type":162,"tag":209,"props":6128,"children":6129},{"class":211,"line":1345},[6130,6134,6138,6142,6146,6150,6154,6158,6162,6166,6170,6174,6178],{"type":162,"tag":209,"props":6131,"children":6132},{"style":228},[6133],{"type":168,"value":5447},{"type":162,"tag":209,"props":6135,"children":6136},{"style":216},[6137],{"type":168,"value":5592},{"type":162,"tag":209,"props":6139,"children":6140},{"style":228},[6141],{"type":168,"value":326},{"type":162,"tag":209,"props":6143,"children":6144},{"style":228},[6145],{"type":168,"value":310},{"type":162,"tag":209,"props":6147,"children":6148},{"style":228},[6149],{"type":168,"value":1769},{"type":162,"tag":209,"props":6151,"children":6152},{"style":228},[6153],{"type":168,"value":315},{"type":162,"tag":209,"props":6155,"children":6156},{"style":880},[6157],{"type":168,"value":5613},{"type":162,"tag":209,"props":6159,"children":6160},{"style":228},[6161],{"type":168,"value":326},{"type":162,"tag":209,"props":6163,"children":6164},{"style":228},[6165],{"type":168,"value":310},{"type":162,"tag":209,"props":6167,"children":6168},{"style":228},[6169],{"type":168,"value":315},{"type":162,"tag":209,"props":6171,"children":6172},{"style":318},[6173],{"type":168,"value":5630},{"type":162,"tag":209,"props":6175,"children":6176},{"style":228},[6177],{"type":168,"value":326},{"type":162,"tag":209,"props":6179,"children":6180},{"style":228},[6181],{"type":168,"value":2436},{"type":162,"tag":209,"props":6183,"children":6184},{"class":211,"line":1375},[6185,6189,6193,6197,6201,6205,6209,6213,6217,6221,6225,6229,6233,6237,6241,6245,6249,6253,6257,6261,6265,6269,6273,6277,6281,6285,6289],{"type":162,"tag":209,"props":6186,"children":6187},{"style":228},[6188],{"type":168,"value":5447},{"type":162,"tag":209,"props":6190,"children":6191},{"style":216},[6192],{"type":168,"value":5718},{"type":162,"tag":209,"props":6194,"children":6195},{"style":228},[6196],{"type":168,"value":326},{"type":162,"tag":209,"props":6198,"children":6199},{"style":228},[6200],{"type":168,"value":310},{"type":162,"tag":209,"props":6202,"children":6203},{"style":228},[6204],{"type":168,"value":1769},{"type":162,"tag":209,"props":6206,"children":6207},{"style":228},[6208],{"type":168,"value":315},{"type":162,"tag":209,"props":6210,"children":6211},{"style":880},[6212],{"type":168,"value":5739},{"type":162,"tag":209,"props":6214,"children":6215},{"style":228},[6216],{"type":168,"value":326},{"type":162,"tag":209,"props":6218,"children":6219},{"style":228},[6220],{"type":168,"value":310},{"type":162,"tag":209,"props":6222,"children":6223},{"style":228},[6224],{"type":168,"value":315},{"type":162,"tag":209,"props":6226,"children":6227},{"style":318},[6228],{"type":168,"value":5756},{"type":162,"tag":209,"props":6230,"children":6231},{"style":228},[6232],{"type":168,"value":326},{"type":162,"tag":209,"props":6234,"children":6235},{"style":228},[6236],{"type":168,"value":331},{"type":162,"tag":209,"props":6238,"children":6239},{"style":228},[6240],{"type":168,"value":315},{"type":162,"tag":209,"props":6242,"children":6243},{"style":880},[6244],{"type":168,"value":5773},{"type":162,"tag":209,"props":6246,"children":6247},{"style":228},[6248],{"type":168,"value":326},{"type":162,"tag":209,"props":6250,"children":6251},{"style":228},[6252],{"type":168,"value":310},{"type":162,"tag":209,"props":6254,"children":6255},{"style":228},[6256],{"type":168,"value":315},{"type":162,"tag":209,"props":6258,"children":6259},{"style":318},[6260],{"type":168,"value":5790},{"type":162,"tag":209,"props":6262,"children":6263},{"style":228},[6264],{"type":168,"value":326},{"type":162,"tag":209,"props":6266,"children":6267},{"style":228},[6268],{"type":168,"value":331},{"type":162,"tag":209,"props":6270,"children":6271},{"style":228},[6272],{"type":168,"value":315},{"type":162,"tag":209,"props":6274,"children":6275},{"style":880},[6276],{"type":168,"value":5807},{"type":162,"tag":209,"props":6278,"children":6279},{"style":228},[6280],{"type":168,"value":326},{"type":162,"tag":209,"props":6282,"children":6283},{"style":228},[6284],{"type":168,"value":310},{"type":162,"tag":209,"props":6286,"children":6287},{"style":228},[6288],{"type":168,"value":5820},{"type":162,"tag":209,"props":6290,"children":6291},{"style":228},[6292],{"type":168,"value":2436},{"type":162,"tag":209,"props":6294,"children":6295},{"class":211,"line":1416},[6296,6300,6304,6308,6312,6316,6320,6324],{"type":162,"tag":209,"props":6297,"children":6298},{"style":228},[6299],{"type":168,"value":5447},{"type":162,"tag":209,"props":6301,"children":6302},{"style":216},[6303],{"type":168,"value":5836},{"type":162,"tag":209,"props":6305,"children":6306},{"style":228},[6307],{"type":168,"value":326},{"type":162,"tag":209,"props":6309,"children":6310},{"style":228},[6311],{"type":168,"value":310},{"type":162,"tag":209,"props":6313,"children":6314},{"style":228},[6315],{"type":168,"value":315},{"type":162,"tag":209,"props":6317,"children":6318},{"style":318},[6319],{"type":168,"value":5853},{"type":162,"tag":209,"props":6321,"children":6322},{"style":228},[6323],{"type":168,"value":326},{"type":162,"tag":209,"props":6325,"children":6326},{"style":228},[6327],{"type":168,"value":1058},{"type":162,"tag":209,"props":6329,"children":6330},{"class":211,"line":1429},[6331,6335,6339,6343,6347,6351,6355],{"type":162,"tag":209,"props":6332,"children":6333},{"style":228},[6334],{"type":168,"value":5447},{"type":162,"tag":209,"props":6336,"children":6337},{"style":216},[6338],{"type":168,"value":5873},{"type":162,"tag":209,"props":6340,"children":6341},{"style":228},[6342],{"type":168,"value":326},{"type":162,"tag":209,"props":6344,"children":6345},{"style":228},[6346],{"type":168,"value":310},{"type":162,"tag":209,"props":6348,"children":6349},{"style":228},[6350],{"type":168,"value":315},{"type":162,"tag":209,"props":6352,"children":6353},{"style":318},[6354],{"type":168,"value":5890},{"type":162,"tag":209,"props":6356,"children":6357},{"style":228},[6358],{"type":168,"value":5181},{"type":162,"tag":209,"props":6360,"children":6361},{"class":211,"line":1464},[6362],{"type":162,"tag":209,"props":6363,"children":6364},{"style":228},[6365],{"type":168,"value":1802},{"type":162,"tag":209,"props":6367,"children":6368},{"class":211,"line":1494},[6369],{"type":162,"tag":209,"props":6370,"children":6371},{"style":228},[6372],{"type":168,"value":6373},"]\n",{"type":162,"tag":4788,"props":6375,"children":6377},{"id":6376},"ndjson-payload-format",[6378],{"type":168,"value":6379},"NDJSON Payload Format",{"type":162,"tag":171,"props":6381,"children":6382},{},[6383],{"type":168,"value":6384},"Each line is a separate JSON object (one event per line):",{"type":162,"tag":197,"props":6386,"children":6390},{"className":6387,"code":6389,"language":168},[6388],"language-text","{\"type\":\"pageview\",\"url\":\"https:\u002F\u002Fexample.com\u002F\",\"timestamp\":1709568000000,\"geo\":{\"country\":\"US\"},\"device\":{\"browser\":\"Chrome\"},...}\n{\"type\":\"pageview\",\"url\":\"https:\u002F\u002Fexample.com\u002Fabout\",\"timestamp\":1709568001000,\"geo\":{\"country\":\"DE\"},\"device\":{\"browser\":\"Firefox\"},...}\n{\"type\":\"custom_event\",\"name\":\"signup\",\"url\":\"https:\u002F\u002Fexample.com\u002Fregister\",\"timestamp\":1709568002000,...}\n",[6391],{"type":162,"tag":205,"props":6392,"children":6393},{"__ignoreMap":202},[6394],{"type":168,"value":6389},{"type":162,"tag":2122,"props":6396,"children":6397},{},[6398],{"type":162,"tag":171,"props":6399,"children":6400},{},[6401,6406],{"type":162,"tag":177,"props":6402,"children":6403},{},[6404],{"type":168,"value":6405},"Ingestion tip:",{"type":168,"value":6407}," For NDJSON, process line-by-line as events arrive. This format is preferred for high-volume pipelines where batch parsing overhead matters.",{"type":162,"tag":819,"props":6409,"children":6411},{"id":6410},"security-signature-verification",[6412],{"type":168,"value":6413},"Security: Signature Verification",{"type":162,"tag":171,"props":6415,"children":6416},{},[6417,6419,6425,6427,6432],{"type":168,"value":6418},"Vercel signs every drain payload with an HMAC-SHA1 signature in the ",{"type":162,"tag":205,"props":6420,"children":6422},{"className":6421},[],[6423],{"type":168,"value":6424},"x-vercel-signature",{"type":168,"value":6426}," header. ",{"type":162,"tag":177,"props":6428,"children":6429},{},[6430],{"type":168,"value":6431},"Always verify signatures in production",{"type":168,"value":6433}," to prevent spoofed data.",{"type":162,"tag":2122,"props":6435,"children":6436},{},[6437],{"type":162,"tag":171,"props":6438,"children":6439},{},[6440,6445,6447,6452],{"type":162,"tag":177,"props":6441,"children":6442},{},[6443],{"type":168,"value":6444},"Critical:",{"type":168,"value":6446}," You must verify against the ",{"type":162,"tag":177,"props":6448,"children":6449},{},[6450],{"type":168,"value":6451},"raw request body",{"type":168,"value":6453}," (not a parsed\u002Fre-serialized version). JSON parsing and re-stringifying can change key order or whitespace, breaking the signature match.",{"type":162,"tag":197,"props":6455,"children":6457},{"className":199,"code":6456,"language":201,"meta":202,"style":202},"import { createHmac, timingSafeEqual } from 'crypto'\n\nfunction verifyDrainSignature(rawBody: string, signature: string, secret: string): boolean {\n  const expected = createHmac('sha1', secret).update(rawBody).digest('hex')\n  \u002F\u002F Use timing-safe comparison to prevent timing attacks\n  if (expected.length !== signature.length) return false\n  return timingSafeEqual(Buffer.from(expected), Buffer.from(signature))\n}\n",[6458],{"type":162,"tag":205,"props":6459,"children":6460},{"__ignoreMap":202},[6461,6507,6514,6593,6693,6701,6756,6827],{"type":162,"tag":209,"props":6462,"children":6463},{"class":211,"line":212},[6464,6468,6472,6477,6481,6486,6490,6494,6498,6503],{"type":162,"tag":209,"props":6465,"children":6466},{"style":845},[6467],{"type":168,"value":3220},{"type":162,"tag":209,"props":6469,"children":6470},{"style":228},[6471],{"type":168,"value":1769},{"type":162,"tag":209,"props":6473,"children":6474},{"style":222},[6475],{"type":168,"value":6476}," createHmac",{"type":162,"tag":209,"props":6478,"children":6479},{"style":228},[6480],{"type":168,"value":331},{"type":162,"tag":209,"props":6482,"children":6483},{"style":222},[6484],{"type":168,"value":6485}," timingSafeEqual",{"type":162,"tag":209,"props":6487,"children":6488},{"style":228},[6489],{"type":168,"value":1789},{"type":162,"tag":209,"props":6491,"children":6492},{"style":845},[6493],{"type":168,"value":3238},{"type":162,"tag":209,"props":6495,"children":6496},{"style":228},[6497],{"type":168,"value":1044},{"type":162,"tag":209,"props":6499,"children":6500},{"style":318},[6501],{"type":168,"value":6502},"crypto",{"type":162,"tag":209,"props":6504,"children":6505},{"style":228},[6506],{"type":168,"value":3252},{"type":162,"tag":209,"props":6508,"children":6509},{"class":211,"line":260},[6510],{"type":162,"tag":209,"props":6511,"children":6512},{"emptyLinePlaceholder":972},[6513],{"type":168,"value":975},{"type":162,"tag":209,"props":6515,"children":6516},{"class":211,"line":454},[6517,6522,6527,6531,6536,6540,6545,6549,6554,6558,6562,6566,6571,6575,6579,6584,6589],{"type":162,"tag":209,"props":6518,"children":6519},{"style":216},[6520],{"type":168,"value":6521},"function",{"type":162,"tag":209,"props":6523,"children":6524},{"style":244},[6525],{"type":168,"value":6526}," verifyDrainSignature",{"type":162,"tag":209,"props":6528,"children":6529},{"style":228},[6530],{"type":168,"value":294},{"type":162,"tag":209,"props":6532,"children":6533},{"style":870},[6534],{"type":168,"value":6535},"rawBody",{"type":162,"tag":209,"props":6537,"children":6538},{"style":228},[6539],{"type":168,"value":310},{"type":162,"tag":209,"props":6541,"children":6542},{"style":880},[6543],{"type":168,"value":6544}," string",{"type":162,"tag":209,"props":6546,"children":6547},{"style":228},[6548],{"type":168,"value":331},{"type":162,"tag":209,"props":6550,"children":6551},{"style":870},[6552],{"type":168,"value":6553}," signature",{"type":162,"tag":209,"props":6555,"children":6556},{"style":228},[6557],{"type":168,"value":310},{"type":162,"tag":209,"props":6559,"children":6560},{"style":880},[6561],{"type":168,"value":6544},{"type":162,"tag":209,"props":6563,"children":6564},{"style":228},[6565],{"type":168,"value":331},{"type":162,"tag":209,"props":6567,"children":6568},{"style":870},[6569],{"type":168,"value":6570}," secret",{"type":162,"tag":209,"props":6572,"children":6573},{"style":228},[6574],{"type":168,"value":310},{"type":162,"tag":209,"props":6576,"children":6577},{"style":880},[6578],{"type":168,"value":6544},{"type":162,"tag":209,"props":6580,"children":6581},{"style":228},[6582],{"type":168,"value":6583},"):",{"type":162,"tag":209,"props":6585,"children":6586},{"style":880},[6587],{"type":168,"value":6588}," boolean",{"type":162,"tag":209,"props":6590,"children":6591},{"style":228},[6592],{"type":168,"value":893},{"type":162,"tag":209,"props":6594,"children":6595},{"class":211,"line":464},[6596,6600,6605,6609,6613,6617,6621,6626,6630,6634,6638,6642,6646,6651,6655,6659,6663,6667,6672,6676,6680,6685,6689],{"type":162,"tag":209,"props":6597,"children":6598},{"style":216},[6599],{"type":168,"value":901},{"type":162,"tag":209,"props":6601,"children":6602},{"style":222},[6603],{"type":168,"value":6604}," expected",{"type":162,"tag":209,"props":6606,"children":6607},{"style":228},[6608],{"type":168,"value":911},{"type":162,"tag":209,"props":6610,"children":6611},{"style":244},[6612],{"type":168,"value":6476},{"type":162,"tag":209,"props":6614,"children":6615},{"style":302},[6616],{"type":168,"value":294},{"type":162,"tag":209,"props":6618,"children":6619},{"style":228},[6620],{"type":168,"value":1053},{"type":162,"tag":209,"props":6622,"children":6623},{"style":318},[6624],{"type":168,"value":6625},"sha1",{"type":162,"tag":209,"props":6627,"children":6628},{"style":228},[6629],{"type":168,"value":1053},{"type":162,"tag":209,"props":6631,"children":6632},{"style":228},[6633],{"type":168,"value":331},{"type":162,"tag":209,"props":6635,"children":6636},{"style":222},[6637],{"type":168,"value":6570},{"type":162,"tag":209,"props":6639,"children":6640},{"style":302},[6641],{"type":168,"value":888},{"type":162,"tag":209,"props":6643,"children":6644},{"style":228},[6645],{"type":168,"value":241},{"type":162,"tag":209,"props":6647,"children":6648},{"style":244},[6649],{"type":168,"value":6650},"update",{"type":162,"tag":209,"props":6652,"children":6653},{"style":302},[6654],{"type":168,"value":294},{"type":162,"tag":209,"props":6656,"children":6657},{"style":222},[6658],{"type":168,"value":6535},{"type":162,"tag":209,"props":6660,"children":6661},{"style":302},[6662],{"type":168,"value":888},{"type":162,"tag":209,"props":6664,"children":6665},{"style":228},[6666],{"type":168,"value":241},{"type":162,"tag":209,"props":6668,"children":6669},{"style":244},[6670],{"type":168,"value":6671},"digest",{"type":162,"tag":209,"props":6673,"children":6674},{"style":302},[6675],{"type":168,"value":294},{"type":162,"tag":209,"props":6677,"children":6678},{"style":228},[6679],{"type":168,"value":1053},{"type":162,"tag":209,"props":6681,"children":6682},{"style":318},[6683],{"type":168,"value":6684},"hex",{"type":162,"tag":209,"props":6686,"children":6687},{"style":228},[6688],{"type":168,"value":1053},{"type":162,"tag":209,"props":6690,"children":6691},{"style":302},[6692],{"type":168,"value":1272},{"type":162,"tag":209,"props":6694,"children":6695},{"class":211,"line":620},[6696],{"type":162,"tag":209,"props":6697,"children":6698},{"style":458},[6699],{"type":168,"value":6700},"  \u002F\u002F Use timing-safe comparison to prevent timing attacks\n",{"type":162,"tag":209,"props":6702,"children":6703},{"class":211,"line":38},[6704,6708,6712,6717,6721,6725,6730,6734,6738,6742,6746,6751],{"type":162,"tag":209,"props":6705,"children":6706},{"style":845},[6707],{"type":168,"value":1868},{"type":162,"tag":209,"props":6709,"children":6710},{"style":302},[6711],{"type":168,"value":1479},{"type":162,"tag":209,"props":6713,"children":6714},{"style":222},[6715],{"type":168,"value":6716},"expected",{"type":162,"tag":209,"props":6718,"children":6719},{"style":228},[6720],{"type":168,"value":241},{"type":162,"tag":209,"props":6722,"children":6723},{"style":222},[6724],{"type":168,"value":1193},{"type":162,"tag":209,"props":6726,"children":6727},{"style":228},[6728],{"type":168,"value":6729}," !==",{"type":162,"tag":209,"props":6731,"children":6732},{"style":222},[6733],{"type":168,"value":6553},{"type":162,"tag":209,"props":6735,"children":6736},{"style":228},[6737],{"type":168,"value":241},{"type":162,"tag":209,"props":6739,"children":6740},{"style":222},[6741],{"type":168,"value":1193},{"type":162,"tag":209,"props":6743,"children":6744},{"style":302},[6745],{"type":168,"value":437},{"type":162,"tag":209,"props":6747,"children":6748},{"style":845},[6749],{"type":168,"value":6750},"return",{"type":162,"tag":209,"props":6752,"children":6753},{"style":2615},[6754],{"type":168,"value":6755}," false\n",{"type":162,"tag":209,"props":6757,"children":6758},{"class":211,"line":986},[6759,6763,6767,6771,6776,6780,6785,6789,6793,6797,6801,6806,6810,6814,6818,6823],{"type":162,"tag":209,"props":6760,"children":6761},{"style":845},[6762],{"type":168,"value":3338},{"type":162,"tag":209,"props":6764,"children":6765},{"style":244},[6766],{"type":168,"value":6485},{"type":162,"tag":209,"props":6768,"children":6769},{"style":302},[6770],{"type":168,"value":294},{"type":162,"tag":209,"props":6772,"children":6773},{"style":222},[6774],{"type":168,"value":6775},"Buffer",{"type":162,"tag":209,"props":6777,"children":6778},{"style":228},[6779],{"type":168,"value":241},{"type":162,"tag":209,"props":6781,"children":6782},{"style":244},[6783],{"type":168,"value":6784},"from",{"type":162,"tag":209,"props":6786,"children":6787},{"style":302},[6788],{"type":168,"value":294},{"type":162,"tag":209,"props":6790,"children":6791},{"style":222},[6792],{"type":168,"value":6716},{"type":162,"tag":209,"props":6794,"children":6795},{"style":302},[6796],{"type":168,"value":888},{"type":162,"tag":209,"props":6798,"children":6799},{"style":228},[6800],{"type":168,"value":331},{"type":162,"tag":209,"props":6802,"children":6803},{"style":222},[6804],{"type":168,"value":6805}," Buffer",{"type":162,"tag":209,"props":6807,"children":6808},{"style":228},[6809],{"type":168,"value":241},{"type":162,"tag":209,"props":6811,"children":6812},{"style":244},[6813],{"type":168,"value":6784},{"type":162,"tag":209,"props":6815,"children":6816},{"style":302},[6817],{"type":168,"value":294},{"type":162,"tag":209,"props":6819,"children":6820},{"style":222},[6821],{"type":168,"value":6822},"signature",{"type":162,"tag":209,"props":6824,"children":6825},{"style":302},[6826],{"type":168,"value":1211},{"type":162,"tag":209,"props":6828,"children":6829},{"class":211,"line":1029},[6830],{"type":162,"tag":209,"props":6831,"children":6832},{"style":228},[6833],{"type":168,"value":1811},{"type":162,"tag":171,"props":6835,"children":6836},{},[6837],{"type":168,"value":6838},"Usage in a drain endpoint:",{"type":162,"tag":197,"props":6840,"children":6842},{"className":199,"code":6841,"language":201,"meta":202,"style":202},"\u002F\u002F app\u002Fapi\u002Fdrain\u002Froute.ts\nexport async function POST(req: Request) {\n  const rawBody = await req.text()\n  const signature = req.headers.get('x-vercel-signature')\n  const secret = process.env.DRAIN_SECRET!\n\n  if (!signature || !verifyDrainSignature(rawBody, signature, secret)) {\n    return new Response('Unauthorized', { status: 401 })\n  }\n\n  const events = JSON.parse(rawBody)\n  \u002F\u002F Process verified events...\n  return new Response('OK', { status: 200 })\n}\n",[6843],{"type":162,"tag":205,"props":6844,"children":6845},{"__ignoreMap":202},[6846,6854,6897,6933,6988,7030,7037,7104,7165,7172,7179,7219,7227,7288],{"type":162,"tag":209,"props":6847,"children":6848},{"class":211,"line":212},[6849],{"type":162,"tag":209,"props":6850,"children":6851},{"style":458},[6852],{"type":168,"value":6853},"\u002F\u002F app\u002Fapi\u002Fdrain\u002Froute.ts\n",{"type":162,"tag":209,"props":6855,"children":6856},{"class":211,"line":260},[6857,6861,6865,6869,6873,6877,6881,6885,6889,6893],{"type":162,"tag":209,"props":6858,"children":6859},{"style":845},[6860],{"type":168,"value":848},{"type":162,"tag":209,"props":6862,"children":6863},{"style":216},[6864],{"type":168,"value":853},{"type":162,"tag":209,"props":6866,"children":6867},{"style":216},[6868],{"type":168,"value":858},{"type":162,"tag":209,"props":6870,"children":6871},{"style":244},[6872],{"type":168,"value":863},{"type":162,"tag":209,"props":6874,"children":6875},{"style":228},[6876],{"type":168,"value":294},{"type":162,"tag":209,"props":6878,"children":6879},{"style":870},[6880],{"type":168,"value":873},{"type":162,"tag":209,"props":6882,"children":6883},{"style":228},[6884],{"type":168,"value":310},{"type":162,"tag":209,"props":6886,"children":6887},{"style":880},[6888],{"type":168,"value":883},{"type":162,"tag":209,"props":6890,"children":6891},{"style":228},[6892],{"type":168,"value":888},{"type":162,"tag":209,"props":6894,"children":6895},{"style":228},[6896],{"type":168,"value":893},{"type":162,"tag":209,"props":6898,"children":6899},{"class":211,"line":454},[6900,6904,6909,6913,6917,6921,6925,6929],{"type":162,"tag":209,"props":6901,"children":6902},{"style":216},[6903],{"type":168,"value":901},{"type":162,"tag":209,"props":6905,"children":6906},{"style":222},[6907],{"type":168,"value":6908}," rawBody",{"type":162,"tag":209,"props":6910,"children":6911},{"style":228},[6912],{"type":168,"value":911},{"type":162,"tag":209,"props":6914,"children":6915},{"style":845},[6916],{"type":168,"value":949},{"type":162,"tag":209,"props":6918,"children":6919},{"style":222},[6920],{"type":168,"value":397},{"type":162,"tag":209,"props":6922,"children":6923},{"style":228},[6924],{"type":168,"value":241},{"type":162,"tag":209,"props":6926,"children":6927},{"style":244},[6928],{"type":168,"value":168},{"type":162,"tag":209,"props":6930,"children":6931},{"style":302},[6932],{"type":168,"value":928},{"type":162,"tag":209,"props":6934,"children":6935},{"class":211,"line":464},[6936,6940,6944,6948,6952,6956,6960,6964,6968,6972,6976,6980,6984],{"type":162,"tag":209,"props":6937,"children":6938},{"style":216},[6939],{"type":168,"value":901},{"type":162,"tag":209,"props":6941,"children":6942},{"style":222},[6943],{"type":168,"value":6553},{"type":162,"tag":209,"props":6945,"children":6946},{"style":228},[6947],{"type":168,"value":911},{"type":162,"tag":209,"props":6949,"children":6950},{"style":222},[6951],{"type":168,"value":397},{"type":162,"tag":209,"props":6953,"children":6954},{"style":228},[6955],{"type":168,"value":241},{"type":162,"tag":209,"props":6957,"children":6958},{"style":222},[6959],{"type":168,"value":406},{"type":162,"tag":209,"props":6961,"children":6962},{"style":228},[6963],{"type":168,"value":241},{"type":162,"tag":209,"props":6965,"children":6966},{"style":244},[6967],{"type":168,"value":415},{"type":162,"tag":209,"props":6969,"children":6970},{"style":302},[6971],{"type":168,"value":294},{"type":162,"tag":209,"props":6973,"children":6974},{"style":228},[6975],{"type":168,"value":1053},{"type":162,"tag":209,"props":6977,"children":6978},{"style":318},[6979],{"type":168,"value":6424},{"type":162,"tag":209,"props":6981,"children":6982},{"style":228},[6983],{"type":168,"value":1053},{"type":162,"tag":209,"props":6985,"children":6986},{"style":302},[6987],{"type":168,"value":1272},{"type":162,"tag":209,"props":6989,"children":6990},{"class":211,"line":620},[6991,6995,6999,7003,7008,7012,7016,7020,7025],{"type":162,"tag":209,"props":6992,"children":6993},{"style":216},[6994],{"type":168,"value":901},{"type":162,"tag":209,"props":6996,"children":6997},{"style":222},[6998],{"type":168,"value":6570},{"type":162,"tag":209,"props":7000,"children":7001},{"style":228},[7002],{"type":168,"value":911},{"type":162,"tag":209,"props":7004,"children":7005},{"style":222},[7006],{"type":168,"value":7007}," process",{"type":162,"tag":209,"props":7009,"children":7010},{"style":228},[7011],{"type":168,"value":241},{"type":162,"tag":209,"props":7013,"children":7014},{"style":222},[7015],{"type":168,"value":1886},{"type":162,"tag":209,"props":7017,"children":7018},{"style":228},[7019],{"type":168,"value":241},{"type":162,"tag":209,"props":7021,"children":7022},{"style":222},[7023],{"type":168,"value":7024},"DRAIN_SECRET",{"type":162,"tag":209,"props":7026,"children":7027},{"style":228},[7028],{"type":168,"value":7029},"!\n",{"type":162,"tag":209,"props":7031,"children":7032},{"class":211,"line":38},[7033],{"type":162,"tag":209,"props":7034,"children":7035},{"emptyLinePlaceholder":972},[7036],{"type":168,"value":975},{"type":162,"tag":209,"props":7038,"children":7039},{"class":211,"line":986},[7040,7044,7048,7052,7056,7061,7066,7071,7075,7079,7083,7087,7091,7095,7100],{"type":162,"tag":209,"props":7041,"children":7042},{"style":845},[7043],{"type":168,"value":1868},{"type":162,"tag":209,"props":7045,"children":7046},{"style":302},[7047],{"type":168,"value":1479},{"type":162,"tag":209,"props":7049,"children":7050},{"style":228},[7051],{"type":168,"value":2856},{"type":162,"tag":209,"props":7053,"children":7054},{"style":222},[7055],{"type":168,"value":6822},{"type":162,"tag":209,"props":7057,"children":7058},{"style":228},[7059],{"type":168,"value":7060}," ||",{"type":162,"tag":209,"props":7062,"children":7063},{"style":228},[7064],{"type":168,"value":7065}," !",{"type":162,"tag":209,"props":7067,"children":7068},{"style":244},[7069],{"type":168,"value":7070},"verifyDrainSignature",{"type":162,"tag":209,"props":7072,"children":7073},{"style":302},[7074],{"type":168,"value":294},{"type":162,"tag":209,"props":7076,"children":7077},{"style":222},[7078],{"type":168,"value":6535},{"type":162,"tag":209,"props":7080,"children":7081},{"style":228},[7082],{"type":168,"value":331},{"type":162,"tag":209,"props":7084,"children":7085},{"style":222},[7086],{"type":168,"value":6553},{"type":162,"tag":209,"props":7088,"children":7089},{"style":228},[7090],{"type":168,"value":331},{"type":162,"tag":209,"props":7092,"children":7093},{"style":222},[7094],{"type":168,"value":6570},{"type":162,"tag":209,"props":7096,"children":7097},{"style":302},[7098],{"type":168,"value":7099},")) ",{"type":162,"tag":209,"props":7101,"children":7102},{"style":228},[7103],{"type":168,"value":1026},{"type":162,"tag":209,"props":7105,"children":7106},{"class":211,"line":1029},[7107,7111,7115,7119,7123,7127,7132,7136,7140,7144,7148,7152,7157,7161],{"type":162,"tag":209,"props":7108,"children":7109},{"style":845},[7110],{"type":168,"value":1435},{"type":162,"tag":209,"props":7112,"children":7113},{"style":228},[7114],{"type":168,"value":2201},{"type":162,"tag":209,"props":7116,"children":7117},{"style":244},[7118],{"type":168,"value":1440},{"type":162,"tag":209,"props":7120,"children":7121},{"style":302},[7122],{"type":168,"value":294},{"type":162,"tag":209,"props":7124,"children":7125},{"style":228},[7126],{"type":168,"value":1053},{"type":162,"tag":209,"props":7128,"children":7129},{"style":318},[7130],{"type":168,"value":7131},"Unauthorized",{"type":162,"tag":209,"props":7133,"children":7134},{"style":228},[7135],{"type":168,"value":1053},{"type":162,"tag":209,"props":7137,"children":7138},{"style":228},[7139],{"type":168,"value":331},{"type":162,"tag":209,"props":7141,"children":7142},{"style":228},[7143],{"type":168,"value":1769},{"type":162,"tag":209,"props":7145,"children":7146},{"style":302},[7147],{"type":168,"value":1774},{"type":162,"tag":209,"props":7149,"children":7150},{"style":228},[7151],{"type":168,"value":310},{"type":162,"tag":209,"props":7153,"children":7154},{"style":1781},[7155],{"type":168,"value":7156}," 401",{"type":162,"tag":209,"props":7158,"children":7159},{"style":228},[7160],{"type":168,"value":1789},{"type":162,"tag":209,"props":7162,"children":7163},{"style":302},[7164],{"type":168,"value":1272},{"type":162,"tag":209,"props":7166,"children":7167},{"class":211,"line":1061},[7168],{"type":162,"tag":209,"props":7169,"children":7170},{"style":228},[7171],{"type":168,"value":1802},{"type":162,"tag":209,"props":7173,"children":7174},{"class":211,"line":1091},[7175],{"type":162,"tag":209,"props":7176,"children":7177},{"emptyLinePlaceholder":972},[7178],{"type":168,"value":975},{"type":162,"tag":209,"props":7180,"children":7181},{"class":211,"line":1148},[7182,7186,7191,7195,7199,7203,7207,7211,7215],{"type":162,"tag":209,"props":7183,"children":7184},{"style":216},[7185],{"type":168,"value":901},{"type":162,"tag":209,"props":7187,"children":7188},{"style":222},[7189],{"type":168,"value":7190}," events",{"type":162,"tag":209,"props":7192,"children":7193},{"style":228},[7194],{"type":168,"value":911},{"type":162,"tag":209,"props":7196,"children":7197},{"style":222},[7198],{"type":168,"value":1163},{"type":162,"tag":209,"props":7200,"children":7201},{"style":228},[7202],{"type":168,"value":241},{"type":162,"tag":209,"props":7204,"children":7205},{"style":244},[7206],{"type":168,"value":2968},{"type":162,"tag":209,"props":7208,"children":7209},{"style":302},[7210],{"type":168,"value":294},{"type":162,"tag":209,"props":7212,"children":7213},{"style":222},[7214],{"type":168,"value":6535},{"type":162,"tag":209,"props":7216,"children":7217},{"style":302},[7218],{"type":168,"value":1272},{"type":162,"tag":209,"props":7220,"children":7221},{"class":211,"line":1200},[7222],{"type":162,"tag":209,"props":7223,"children":7224},{"style":458},[7225],{"type":168,"value":7226},"  \u002F\u002F Process verified events...\n",{"type":162,"tag":209,"props":7228,"children":7229},{"class":211,"line":1214},[7230,7234,7238,7242,7246,7250,7255,7259,7263,7267,7271,7275,7280,7284],{"type":162,"tag":209,"props":7231,"children":7232},{"style":845},[7233],{"type":168,"value":3338},{"type":162,"tag":209,"props":7235,"children":7236},{"style":228},[7237],{"type":168,"value":2201},{"type":162,"tag":209,"props":7239,"children":7240},{"style":244},[7241],{"type":168,"value":1440},{"type":162,"tag":209,"props":7243,"children":7244},{"style":302},[7245],{"type":168,"value":294},{"type":162,"tag":209,"props":7247,"children":7248},{"style":228},[7249],{"type":168,"value":1053},{"type":162,"tag":209,"props":7251,"children":7252},{"style":318},[7253],{"type":168,"value":7254},"OK",{"type":162,"tag":209,"props":7256,"children":7257},{"style":228},[7258],{"type":168,"value":1053},{"type":162,"tag":209,"props":7260,"children":7261},{"style":228},[7262],{"type":168,"value":331},{"type":162,"tag":209,"props":7264,"children":7265},{"style":228},[7266],{"type":168,"value":1769},{"type":162,"tag":209,"props":7268,"children":7269},{"style":302},[7270],{"type":168,"value":1774},{"type":162,"tag":209,"props":7272,"children":7273},{"style":228},[7274],{"type":168,"value":310},{"type":162,"tag":209,"props":7276,"children":7277},{"style":1781},[7278],{"type":168,"value":7279}," 200",{"type":162,"tag":209,"props":7281,"children":7282},{"style":228},[7283],{"type":168,"value":1789},{"type":162,"tag":209,"props":7285,"children":7286},{"style":302},[7287],{"type":168,"value":1272},{"type":162,"tag":209,"props":7289,"children":7290},{"class":211,"line":1222},[7291],{"type":162,"tag":209,"props":7292,"children":7293},{"style":228},[7294],{"type":168,"value":1811},{"type":162,"tag":2122,"props":7296,"children":7297},{},[7298],{"type":162,"tag":171,"props":7299,"children":7300},{},[7301,7306,7308,7313],{"type":162,"tag":177,"props":7302,"children":7303},{},[7304],{"type":168,"value":7305},"Secret management:",{"type":168,"value":7307}," The drain signing secret is shown once when you create the drain. Store it in an environment variable (e.g., ",{"type":162,"tag":205,"props":7309,"children":7311},{"className":7310},[],[7312],{"type":168,"value":7024},{"type":168,"value":7314},"). If lost, delete and recreate the drain.",{"type":162,"tag":819,"props":7316,"children":7318},{"id":7317},"opentelemetry-integration",[7319],{"type":168,"value":7320},"OpenTelemetry Integration",{"type":162,"tag":171,"props":7322,"children":7323},{},[7324,7326,7331,7333,7337,7339,7344],{"type":168,"value":7325},"Vercel exports traces in OpenTelemetry-compatible format via Drains. Configure an OTel-compatible drain endpoint at ",{"type":162,"tag":205,"props":7327,"children":7329},{"className":7328},[],[7330],{"type":168,"value":4778},{"type":168,"value":7332}," → ",{"type":162,"tag":177,"props":7334,"children":7335},{},[7336],{"type":168,"value":4828},{"type":168,"value":7338}," → select ",{"type":162,"tag":177,"props":7340,"children":7341},{},[7342],{"type":168,"value":7343},"OTLP",{"type":168,"value":7345}," format, or via the REST API.",{"type":162,"tag":819,"props":7347,"children":7349},{"id":7348},"vendor-integrations",[7350],{"type":168,"value":7351},"Vendor Integrations",{"type":162,"tag":197,"props":7353,"children":7355},{"className":2031,"code":7354,"language":2033,"meta":202,"style":202},"# Install via Marketplace (recommended — auto-configures drain)\nvercel integration add datadog\n",[7356],{"type":162,"tag":205,"props":7357,"children":7358},{"__ignoreMap":202},[7359,7367],{"type":162,"tag":209,"props":7360,"children":7361},{"class":211,"line":212},[7362],{"type":162,"tag":209,"props":7363,"children":7364},{"style":458},[7365],{"type":168,"value":7366},"# Install via Marketplace (recommended — auto-configures drain)\n",{"type":162,"tag":209,"props":7368,"children":7369},{"class":211,"line":260},[7370,7374,7379,7384],{"type":162,"tag":209,"props":7371,"children":7372},{"style":880},[7373],{"type":168,"value":17},{"type":162,"tag":209,"props":7375,"children":7376},{"style":318},[7377],{"type":168,"value":7378}," integration",{"type":162,"tag":209,"props":7380,"children":7381},{"style":318},[7382],{"type":168,"value":7383}," add",{"type":162,"tag":209,"props":7385,"children":7386},{"style":318},[7387],{"type":168,"value":7388}," datadog\n",{"type":162,"tag":171,"props":7390,"children":7391},{},[7392,7394,7399,7400,7404],{"type":168,"value":7393},"Or manually create a drain at ",{"type":162,"tag":205,"props":7395,"children":7397},{"className":7396},[],[7398],{"type":168,"value":4778},{"type":168,"value":7332},{"type":162,"tag":177,"props":7401,"children":7402},{},[7403],{"type":168,"value":4828},{"type":168,"value":7405},", or via REST API, pointing to:",{"type":162,"tag":4377,"props":7407,"children":7408},{},[7409,7430],{"type":162,"tag":4381,"props":7410,"children":7411},{},[7412],{"type":162,"tag":4385,"props":7413,"children":7414},{},[7415,7420,7425],{"type":162,"tag":4389,"props":7416,"children":7417},{},[7418],{"type":168,"value":7419},"Vendor",{"type":162,"tag":4389,"props":7421,"children":7422},{},[7423],{"type":168,"value":7424},"Endpoint",{"type":162,"tag":4389,"props":7426,"children":7427},{},[7428],{"type":168,"value":7429},"Auth Header",{"type":162,"tag":4405,"props":7431,"children":7432},{},[7433,7462],{"type":162,"tag":4385,"props":7434,"children":7435},{},[7436,7444,7453],{"type":162,"tag":4412,"props":7437,"children":7438},{},[7439],{"type":162,"tag":177,"props":7440,"children":7441},{},[7442],{"type":168,"value":7443},"Datadog",{"type":162,"tag":4412,"props":7445,"children":7446},{},[7447],{"type":162,"tag":205,"props":7448,"children":7450},{"className":7449},[],[7451],{"type":168,"value":7452},"https:\u002F\u002Fhttp-intake.logs.datadoghq.com\u002Fapi\u002Fv2\u002Flogs",{"type":162,"tag":4412,"props":7454,"children":7455},{},[7456],{"type":162,"tag":205,"props":7457,"children":7459},{"className":7458},[],[7460],{"type":168,"value":7461},"DD-API-KEY",{"type":162,"tag":4385,"props":7463,"children":7464},{},[7465,7473,7482],{"type":162,"tag":4412,"props":7466,"children":7467},{},[7468],{"type":162,"tag":177,"props":7469,"children":7470},{},[7471],{"type":168,"value":7472},"Honeycomb",{"type":162,"tag":4412,"props":7474,"children":7475},{},[7476],{"type":162,"tag":205,"props":7477,"children":7479},{"className":7478},[],[7480],{"type":168,"value":7481},"https:\u002F\u002Fapi.honeycomb.io\u002F1\u002Fbatch\u002F\u003Cdataset>",{"type":162,"tag":4412,"props":7483,"children":7484},{},[7485],{"type":162,"tag":205,"props":7486,"children":7488},{"className":7487},[],[7489],{"type":168,"value":7490},"X-Honeycomb-Team",{"type":162,"tag":819,"props":7492,"children":7494},{"id":7493},"fallback-guidance-no-drains",[7495],{"type":168,"value":7496},"Fallback Guidance (No Drains)",{"type":162,"tag":171,"props":7498,"children":7499},{},[7500],{"type":168,"value":7501},"If drains are unavailable (Hobby plan or not yet configured), use these alternatives:",{"type":162,"tag":4377,"props":7503,"children":7504},{},[7505,7526],{"type":162,"tag":4381,"props":7506,"children":7507},{},[7508],{"type":162,"tag":4385,"props":7509,"children":7510},{},[7511,7516,7521],{"type":162,"tag":4389,"props":7512,"children":7513},{},[7514],{"type":168,"value":7515},"Need",{"type":162,"tag":4389,"props":7517,"children":7518},{},[7519],{"type":168,"value":7520},"Alternative",{"type":162,"tag":4389,"props":7522,"children":7523},{},[7524],{"type":168,"value":7525},"How",{"type":162,"tag":4405,"props":7527,"children":7528},{},[7529,7555,7589,7628,7653,7678],{"type":162,"tag":4385,"props":7530,"children":7531},{},[7532,7537,7544],{"type":162,"tag":4412,"props":7533,"children":7534},{},[7535],{"type":168,"value":7536},"View runtime logs",{"type":162,"tag":4412,"props":7538,"children":7539},{},[7540],{"type":162,"tag":177,"props":7541,"children":7542},{},[7543],{"type":168,"value":4770},{"type":162,"tag":4412,"props":7545,"children":7546},{},[7547,7553],{"type":162,"tag":205,"props":7548,"children":7550},{"className":7549},[],[7551],{"type":168,"value":7552},"https:\u002F\u002Fvercel.com\u002F{team}\u002F{project}\u002Fdeployments",{"type":168,"value":7554}," → select deployment → Logs tab",{"type":162,"tag":4385,"props":7556,"children":7557},{},[7558,7563,7571],{"type":162,"tag":4412,"props":7559,"children":7560},{},[7561],{"type":168,"value":7562},"Stream logs from terminal",{"type":162,"tag":4412,"props":7564,"children":7565},{},[7566],{"type":162,"tag":177,"props":7567,"children":7568},{},[7569],{"type":168,"value":7570},"Vercel CLI",{"type":162,"tag":4412,"props":7572,"children":7573},{},[7574,7580,7582,7588],{"type":162,"tag":205,"props":7575,"children":7577},{"className":7576},[],[7578],{"type":168,"value":7579},"vercel logs \u003Cdeployment-url> --follow",{"type":168,"value":7581}," (see ",{"type":162,"tag":205,"props":7583,"children":7585},{"className":7584},[],[7586],{"type":168,"value":7587},"⤳ skill: vercel-cli",{"type":168,"value":888},{"type":162,"tag":4385,"props":7590,"children":7591},{},[7592,7597,7605],{"type":162,"tag":4412,"props":7593,"children":7594},{},[7595],{"type":168,"value":7596},"Query logs programmatically",{"type":162,"tag":4412,"props":7598,"children":7599},{},[7600],{"type":162,"tag":177,"props":7601,"children":7602},{},[7603],{"type":168,"value":7604},"MCP \u002F REST API",{"type":162,"tag":4412,"props":7606,"children":7607},{},[7608,7613,7615,7621,7622,7627],{"type":162,"tag":205,"props":7609,"children":7611},{"className":7610},[],[7612],{"type":168,"value":3138},{"type":168,"value":7614}," tool or ",{"type":162,"tag":205,"props":7616,"children":7618},{"className":7617},[],[7619],{"type":168,"value":7620},"\u002Fv3\u002Fdeployments\u002F:id\u002Fevents",{"type":168,"value":7581},{"type":162,"tag":205,"props":7623,"children":7625},{"className":7624},[],[7626],{"type":168,"value":3146},{"type":168,"value":888},{"type":162,"tag":4385,"props":7629,"children":7630},{},[7631,7636,7644],{"type":162,"tag":4412,"props":7632,"children":7633},{},[7634],{"type":168,"value":7635},"Monitor errors post-deploy",{"type":162,"tag":4412,"props":7637,"children":7638},{},[7639],{"type":162,"tag":177,"props":7640,"children":7641},{},[7642],{"type":168,"value":7643},"CLI",{"type":162,"tag":4412,"props":7645,"children":7646},{},[7647],{"type":162,"tag":205,"props":7648,"children":7650},{"className":7649},[],[7651],{"type":168,"value":7652},"vercel logs \u003Curl> --level error --since 1h",{"type":162,"tag":4385,"props":7654,"children":7655},{},[7656,7661,7669],{"type":162,"tag":4412,"props":7657,"children":7658},{},[7659],{"type":168,"value":7660},"Web Analytics data",{"type":162,"tag":4412,"props":7662,"children":7663},{},[7664],{"type":162,"tag":177,"props":7665,"children":7666},{},[7667],{"type":168,"value":7668},"Dashboard only",{"type":162,"tag":4412,"props":7670,"children":7671},{},[7672],{"type":162,"tag":205,"props":7673,"children":7675},{"className":7674},[],[7676],{"type":168,"value":7677},"https:\u002F\u002Fvercel.com\u002F{team}\u002F{project}\u002Fanalytics",{"type":162,"tag":4385,"props":7679,"children":7680},{},[7681,7686,7693],{"type":162,"tag":4412,"props":7682,"children":7683},{},[7684],{"type":168,"value":7685},"Performance metrics",{"type":162,"tag":4412,"props":7687,"children":7688},{},[7689],{"type":162,"tag":177,"props":7690,"children":7691},{},[7692],{"type":168,"value":7668},{"type":162,"tag":4412,"props":7694,"children":7695},{},[7696],{"type":162,"tag":205,"props":7697,"children":7699},{"className":7698},[],[7700],{"type":168,"value":7701},"https:\u002F\u002Fvercel.com\u002F{team}\u002F{project}\u002Fspeed-insights",{"type":162,"tag":2122,"props":7703,"children":7704},{},[7705],{"type":162,"tag":171,"props":7706,"children":7707},{},[7708,7713,7715,7720],{"type":162,"tag":177,"props":7709,"children":7710},{},[7711],{"type":168,"value":7712},"Upgrade path:",{"type":168,"value":7714}," When ready for centralized observability, upgrade to Pro and configure drains at ",{"type":162,"tag":205,"props":7716,"children":7718},{"className":7717},[],[7719],{"type":168,"value":4778},{"type":168,"value":7721}," or via REST API. The drain setup is typically \u003C 5 minutes.",{"type":162,"tag":819,"props":7723,"children":7725},{"id":7724},"deploy-preflight-observability",[7726],{"type":168,"value":7727},"Deploy Preflight Observability",{"type":162,"tag":171,"props":7729,"children":7730},{},[7731],{"type":168,"value":7732},"Before promoting to production, verify observability readiness:",{"type":162,"tag":7734,"props":7735,"children":7736},"ul",{},[7737,7770,7793,7818],{"type":162,"tag":4799,"props":7738,"children":7739},{},[7740,7745,7747,7753,7755],{"type":162,"tag":177,"props":7741,"children":7742},{},[7743],{"type":168,"value":7744},"Drains check",{"type":168,"value":7746},": Query configured drains via MCP ",{"type":162,"tag":205,"props":7748,"children":7750},{"className":7749},[],[7751],{"type":168,"value":7752},"list_drains",{"type":168,"value":7754}," or REST API. If no drains are configured on a Pro\u002FEnterprise plan, warn:\n",{"type":162,"tag":2122,"props":7756,"children":7757},{},[7758],{"type":162,"tag":171,"props":7759,"children":7760},{},[7761,7763,7769],{"type":168,"value":7762},"⚠️ No drains configured. Production errors won't be forwarded to external monitoring.\nConfigure drains via Dashboard or REST API before promoting. See ",{"type":162,"tag":205,"props":7764,"children":7766},{"className":7765},[],[7767],{"type":168,"value":7768},"⤳ skill: observability",{"type":168,"value":241},{"type":162,"tag":4799,"props":7771,"children":7772},{},[7773,7778,7780],{"type":162,"tag":177,"props":7774,"children":7775},{},[7776],{"type":168,"value":7777},"Errored drains",{"type":168,"value":7779},": If any drain is in error state, warn and suggest remediation before deploying:\n",{"type":162,"tag":2122,"props":7781,"children":7782},{},[7783],{"type":162,"tag":171,"props":7784,"children":7785},{},[7786,7788],{"type":168,"value":7787},"⚠️ Drain \"",{"type":162,"tag":5489,"props":7789,"children":7790},{},[7791],{"type":168,"value":7792},"\" is errored. Fix or recreate before production deploy to avoid monitoring gaps.",{"type":162,"tag":4799,"props":7794,"children":7795},{},[7796,7801,7803,7809,7811,7816],{"type":162,"tag":177,"props":7797,"children":7798},{},[7799],{"type":168,"value":7800},"Error monitoring",{"type":168,"value":7802},": Check that at least one of these is in place: configured drains, an error tracking integration (e.g., Sentry, Datadog via ",{"type":162,"tag":205,"props":7804,"children":7806},{"className":7805},[],[7807],{"type":168,"value":7808},"vercel integration ls",{"type":168,"value":7810},"), or ",{"type":162,"tag":205,"props":7812,"children":7814},{"className":7813},[],[7815],{"type":168,"value":3509},{"type":168,"value":7817}," in the project.",{"type":162,"tag":4799,"props":7819,"children":7820},{},[7821],{"type":168,"value":7822},"These are warnings, not blockers — the user may proceed after acknowledgment.",{"type":162,"tag":819,"props":7824,"children":7826},{"id":7825},"post-deploy-error-scan",[7827],{"type":168,"value":7828},"Post-Deploy Error Scan",{"type":162,"tag":171,"props":7830,"children":7831},{},[7832],{"type":168,"value":7833},"For production deployments, wait 60 seconds after READY state, then scan for early runtime errors:",{"type":162,"tag":197,"props":7835,"children":7837},{"className":2031,"code":7836,"language":2033,"meta":202,"style":202},"vercel logs \u003Cdeployment-url> --level error --since 1h\n",[7838],{"type":162,"tag":205,"props":7839,"children":7840},{"__ignoreMap":202},[7841],{"type":162,"tag":209,"props":7842,"children":7843},{"class":211,"line":212},[7844,7848,7853,7858,7863,7868,7873,7878,7882,7887],{"type":162,"tag":209,"props":7845,"children":7846},{"style":880},[7847],{"type":168,"value":17},{"type":162,"tag":209,"props":7849,"children":7850},{"style":318},[7851],{"type":168,"value":7852}," logs",{"type":162,"tag":209,"props":7854,"children":7855},{"style":228},[7856],{"type":168,"value":7857}," \u003C",{"type":162,"tag":209,"props":7859,"children":7860},{"style":318},[7861],{"type":168,"value":7862},"deployment-ur",{"type":162,"tag":209,"props":7864,"children":7865},{"style":222},[7866],{"type":168,"value":7867},"l",{"type":162,"tag":209,"props":7869,"children":7870},{"style":228},[7871],{"type":168,"value":7872},">",{"type":162,"tag":209,"props":7874,"children":7875},{"style":318},[7876],{"type":168,"value":7877}," --level",{"type":162,"tag":209,"props":7879,"children":7880},{"style":318},[7881],{"type":168,"value":740},{"type":162,"tag":209,"props":7883,"children":7884},{"style":318},[7885],{"type":168,"value":7886}," --since",{"type":162,"tag":209,"props":7888,"children":7889},{"style":318},[7890],{"type":168,"value":7891}," 1h\n",{"type":162,"tag":171,"props":7893,"children":7894},{},[7895,7897,7902,7904,7909],{"type":168,"value":7896},"Or via MCP if available: use ",{"type":162,"tag":205,"props":7898,"children":7900},{"className":7899},[],[7901],{"type":168,"value":3138},{"type":168,"value":7903}," with level filter ",{"type":162,"tag":205,"props":7905,"children":7907},{"className":7906},[],[7908],{"type":168,"value":642},{"type":168,"value":241},{"type":162,"tag":171,"props":7911,"children":7912},{},[7913],{"type":162,"tag":177,"props":7914,"children":7915},{},[7916],{"type":168,"value":7917},"Interpret results:",{"type":162,"tag":4377,"props":7919,"children":7920},{},[7921,7937],{"type":162,"tag":4381,"props":7922,"children":7923},{},[7924],{"type":162,"tag":4385,"props":7925,"children":7926},{},[7927,7932],{"type":162,"tag":4389,"props":7928,"children":7929},{},[7930],{"type":168,"value":7931},"Finding",{"type":162,"tag":4389,"props":7933,"children":7934},{},[7935],{"type":168,"value":7936},"Action",{"type":162,"tag":4405,"props":7938,"children":7939},{},[7940,7953,7966,7987],{"type":162,"tag":4385,"props":7941,"children":7942},{},[7943,7948],{"type":162,"tag":4412,"props":7944,"children":7945},{},[7946],{"type":168,"value":7947},"No errors",{"type":162,"tag":4412,"props":7949,"children":7950},{},[7951],{"type":168,"value":7952},"✓ Clean deploy — no runtime errors in first hour",{"type":162,"tag":4385,"props":7954,"children":7955},{},[7956,7961],{"type":162,"tag":4412,"props":7957,"children":7958},{},[7959],{"type":168,"value":7960},"Errors detected",{"type":162,"tag":4412,"props":7962,"children":7963},{},[7964],{"type":168,"value":7965},"List error count and first 5 unique error messages. Suggest: check drain payloads for correlated traces, review function logs in Dashboard",{"type":162,"tag":4385,"props":7967,"children":7968},{},[7969,7974],{"type":162,"tag":4412,"props":7970,"children":7971},{},[7972],{"type":168,"value":7973},"500 status codes in logs",{"type":162,"tag":4412,"props":7975,"children":7976},{},[7977,7979,7985],{"type":168,"value":7978},"Correlate timestamps with drain data (if configured) or ",{"type":162,"tag":205,"props":7980,"children":7982},{"className":7981},[],[7983],{"type":168,"value":7984},"vercel logs \u003Curl> --json",{"type":168,"value":7986}," for structured output. Flag for immediate investigation",{"type":162,"tag":4385,"props":7988,"children":7989},{},[7990,7995],{"type":162,"tag":4412,"props":7991,"children":7992},{},[7993],{"type":168,"value":7994},"Timeout errors",{"type":162,"tag":4412,"props":7996,"children":7997},{},[7998,8000,8006,8008],{"type":168,"value":7999},"Check function duration limits in ",{"type":162,"tag":205,"props":8001,"children":8003},{"className":8002},[],[8004],{"type":168,"value":8005},"vercel.json",{"type":168,"value":8007}," or project settings. Consider increasing ",{"type":162,"tag":205,"props":8009,"children":8011},{"className":8010},[],[8012],{"type":168,"value":8013},"maxDuration",{"type":162,"tag":171,"props":8015,"children":8016},{},[8017],{"type":162,"tag":177,"props":8018,"children":8019},{},[8020],{"type":168,"value":8021},"Fallback (no drains):",{"type":162,"tag":171,"props":8023,"children":8024},{},[8025],{"type":168,"value":8026},"If no drains are configured, the error scan relies on CLI and Dashboard:",{"type":162,"tag":197,"props":8028,"children":8030},{"className":2031,"code":8029,"language":2033,"meta":202,"style":202},"# Stream live errors\nvercel logs \u003Cdeployment-url> --level error --follow\n\n# JSON output for parsing\nvercel logs \u003Cdeployment-url> --level error --since 1h --json\n",[8031],{"type":162,"tag":205,"props":8032,"children":8033},{"__ignoreMap":202},[8034,8042,8082,8089,8097],{"type":162,"tag":209,"props":8035,"children":8036},{"class":211,"line":212},[8037],{"type":162,"tag":209,"props":8038,"children":8039},{"style":458},[8040],{"type":168,"value":8041},"# Stream live errors\n",{"type":162,"tag":209,"props":8043,"children":8044},{"class":211,"line":260},[8045,8049,8053,8057,8061,8065,8069,8073,8077],{"type":162,"tag":209,"props":8046,"children":8047},{"style":880},[8048],{"type":168,"value":17},{"type":162,"tag":209,"props":8050,"children":8051},{"style":318},[8052],{"type":168,"value":7852},{"type":162,"tag":209,"props":8054,"children":8055},{"style":228},[8056],{"type":168,"value":7857},{"type":162,"tag":209,"props":8058,"children":8059},{"style":318},[8060],{"type":168,"value":7862},{"type":162,"tag":209,"props":8062,"children":8063},{"style":222},[8064],{"type":168,"value":7867},{"type":162,"tag":209,"props":8066,"children":8067},{"style":228},[8068],{"type":168,"value":7872},{"type":162,"tag":209,"props":8070,"children":8071},{"style":318},[8072],{"type":168,"value":7877},{"type":162,"tag":209,"props":8074,"children":8075},{"style":318},[8076],{"type":168,"value":740},{"type":162,"tag":209,"props":8078,"children":8079},{"style":318},[8080],{"type":168,"value":8081}," --follow\n",{"type":162,"tag":209,"props":8083,"children":8084},{"class":211,"line":454},[8085],{"type":162,"tag":209,"props":8086,"children":8087},{"emptyLinePlaceholder":972},[8088],{"type":168,"value":975},{"type":162,"tag":209,"props":8090,"children":8091},{"class":211,"line":464},[8092],{"type":162,"tag":209,"props":8093,"children":8094},{"style":458},[8095],{"type":168,"value":8096},"# JSON output for parsing\n",{"type":162,"tag":209,"props":8098,"children":8099},{"class":211,"line":620},[8100,8104,8108,8112,8116,8120,8124,8128,8132,8136,8141],{"type":162,"tag":209,"props":8101,"children":8102},{"style":880},[8103],{"type":168,"value":17},{"type":162,"tag":209,"props":8105,"children":8106},{"style":318},[8107],{"type":168,"value":7852},{"type":162,"tag":209,"props":8109,"children":8110},{"style":228},[8111],{"type":168,"value":7857},{"type":162,"tag":209,"props":8113,"children":8114},{"style":318},[8115],{"type":168,"value":7862},{"type":162,"tag":209,"props":8117,"children":8118},{"style":222},[8119],{"type":168,"value":7867},{"type":162,"tag":209,"props":8121,"children":8122},{"style":228},[8123],{"type":168,"value":7872},{"type":162,"tag":209,"props":8125,"children":8126},{"style":318},[8127],{"type":168,"value":7877},{"type":162,"tag":209,"props":8129,"children":8130},{"style":318},[8131],{"type":168,"value":740},{"type":162,"tag":209,"props":8133,"children":8134},{"style":318},[8135],{"type":168,"value":7886},{"type":162,"tag":209,"props":8137,"children":8138},{"style":318},[8139],{"type":168,"value":8140}," 1h",{"type":162,"tag":209,"props":8142,"children":8143},{"style":318},[8144],{"type":168,"value":8145}," --json\n",{"type":162,"tag":2122,"props":8147,"children":8148},{},[8149],{"type":162,"tag":171,"props":8150,"children":8151},{},[8152,8154,8159],{"type":168,"value":8153},"For richer post-deploy monitoring, configure drains to forward logs\u002Ftraces to an external platform. See ",{"type":162,"tag":205,"props":8155,"children":8157},{"className":8156},[],[8158],{"type":168,"value":7768},{"type":168,"value":241},{"type":162,"tag":819,"props":8161,"children":8163},{"id":8162},"performance-audit-checklist",[8164],{"type":168,"value":8165},"Performance Audit Checklist",{"type":162,"tag":171,"props":8167,"children":8168},{},[8169],{"type":168,"value":8170},"Run through this when asked to optimize a Vercel application:",{"type":162,"tag":4795,"props":8172,"children":8173},{},[8174,8184,8194,8217,8240,8258,8276,8286,8296,8306],{"type":162,"tag":4799,"props":8175,"children":8176},{},[8177,8182],{"type":162,"tag":177,"props":8178,"children":8179},{},[8180],{"type":168,"value":8181},"Measure first",{"type":168,"value":8183},": Check Speed Insights dashboard for real-user CWV data",{"type":162,"tag":4799,"props":8185,"children":8186},{},[8187,8192],{"type":162,"tag":177,"props":8188,"children":8189},{},[8190],{"type":168,"value":8191},"Identify LCP element",{"type":168,"value":8193},": Use Chrome DevTools → Performance → identify the LCP element",{"type":162,"tag":4799,"props":8195,"children":8196},{},[8197,8208,8210,8215],{"type":162,"tag":177,"props":8198,"children":8199},{},[8200,8202],{"type":168,"value":8201},"Audit ",{"type":162,"tag":205,"props":8203,"children":8205},{"className":8204},[],[8206],{"type":168,"value":8207},"'use client'",{"type":168,"value":8209},": Every ",{"type":162,"tag":205,"props":8211,"children":8213},{"className":8212},[],[8214],{"type":168,"value":8207},{"type":168,"value":8216}," file ships JS to the browser — minimize",{"type":162,"tag":4799,"props":8218,"children":8219},{},[8220,8225,8227,8233,8234],{"type":162,"tag":177,"props":8221,"children":8222},{},[8223],{"type":168,"value":8224},"Check images",{"type":168,"value":8226},": All above-fold images use ",{"type":162,"tag":205,"props":8228,"children":8230},{"className":8229},[],[8231],{"type":168,"value":8232},"next\u002Fimage",{"type":168,"value":2150},{"type":162,"tag":205,"props":8235,"children":8237},{"className":8236},[],[8238],{"type":168,"value":8239},"priority",{"type":162,"tag":4799,"props":8241,"children":8242},{},[8243,8248,8250,8256],{"type":162,"tag":177,"props":8244,"children":8245},{},[8246],{"type":168,"value":8247},"Check fonts",{"type":168,"value":8249},": All fonts loaded via ",{"type":162,"tag":205,"props":8251,"children":8253},{"className":8252},[],[8254],{"type":168,"value":8255},"next\u002Ffont",{"type":168,"value":8257}," (zero CLS)",{"type":162,"tag":4799,"props":8259,"children":8260},{},[8261,8266,8268,8274],{"type":162,"tag":177,"props":8262,"children":8263},{},[8264],{"type":168,"value":8265},"Check third-party scripts",{"type":168,"value":8267},": All use ",{"type":162,"tag":205,"props":8269,"children":8271},{"className":8270},[],[8272],{"type":168,"value":8273},"next\u002Fscript",{"type":168,"value":8275}," with correct strategy",{"type":162,"tag":4799,"props":8277,"children":8278},{},[8279,8284],{"type":162,"tag":177,"props":8280,"children":8281},{},[8282],{"type":168,"value":8283},"Check data fetching",{"type":168,"value":8285},": Server Components fetch in parallel, no waterfalls",{"type":162,"tag":4799,"props":8287,"children":8288},{},[8289,8294],{"type":162,"tag":177,"props":8290,"children":8291},{},[8292],{"type":168,"value":8293},"Check caching",{"type":168,"value":8295},": Cache Components used for expensive operations",{"type":162,"tag":4799,"props":8297,"children":8298},{},[8299,8304],{"type":162,"tag":177,"props":8300,"children":8301},{},[8302],{"type":168,"value":8303},"Check bundle",{"type":168,"value":8305},": Run analyzer, look for low-hanging fruit",{"type":162,"tag":4799,"props":8307,"children":8308},{},[8309,8314],{"type":162,"tag":177,"props":8310,"children":8311},{},[8312],{"type":168,"value":8313},"Check infrastructure",{"type":168,"value":8315},": Functions in correct region, Fluid Compute enabled",{"type":162,"tag":185,"props":8317,"children":8319},{"id":8318},"monitoring-dashboard-patterns",[8320],{"type":168,"value":8321},"Monitoring Dashboard Patterns",{"type":162,"tag":819,"props":8323,"children":8325},{"id":8324},"full-stack-observability-setup",[8326],{"type":168,"value":8327},"Full-Stack Observability Setup",{"type":162,"tag":171,"props":8329,"children":8330},{},[8331],{"type":168,"value":8332},"Combine all Vercel observability tools for comprehensive coverage.",{"type":162,"tag":197,"props":8334,"children":8336},{"className":3198,"code":8335,"language":3200,"meta":202,"style":202},"\u002F\u002F app\u002Flayout.tsx — complete observability setup\nimport { Analytics } from '@vercel\u002Fanalytics\u002Fnext'\nimport { SpeedInsights } from '@vercel\u002Fspeed-insights\u002Fnext'\n\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\n  return (\n    \u003Chtml>\n      \u003Cbody>\n        {children}\n        \u003CAnalytics \u002F>\n        \u003CSpeedInsights \u002F>\n      \u003C\u002Fbody>\n    \u003C\u002Fhtml>\n  )\n}\n",[8337],{"type":162,"tag":205,"props":8338,"children":8339},{"__ignoreMap":202},[8340,8348,8383,8418,8425,8488,8499,8514,8529,8544,8559,8574,8589,8604,8611],{"type":162,"tag":209,"props":8341,"children":8342},{"class":211,"line":212},[8343],{"type":162,"tag":209,"props":8344,"children":8345},{"style":458},[8346],{"type":168,"value":8347},"\u002F\u002F app\u002Flayout.tsx — complete observability setup\n",{"type":162,"tag":209,"props":8349,"children":8350},{"class":211,"line":260},[8351,8355,8359,8363,8367,8371,8375,8379],{"type":162,"tag":209,"props":8352,"children":8353},{"style":845},[8354],{"type":168,"value":3220},{"type":162,"tag":209,"props":8356,"children":8357},{"style":228},[8358],{"type":168,"value":1769},{"type":162,"tag":209,"props":8360,"children":8361},{"style":222},[8362],{"type":168,"value":3229},{"type":162,"tag":209,"props":8364,"children":8365},{"style":228},[8366],{"type":168,"value":1789},{"type":162,"tag":209,"props":8368,"children":8369},{"style":845},[8370],{"type":168,"value":3238},{"type":162,"tag":209,"props":8372,"children":8373},{"style":228},[8374],{"type":168,"value":1044},{"type":162,"tag":209,"props":8376,"children":8377},{"style":318},[8378],{"type":168,"value":3247},{"type":162,"tag":209,"props":8380,"children":8381},{"style":228},[8382],{"type":168,"value":3252},{"type":162,"tag":209,"props":8384,"children":8385},{"class":211,"line":454},[8386,8390,8394,8398,8402,8406,8410,8414],{"type":162,"tag":209,"props":8387,"children":8388},{"style":845},[8389],{"type":168,"value":3220},{"type":162,"tag":209,"props":8391,"children":8392},{"style":228},[8393],{"type":168,"value":1769},{"type":162,"tag":209,"props":8395,"children":8396},{"style":222},[8397],{"type":168,"value":4162},{"type":162,"tag":209,"props":8399,"children":8400},{"style":228},[8401],{"type":168,"value":1789},{"type":162,"tag":209,"props":8403,"children":8404},{"style":845},[8405],{"type":168,"value":3238},{"type":162,"tag":209,"props":8407,"children":8408},{"style":228},[8409],{"type":168,"value":1044},{"type":162,"tag":209,"props":8411,"children":8412},{"style":318},[8413],{"type":168,"value":4179},{"type":162,"tag":209,"props":8415,"children":8416},{"style":228},[8417],{"type":168,"value":3252},{"type":162,"tag":209,"props":8419,"children":8420},{"class":211,"line":464},[8421],{"type":162,"tag":209,"props":8422,"children":8423},{"emptyLinePlaceholder":972},[8424],{"type":168,"value":975},{"type":162,"tag":209,"props":8426,"children":8427},{"class":211,"line":620},[8428,8432,8436,8440,8444,8448,8452,8456,8460,8464,8468,8472,8476,8480,8484],{"type":162,"tag":209,"props":8429,"children":8430},{"style":845},[8431],{"type":168,"value":848},{"type":162,"tag":209,"props":8433,"children":8434},{"style":845},[8435],{"type":168,"value":3271},{"type":162,"tag":209,"props":8437,"children":8438},{"style":216},[8439],{"type":168,"value":858},{"type":162,"tag":209,"props":8441,"children":8442},{"style":244},[8443],{"type":168,"value":3280},{"type":162,"tag":209,"props":8445,"children":8446},{"style":228},[8447],{"type":168,"value":3285},{"type":162,"tag":209,"props":8449,"children":8450},{"style":870},[8451],{"type":168,"value":3290},{"type":162,"tag":209,"props":8453,"children":8454},{"style":228},[8455],{"type":168,"value":3295},{"type":162,"tag":209,"props":8457,"children":8458},{"style":228},[8459],{"type":168,"value":1769},{"type":162,"tag":209,"props":8461,"children":8462},{"style":302},[8463],{"type":168,"value":3290},{"type":162,"tag":209,"props":8465,"children":8466},{"style":228},[8467],{"type":168,"value":310},{"type":162,"tag":209,"props":8469,"children":8470},{"style":880},[8471],{"type":168,"value":3312},{"type":162,"tag":209,"props":8473,"children":8474},{"style":228},[8475],{"type":168,"value":241},{"type":162,"tag":209,"props":8477,"children":8478},{"style":880},[8479],{"type":168,"value":3321},{"type":162,"tag":209,"props":8481,"children":8482},{"style":228},[8483],{"type":168,"value":3326},{"type":162,"tag":209,"props":8485,"children":8486},{"style":228},[8487],{"type":168,"value":893},{"type":162,"tag":209,"props":8489,"children":8490},{"class":211,"line":38},[8491,8495],{"type":162,"tag":209,"props":8492,"children":8493},{"style":845},[8494],{"type":168,"value":3338},{"type":162,"tag":209,"props":8496,"children":8497},{"style":302},[8498],{"type":168,"value":3343},{"type":162,"tag":209,"props":8500,"children":8501},{"class":211,"line":986},[8502,8506,8510],{"type":162,"tag":209,"props":8503,"children":8504},{"style":228},[8505],{"type":168,"value":3351},{"type":162,"tag":209,"props":8507,"children":8508},{"style":302},[8509],{"type":168,"value":3356},{"type":162,"tag":209,"props":8511,"children":8512},{"style":228},[8513],{"type":168,"value":3361},{"type":162,"tag":209,"props":8515,"children":8516},{"class":211,"line":1029},[8517,8521,8525],{"type":162,"tag":209,"props":8518,"children":8519},{"style":228},[8520],{"type":168,"value":3369},{"type":162,"tag":209,"props":8522,"children":8523},{"style":302},[8524],{"type":168,"value":2516},{"type":162,"tag":209,"props":8526,"children":8527},{"style":228},[8528],{"type":168,"value":3361},{"type":162,"tag":209,"props":8530,"children":8531},{"class":211,"line":1061},[8532,8536,8540],{"type":162,"tag":209,"props":8533,"children":8534},{"style":228},[8535],{"type":168,"value":3385},{"type":162,"tag":209,"props":8537,"children":8538},{"style":222},[8539],{"type":168,"value":3390},{"type":162,"tag":209,"props":8541,"children":8542},{"style":228},[8543],{"type":168,"value":1811},{"type":162,"tag":209,"props":8545,"children":8546},{"class":211,"line":1091},[8547,8551,8555],{"type":162,"tag":209,"props":8548,"children":8549},{"style":228},[8550],{"type":168,"value":3402},{"type":162,"tag":209,"props":8552,"children":8553},{"style":880},[8554],{"type":168,"value":22},{"type":162,"tag":209,"props":8556,"children":8557},{"style":228},[8558],{"type":168,"value":3411},{"type":162,"tag":209,"props":8560,"children":8561},{"class":211,"line":1148},[8562,8566,8570],{"type":162,"tag":209,"props":8563,"children":8564},{"style":228},[8565],{"type":168,"value":3402},{"type":162,"tag":209,"props":8567,"children":8568},{"style":880},[8569],{"type":168,"value":4321},{"type":162,"tag":209,"props":8571,"children":8572},{"style":228},[8573],{"type":168,"value":3411},{"type":162,"tag":209,"props":8575,"children":8576},{"class":211,"line":1200},[8577,8581,8585],{"type":162,"tag":209,"props":8578,"children":8579},{"style":228},[8580],{"type":168,"value":3419},{"type":162,"tag":209,"props":8582,"children":8583},{"style":302},[8584],{"type":168,"value":2516},{"type":162,"tag":209,"props":8586,"children":8587},{"style":228},[8588],{"type":168,"value":3361},{"type":162,"tag":209,"props":8590,"children":8591},{"class":211,"line":1214},[8592,8596,8600],{"type":162,"tag":209,"props":8593,"children":8594},{"style":228},[8595],{"type":168,"value":3435},{"type":162,"tag":209,"props":8597,"children":8598},{"style":302},[8599],{"type":168,"value":3356},{"type":162,"tag":209,"props":8601,"children":8602},{"style":228},[8603],{"type":168,"value":3361},{"type":162,"tag":209,"props":8605,"children":8606},{"class":211,"line":1222},[8607],{"type":162,"tag":209,"props":8608,"children":8609},{"style":302},[8610],{"type":168,"value":3451},{"type":162,"tag":209,"props":8612,"children":8613},{"class":211,"line":1235},[8614],{"type":162,"tag":209,"props":8615,"children":8616},{"style":228},[8617],{"type":168,"value":1811},{"type":162,"tag":819,"props":8619,"children":8621},{"id":8620},"custom-monitoring-with-waituntil",[8622,8624],{"type":168,"value":8623},"Custom Monitoring with ",{"type":162,"tag":205,"props":8625,"children":8627},{"className":8626},[],[8628],{"type":168,"value":8629},"waitUntil",{"type":162,"tag":171,"props":8631,"children":8632},{},[8633],{"type":168,"value":8634},"Fire-and-forget telemetry that doesn't block responses.",{"type":162,"tag":197,"props":8636,"children":8638},{"className":199,"code":8637,"language":201,"meta":202,"style":202},"import { waitUntil } from '@vercel\u002Ffunctions'\n\nexport async function GET(req: Request) {\n  const start = Date.now()\n  const result = await fetchData()\n\n  \u002F\u002F Send response immediately\n  const response = Response.json(result)\n\n  \u002F\u002F Report metrics in background\n  waitUntil(async () => {\n    await reportMetric('api_latency', Date.now() - start, {\n      route: '\u002Fapi\u002Fdata',\n      status: 200,\n    })\n  })\n\n  return response\n}\n",[8639],{"type":162,"tag":205,"props":8640,"children":8641},{"__ignoreMap":202},[8642,8679,8686,8730,8761,8789,8796,8804,8844,8851,8859,8889,8955,8984,9004,9015,9026,9033,9045],{"type":162,"tag":209,"props":8643,"children":8644},{"class":211,"line":212},[8645,8649,8653,8658,8662,8666,8670,8675],{"type":162,"tag":209,"props":8646,"children":8647},{"style":845},[8648],{"type":168,"value":3220},{"type":162,"tag":209,"props":8650,"children":8651},{"style":228},[8652],{"type":168,"value":1769},{"type":162,"tag":209,"props":8654,"children":8655},{"style":222},[8656],{"type":168,"value":8657}," waitUntil",{"type":162,"tag":209,"props":8659,"children":8660},{"style":228},[8661],{"type":168,"value":1789},{"type":162,"tag":209,"props":8663,"children":8664},{"style":845},[8665],{"type":168,"value":3238},{"type":162,"tag":209,"props":8667,"children":8668},{"style":228},[8669],{"type":168,"value":1044},{"type":162,"tag":209,"props":8671,"children":8672},{"style":318},[8673],{"type":168,"value":8674},"@vercel\u002Ffunctions",{"type":162,"tag":209,"props":8676,"children":8677},{"style":228},[8678],{"type":168,"value":3252},{"type":162,"tag":209,"props":8680,"children":8681},{"class":211,"line":260},[8682],{"type":162,"tag":209,"props":8683,"children":8684},{"emptyLinePlaceholder":972},[8685],{"type":168,"value":975},{"type":162,"tag":209,"props":8687,"children":8688},{"class":211,"line":454},[8689,8693,8697,8701,8706,8710,8714,8718,8722,8726],{"type":162,"tag":209,"props":8690,"children":8691},{"style":845},[8692],{"type":168,"value":848},{"type":162,"tag":209,"props":8694,"children":8695},{"style":216},[8696],{"type":168,"value":853},{"type":162,"tag":209,"props":8698,"children":8699},{"style":216},[8700],{"type":168,"value":858},{"type":162,"tag":209,"props":8702,"children":8703},{"style":244},[8704],{"type":168,"value":8705}," GET",{"type":162,"tag":209,"props":8707,"children":8708},{"style":228},[8709],{"type":168,"value":294},{"type":162,"tag":209,"props":8711,"children":8712},{"style":870},[8713],{"type":168,"value":873},{"type":162,"tag":209,"props":8715,"children":8716},{"style":228},[8717],{"type":168,"value":310},{"type":162,"tag":209,"props":8719,"children":8720},{"style":880},[8721],{"type":168,"value":883},{"type":162,"tag":209,"props":8723,"children":8724},{"style":228},[8725],{"type":168,"value":888},{"type":162,"tag":209,"props":8727,"children":8728},{"style":228},[8729],{"type":168,"value":893},{"type":162,"tag":209,"props":8731,"children":8732},{"class":211,"line":464},[8733,8737,8741,8745,8749,8753,8757],{"type":162,"tag":209,"props":8734,"children":8735},{"style":216},[8736],{"type":168,"value":901},{"type":162,"tag":209,"props":8738,"children":8739},{"style":222},[8740],{"type":168,"value":906},{"type":162,"tag":209,"props":8742,"children":8743},{"style":228},[8744],{"type":168,"value":911},{"type":162,"tag":209,"props":8746,"children":8747},{"style":222},[8748],{"type":168,"value":236},{"type":162,"tag":209,"props":8750,"children":8751},{"style":228},[8752],{"type":168,"value":241},{"type":162,"tag":209,"props":8754,"children":8755},{"style":244},[8756],{"type":168,"value":247},{"type":162,"tag":209,"props":8758,"children":8759},{"style":302},[8760],{"type":168,"value":928},{"type":162,"tag":209,"props":8762,"children":8763},{"class":211,"line":620},[8764,8768,8772,8776,8780,8785],{"type":162,"tag":209,"props":8765,"children":8766},{"style":216},[8767],{"type":168,"value":901},{"type":162,"tag":209,"props":8769,"children":8770},{"style":222},[8771],{"type":168,"value":1246},{"type":162,"tag":209,"props":8773,"children":8774},{"style":228},[8775],{"type":168,"value":911},{"type":162,"tag":209,"props":8777,"children":8778},{"style":845},[8779],{"type":168,"value":949},{"type":162,"tag":209,"props":8781,"children":8782},{"style":244},[8783],{"type":168,"value":8784}," fetchData",{"type":162,"tag":209,"props":8786,"children":8787},{"style":302},[8788],{"type":168,"value":928},{"type":162,"tag":209,"props":8790,"children":8791},{"class":211,"line":38},[8792],{"type":162,"tag":209,"props":8793,"children":8794},{"emptyLinePlaceholder":972},[8795],{"type":168,"value":975},{"type":162,"tag":209,"props":8797,"children":8798},{"class":211,"line":986},[8799],{"type":162,"tag":209,"props":8800,"children":8801},{"style":458},[8802],{"type":168,"value":8803},"  \u002F\u002F Send response immediately\n",{"type":162,"tag":209,"props":8805,"children":8806},{"class":211,"line":1029},[8807,8811,8816,8820,8824,8828,8832,8836,8840],{"type":162,"tag":209,"props":8808,"children":8809},{"style":216},[8810],{"type":168,"value":901},{"type":162,"tag":209,"props":8812,"children":8813},{"style":222},[8814],{"type":168,"value":8815}," response",{"type":162,"tag":209,"props":8817,"children":8818},{"style":228},[8819],{"type":168,"value":911},{"type":162,"tag":209,"props":8821,"children":8822},{"style":222},[8823],{"type":168,"value":1440},{"type":162,"tag":209,"props":8825,"children":8826},{"style":228},[8827],{"type":168,"value":241},{"type":162,"tag":209,"props":8829,"children":8830},{"style":244},[8831],{"type":168,"value":962},{"type":162,"tag":209,"props":8833,"children":8834},{"style":302},[8835],{"type":168,"value":294},{"type":162,"tag":209,"props":8837,"children":8838},{"style":222},[8839],{"type":168,"value":1457},{"type":162,"tag":209,"props":8841,"children":8842},{"style":302},[8843],{"type":168,"value":1272},{"type":162,"tag":209,"props":8845,"children":8846},{"class":211,"line":1061},[8847],{"type":162,"tag":209,"props":8848,"children":8849},{"emptyLinePlaceholder":972},[8850],{"type":168,"value":975},{"type":162,"tag":209,"props":8852,"children":8853},{"class":211,"line":1091},[8854],{"type":162,"tag":209,"props":8855,"children":8856},{"style":458},[8857],{"type":168,"value":8858},"  \u002F\u002F Report metrics in background\n",{"type":162,"tag":209,"props":8860,"children":8861},{"class":211,"line":1148},[8862,8867,8871,8876,8881,8885],{"type":162,"tag":209,"props":8863,"children":8864},{"style":244},[8865],{"type":168,"value":8866},"  waitUntil",{"type":162,"tag":209,"props":8868,"children":8869},{"style":302},[8870],{"type":168,"value":294},{"type":162,"tag":209,"props":8872,"children":8873},{"style":216},[8874],{"type":168,"value":8875},"async",{"type":162,"tag":209,"props":8877,"children":8878},{"style":228},[8879],{"type":168,"value":8880}," ()",{"type":162,"tag":209,"props":8882,"children":8883},{"style":216},[8884],{"type":168,"value":2244},{"type":162,"tag":209,"props":8886,"children":8887},{"style":228},[8888],{"type":168,"value":893},{"type":162,"tag":209,"props":8890,"children":8891},{"class":211,"line":1200},[8892,8897,8902,8906,8910,8915,8919,8923,8927,8931,8935,8939,8943,8947,8951],{"type":162,"tag":209,"props":8893,"children":8894},{"style":845},[8895],{"type":168,"value":8896},"    await",{"type":162,"tag":209,"props":8898,"children":8899},{"style":244},[8900],{"type":168,"value":8901}," reportMetric",{"type":162,"tag":209,"props":8903,"children":8904},{"style":302},[8905],{"type":168,"value":294},{"type":162,"tag":209,"props":8907,"children":8908},{"style":228},[8909],{"type":168,"value":1053},{"type":162,"tag":209,"props":8911,"children":8912},{"style":318},[8913],{"type":168,"value":8914},"api_latency",{"type":162,"tag":209,"props":8916,"children":8917},{"style":228},[8918],{"type":168,"value":1053},{"type":162,"tag":209,"props":8920,"children":8921},{"style":228},[8922],{"type":168,"value":331},{"type":162,"tag":209,"props":8924,"children":8925},{"style":222},[8926],{"type":168,"value":236},{"type":162,"tag":209,"props":8928,"children":8929},{"style":228},[8930],{"type":168,"value":241},{"type":162,"tag":209,"props":8932,"children":8933},{"style":244},[8934],{"type":168,"value":247},{"type":162,"tag":209,"props":8936,"children":8937},{"style":302},[8938],{"type":168,"value":596},{"type":162,"tag":209,"props":8940,"children":8941},{"style":228},[8942],{"type":168,"value":601},{"type":162,"tag":209,"props":8944,"children":8945},{"style":222},[8946],{"type":168,"value":906},{"type":162,"tag":209,"props":8948,"children":8949},{"style":228},[8950],{"type":168,"value":331},{"type":162,"tag":209,"props":8952,"children":8953},{"style":228},[8954],{"type":168,"value":893},{"type":162,"tag":209,"props":8956,"children":8957},{"class":211,"line":1214},[8958,8963,8967,8971,8976,8980],{"type":162,"tag":209,"props":8959,"children":8960},{"style":302},[8961],{"type":168,"value":8962},"      route",{"type":162,"tag":209,"props":8964,"children":8965},{"style":228},[8966],{"type":168,"value":310},{"type":162,"tag":209,"props":8968,"children":8969},{"style":228},[8970],{"type":168,"value":1044},{"type":162,"tag":209,"props":8972,"children":8973},{"style":318},[8974],{"type":168,"value":8975},"\u002Fapi\u002Fdata",{"type":162,"tag":209,"props":8977,"children":8978},{"style":228},[8979],{"type":168,"value":1053},{"type":162,"tag":209,"props":8981,"children":8982},{"style":228},[8983],{"type":168,"value":1058},{"type":162,"tag":209,"props":8985,"children":8986},{"class":211,"line":1222},[8987,8992,8996,9000],{"type":162,"tag":209,"props":8988,"children":8989},{"style":302},[8990],{"type":168,"value":8991},"      status",{"type":162,"tag":209,"props":8993,"children":8994},{"style":228},[8995],{"type":168,"value":310},{"type":162,"tag":209,"props":8997,"children":8998},{"style":1781},[8999],{"type":168,"value":7279},{"type":162,"tag":209,"props":9001,"children":9002},{"style":228},[9003],{"type":168,"value":1058},{"type":162,"tag":209,"props":9005,"children":9006},{"class":211,"line":1235},[9007,9011],{"type":162,"tag":209,"props":9008,"children":9009},{"style":228},[9010],{"type":168,"value":1422},{"type":162,"tag":209,"props":9012,"children":9013},{"style":302},[9014],{"type":168,"value":1272},{"type":162,"tag":209,"props":9016,"children":9017},{"class":211,"line":1275},[9018,9022],{"type":162,"tag":209,"props":9019,"children":9020},{"style":228},[9021],{"type":168,"value":1206},{"type":162,"tag":209,"props":9023,"children":9024},{"style":302},[9025],{"type":168,"value":1272},{"type":162,"tag":209,"props":9027,"children":9028},{"class":211,"line":1316},[9029],{"type":162,"tag":209,"props":9030,"children":9031},{"emptyLinePlaceholder":972},[9032],{"type":168,"value":975},{"type":162,"tag":209,"props":9034,"children":9035},{"class":211,"line":1345},[9036,9040],{"type":162,"tag":209,"props":9037,"children":9038},{"style":845},[9039],{"type":168,"value":3338},{"type":162,"tag":209,"props":9041,"children":9042},{"style":222},[9043],{"type":168,"value":9044}," response\n",{"type":162,"tag":209,"props":9046,"children":9047},{"class":211,"line":1375},[9048],{"type":162,"tag":209,"props":9049,"children":9050},{"style":228},[9051],{"type":168,"value":1811},{"type":162,"tag":819,"props":9053,"children":9055},{"id":9054},"error-tracking-pattern",[9056],{"type":168,"value":9057},"Error Tracking Pattern",{"type":162,"tag":197,"props":9059,"children":9061},{"className":199,"code":9060,"language":201,"meta":202,"style":202},"\u002F\u002F lib\u002Ferror-reporting.ts\nexport async function reportError(error: unknown, context: Record\u003Cstring, unknown>) {\n  const payload = {\n    message: error instanceof Error ? error.message : String(error),\n    stack: error instanceof Error ? error.stack : undefined,\n    timestamp: new Date().toISOString(),\n    ...context,\n  }\n\n  \u002F\u002F Log for Vercel's runtime logs\n  console.error(JSON.stringify(payload))\n\n  \u002F\u002F Also send to external service if configured\n  if (process.env.ERROR_WEBHOOK_URL) {\n    await fetch(process.env.ERROR_WEBHOOK_URL, {\n      method: 'POST',\n      headers: { 'Content-Type': 'application\u002Fjson' },\n      body: JSON.stringify(payload),\n    })\n  }\n}\n",[9062],{"type":162,"tag":205,"props":9063,"children":9064},{"__ignoreMap":202},[9065,9073,9155,9175,9238,9288,9329,9346,9353,9360,9368,9412,9419,9427,9467,9510,9539,9589,9629,9640,9647],{"type":162,"tag":209,"props":9066,"children":9067},{"class":211,"line":212},[9068],{"type":162,"tag":209,"props":9069,"children":9070},{"style":458},[9071],{"type":168,"value":9072},"\u002F\u002F lib\u002Ferror-reporting.ts\n",{"type":162,"tag":209,"props":9074,"children":9075},{"class":211,"line":260},[9076,9080,9084,9088,9093,9097,9101,9105,9110,9114,9119,9123,9128,9133,9138,9142,9146,9151],{"type":162,"tag":209,"props":9077,"children":9078},{"style":845},[9079],{"type":168,"value":848},{"type":162,"tag":209,"props":9081,"children":9082},{"style":216},[9083],{"type":168,"value":853},{"type":162,"tag":209,"props":9085,"children":9086},{"style":216},[9087],{"type":168,"value":858},{"type":162,"tag":209,"props":9089,"children":9090},{"style":244},[9091],{"type":168,"value":9092}," reportError",{"type":162,"tag":209,"props":9094,"children":9095},{"style":228},[9096],{"type":168,"value":294},{"type":162,"tag":209,"props":9098,"children":9099},{"style":870},[9100],{"type":168,"value":642},{"type":162,"tag":209,"props":9102,"children":9103},{"style":228},[9104],{"type":168,"value":310},{"type":162,"tag":209,"props":9106,"children":9107},{"style":880},[9108],{"type":168,"value":9109}," unknown",{"type":162,"tag":209,"props":9111,"children":9112},{"style":228},[9113],{"type":168,"value":331},{"type":162,"tag":209,"props":9115,"children":9116},{"style":870},[9117],{"type":168,"value":9118}," context",{"type":162,"tag":209,"props":9120,"children":9121},{"style":228},[9122],{"type":168,"value":310},{"type":162,"tag":209,"props":9124,"children":9125},{"style":880},[9126],{"type":168,"value":9127}," Record",{"type":162,"tag":209,"props":9129,"children":9130},{"style":228},[9131],{"type":168,"value":9132},"\u003C",{"type":162,"tag":209,"props":9134,"children":9135},{"style":880},[9136],{"type":168,"value":9137},"string",{"type":162,"tag":209,"props":9139,"children":9140},{"style":228},[9141],{"type":168,"value":331},{"type":162,"tag":209,"props":9143,"children":9144},{"style":880},[9145],{"type":168,"value":9109},{"type":162,"tag":209,"props":9147,"children":9148},{"style":228},[9149],{"type":168,"value":9150},">)",{"type":162,"tag":209,"props":9152,"children":9153},{"style":228},[9154],{"type":168,"value":893},{"type":162,"tag":209,"props":9156,"children":9157},{"class":211,"line":454},[9158,9162,9167,9171],{"type":162,"tag":209,"props":9159,"children":9160},{"style":216},[9161],{"type":168,"value":901},{"type":162,"tag":209,"props":9163,"children":9164},{"style":222},[9165],{"type":168,"value":9166}," payload",{"type":162,"tag":209,"props":9168,"children":9169},{"style":228},[9170],{"type":168,"value":911},{"type":162,"tag":209,"props":9172,"children":9173},{"style":228},[9174],{"type":168,"value":893},{"type":162,"tag":209,"props":9176,"children":9177},{"class":211,"line":464},[9178,9182,9186,9190,9194,9198,9202,9206,9210,9214,9218,9222,9226,9230,9234],{"type":162,"tag":209,"props":9179,"children":9180},{"style":302},[9181],{"type":168,"value":1067},{"type":162,"tag":209,"props":9183,"children":9184},{"style":228},[9185],{"type":168,"value":310},{"type":162,"tag":209,"props":9187,"children":9188},{"style":222},[9189],{"type":168,"value":740},{"type":162,"tag":209,"props":9191,"children":9192},{"style":228},[9193],{"type":168,"value":1610},{"type":162,"tag":209,"props":9195,"children":9196},{"style":880},[9197],{"type":168,"value":1615},{"type":162,"tag":209,"props":9199,"children":9200},{"style":228},[9201],{"type":168,"value":1620},{"type":162,"tag":209,"props":9203,"children":9204},{"style":222},[9205],{"type":168,"value":740},{"type":162,"tag":209,"props":9207,"children":9208},{"style":228},[9209],{"type":168,"value":241},{"type":162,"tag":209,"props":9211,"children":9212},{"style":222},[9213],{"type":168,"value":758},{"type":162,"tag":209,"props":9215,"children":9216},{"style":228},[9217],{"type":168,"value":1637},{"type":162,"tag":209,"props":9219,"children":9220},{"style":244},[9221],{"type":168,"value":1642},{"type":162,"tag":209,"props":9223,"children":9224},{"style":302},[9225],{"type":168,"value":294},{"type":162,"tag":209,"props":9227,"children":9228},{"style":222},[9229],{"type":168,"value":642},{"type":162,"tag":209,"props":9231,"children":9232},{"style":302},[9233],{"type":168,"value":888},{"type":162,"tag":209,"props":9235,"children":9236},{"style":228},[9237],{"type":168,"value":1058},{"type":162,"tag":209,"props":9239,"children":9240},{"class":211,"line":620},[9241,9246,9250,9254,9258,9262,9266,9270,9274,9279,9283],{"type":162,"tag":209,"props":9242,"children":9243},{"style":302},[9244],{"type":168,"value":9245},"    stack",{"type":162,"tag":209,"props":9247,"children":9248},{"style":228},[9249],{"type":168,"value":310},{"type":162,"tag":209,"props":9251,"children":9252},{"style":222},[9253],{"type":168,"value":740},{"type":162,"tag":209,"props":9255,"children":9256},{"style":228},[9257],{"type":168,"value":1610},{"type":162,"tag":209,"props":9259,"children":9260},{"style":880},[9261],{"type":168,"value":1615},{"type":162,"tag":209,"props":9263,"children":9264},{"style":228},[9265],{"type":168,"value":1620},{"type":162,"tag":209,"props":9267,"children":9268},{"style":222},[9269],{"type":168,"value":740},{"type":162,"tag":209,"props":9271,"children":9272},{"style":228},[9273],{"type":168,"value":241},{"type":162,"tag":209,"props":9275,"children":9276},{"style":222},[9277],{"type":168,"value":9278},"stack",{"type":162,"tag":209,"props":9280,"children":9281},{"style":228},[9282],{"type":168,"value":1637},{"type":162,"tag":209,"props":9284,"children":9285},{"style":228},[9286],{"type":168,"value":9287}," undefined,\n",{"type":162,"tag":209,"props":9289,"children":9290},{"class":211,"line":38},[9291,9296,9300,9304,9308,9312,9316,9321,9325],{"type":162,"tag":209,"props":9292,"children":9293},{"style":302},[9294],{"type":168,"value":9295},"    timestamp",{"type":162,"tag":209,"props":9297,"children":9298},{"style":228},[9299],{"type":168,"value":310},{"type":162,"tag":209,"props":9301,"children":9302},{"style":228},[9303],{"type":168,"value":2201},{"type":162,"tag":209,"props":9305,"children":9306},{"style":244},[9307],{"type":168,"value":236},{"type":162,"tag":209,"props":9309,"children":9310},{"style":302},[9311],{"type":168,"value":252},{"type":162,"tag":209,"props":9313,"children":9314},{"style":228},[9315],{"type":168,"value":241},{"type":162,"tag":209,"props":9317,"children":9318},{"style":244},[9319],{"type":168,"value":9320},"toISOString",{"type":162,"tag":209,"props":9322,"children":9323},{"style":302},[9324],{"type":168,"value":252},{"type":162,"tag":209,"props":9326,"children":9327},{"style":228},[9328],{"type":168,"value":1058},{"type":162,"tag":209,"props":9330,"children":9331},{"class":211,"line":986},[9332,9337,9342],{"type":162,"tag":209,"props":9333,"children":9334},{"style":228},[9335],{"type":168,"value":9336},"    ...",{"type":162,"tag":209,"props":9338,"children":9339},{"style":222},[9340],{"type":168,"value":9341},"context",{"type":162,"tag":209,"props":9343,"children":9344},{"style":228},[9345],{"type":168,"value":1058},{"type":162,"tag":209,"props":9347,"children":9348},{"class":211,"line":1029},[9349],{"type":162,"tag":209,"props":9350,"children":9351},{"style":228},[9352],{"type":168,"value":1802},{"type":162,"tag":209,"props":9354,"children":9355},{"class":211,"line":1061},[9356],{"type":162,"tag":209,"props":9357,"children":9358},{"emptyLinePlaceholder":972},[9359],{"type":168,"value":975},{"type":162,"tag":209,"props":9361,"children":9362},{"class":211,"line":1091},[9363],{"type":162,"tag":209,"props":9364,"children":9365},{"style":458},[9366],{"type":168,"value":9367},"  \u002F\u002F Log for Vercel's runtime logs\n",{"type":162,"tag":209,"props":9369,"children":9370},{"class":211,"line":1148},[9371,9375,9379,9383,9387,9391,9395,9399,9403,9408],{"type":162,"tag":209,"props":9372,"children":9373},{"style":222},[9374],{"type":168,"value":992},{"type":162,"tag":209,"props":9376,"children":9377},{"style":228},[9378],{"type":168,"value":241},{"type":162,"tag":209,"props":9380,"children":9381},{"style":244},[9382],{"type":168,"value":642},{"type":162,"tag":209,"props":9384,"children":9385},{"style":302},[9386],{"type":168,"value":294},{"type":162,"tag":209,"props":9388,"children":9389},{"style":222},[9390],{"type":168,"value":1009},{"type":162,"tag":209,"props":9392,"children":9393},{"style":228},[9394],{"type":168,"value":241},{"type":162,"tag":209,"props":9396,"children":9397},{"style":244},[9398],{"type":168,"value":289},{"type":162,"tag":209,"props":9400,"children":9401},{"style":302},[9402],{"type":168,"value":294},{"type":162,"tag":209,"props":9404,"children":9405},{"style":222},[9406],{"type":168,"value":9407},"payload",{"type":162,"tag":209,"props":9409,"children":9410},{"style":302},[9411],{"type":168,"value":1211},{"type":162,"tag":209,"props":9413,"children":9414},{"class":211,"line":1200},[9415],{"type":162,"tag":209,"props":9416,"children":9417},{"emptyLinePlaceholder":972},[9418],{"type":168,"value":975},{"type":162,"tag":209,"props":9420,"children":9421},{"class":211,"line":1214},[9422],{"type":162,"tag":209,"props":9423,"children":9424},{"style":458},[9425],{"type":168,"value":9426},"  \u002F\u002F Also send to external service if configured\n",{"type":162,"tag":209,"props":9428,"children":9429},{"class":211,"line":1222},[9430,9434,9438,9442,9446,9450,9454,9459,9463],{"type":162,"tag":209,"props":9431,"children":9432},{"style":845},[9433],{"type":168,"value":1868},{"type":162,"tag":209,"props":9435,"children":9436},{"style":302},[9437],{"type":168,"value":1479},{"type":162,"tag":209,"props":9439,"children":9440},{"style":222},[9441],{"type":168,"value":1877},{"type":162,"tag":209,"props":9443,"children":9444},{"style":228},[9445],{"type":168,"value":241},{"type":162,"tag":209,"props":9447,"children":9448},{"style":222},[9449],{"type":168,"value":1886},{"type":162,"tag":209,"props":9451,"children":9452},{"style":228},[9453],{"type":168,"value":241},{"type":162,"tag":209,"props":9455,"children":9456},{"style":222},[9457],{"type":168,"value":9458},"ERROR_WEBHOOK_URL",{"type":162,"tag":209,"props":9460,"children":9461},{"style":302},[9462],{"type":168,"value":437},{"type":162,"tag":209,"props":9464,"children":9465},{"style":228},[9466],{"type":168,"value":1026},{"type":162,"tag":209,"props":9468,"children":9469},{"class":211,"line":1235},[9470,9474,9478,9482,9486,9490,9494,9498,9502,9506],{"type":162,"tag":209,"props":9471,"children":9472},{"style":845},[9473],{"type":168,"value":8896},{"type":162,"tag":209,"props":9475,"children":9476},{"style":244},[9477],{"type":168,"value":2312},{"type":162,"tag":209,"props":9479,"children":9480},{"style":302},[9481],{"type":168,"value":294},{"type":162,"tag":209,"props":9483,"children":9484},{"style":222},[9485],{"type":168,"value":1877},{"type":162,"tag":209,"props":9487,"children":9488},{"style":228},[9489],{"type":168,"value":241},{"type":162,"tag":209,"props":9491,"children":9492},{"style":222},[9493],{"type":168,"value":1886},{"type":162,"tag":209,"props":9495,"children":9496},{"style":228},[9497],{"type":168,"value":241},{"type":162,"tag":209,"props":9499,"children":9500},{"style":222},[9501],{"type":168,"value":9458},{"type":162,"tag":209,"props":9503,"children":9504},{"style":228},[9505],{"type":168,"value":331},{"type":162,"tag":209,"props":9507,"children":9508},{"style":228},[9509],{"type":168,"value":893},{"type":162,"tag":209,"props":9511,"children":9512},{"class":211,"line":1275},[9513,9518,9522,9526,9531,9535],{"type":162,"tag":209,"props":9514,"children":9515},{"style":302},[9516],{"type":168,"value":9517},"      method",{"type":162,"tag":209,"props":9519,"children":9520},{"style":228},[9521],{"type":168,"value":310},{"type":162,"tag":209,"props":9523,"children":9524},{"style":228},[9525],{"type":168,"value":1044},{"type":162,"tag":209,"props":9527,"children":9528},{"style":318},[9529],{"type":168,"value":9530},"POST",{"type":162,"tag":209,"props":9532,"children":9533},{"style":228},[9534],{"type":168,"value":1053},{"type":162,"tag":209,"props":9536,"children":9537},{"style":228},[9538],{"type":168,"value":1058},{"type":162,"tag":209,"props":9540,"children":9541},{"class":211,"line":1316},[9542,9547,9551,9555,9559,9564,9568,9572,9576,9581,9585],{"type":162,"tag":209,"props":9543,"children":9544},{"style":302},[9545],{"type":168,"value":9546},"      headers",{"type":162,"tag":209,"props":9548,"children":9549},{"style":228},[9550],{"type":168,"value":310},{"type":162,"tag":209,"props":9552,"children":9553},{"style":228},[9554],{"type":168,"value":1769},{"type":162,"tag":209,"props":9556,"children":9557},{"style":228},[9558],{"type":168,"value":1044},{"type":162,"tag":209,"props":9560,"children":9561},{"style":302},[9562],{"type":168,"value":9563},"Content-Type",{"type":162,"tag":209,"props":9565,"children":9566},{"style":228},[9567],{"type":168,"value":1053},{"type":162,"tag":209,"props":9569,"children":9570},{"style":228},[9571],{"type":168,"value":310},{"type":162,"tag":209,"props":9573,"children":9574},{"style":228},[9575],{"type":168,"value":1044},{"type":162,"tag":209,"props":9577,"children":9578},{"style":318},[9579],{"type":168,"value":9580},"application\u002Fjson",{"type":162,"tag":209,"props":9582,"children":9583},{"style":228},[9584],{"type":168,"value":1053},{"type":162,"tag":209,"props":9586,"children":9587},{"style":228},[9588],{"type":168,"value":2436},{"type":162,"tag":209,"props":9590,"children":9591},{"class":211,"line":1345},[9592,9597,9601,9605,9609,9613,9617,9621,9625],{"type":162,"tag":209,"props":9593,"children":9594},{"style":302},[9595],{"type":168,"value":9596},"      body",{"type":162,"tag":209,"props":9598,"children":9599},{"style":228},[9600],{"type":168,"value":310},{"type":162,"tag":209,"props":9602,"children":9603},{"style":222},[9604],{"type":168,"value":1163},{"type":162,"tag":209,"props":9606,"children":9607},{"style":228},[9608],{"type":168,"value":241},{"type":162,"tag":209,"props":9610,"children":9611},{"style":244},[9612],{"type":168,"value":289},{"type":162,"tag":209,"props":9614,"children":9615},{"style":302},[9616],{"type":168,"value":294},{"type":162,"tag":209,"props":9618,"children":9619},{"style":222},[9620],{"type":168,"value":9407},{"type":162,"tag":209,"props":9622,"children":9623},{"style":302},[9624],{"type":168,"value":888},{"type":162,"tag":209,"props":9626,"children":9627},{"style":228},[9628],{"type":168,"value":1058},{"type":162,"tag":209,"props":9630,"children":9631},{"class":211,"line":1375},[9632,9636],{"type":162,"tag":209,"props":9633,"children":9634},{"style":228},[9635],{"type":168,"value":1422},{"type":162,"tag":209,"props":9637,"children":9638},{"style":302},[9639],{"type":168,"value":1272},{"type":162,"tag":209,"props":9641,"children":9642},{"class":211,"line":1416},[9643],{"type":162,"tag":209,"props":9644,"children":9645},{"style":228},[9646],{"type":168,"value":1802},{"type":162,"tag":209,"props":9648,"children":9649},{"class":211,"line":1429},[9650],{"type":162,"tag":209,"props":9651,"children":9652},{"style":228},[9653],{"type":168,"value":1811},{"type":162,"tag":185,"props":9655,"children":9657},{"id":9656},"marketplace-observability-integrations",[9658],{"type":168,"value":9659},"Marketplace Observability Integrations",{"type":162,"tag":819,"props":9661,"children":9663},{"id":9662},"sentry-error-performance-monitoring",[9664],{"type":168,"value":9665},"Sentry — Error & Performance Monitoring",{"type":162,"tag":171,"props":9667,"children":9668},{},[9669],{"type":168,"value":9670},"Native Vercel Marketplace integration. Auto-configures source maps and release tracking.",{"type":162,"tag":197,"props":9672,"children":9674},{"className":2031,"code":9673,"language":2033,"meta":202,"style":202},"npx @sentry\u002Fwizard@latest -i nextjs\n# Or install manually:\nnpm install @sentry\u002Fnextjs\n",[9675],{"type":162,"tag":205,"props":9676,"children":9677},{"__ignoreMap":202},[9678,9701,9709],{"type":162,"tag":209,"props":9679,"children":9680},{"class":211,"line":212},[9681,9686,9691,9696],{"type":162,"tag":209,"props":9682,"children":9683},{"style":880},[9684],{"type":168,"value":9685},"npx",{"type":162,"tag":209,"props":9687,"children":9688},{"style":318},[9689],{"type":168,"value":9690}," @sentry\u002Fwizard@latest",{"type":162,"tag":209,"props":9692,"children":9693},{"style":318},[9694],{"type":168,"value":9695}," -i",{"type":162,"tag":209,"props":9697,"children":9698},{"style":318},[9699],{"type":168,"value":9700}," nextjs\n",{"type":162,"tag":209,"props":9702,"children":9703},{"class":211,"line":260},[9704],{"type":162,"tag":209,"props":9705,"children":9706},{"style":458},[9707],{"type":168,"value":9708},"# Or install manually:\n",{"type":162,"tag":209,"props":9710,"children":9711},{"class":211,"line":454},[9712,9716,9720],{"type":162,"tag":209,"props":9713,"children":9714},{"style":880},[9715],{"type":168,"value":3179},{"type":162,"tag":209,"props":9717,"children":9718},{"style":318},[9719],{"type":168,"value":3184},{"type":162,"tag":209,"props":9721,"children":9722},{"style":318},[9723],{"type":168,"value":9724}," @sentry\u002Fnextjs\n",{"type":162,"tag":171,"props":9726,"children":9727},{},[9728,9730,9736,9738,9744,9746,9752,9754,9760,9761,9767],{"type":168,"value":9729},"Sentry wizard creates ",{"type":162,"tag":205,"props":9731,"children":9733},{"className":9732},[],[9734],{"type":168,"value":9735},"sentry.client.config.ts",{"type":168,"value":9737},", ",{"type":162,"tag":205,"props":9739,"children":9741},{"className":9740},[],[9742],{"type":168,"value":9743},"sentry.server.config.ts",{"type":168,"value":9745},", and ",{"type":162,"tag":205,"props":9747,"children":9749},{"className":9748},[],[9750],{"type":168,"value":9751},"sentry.edge.config.ts",{"type":168,"value":9753},". It also wraps ",{"type":162,"tag":205,"props":9755,"children":9757},{"className":9756},[],[9758],{"type":168,"value":9759},"next.config.js",{"type":168,"value":2150},{"type":162,"tag":205,"props":9762,"children":9764},{"className":9763},[],[9765],{"type":168,"value":9766},"withSentryConfig",{"type":168,"value":241},{"type":162,"tag":171,"props":9769,"children":9770},{},[9771,9773],{"type":168,"value":9772},"Install via Marketplace: ",{"type":162,"tag":205,"props":9774,"children":9776},{"className":9775},[],[9777],{"type":168,"value":9778},"vercel integration add sentry",{"type":162,"tag":819,"props":9780,"children":9782},{"id":9781},"datadog-full-stack-monitoring",[9783],{"type":168,"value":9784},"Datadog — Full-Stack Monitoring",{"type":162,"tag":171,"props":9786,"children":9787},{},[9788],{"type":168,"value":9789},"APM, logs, and Real User Monitoring (RUM). Auto-configures log drain on Marketplace install.",{"type":162,"tag":197,"props":9791,"children":9793},{"className":2031,"code":9792,"language":2033,"meta":202,"style":202},"npm install @datadog\u002Fbrowser-rum\n",[9794],{"type":162,"tag":205,"props":9795,"children":9796},{"__ignoreMap":202},[9797],{"type":162,"tag":209,"props":9798,"children":9799},{"class":211,"line":212},[9800,9804,9808],{"type":162,"tag":209,"props":9801,"children":9802},{"style":880},[9803],{"type":168,"value":3179},{"type":162,"tag":209,"props":9805,"children":9806},{"style":318},[9807],{"type":168,"value":3184},{"type":162,"tag":209,"props":9809,"children":9810},{"style":318},[9811],{"type":168,"value":9812}," @datadog\u002Fbrowser-rum\n",{"type":162,"tag":197,"props":9814,"children":9816},{"className":199,"code":9815,"language":201,"meta":202,"style":202},"import { datadogRum } from '@datadog\u002Fbrowser-rum'\n\ndatadogRum.init({\n  applicationId: process.env.NEXT_PUBLIC_DD_APPLICATION_ID!,\n  clientToken: process.env.NEXT_PUBLIC_DD_CLIENT_TOKEN!,\n  site: 'datadoghq.com',\n  service: 'my-app',\n  sessionSampleRate: 100,\n  trackResources: true,\n  trackLongTasks: true,\n})\n",[9817],{"type":162,"tag":205,"props":9818,"children":9819},{"__ignoreMap":202},[9820,9857,9864,9889,9927,9964,9993,10022,10043,10063,10083],{"type":162,"tag":209,"props":9821,"children":9822},{"class":211,"line":212},[9823,9827,9831,9836,9840,9844,9848,9853],{"type":162,"tag":209,"props":9824,"children":9825},{"style":845},[9826],{"type":168,"value":3220},{"type":162,"tag":209,"props":9828,"children":9829},{"style":228},[9830],{"type":168,"value":1769},{"type":162,"tag":209,"props":9832,"children":9833},{"style":222},[9834],{"type":168,"value":9835}," datadogRum",{"type":162,"tag":209,"props":9837,"children":9838},{"style":228},[9839],{"type":168,"value":1789},{"type":162,"tag":209,"props":9841,"children":9842},{"style":845},[9843],{"type":168,"value":3238},{"type":162,"tag":209,"props":9845,"children":9846},{"style":228},[9847],{"type":168,"value":1044},{"type":162,"tag":209,"props":9849,"children":9850},{"style":318},[9851],{"type":168,"value":9852},"@datadog\u002Fbrowser-rum",{"type":162,"tag":209,"props":9854,"children":9855},{"style":228},[9856],{"type":168,"value":3252},{"type":162,"tag":209,"props":9858,"children":9859},{"class":211,"line":260},[9860],{"type":162,"tag":209,"props":9861,"children":9862},{"emptyLinePlaceholder":972},[9863],{"type":168,"value":975},{"type":162,"tag":209,"props":9865,"children":9866},{"class":211,"line":454},[9867,9872,9876,9881,9885],{"type":162,"tag":209,"props":9868,"children":9869},{"style":222},[9870],{"type":168,"value":9871},"datadogRum",{"type":162,"tag":209,"props":9873,"children":9874},{"style":228},[9875],{"type":168,"value":241},{"type":162,"tag":209,"props":9877,"children":9878},{"style":244},[9879],{"type":168,"value":9880},"init",{"type":162,"tag":209,"props":9882,"children":9883},{"style":222},[9884],{"type":168,"value":294},{"type":162,"tag":209,"props":9886,"children":9887},{"style":228},[9888],{"type":168,"value":1026},{"type":162,"tag":209,"props":9890,"children":9891},{"class":211,"line":464},[9892,9897,9901,9905,9909,9913,9917,9922],{"type":162,"tag":209,"props":9893,"children":9894},{"style":302},[9895],{"type":168,"value":9896},"  applicationId",{"type":162,"tag":209,"props":9898,"children":9899},{"style":228},[9900],{"type":168,"value":310},{"type":162,"tag":209,"props":9902,"children":9903},{"style":222},[9904],{"type":168,"value":7007},{"type":162,"tag":209,"props":9906,"children":9907},{"style":228},[9908],{"type":168,"value":241},{"type":162,"tag":209,"props":9910,"children":9911},{"style":222},[9912],{"type":168,"value":1886},{"type":162,"tag":209,"props":9914,"children":9915},{"style":228},[9916],{"type":168,"value":241},{"type":162,"tag":209,"props":9918,"children":9919},{"style":222},[9920],{"type":168,"value":9921},"NEXT_PUBLIC_DD_APPLICATION_ID",{"type":162,"tag":209,"props":9923,"children":9924},{"style":228},[9925],{"type":168,"value":9926},"!,\n",{"type":162,"tag":209,"props":9928,"children":9929},{"class":211,"line":620},[9930,9935,9939,9943,9947,9951,9955,9960],{"type":162,"tag":209,"props":9931,"children":9932},{"style":302},[9933],{"type":168,"value":9934},"  clientToken",{"type":162,"tag":209,"props":9936,"children":9937},{"style":228},[9938],{"type":168,"value":310},{"type":162,"tag":209,"props":9940,"children":9941},{"style":222},[9942],{"type":168,"value":7007},{"type":162,"tag":209,"props":9944,"children":9945},{"style":228},[9946],{"type":168,"value":241},{"type":162,"tag":209,"props":9948,"children":9949},{"style":222},[9950],{"type":168,"value":1886},{"type":162,"tag":209,"props":9952,"children":9953},{"style":228},[9954],{"type":168,"value":241},{"type":162,"tag":209,"props":9956,"children":9957},{"style":222},[9958],{"type":168,"value":9959},"NEXT_PUBLIC_DD_CLIENT_TOKEN",{"type":162,"tag":209,"props":9961,"children":9962},{"style":228},[9963],{"type":168,"value":9926},{"type":162,"tag":209,"props":9965,"children":9966},{"class":211,"line":38},[9967,9972,9976,9980,9985,9989],{"type":162,"tag":209,"props":9968,"children":9969},{"style":302},[9970],{"type":168,"value":9971},"  site",{"type":162,"tag":209,"props":9973,"children":9974},{"style":228},[9975],{"type":168,"value":310},{"type":162,"tag":209,"props":9977,"children":9978},{"style":228},[9979],{"type":168,"value":1044},{"type":162,"tag":209,"props":9981,"children":9982},{"style":318},[9983],{"type":168,"value":9984},"datadoghq.com",{"type":162,"tag":209,"props":9986,"children":9987},{"style":228},[9988],{"type":168,"value":1053},{"type":162,"tag":209,"props":9990,"children":9991},{"style":228},[9992],{"type":168,"value":1058},{"type":162,"tag":209,"props":9994,"children":9995},{"class":211,"line":986},[9996,10001,10005,10009,10014,10018],{"type":162,"tag":209,"props":9997,"children":9998},{"style":302},[9999],{"type":168,"value":10000},"  service",{"type":162,"tag":209,"props":10002,"children":10003},{"style":228},[10004],{"type":168,"value":310},{"type":162,"tag":209,"props":10006,"children":10007},{"style":228},[10008],{"type":168,"value":1044},{"type":162,"tag":209,"props":10010,"children":10011},{"style":318},[10012],{"type":168,"value":10013},"my-app",{"type":162,"tag":209,"props":10015,"children":10016},{"style":228},[10017],{"type":168,"value":1053},{"type":162,"tag":209,"props":10019,"children":10020},{"style":228},[10021],{"type":168,"value":1058},{"type":162,"tag":209,"props":10023,"children":10024},{"class":211,"line":1029},[10025,10030,10034,10039],{"type":162,"tag":209,"props":10026,"children":10027},{"style":302},[10028],{"type":168,"value":10029},"  sessionSampleRate",{"type":162,"tag":209,"props":10031,"children":10032},{"style":228},[10033],{"type":168,"value":310},{"type":162,"tag":209,"props":10035,"children":10036},{"style":1781},[10037],{"type":168,"value":10038}," 100",{"type":162,"tag":209,"props":10040,"children":10041},{"style":228},[10042],{"type":168,"value":1058},{"type":162,"tag":209,"props":10044,"children":10045},{"class":211,"line":1061},[10046,10051,10055,10059],{"type":162,"tag":209,"props":10047,"children":10048},{"style":302},[10049],{"type":168,"value":10050},"  trackResources",{"type":162,"tag":209,"props":10052,"children":10053},{"style":228},[10054],{"type":168,"value":310},{"type":162,"tag":209,"props":10056,"children":10057},{"style":2615},[10058],{"type":168,"value":2764},{"type":162,"tag":209,"props":10060,"children":10061},{"style":228},[10062],{"type":168,"value":1058},{"type":162,"tag":209,"props":10064,"children":10065},{"class":211,"line":1091},[10066,10071,10075,10079],{"type":162,"tag":209,"props":10067,"children":10068},{"style":302},[10069],{"type":168,"value":10070},"  trackLongTasks",{"type":162,"tag":209,"props":10072,"children":10073},{"style":228},[10074],{"type":168,"value":310},{"type":162,"tag":209,"props":10076,"children":10077},{"style":2615},[10078],{"type":168,"value":2764},{"type":162,"tag":209,"props":10080,"children":10081},{"style":228},[10082],{"type":168,"value":1058},{"type":162,"tag":209,"props":10084,"children":10085},{"class":211,"line":1148},[10086,10090],{"type":162,"tag":209,"props":10087,"children":10088},{"style":228},[10089],{"type":168,"value":442},{"type":162,"tag":209,"props":10091,"children":10092},{"style":222},[10093],{"type":168,"value":1272},{"type":162,"tag":171,"props":10095,"children":10096},{},[10097,10098],{"type":168,"value":9772},{"type":162,"tag":205,"props":10099,"children":10101},{"className":10100},[],[10102],{"type":168,"value":10103},"vercel integration add datadog",{"type":162,"tag":819,"props":10105,"children":10107},{"id":10106},"checkly-synthetic-monitoring-testing",[10108],{"type":168,"value":10109},"Checkly — Synthetic Monitoring & Testing",{"type":162,"tag":171,"props":10111,"children":10112},{},[10113],{"type":168,"value":10114},"API and browser checks that run continuously against your deployments.",{"type":162,"tag":197,"props":10116,"children":10118},{"className":2031,"code":10117,"language":2033,"meta":202,"style":202},"npm install -D checkly\nnpx checkly init\n",[10119],{"type":162,"tag":205,"props":10120,"children":10121},{"__ignoreMap":202},[10122,10143],{"type":162,"tag":209,"props":10123,"children":10124},{"class":211,"line":212},[10125,10129,10133,10138],{"type":162,"tag":209,"props":10126,"children":10127},{"style":880},[10128],{"type":168,"value":3179},{"type":162,"tag":209,"props":10130,"children":10131},{"style":318},[10132],{"type":168,"value":3184},{"type":162,"tag":209,"props":10134,"children":10135},{"style":318},[10136],{"type":168,"value":10137}," -D",{"type":162,"tag":209,"props":10139,"children":10140},{"style":318},[10141],{"type":168,"value":10142}," checkly\n",{"type":162,"tag":209,"props":10144,"children":10145},{"class":211,"line":260},[10146,10150,10155],{"type":162,"tag":209,"props":10147,"children":10148},{"style":880},[10149],{"type":168,"value":9685},{"type":162,"tag":209,"props":10151,"children":10152},{"style":318},[10153],{"type":168,"value":10154}," checkly",{"type":162,"tag":209,"props":10156,"children":10157},{"style":318},[10158],{"type":168,"value":10159}," init\n",{"type":162,"tag":171,"props":10161,"children":10162},{},[10163],{"type":168,"value":10164},"Checkly integrates with Vercel deployment events to trigger checks on every deploy.",{"type":162,"tag":171,"props":10166,"children":10167},{},[10168,10169],{"type":168,"value":9772},{"type":162,"tag":205,"props":10170,"children":10172},{"className":10171},[],[10173],{"type":168,"value":10174},"vercel integration add checkly",{"type":162,"tag":819,"props":10176,"children":10178},{"id":10177},"new-relic-application-performance-monitoring",[10179],{"type":168,"value":10180},"New Relic — Application Performance Monitoring",{"type":162,"tag":171,"props":10182,"children":10183},{},[10184],{"type":168,"value":10185},"Full-stack observability with distributed tracing and alerting.",{"type":162,"tag":197,"props":10187,"children":10189},{"className":2031,"code":10188,"language":2033,"meta":202,"style":202},"npm install newrelic\n",[10190],{"type":162,"tag":205,"props":10191,"children":10192},{"__ignoreMap":202},[10193],{"type":162,"tag":209,"props":10194,"children":10195},{"class":211,"line":212},[10196,10200,10204],{"type":162,"tag":209,"props":10197,"children":10198},{"style":880},[10199],{"type":168,"value":3179},{"type":162,"tag":209,"props":10201,"children":10202},{"style":318},[10203],{"type":168,"value":3184},{"type":162,"tag":209,"props":10205,"children":10206},{"style":318},[10207],{"type":168,"value":10208}," newrelic\n",{"type":162,"tag":171,"props":10210,"children":10211},{},[10212,10214,10220,10222],{"type":168,"value":10213},"Requires a ",{"type":162,"tag":205,"props":10215,"children":10217},{"className":10216},[],[10218],{"type":168,"value":10219},"newrelic.js",{"type":168,"value":10221}," config file at the project root. Install via Marketplace: ",{"type":162,"tag":205,"props":10223,"children":10225},{"className":10224},[],[10226],{"type":168,"value":10227},"vercel integration add newrelic",{"type":162,"tag":185,"props":10229,"children":10231},{"id":10230},"decision-matrix",[10232],{"type":168,"value":10233},"Decision Matrix",{"type":162,"tag":4377,"props":10235,"children":10236},{},[10237,10257],{"type":162,"tag":4381,"props":10238,"children":10239},{},[10240],{"type":162,"tag":4385,"props":10241,"children":10242},{},[10243,10247,10252],{"type":162,"tag":4389,"props":10244,"children":10245},{},[10246],{"type":168,"value":7515},{"type":162,"tag":4389,"props":10248,"children":10249},{},[10250],{"type":168,"value":10251},"Use",{"type":162,"tag":4389,"props":10253,"children":10254},{},[10255],{"type":168,"value":10256},"Why",{"type":162,"tag":4405,"props":10258,"children":10259},{},[10260,10277,10295,10312,10346,10364,10382,10400,10423,10444],{"type":162,"tag":4385,"props":10261,"children":10262},{},[10263,10268,10272],{"type":162,"tag":4412,"props":10264,"children":10265},{},[10266],{"type":168,"value":10267},"Page views, traffic sources",{"type":162,"tag":4412,"props":10269,"children":10270},{},[10271],{"type":168,"value":3153},{"type":162,"tag":4412,"props":10273,"children":10274},{},[10275],{"type":168,"value":10276},"First-party, privacy-friendly",{"type":162,"tag":4385,"props":10278,"children":10279},{},[10280,10285,10290],{"type":162,"tag":4412,"props":10281,"children":10282},{},[10283],{"type":168,"value":10284},"Business event tracking",{"type":162,"tag":4412,"props":10286,"children":10287},{},[10288],{"type":168,"value":10289},"Web Analytics custom events",{"type":162,"tag":4412,"props":10291,"children":10292},{},[10293],{"type":168,"value":10294},"Track conversions, feature usage",{"type":162,"tag":4385,"props":10296,"children":10297},{},[10298,10303,10307],{"type":162,"tag":4412,"props":10299,"children":10300},{},[10301],{"type":168,"value":10302},"Core Web Vitals monitoring",{"type":162,"tag":4412,"props":10304,"children":10305},{},[10306],{"type":168,"value":4094},{"type":162,"tag":4412,"props":10308,"children":10309},{},[10310],{"type":168,"value":10311},"Real user data per route",{"type":162,"tag":4385,"props":10313,"children":10314},{},[10315,10320,10341],{"type":162,"tag":4412,"props":10316,"children":10317},{},[10318],{"type":168,"value":10319},"Function debugging",{"type":162,"tag":4412,"props":10321,"children":10322},{},[10323,10325,10331,10333,10339],{"type":168,"value":10324},"Runtime Logs (CLI ",{"type":162,"tag":205,"props":10326,"children":10328},{"className":10327},[],[10329],{"type":168,"value":10330},"vercel logs",{"type":168,"value":10332}," \u002F Dashboard (",{"type":162,"tag":205,"props":10334,"children":10336},{"className":10335},[],[10337],{"type":168,"value":10338},"https:\u002F\u002Fvercel.com\u002F{team}\u002F{project}\u002Flogs",{"type":168,"value":10340},") \u002F REST)",{"type":162,"tag":4412,"props":10342,"children":10343},{},[10344],{"type":168,"value":10345},"Real-time, per-invocation logs",{"type":162,"tag":4385,"props":10347,"children":10348},{},[10349,10354,10359],{"type":162,"tag":4412,"props":10350,"children":10351},{},[10352],{"type":168,"value":10353},"Export logs to external platform",{"type":162,"tag":4412,"props":10355,"children":10356},{},[10357],{"type":168,"value":10358},"Drains (JSON\u002FNDJSON\u002FSyslog)",{"type":162,"tag":4412,"props":10360,"children":10361},{},[10362],{"type":168,"value":10363},"Centralize observability (Pro+)",{"type":162,"tag":4385,"props":10365,"children":10366},{},[10367,10372,10377],{"type":162,"tag":4412,"props":10368,"children":10369},{},[10370],{"type":168,"value":10371},"Export analytics data",{"type":162,"tag":4412,"props":10373,"children":10374},{},[10375],{"type":168,"value":10376},"Drains (Web Analytics type)",{"type":162,"tag":4412,"props":10378,"children":10379},{},[10380],{"type":168,"value":10381},"Warehouse pageviews + custom events (Pro+)",{"type":162,"tag":4385,"props":10383,"children":10384},{},[10385,10390,10395],{"type":162,"tag":4412,"props":10386,"children":10387},{},[10388],{"type":168,"value":10389},"OpenTelemetry traces",{"type":162,"tag":4412,"props":10391,"children":10392},{},[10393],{"type":168,"value":10394},"Drains (OTel-compatible endpoint)",{"type":162,"tag":4412,"props":10396,"children":10397},{},[10398],{"type":168,"value":10399},"Standards-based distributed tracing (Pro+)",{"type":162,"tag":4385,"props":10401,"children":10402},{},[10403,10408,10418],{"type":162,"tag":4412,"props":10404,"children":10405},{},[10406],{"type":168,"value":10407},"Post-response telemetry",{"type":162,"tag":4412,"props":10409,"children":10410},{},[10411,10416],{"type":162,"tag":205,"props":10412,"children":10414},{"className":10413},[],[10415],{"type":168,"value":8629},{"type":168,"value":10417}," + custom reporting",{"type":162,"tag":4412,"props":10419,"children":10420},{},[10421],{"type":168,"value":10422},"Non-blocking metrics",{"type":162,"tag":4385,"props":10424,"children":10425},{},[10426,10431,10439],{"type":162,"tag":4412,"props":10427,"children":10428},{},[10429],{"type":168,"value":10430},"Server-side event tracking",{"type":162,"tag":4412,"props":10432,"children":10433},{},[10434],{"type":162,"tag":205,"props":10435,"children":10437},{"className":10436},[],[10438],{"type":168,"value":3803},{"type":162,"tag":4412,"props":10440,"children":10441},{},[10442],{"type":168,"value":10443},"Track API-triggered events",{"type":162,"tag":4385,"props":10445,"children":10446},{},[10447,10452,10470],{"type":162,"tag":4412,"props":10448,"children":10449},{},[10450],{"type":168,"value":10451},"Hobby plan log access",{"type":162,"tag":4412,"props":10453,"children":10454},{},[10455,10457,10462,10464,10469],{"type":168,"value":10456},"CLI ",{"type":162,"tag":205,"props":10458,"children":10460},{"className":10459},[],[10461],{"type":168,"value":10330},{"type":168,"value":10463}," + Dashboard (",{"type":162,"tag":205,"props":10465,"children":10467},{"className":10466},[],[10468],{"type":168,"value":10338},{"type":168,"value":888},{"type":162,"tag":4412,"props":10471,"children":10472},{},[10473],{"type":168,"value":10474},"No drains needed",{"type":162,"tag":185,"props":10476,"children":10478},{"id":10477},"cross-references",[10479],{"type":168,"value":10480},"Cross-References",{"type":162,"tag":7734,"props":10482,"children":10483},{},[10484,10500,10537],{"type":162,"tag":4799,"props":10485,"children":10486},{},[10487,10492,10493,10498],{"type":162,"tag":177,"props":10488,"children":10489},{},[10490],{"type":168,"value":10491},"Drains REST API & runtime logs endpoint",{"type":168,"value":7332},{"type":162,"tag":205,"props":10494,"children":10496},{"className":10495},[],[10497],{"type":168,"value":3146},{"type":168,"value":10499}," (Observability APIs section)",{"type":162,"tag":4799,"props":10501,"children":10502},{},[10503,10529,10530,10535],{"type":162,"tag":177,"props":10504,"children":10505},{},[10506,10508,10514,10515,10521,10522,10528],{"type":168,"value":10507},"CLI log streaming (",{"type":162,"tag":205,"props":10509,"children":10511},{"className":10510},[],[10512],{"type":168,"value":10513},"--follow",{"type":168,"value":9737},{"type":162,"tag":205,"props":10516,"children":10518},{"className":10517},[],[10519],{"type":168,"value":10520},"--since",{"type":168,"value":9737},{"type":162,"tag":205,"props":10523,"children":10525},{"className":10524},[],[10526],{"type":168,"value":10527},"--level",{"type":168,"value":888},{"type":168,"value":7332},{"type":162,"tag":205,"props":10531,"children":10533},{"className":10532},[],[10534],{"type":168,"value":7587},{"type":168,"value":10536}," (Logs & Inspection section)",{"type":162,"tag":4799,"props":10538,"children":10539},{},[10540,10545,10546],{"type":162,"tag":177,"props":10541,"children":10542},{},[10543],{"type":168,"value":10544},"Marketplace vendor integrations",{"type":168,"value":7332},{"type":162,"tag":205,"props":10547,"children":10549},{"className":10548},[],[10550],{"type":168,"value":10551},"⤳ skill: marketplace",{"type":162,"tag":185,"props":10553,"children":10555},{"id":10554},"official-documentation",[10556],{"type":168,"value":10557},"Official Documentation",{"type":162,"tag":7734,"props":10559,"children":10560},{},[10561,10572,10581,10590,10600,10610,10620,10629,10638,10648],{"type":162,"tag":4799,"props":10562,"children":10563},{},[10564],{"type":162,"tag":4542,"props":10565,"children":10569},{"href":10566,"rel":10567},"https:\u002F\u002Fvercel.com\u002Fdocs\u002Fanalytics",[10568],"nofollow",[10570],{"type":168,"value":10571},"Vercel Analytics",{"type":162,"tag":4799,"props":10573,"children":10574},{},[10575],{"type":162,"tag":4542,"props":10576,"children":10579},{"href":10577,"rel":10578},"https:\u002F\u002Fvercel.com\u002Fdocs\u002Fspeed-insights",[10568],[10580],{"type":168,"value":4094},{"type":162,"tag":4799,"props":10582,"children":10583},{},[10584],{"type":162,"tag":4542,"props":10585,"children":10588},{"href":10586,"rel":10587},"https:\u002F\u002Fvercel.com\u002Fdocs\u002Flogs\u002Fruntime",[10568],[10589],{"type":168,"value":812},{"type":162,"tag":4799,"props":10591,"children":10592},{},[10593],{"type":162,"tag":4542,"props":10594,"children":10597},{"href":10595,"rel":10596},"https:\u002F\u002Fvercel.com\u002Fdocs\u002Fdrains",[10568],[10598],{"type":168,"value":10599},"Drains Overview",{"type":162,"tag":4799,"props":10601,"children":10602},{},[10603],{"type":162,"tag":4542,"props":10604,"children":10607},{"href":10605,"rel":10606},"https:\u002F\u002Fvercel.com\u002Fdocs\u002Frest-api\u002Freference\u002Fendpoints\u002Fdrains\u002Fretrieve-a-list-of-all-drains",[10568],[10608],{"type":168,"value":10609},"Drains REST API",{"type":162,"tag":4799,"props":10611,"children":10612},{},[10613],{"type":162,"tag":4542,"props":10614,"children":10617},{"href":10615,"rel":10616},"https:\u002F\u002Fvercel.com\u002Fdocs\u002Fdrains\u002Fsecurity",[10568],[10618],{"type":168,"value":10619},"Drains Security",{"type":162,"tag":4799,"props":10621,"children":10622},{},[10623],{"type":162,"tag":4542,"props":10624,"children":10627},{"href":10625,"rel":10626},"https:\u002F\u002Fvercel.com\u002Fdocs\u002Fdrains\u002Freference\u002Fanalytics",[10568],[10628],{"type":168,"value":5405},{"type":162,"tag":4799,"props":10630,"children":10631},{},[10632],{"type":162,"tag":4542,"props":10633,"children":10636},{"href":10634,"rel":10635},"https:\u002F\u002Fvercel.com\u002Fdocs\u002Fquery\u002Fmonitoring",[10568],[10637],{"type":168,"value":19},{"type":162,"tag":4799,"props":10639,"children":10640},{},[10641],{"type":162,"tag":4542,"props":10642,"children":10645},{"href":10643,"rel":10644},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@vercel\u002Fanalytics",[10568],[10646],{"type":168,"value":10647},"@vercel\u002Fanalytics npm",{"type":162,"tag":4799,"props":10649,"children":10650},{},[10651],{"type":162,"tag":4542,"props":10652,"children":10655},{"href":10653,"rel":10654},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@vercel\u002Fspeed-insights",[10568],[10656],{"type":168,"value":10657},"@vercel\u002Fspeed-insights npm",{"type":162,"tag":10659,"props":10660,"children":10661},"style",{},[10662],{"type":168,"value":10663},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":10665,"total":10784},[10666,10685,10701,10713,10733,10753,10772],{"slug":10667,"name":10667,"fn":10668,"description":10669,"org":10670,"tags":10671,"stars":24,"repoUrl":25,"updatedAt":10684},"accessibility-and-inclusive-visualization","make data visualizations accessible","Make data visualizations accessible and inclusive. Use when the user needs chart or diagram accessibility guidance, text alternatives for complex visuals, color and contrast review, keyboard support, reduced-motion behavior for animation or parallax, or an accessibility QA workflow for exported figures, UML-like diagrams, and dashboards.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[10672,10675,10678,10681],{"name":10673,"slug":10674,"type":14},"Accessibility","accessibility",{"name":10676,"slug":10677,"type":14},"Charts","charts",{"name":10679,"slug":10680,"type":14},"Data Visualization","data-visualization",{"name":10682,"slug":10683,"type":14},"Design","design","2026-06-30T19:00:57.102",{"slug":10686,"name":10686,"fn":10687,"description":10688,"org":10689,"tags":10690,"stars":24,"repoUrl":25,"updatedAt":10700},"agent-browser","automate browser interactions for agents","Browser automation CLI for AI agents. Use when the user needs to interact with websites, verify dev server output, test web apps, navigate pages, fill forms, click buttons, take screenshots, extract data, or automate any browser task. Also triggers when a dev server starts so you can verify it visually.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[10691,10694,10697],{"name":10692,"slug":10693,"type":14},"Agents","agents",{"name":10695,"slug":10696,"type":14},"Browser Automation","browser-automation",{"name":10698,"slug":10699,"type":14},"Testing","testing","2026-04-06T18:41:03.44016",{"slug":10702,"name":10702,"fn":10703,"description":10704,"org":10705,"tags":10706,"stars":24,"repoUrl":25,"updatedAt":10712},"agent-browser-verify","verify dev server output with automated browser","Automated browser verification for dev servers. Triggers when a dev server starts to run a visual gut-check with agent-browser — verifies the page loads, checks for console errors, validates key UI elements, and reports pass\u002Ffail before continuing.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[10707,10708,10711],{"name":10695,"slug":10696,"type":14},{"name":10709,"slug":10710,"type":14},"Local Development","local-development",{"name":10698,"slug":10699,"type":14},"2026-04-06T18:41:17.526867",{"slug":10714,"name":10714,"fn":10715,"description":10716,"org":10717,"tags":10718,"stars":24,"repoUrl":25,"updatedAt":10732},"agents-sdk","build AI agents on Cloudflare Workers","Build AI agents on Cloudflare Workers using the Agents SDK. Load when creating stateful agents, durable workflows, real-time WebSocket apps, scheduled tasks, MCP servers, or chat applications. Covers Agent class, state management, callable RPC, Workflows integration, and React hooks. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[10719,10720,10723,10726,10729],{"name":10692,"slug":10693,"type":14},{"name":10721,"slug":10722,"type":14},"Cloudflare Workers","cloudflare-workers",{"name":10724,"slug":10725,"type":14},"SDK","sdk",{"name":10727,"slug":10728,"type":14},"Serverless","serverless",{"name":10730,"slug":10731,"type":14},"WebSockets","websockets","2026-04-06T18:39:51.717063",{"slug":10734,"name":10734,"fn":10735,"description":10736,"org":10737,"tags":10738,"stars":24,"repoUrl":25,"updatedAt":10752},"ai-elements","build chat UIs with AI Elements","AI Elements component library guidance — pre-built React components for AI interfaces built on shadcn\u002Fui. Use when building chat UIs, message displays, tool call rendering, streaming responses, reasoning panels, or any AI-native interface with the AI SDK.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[10739,10742,10745,10748,10751],{"name":10740,"slug":10741,"type":14},"Frontend","frontend",{"name":10743,"slug":10744,"type":14},"React","react",{"name":10746,"slug":10747,"type":14},"shadcn\u002Fui","shadcn-ui",{"name":10749,"slug":10750,"type":14},"UI Components","ui-components",{"name":16,"slug":17,"type":14},"2026-04-06T18:40:59.619419",{"slug":10754,"name":10754,"fn":10755,"description":10756,"org":10757,"tags":10758,"stars":24,"repoUrl":25,"updatedAt":10771},"ai-gateway","configure Vercel AI Gateway","Vercel AI Gateway expert guidance. Use when configuring model routing, provider failover, cost tracking, or managing multiple AI providers through a unified API.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[10759,10762,10765,10768,10770],{"name":10760,"slug":10761,"type":14},"AI Infrastructure","ai-infrastructure",{"name":10763,"slug":10764,"type":14},"Cost Optimization","cost-optimization",{"name":10766,"slug":10767,"type":14},"LLM","llm",{"name":10769,"slug":139,"type":14},"Performance",{"name":16,"slug":17,"type":14},"2026-04-06T18:40:44.377464",{"slug":10773,"name":10773,"fn":10774,"description":10775,"org":10776,"tags":10777,"stars":24,"repoUrl":25,"updatedAt":10783},"ai-generation-persistence","implement persistence patterns for AI generations","AI generation persistence patterns — unique IDs, addressable URLs, database storage, and cost tracking for every LLM generation",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[10778,10779,10782],{"name":10763,"slug":10764,"type":14},{"name":10780,"slug":10781,"type":14},"Database","database",{"name":10766,"slug":10767,"type":14},"2026-04-06T18:41:08.513425",600,{"items":10786,"total":10982},[10787,10808,10831,10848,10863,10880,10899,10911,10925,10939,10951,10966],{"slug":10788,"name":10788,"fn":10789,"description":10790,"org":10791,"tags":10792,"stars":10805,"repoUrl":10806,"updatedAt":10807},"prior-auth-packet-builder","build healthcare prior authorization packets","Build a concise prior authorization packet from local case files and payer policy docs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[10793,10796,10799,10802],{"name":10794,"slug":10795,"type":14},"Documents","documents",{"name":10797,"slug":10798,"type":14},"Healthcare","healthcare",{"name":10800,"slug":10801,"type":14},"Insurance","insurance",{"name":10803,"slug":10804,"type":14},"Regulatory Compliance","regulatory-compliance",28169,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fopenai-agents-python","2026-04-16T05:11:39.180399",{"slug":10809,"name":10809,"fn":10810,"description":10811,"org":10812,"tags":10813,"stars":10828,"repoUrl":10829,"updatedAt":10830},"aspnet-core","build ASP.NET Core web applications","Build, review, refactor, or architect ASP.NET Core web applications using current official guidance for .NET web development. Use when working on Blazor Web Apps, Razor Pages, MVC, Minimal APIs, controller-based Web APIs, SignalR, gRPC, middleware, dependency injection, configuration, authentication, authorization, testing, performance, deployment, or ASP.NET Core upgrades.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[10814,10817,10819,10822,10825],{"name":10815,"slug":10816,"type":14},".NET","dotnet",{"name":10818,"slug":10809,"type":14},"ASP.NET Core",{"name":10820,"slug":10821,"type":14},"Blazor","blazor",{"name":10823,"slug":10824,"type":14},"C#","csharp",{"name":10826,"slug":10827,"type":14},"Web Development","web-development",23787,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fskills","2026-04-12T05:07:02.819491",{"slug":10832,"name":10832,"fn":10833,"description":10834,"org":10835,"tags":10836,"stars":10828,"repoUrl":10829,"updatedAt":10847},"chatgpt-apps","build ChatGPT Apps SDK applications","Build, scaffold, refactor, and troubleshoot ChatGPT Apps SDK applications that combine an MCP server and widget UI. Use when Codex needs to design tools, register UI resources, wire the MCP Apps bridge or ChatGPT compatibility APIs, apply Apps SDK metadata or CSP or domain settings, or produce a docs-aligned project scaffold. Prefer a docs-first workflow by invoking the openai-docs skill or OpenAI developer docs MCP tools before generating code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[10837,10840,10843,10846],{"name":10838,"slug":10839,"type":14},"Apps SDK","apps-sdk",{"name":10841,"slug":10842,"type":14},"ChatGPT","chatgpt",{"name":10844,"slug":10845,"type":14},"MCP","mcp",{"name":9,"slug":8,"type":14},"2026-04-12T05:07:05.468097",{"slug":10849,"name":10849,"fn":10850,"description":10851,"org":10852,"tags":10853,"stars":10828,"repoUrl":10829,"updatedAt":10862},"cli-creator","build CLIs from API docs","Build a composable CLI for Codex from API docs, an OpenAPI spec, existing curl examples, an SDK, a web app, an admin tool, or a local script. Use when the user wants Codex to create a command-line tool that can run from any repo, expose composable read\u002Fwrite commands, return stable JSON, manage auth, and pair with a companion skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[10854,10857,10859],{"name":10855,"slug":10856,"type":14},"API Development","api-development",{"name":7643,"slug":10858,"type":14},"cli",{"name":10860,"slug":10861,"type":14},"Codex","codex","2026-04-12T05:07:04.132762",{"slug":10864,"name":10864,"fn":10865,"description":10866,"org":10867,"tags":10868,"stars":10828,"repoUrl":10829,"updatedAt":10879},"cloudflare-deploy","deploy projects to Cloudflare","Deploy applications and infrastructure to Cloudflare using Workers, Pages, and related platform services. Use when the user asks to deploy, host, publish, or set up a project on Cloudflare.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[10869,10872,10875,10876],{"name":10870,"slug":10871,"type":14},"Cloudflare","cloudflare",{"name":10873,"slug":10874,"type":14},"Cloudflare Pages","cloudflare-pages",{"name":10721,"slug":10722,"type":14},{"name":10877,"slug":10878,"type":14},"Deployment","deployment","2026-04-12T05:07:14.275118",{"slug":10881,"name":10881,"fn":10882,"description":10883,"org":10884,"tags":10885,"stars":10828,"repoUrl":10829,"updatedAt":10898},"define-goal","define and set measurable project goals","Help the user define a concrete, measurable goal before starting work, especially when they ask to use the goal tool, create a goal, set an objective, clarify success criteria, or turn a fuzzy intention into a quantitative outcome. Use this skill for goal creation and goal refinement only; it does not manage durable snapshots, decision logs, or long-running execution artifacts.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[10886,10889,10892,10895],{"name":10887,"slug":10888,"type":14},"Productivity","productivity",{"name":10890,"slug":10891,"type":14},"Project Management","project-management",{"name":10893,"slug":10894,"type":14},"Strategy","strategy",{"name":10896,"slug":10897,"type":14},"Task Management","task-management","2026-05-23T06:17:16.870838",{"slug":10900,"name":10900,"fn":10901,"description":10902,"org":10903,"tags":10904,"stars":10828,"repoUrl":10829,"updatedAt":10910},"figma","translate Figma designs into code","Use the Figma MCP server to fetch design context, screenshots, variables, and assets from Figma, and to translate Figma nodes into production code. Trigger when a task involves Figma URLs, node IDs, design-to-code implementation, or Figma MCP setup and troubleshooting.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[10905,10906,10908,10909],{"name":10682,"slug":10683,"type":14},{"name":10907,"slug":10900,"type":14},"Figma",{"name":10740,"slug":10741,"type":14},{"name":10844,"slug":10845,"type":14},"2026-04-12T05:06:47.939943",{"slug":10912,"name":10912,"fn":10913,"description":10914,"org":10915,"tags":10916,"stars":10828,"repoUrl":10829,"updatedAt":10924},"figma-code-connect-components","connect Figma designs to code components","Connects Figma design components to code components using Code Connect mapping tools. Use when user says \"code connect\", \"connect this component to code\", \"map this component\", \"link component to code\", \"create code connect mapping\", or wants to establish mappings between Figma designs and code implementations. For canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[10917,10918,10921,10922,10923],{"name":10682,"slug":10683,"type":14},{"name":10919,"slug":10920,"type":14},"Design System","design-system",{"name":10907,"slug":10900,"type":14},{"name":10740,"slug":10741,"type":14},{"name":10749,"slug":10750,"type":14},"2026-05-10T05:59:52.971881",{"slug":10926,"name":10926,"fn":10927,"description":10928,"org":10929,"tags":10930,"stars":10828,"repoUrl":10829,"updatedAt":10938},"figma-create-design-system-rules","generate design system rules from Figma","Generates custom design system rules for the user's codebase. Use when user says \"create design system rules\", \"generate rules for my project\", \"set up design rules\", \"customize design system guidelines\", or wants to establish project-specific conventions for Figma-to-code workflows. Requires Figma MCP server connection.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[10931,10932,10933,10936,10937],{"name":10682,"slug":10683,"type":14},{"name":10919,"slug":10920,"type":14},{"name":10934,"slug":10935,"type":14},"Documentation","documentation",{"name":10907,"slug":10900,"type":14},{"name":10740,"slug":10741,"type":14},"2026-05-16T06:07:47.821474",{"slug":10940,"name":10940,"fn":10941,"description":10942,"org":10943,"tags":10944,"stars":10828,"repoUrl":10829,"updatedAt":10950},"figma-implement-design","translate Figma designs into application code","Translates Figma designs into production-ready application code with 1:1 visual fidelity. Use when implementing UI code from Figma files, when user mentions \"implement design\", \"generate code\", \"implement component\", provides Figma URLs, or asks to build components matching Figma specs. For Figma canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[10945,10946,10947,10948,10949],{"name":10682,"slug":10683,"type":14},{"name":10907,"slug":10900,"type":14},{"name":10740,"slug":10741,"type":14},{"name":10749,"slug":10750,"type":14},{"name":10826,"slug":10827,"type":14},"2026-05-16T06:07:40.583615",{"slug":10952,"name":10952,"fn":10953,"description":10954,"org":10955,"tags":10956,"stars":10828,"repoUrl":10829,"updatedAt":10965},"hatch-pet","create animated pets for Codex","Create, repair, validate, visually QA, and package Codex-compatible animated pets and pet spritesheets from character art, generated images, company or prospect brand cues, or visual references. Use when a user wants a lightweight-worker Codex pet workflow, a non-pixel custom pet style, a prospect or company mascot pet, or a full 8x9 animated pet atlas with transparent unused cells, QA contact sheets, and pet.json packaging. This skill composes the installed $imagegen system skill for visual generation and uses bundled scripts for deterministic spritesheet assembly.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[10957,10960,10961,10964],{"name":10958,"slug":10959,"type":14},"Animation","animation",{"name":10860,"slug":10861,"type":14},{"name":10962,"slug":10963,"type":14},"Creative","creative",{"name":10682,"slug":10683,"type":14},"2026-05-02T05:31:48.48485",{"slug":10967,"name":10967,"fn":10968,"description":10969,"org":10970,"tags":10971,"stars":10828,"repoUrl":10829,"updatedAt":10981},"imagegen","generate and edit raster images","Generate or edit raster images when the task benefits from AI-created bitmap visuals such as photos, illustrations, textures, sprites, mockups, or transparent-background cutouts. Use when Codex should create a brand-new image, transform an existing image, or derive visual variants from references, and the output should be a bitmap asset rather than repo-native code or vector. Do not use when the task is better handled by editing existing SVG\u002Fvector\u002Fcode-native assets, extending an established icon or logo system, or building the visual directly in HTML\u002FCSS\u002Fcanvas.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[10972,10973,10974,10977,10980],{"name":10962,"slug":10963,"type":14},{"name":10682,"slug":10683,"type":14},{"name":10975,"slug":10976,"type":14},"Image Generation","image-generation",{"name":10978,"slug":10979,"type":14},"Images","images",{"name":9,"slug":8,"type":14},"2026-05-15T06:23:24.312127",675]