<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>sentry &#8211; iAIFeed</title>
	<atom:link href="https://www.iaifeed.com/tag/sentry/feed" rel="self" type="application/rss+xml" />
	<link>https://www.iaifeed.com</link>
	<description>iAIFeed</description>
	<lastBuildDate>Thu, 22 Oct 2026 12:46:59 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>https://www.iaifeed.com/wp-content/uploads/2026/07/cropped-iaifeed1-80x80.png</url>
	<title>sentry &#8211; iAIFeed</title>
	<link>https://www.iaifeed.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>How to Use Sentry Performance Tracing to Find Slow Requests</title>
		<link>https://www.iaifeed.com/how-to-use-sentry-performance-tracing</link>
					<comments>https://www.iaifeed.com/how-to-use-sentry-performance-tracing#respond</comments>
		
		<dc:creator><![CDATA[iamltlb]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 12:46:59 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[sentry]]></category>
		<guid isPermaLink="false">https://www.iaifeed.com/how-to-use-sentry-performance-tracing</guid>

					<description><![CDATA[Instrument spans across services, sample at a rate you can afford, and read the trace waterfall to locate the actual slow step. Includes quota math before you turn it on.]]></description>
										<content:encoded><![CDATA[<p><a href="https://www.iaifeed.com/ai-tool/sentry">Sentry</a> performance tracing records a transaction per request with nested spans for each operation, so you can see that a 2.4-second API call spent 1.9 seconds waiting on Postgres. Enabling it takes one config flag and a sampling decision; reading it well takes knowing which spans to add yourself.</p>
<p>The quota maths comes first. Tracing bills per span, and an uninstrumented request can quietly emit dozens.</p>
<h2 id="what-is-a-span-and-what-does-tracing-actually-record">What Is a Span and What Does Tracing Actually Record?</h2>
<p>A transaction is the whole request. A span is a unit of work inside it — a database query, an HTTP call, a function you wrapped. Spans nest, forming a waterfall.</p>
<p>Automatic instrumentation covers HTTP servers, common database drivers, and fetch clients. Everything in your business logic needs <code>Sentry.startSpan()</code> wrapped around it, which is the part most teams skip and then wonder why the waterfall stops at the controller.</p>
<h2 id="how-do-i-choose-a-tracessamplerate-without-blowing-the-quota">How Do I Choose a tracesSampleRate Without Blowing the Quota?</h2>
<p>Estimate before enabling. Take monthly requests, multiply by average spans per request, multiply by the sample rate.</p>
<table>
<thead>
<tr>
<th>Traffic</th>
<th>Average spans</th>
<th>Sample rate</th>
<th>Monthly spans</th>
</tr>
</thead>
<tbody>
<tr>
<td>1M requests</td>
<td>20</td>
<td>0.1</td>
<td>2M</td>
</tr>
<tr>
<td>1M requests</td>
<td>20</td>
<td>0.01</td>
<td>200k</td>
</tr>
<tr>
<td>10M requests</td>
<td>10</td>
<td>0.05</td>
<td>5M</td>
</tr>
</tbody>
</table>
<p>The Team plan includes a span allowance in the low millions; higher volumes are billed on top. Start at 0.05 and raise it only if you cannot find your slow path.</p>
<p>A useful trick: sample high for slow requests and low for fast ones. Sentry supports this through <code>tracesSampler</code>, where you return a rate based on the transaction context.</p>
<h2 id="how-do-i-add-custom-spans-that-answer-questions">How Do I Add Custom Spans That Answer Questions?</h2>
<p>Wrap the operations you suspect, not everything.</p>
<ul>
<li><code>Sentry.startSpan({ name: 'invoice.generate' }, () =&gt; ...)</code> around a suspected hot path.</li>
<li><code>op: 'db.query'</code> on manual queries so they group with automatic ones.</li>
<li><code>op: 'http.client'</code> on outbound calls to third parties.</li>
</ul>
<p>Add attributes to spans rather than creating new span names for each variant: <code>span.setAttribute('invoice.items', count)</code> keeps the waterfall readable while preserving the detail. Span name cardinality is what makes trace views unusable on large projects.</p>
<h2 id="how-do-i-read-the-waterfall-to-find-the-real-problem">How Do I Read the Waterfall to Find the Real Problem?</h2>
<p>Open a trace and look for the widest bar, not the deepest one. Width is time; depth is call hierarchy. People reflexively scroll to the bottom leaf, but the 1.8-second gap between two spans usually means something unaccounted for — a synchronous block, a DNS lookup, or a wait on a lock.</p>
<p>Sort transactions by p95 duration rather than average. A 40 ms average with a 3-second p95 is a page that times out for one user in twenty, and averages hide it entirely.</p>
<h2 id="what-are-the-common-instrumentation-mistakes">What Are the Common Instrumentation Mistakes?</h2>
<p>Three, consistently:</p>
<ol>
<li>Sampling at 1.0 in staging and copying the config to production.</li>
<li>Leaving the front-end <code>browserTracingIntegration</code> with default <code>tracePropagationTargets</code>, which drops the trace header on cross-origin API calls and splits your waterfall into two unlinked traces.</li>
<li>Wrapping spans around code that already has automatic instrumentation, doubling the span count for the same work.</li>
</ol>
<h2 id="when-is-tracing-not-worth-the-spend">When Is Tracing Not Worth the Spend?</h2>
<p>If your p95 is under 200 ms, there is no user-visible problem to chase. Optimizing a 120 ms endpoint to 90 ms is engineering theatre.</p>
<p>Also skip it if your bottleneck is already known — a missing database index shows up in slow query logs for free. Tracing earns its cost on distributed systems where the slow step is not obvious from any single service&#8217;s logs.</p>
<h2 id="quick-summary">Quick Summary</h2>
<ul>
<li>A transaction is the request; spans are nested operations inside it.</li>
<li>Estimate spans as requests × spans per request × sample rate before enabling.</li>
<li>Start at 0.05 sample rate and use <code>tracesSampler</code> to favour slow requests.</li>
<li>Read the widest bar, not the deepest leaf, and sort by p95 not average.</li>
<li>Tracing only pays off when the bottleneck is genuinely unknown.</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.iaifeed.com/how-to-use-sentry-performance-tracing/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Add Sentry Error Tracking to a Web App in 20 Minutes</title>
		<link>https://www.iaifeed.com/how-to-add-sentry-error-tracking-to-a-web-app</link>
					<comments>https://www.iaifeed.com/how-to-add-sentry-error-tracking-to-a-web-app#respond</comments>
		
		<dc:creator><![CDATA[iamltlb]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 12:46:37 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[sentry]]></category>
		<guid isPermaLink="false">https://www.iaifeed.com/how-to-add-sentry-error-tracking-to-a-web-app</guid>

					<description><![CDATA[Install the SDK, capture real exceptions, and cut noisy alerts with a release tag and source maps. Covers the 5k-error free tier and the sampling setting that matters.]]></description>
										<content:encoded><![CDATA[<p><a href="https://www.iaifeed.com/ai-tool/sentry">Sentry</a> captures unhandled exceptions and performance traces from your app and groups them by stack trace fingerprint. The setup is: create a project, install the SDK for your framework, add the DSN, and upload source maps on each deploy. Front-end and back-end take about ten minutes each.</p>
<p>Source maps are the step people skip, and it is the one that makes Sentry useful. Without them every stack trace reads <code>vendor.bundle.js:1:48213</code> and you learn nothing.</p>
<h2 id="what-does-sentry-actually-do">What Does Sentry Actually Do?</h2>
<p>Sentry is an error tracking service. It receives exception events from your app, deduplicates them into issues, and shows frequency, affected users, and the release where it first appeared.</p>
<p>It is not APM and not logging. Datadog covers infrastructure metrics and logs; Sentry covers &#8220;this code threw an error, here is the payload that broke it.&#8221; Teams use both, and the overlap in cost is a common budget argument.</p>
<h2 id="how-do-i-install-sentry-in-a-node-back-end">How Do I Install Sentry in a Node Back End?</h2>
<pre><code>npm install @sentry/node
</code></pre>
<pre><code>Sentry.init({ dsn: process.env.SENTRY_DSN, environment: process.env.NODE_ENV, release: process.env.GIT_SHA, tracesSampleRate: 0.1 })
</code></pre>
<p>Initialize before your framework mounts. In Express, that means before <code>app.use(...)</code> calls — Sentry&#8217;s docs say it plainly and people still get empty traces because they initialized after routes.</p>
<p>Set <code>tracesSampleRate</code> below 1.0 unless traffic is small. A 0.1 sample gives statistically usable performance data without paying for every request.</p>
<h2 id="how-do-i-set-up-the-front-end-correctly">How Do I Set Up the Front End Correctly?</h2>
<p>For React, <code>npm i @sentry/react</code>, then call <code>Sentry.init</code> with your DSN and <code>integrations: [Sentry.browserTracingIntegration()]</code>.</p>
<p>The essential step is source map upload:</p>
<ol>
<li>Create an auth token in Sentry with <code>project:releases</code> scope.</li>
<li>Add <code>sentry-cli</code> to your build pipeline and run <code>sentry-cli releases new $GIT_SHA</code>.</li>
<li>Upload maps: <code>sentry-cli releases files $GIT_SHA upload-sourcemaps ./dist</code>.</li>
<li>Finalize: <code>sentry-cli releases finalize $GIT_SHA</code>.</li>
<li>Delete <code>.map</code> files from the deployed bundle.</li>
</ol>
<p>That last step matters for two reasons: maps expose your source publicly if left in place, and Sentry needs them at upload time, not at runtime.</p>
<h2 id="how-do-i-stop-alert-noise">How Do I Stop Alert Noise?</h2>
<p>The defaults send an email for every new issue, which produces hundreds of notifications in the first week. Fix in this order:</p>
<ul>
<li><strong>Ignore patterns per project</strong> for browser extension errors — they are never your bug.</li>
<li><strong>Inbound filters</strong> to drop errors from localhost, bots, and known browser quirks.</li>
<li><strong>Alert rules</strong> scoped to <code>level:error</code> and an event count threshold (10+ in an hour) rather than every event.</li>
<li><strong>Release tag</strong> on every deploy, so you can tell new breakage from ignored old breakage.</li>
</ul>
<h2 id="what-does-sentry-cost">What Does Sentry Cost?</h2>
<p>The free Developer plan includes 5,000 errors per month, 50 session replays, and one user. That is enough for a side project and not enough for a production app with real traffic.</p>
<p>Team starts around $26 per month with 50,000 errors included, and pricing scales by event volume. The trap is noisy errors: one retry loop hitting an unhandled promise can burn your entire monthly quota in an afternoon. Quota exhaustion also disables alerts, so you find out from users instead.</p>
<p>Set a per-key rate limit (<code>Sentry.init({... maxBreadcrumbs: 50})</code> plus a server-side rate limiter) before you go live.</p>
<h2 id="where-sentry-falls-short">Where Sentry Falls Short</h2>
<p>Error grouping occasionally splits one bug into many issues when the stack differs, and merges unrelated bugs when fingerprints collide. You will spend time on issue hygiene.</p>
<p>Context depth is also limited by what you attach. Without breadcrumbs and user context, an error report is a stack trace with no story.</p>
<h2 id="who-should-use-it">Who Should Use It</h2>
<p>Any app with paying users and more than one engineer. Skip it for a static site with no JavaScript logic — there is nothing to throw.</p>
<h2 id="quick-summary">Quick Summary</h2>
<ul>
<li>Sentry groups exceptions into issues by stack fingerprint and tracks releases.</li>
<li>Initialize before framework routes mount or traces come back empty.</li>
<li>Upload source maps per release, then delete them from the deployed bundle.</li>
<li>Free plan: 5,000 errors/month, one user — rate-limit noisy errors or quota dies fast.</li>
<li>Not a replacement for logs or infrastructure metrics.</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.iaifeed.com/how-to-add-sentry-error-tracking-to-a-web-app/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
