1import{_ as g,a as p}from"./De7ji8Y0.js";import{_ as u}from"./Baf5cy0I.js";import{d as m,c,I as i,b as s,w as a,e as t,g as r,a as x}from"./BJ-fXIum.js";const v=m({__name:"errors",setup(f){const n=[{name:"message",type:"string",description:"The error message text"},{name:"source",type:"string",description:"Source file URL where the error occurred"},{name:"line / column",type:"number",description:"Line and column number in the source file"},{name:"stack",type:"string",description:"Stack trace (when available)"},{name:"pageUrl",type:"string",description:"The page URL where the error was thrown"},{name:"browser / OS",type:"string",description:"Browser and operating system from User-Agent"},{name:"fingerprint",type:"string",description:"Hash for deduplication (auto-generated)"}];return(y,e)=>{const o=g,l=u,d=p;return x(),c("div",null,[e[10]||(e[10]=i('<div class="mb-10"><p class="text-xs font-mono uppercase tracking-widest text-gray-400 mb-2">Tools</p><h1 class="text-3xl font-bold tracking-tight mb-3">Error Logging</h1><p class="text-gray-500 text-lg leading-relaxed"> Automatically capture JavaScript errors from your site. See error trends, deduplicated errors, and browser/page context â all without adding any code. </p></div><hr class="border-gray-200 mb-10">',2)),s(o,{id:"how-it-works"},{default:a(()=>[...e[0]||(e[0]=[r("How it works",-1)])]),_:1}),e[11]||(e[11]=t("p",{class:"text-sm text-gray-600 leading-relaxed mb-4"},[r(" When error logging is enabled, the embed script captures "),t("code",{class:"font-mono text-xs bg-gray-100 px-1.5 py-0.5 rounded"},"console.error"),r(" calls and unhandled exceptions from your page. Errors are batched with other events and sent to the API. ")],-1)),s(o,{id:"captured-data"},{default:a(()=>[...e[1]||(e[1]=[r("Whatâs captured",-1)])]),_:1}),s(l,{items:n}),s(o,{id:"deduplication"},{default:a(()=>[...e[2]||(e[2]=[r("Error deduplication",-1)])]),_:1}),e[12]||(e[12]=t("p",{class:"text-sm text-gray-600 leading-relaxed mb-4"}," Errors are fingerprinted based on their message and source location. The dashboard groups identical errors together so you see each unique error once, with an occurrence count. ",-1)),s(o,{id:"sanitization"},{default:a(()=>[...e[3]||(e[3]=[r("Privacy & sanitization",-1)])]),_:1}),e[13]||(e[13]=i('<p class="text-sm text-gray-600 leading-relaxed mb-4"> Error data is automatically sanitized before being sent to the API: </p><ul class="text-sm text-gray-600 space-y-1 mb-4 list-disc list-inside"><li><strong>Email addresses</strong> in error messages are replaced with <code class="font-mono text-xs bg-gray-100 px-1.5 py-0.5 rounded">[EMAIL]</code></li><li><strong>JWT tokens</strong> are replaced with <code class="font-mono text-xs bg-gray-100 px-1.5 py-0.5 rounded">[TOKEN]</code></li><li><strong>Auth query params</strong> (token, key, secret, password, auth) are redacted to <code class="font-mono text-xs bg-gray-100 px-1.5 py-0.5 rounded">[REDACTED]</code></li><li><strong>Stack traces</strong> are truncated to 2,000 characters</li></ul>',2)),s(o,{id:"classification"},{default:a(()=>[...e[4]||(e[4]=[r("Error source classification",-1)])]),_:1}),e[14]||(e[14]=t("p",{class:"text-sm text-gray-600 leading-relaxed mb-4"},[r(" Each error is classified as either an "),t("strong",null,"OperatorStack"),r(" error (originating from the embed script itself) or a "),t("strong",null,"Site"),r(" error (from your code). The dashboard shows both counts separately so you can focus on what matters. ")],-1)),s(o,{id:"limits"},{default:a(()=>[...e[5]||(e[5]=[r("Daily limits",-1)])]),_:1}),e[15]||(e[15]=t("p",{class:"text-sm text-gray-600 leading-relaxed mb-4"}," Error logging uses a two-tier rate limiting strategy: ",-1)),e[16]||(e[16]=t("ul",{class:"text-sm text-gray-600 space-y-1 mb-4 list-disc list-inside"},[t("li",null,[t("strong",null,"Client-side:"),r(" max 50 errors per minute per page, with 5-second deduplication window per fingerprint ")]),t("li",null,[t("strong",null,"Server-side:"),r(" 1,000 errors per project per day. The cap resets at midnight UTC ")])],-1)),s(o,{id:"triage"},{default:a(()=>[...e[6]||(e[6]=[r("Error triage",-1)])]),_:1}),e[17]||(e[17]=i('<p class="text-sm text-gray-600 leading-relaxed mb-4"> Each error group can be triaged with one of four statuses: </p><ul class="text-sm text-gray-600 space-y-1 mb-4 list-disc list-inside"><li><strong>Active</strong> â default state, needs attention</li><li><strong>Ignored</strong> â acknowledged but not actionable (e.g., browser noise). Ignored errors still appear in the timeline but are dimmed in the table and can be filtered out </li><li><strong>Fixed</strong> â youâve addressed this error. Records the fix date </li><li><strong>Regressed</strong> â automatically detected when an error marked âfixedâ reappears after the fix date. Shows both the fix date and the regression date so you can correlate with deploys </li></ul><p class="text-sm text-gray-600 leading-relaxed mb-4"> Triage status is included in the AI Advisor analysis, so it can give you more relevant advice and flag regressions or potentially mis-triaged errors. </p>',3)),s(o,{id:"sorting"},{default:a(()=>[...e[7]||(e[7]=[r("Sorting & filtering",-1)])]),_:1}),e[18]||(e[18]=t("p",{class:"text-sm text-gray-600 leading-relaxed mb-4"},"The top errors table can be sorted by:",-1)),e[19]||(e[19]=t("ul",{class:"text-sm text-gray-600 space-y-1 mb-4 list-disc list-inside"},[t("li",null,[t("strong",null,"Most frequent"),r(" â highest occurrence count first (default)")]),t("li",null,[t("strong",null,"Most recent"),r(" â most recently seen errors first")
1]),t("li",null,[t("strong",null,"First seen"),r(" â newest errors first")])],-1)),e[20]||(e[20]=t("p",{class:"text-sm text-gray-600 leading-relaxed mb-4"}," Filter by triage status to focus on active issues or review ignored/fixed errors. Each error also shows a per-error trend indicator comparing the current period to the previous period, and the number of affected pages. ",-1)),s(o,{id:"export"},{default:a(()=>[...e[8]||(e[8]=[r("CSV export",-1)])]),_:1}),e[21]||(e[21]=t("p",{class:"text-sm text-gray-600 leading-relaxed mb-4"}," Export errors to CSV from the dashboard. You can export all errors or filter by a specific fingerprint. Columns include message, source, line, column, error source, fingerprint, page URL, browser, OS, and timestamp. Capped at 5,000 rows. ",-1)),s(o,{id:"settings"},{default:a(()=>[...e[9]||(e[9]=[r("Settings",-1)])]),_:1}),e[22]||(e[22]=t("p",{class:"text-sm text-gray-600 leading-relaxed mb-4"}," Toggle error logging from your project settings page. When disabled, the embed script wonât capture any errors. ",-1)),s(d,{prev:{label:"AI Chat",to:"/docs/chat"},next:{label:"Contacts & Audience",to:"/docs/contacts"}})])}}});export{v as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.