<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Plinq Developers </title>
    <description>The latest articles on DEV Community by Plinq Developers  (@plinqdeveloper).</description>
    <link>https://dev.to/plinqdeveloper</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4200900%2F91051115-253e-432c-a1d8-f9c22caabe22.png</url>
      <title>DEV Community: Plinq Developers </title>
      <link>https://dev.to/plinqdeveloper</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/plinqdeveloper"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Plinq Developers </dc:creator>
      <pubDate>Thu, 22 Oct 2026 17:09:16 +0000</pubDate>
      <link>https://dev.to/plinqdeveloper/-3f5</link>
      <guid>https://dev.to/plinqdeveloper/-3f5</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/plinqdeveloper/launching-codeskop-crash-error-and-api-monitoring-for-mobile-web-and-backend-apps-3le6" class="crayons-story__hidden-navigation-link"&gt;Launching Codeskop: crash, error and API monitoring for mobile, web and backend apps&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/plinqdeveloper" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4200900%2F91051115-253e-432c-a1d8-f9c22caabe22.png" alt="plinqdeveloper profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/plinqdeveloper" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Plinq Developers 
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Plinq Developers 
                
                
              
              &lt;div id="story-author-preview-content-4898571" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/plinqdeveloper" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4200900%2F91051115-253e-432c-a1d8-f9c22caabe22.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Plinq Developers &lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/plinqdeveloper/launching-codeskop-crash-error-and-api-monitoring-for-mobile-web-and-backend-apps-3le6" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 22&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/plinqdeveloper/launching-codeskop-crash-error-and-api-monitoring-for-mobile-web-and-backend-apps-3le6" id="article-link-4898571"&gt;
          Launching Codeskop: crash, error and API monitoring for mobile, web and backend apps
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/showdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;showdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/monitoring"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;monitoring&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/startup"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;startup&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/tools"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;tools&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/plinqdeveloper/launching-codeskop-crash-error-and-api-monitoring-for-mobile-web-and-backend-apps-3le6" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;2&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/plinqdeveloper/launching-codeskop-crash-error-and-api-monitoring-for-mobile-web-and-backend-apps-3le6#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              1&lt;span class="hidden s:inline"&gt;&amp;nbsp;comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            8 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Launching Codeskop: crash, error and API monitoring for mobile, web and backend apps</title>
      <dc:creator>Plinq Developers </dc:creator>
      <pubDate>Thu, 22 Oct 2026 17:04:25 +0000</pubDate>
      <link>https://dev.to/plinqdeveloper/launching-codeskop-crash-error-and-api-monitoring-for-mobile-web-and-backend-apps-3le6</link>
      <guid>https://dev.to/plinqdeveloper/launching-codeskop-crash-error-and-api-monitoring-for-mobile-web-and-backend-apps-3le6</guid>
      <description>&lt;p&gt;A crash report tells you that something broke. It rarely tells you who it broke for, what they were doing first, or whether it is the bug that cost you customers this week.&lt;/p&gt;

&lt;p&gt;About 2 months ago, we launched &lt;strong&gt;&lt;a href="https://www.codeskop.com/?utm_source=devto&amp;amp;utm_medium=launch_post" rel="noopener noreferrer"&gt;Codeskop&lt;/a&gt;&lt;/strong&gt;. Codeskop is crash, error and API monitoring for mobile, web and backend apps. It connects crashes, errors, failing API calls, user journeys and releases, so your whole team sees the same production story.&lt;/p&gt;

&lt;p&gt;Codeskop started with a simple idea we couldn't shake.&lt;/p&gt;

&lt;p&gt;Between us, my co-founder and I have more than 16 years of building software products. We've shipped apps, built internal tools and worked on teams of every size. The best teams we worked with had one thing in common: they could see problems early and act on them together.&lt;/p&gt;

&lt;p&gt;We wanted to give every engineering team that same advantage. Not another tool for one engineer, but one place where the whole team can see what broke, who it affected and how to fix it. That's why we built &lt;strong&gt;&lt;a href="https://www.codeskop.com/?utm_source=devto&amp;amp;utm_medium=launch_post" rel="noopener noreferrer"&gt;Codeskop&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This post is not a feature tour. It covers two things we think every team should know about monitoring, whichever tool you use, and then shows how to set Codeskop up in a few minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Read impact in users, not events
&lt;/h2&gt;

&lt;p&gt;Most monitoring tools show you an event count first. Event counts are loud, and loud is not the same as important.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fshbjp8fz38ibphcspsps.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fshbjp8fz38ibphcspsps.png" alt="Two sample issues: one with 4,812 events from 3 users, one with 214 events from 168 users" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Take two issues from the same (sample) week:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A &lt;code&gt;TimeoutException&lt;/code&gt; in a background sync job.&lt;/strong&gt; 4,812 events. It looks like a fire. But it comes from 3 devices stuck in a retry loop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A &lt;code&gt;NullPointerException&lt;/code&gt; in the checkout screen.&lt;/strong&gt; 214 events. It looks quiet. But it hit 168 different people, and each of them failed to check out.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sort by events and you fix the first one. Sort by users affected and you fix the second, which is the one costing you money.&lt;/p&gt;

&lt;p&gt;That is why Codeskop groups crashes into issues and shows the &lt;strong&gt;number of users affected&lt;/strong&gt; on each one, so the worst problems rise to the top. A "user" is the ID you pass to &lt;code&gt;identify&lt;/code&gt;, or an anonymous install ID when nobody is signed in, so apps without login get real numbers too.&lt;/p&gt;

&lt;p&gt;Three more questions turn a stack trace into a decision:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Which release?&lt;/strong&gt; Every event carries the app version. Codeskop tracks crash-free users and sessions per release, and flags a release as &lt;em&gt;regressed&lt;/em&gt; when crash-free users drop 0.5 points or more against the previous release (with at least 50 people on each, so a handful of early installs can't trigger it), or when a resolved issue comes back.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Did it fail without crashing?&lt;/strong&gt; A &lt;code&gt;500&lt;/code&gt; on &lt;code&gt;POST /checkout&lt;/code&gt; doesn't crash anything. The user just sees a spinner and leaves. From the Starter plan, Codeskop records failed requests (a network error or an HTTP status of 400 or above) next to your crashes, with status codes and timing, so silent failures count too.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What did the user do first?&lt;/strong&gt; On Growth and above, the user journey shows a person's latest session in order: the crashes, errors and failed API calls they hit and, with product analytics on, the screens and events around them. It is a timeline built from events, not a session replay. Codeskop doesn't record video, screenshots or taps.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  2. Metadata, not payloads
&lt;/h2&gt;

&lt;p&gt;To find a failure you need to know &lt;em&gt;that&lt;/em&gt; a request failed, where, how slowly and for whom. You almost never need what was inside it. Request bodies hold card numbers and addresses. Query strings carry session tokens and emails. Headers carry credentials.&lt;/p&gt;

&lt;p&gt;So Codeskop is metadata-first. The SDKs keep what you need to find and fix a failure, and redact everything else &lt;strong&gt;on the device, before it is queued or sent&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7hy5iqls2dom6h07f9sm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7hy5iqls2dom6h07f9sm.png" alt="What a failed request looks like to Codeskop: bodies, query strings, Authorization and Cookie headers are removed; method, host, path, status, timing and sizes are kept" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In practice, on Android and the web:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Request and response bodies:&lt;/strong&gt; never captured.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Query strings and fragments:&lt;/strong&gt; dropped. Only the host and path are kept.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;Authorization&lt;/code&gt;, &lt;code&gt;Cookie&lt;/code&gt; and other credential headers:&lt;/strong&gt; never captured. Only five headers are ever read: &lt;code&gt;content-type&lt;/code&gt;, &lt;code&gt;content-length&lt;/code&gt;, &lt;code&gt;content-encoding&lt;/code&gt;, &lt;code&gt;accept&lt;/code&gt; and &lt;code&gt;cache-control&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exception messages:&lt;/strong&gt; replaced with &lt;code&gt;[REDACTED]&lt;/code&gt; by default, because they often contain user input. You still get the exception type and the full stack trace, and you can opt in to messages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Users:&lt;/strong&gt; known only by the ID you choose. Values that look like an email address or phone number are masked.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The server SDKs follow the same rule: no bodies, cookies, &lt;code&gt;Authorization&lt;/code&gt; headers or query strings.&lt;/p&gt;

&lt;p&gt;Two related design choices are worth copying in your own systems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Write-only keys.&lt;/strong&gt; The key in your app (&lt;code&gt;cs_live_pk_…&lt;/code&gt;) can only send events. It can't read any data, so it is safe inside an APK or a JavaScript bundle. The SDKs refuse a secret key and simply stay switched off.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Settings that can only reduce data.&lt;/strong&gt; Remote config lets you pause capture (a kill-switch), toggle features and lower sampling per project without a new release. It can switch things off or lower them, never widen what is collected.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The full matrix is in the &lt;a href="https://www.codeskop.com/docs/privacy?utm_source=devto&amp;amp;utm_medium=launch_post" rel="noopener noreferrer"&gt;privacy docs&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Set it up in a few minutes
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Furqto0nb5vj2cuvjp6ku.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Furqto0nb5vj2cuvjp6ku.png" alt="Quick start snippets for Android, web and Python" width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create a project in the &lt;a href="https://dashboard.codeskop.com" rel="noopener noreferrer"&gt;dashboard&lt;/a&gt; and copy its public key. Then pick your platform.&lt;/p&gt;

&lt;h3&gt;
  
  
  Android
&lt;/h3&gt;

&lt;p&gt;Add the SDK to your app module:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="nf"&gt;dependencies&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;implementation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"com.codeskop.sdk:tracker-android:0.4.0"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="c1"&gt;// Optional: OkHttp / Retrofit network capture (recommended)&lt;/span&gt;
    &lt;span class="nf"&gt;implementation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"com.codeskop.sdk:tracker-okhttp:0.4.0"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then add your key to &lt;code&gt;AndroidManifest.xml&lt;/code&gt;. The SDK starts itself, off the main thread, with no code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;application&lt;/span&gt; &lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta-data&lt;/span&gt;
        &lt;span class="na"&gt;android:name=&lt;/span&gt;&lt;span class="s"&gt;"codeskop.api_key"&lt;/span&gt;
        &lt;span class="na"&gt;android:value=&lt;/span&gt;&lt;span class="s"&gt;"cs_live_pk_YOUR_KEY"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/application&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Crash capture is on from the moment the SDK starts, and so is ANR detection on Starter and above. It requires &lt;code&gt;minSdk 24&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Web
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @codeskop/tracker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;init&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@codeskop/tracker&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nf"&gt;init&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;cs_live_pk_YOUR_KEY&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;release&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;1.4.0&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// optional: your app's version&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Uncaught errors and unhandled promise rejections are captured automatically, and from Starter, so are failing &lt;code&gt;fetch&lt;/code&gt; and &lt;code&gt;XMLHttpRequest&lt;/code&gt; calls. There is a React package too, with a provider, an error boundary and a hook.&lt;/p&gt;

&lt;h3&gt;
  
  
  Python (FastAPI)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;codeskop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;fastapi&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;FastAPI&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;codeskop&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;codeskop.integrations.asgi&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;CodeskopMiddleware&lt;/span&gt;

&lt;span class="n"&gt;codeskop&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;init&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cs_live_pk_…&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;FastAPI&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_middleware&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;CodeskopMiddleware&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That gives you unhandled exceptions on every plan and, from Starter, every incoming request by route (for example &lt;code&gt;/orders/{id}&lt;/code&gt;) and outgoing &lt;code&gt;requests&lt;/code&gt; and &lt;code&gt;httpx&lt;/code&gt; calls. Django, Flask and Celery have integrations as well.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://www.codeskop.com/docs/quickstart/android?utm_source=devto&amp;amp;utm_medium=launch_post" rel="noopener noreferrer"&gt;Android quick start&lt;/a&gt;, &lt;a href="https://www.codeskop.com/docs/quickstart/web?utm_source=devto&amp;amp;utm_medium=launch_post" rel="noopener noreferrer"&gt;web quick start&lt;/a&gt; and &lt;a href="https://www.codeskop.com/docs/server?utm_source=devto&amp;amp;utm_medium=launch_post" rel="noopener noreferrer"&gt;server docs&lt;/a&gt; cover identifying users, network capture and how to send a test event.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the pieces fit
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fthxau4pjaxsf1ag6kcup.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fthxau4pjaxsf1ag6kcup.png" alt="How Codeskop works: SDKs in your apps redact and queue events, Codeskop groups them into issues, and your team gets alerts, tickets and Fix with AI" width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once events arrive, the work moves to your team:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Alerts&lt;/strong&gt; for new issues, spikes, regressions and slow or failing APIs. Free sends email; Starter adds Slack, WhatsApp and webhooks; Growth and above add Telegram, Discord and Microsoft Teams. A cooldown per rule means a crash loop sends one message, not hundreds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tickets&lt;/strong&gt; in Jira, Linear, GitHub Issues, Asana or ClickUp (Growth and above). You type a title; Codeskop fills in the stack trace, impact and what the user did first.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix with AI&lt;/strong&gt; (Growth and above). Your own AI provider reads the code behind the stack trace and proposes a root cause and a diff. Nothing is written until you approve, and then Codeskop opens a &lt;em&gt;draft&lt;/em&gt; pull request on a new branch. It never merges.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Built to stay out of your app's way
&lt;/h2&gt;

&lt;p&gt;A monitoring SDK should never be the reason your app breaks. The Android and web SDKs make the same promises:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Public methods never throw&lt;/strong&gt;, and calls made before &lt;code&gt;init&lt;/code&gt; do nothing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No network or heavy disk work on the calling thread.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline-first.&lt;/strong&gt; Events are written to a queue on the device and sent in compressed batches when there is a connection. A crash on a train with no signal still reaches you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Crashes are never sampled or dropped for space.&lt;/strong&gt; When the queue fills up, routine events like timings go first.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Server SDKs never block a request.&lt;/strong&gt; Events are batched and sent in the background, with no runtime dependencies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Works alongside Firebase Crashlytics.&lt;/strong&gt; On Android, Codeskop chains onto the existing crash handler and always passes the crash along.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Platforms
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhythxu6m6030tnw0xgo8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhythxu6m6030tnw0xgo8.png" alt="Codeskop platforms: Android, Flutter, web and React, Python, Node.js, Go, Java and PHP available; Kotlin Multiplatform, iOS and OpenTelemetry in beta" width="800" height="470"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mobile:&lt;/strong&gt; Android (Maven Central) and Flutter (&lt;code&gt;codeskop_tracker&lt;/code&gt; on pub.dev). Kotlin Multiplatform and iOS are in early access beta.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web:&lt;/strong&gt; &lt;code&gt;@codeskop/tracker&lt;/code&gt; and &lt;code&gt;@codeskop/tracker-react&lt;/code&gt; on npm.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Python, Node.js, Go, Java and PHP, plus OpenTelemetry ingest in beta for other languages.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The web and server SDKs are open source under the MIT licence on &lt;a href="https://github.com/Codeskop-io" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, so you can read exactly what they do before you ship them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing
&lt;/h2&gt;

&lt;p&gt;There is a &lt;a href="https://www.codeskop.com/pricing?utm_source=devto&amp;amp;utm_medium=launch_post" rel="noopener noreferrer"&gt;Free plan&lt;/a&gt;, with no credit card needed: 10,000 events a month, 7 days of history, 1 project and up to 5 team members, with crash and JavaScript error capture and email alerts.&lt;/p&gt;

&lt;p&gt;Paid plans, as listed in October 2026 (USD per month, billed monthly):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;Events / month&lt;/th&gt;
&lt;th&gt;Highlights&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Starter&lt;/td&gt;
&lt;td&gt;$49&lt;/td&gt;
&lt;td&gt;100,000&lt;/td&gt;
&lt;td&gt;ANRs, network monitoring, Slack, WhatsApp and webhook alerts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Growth&lt;/td&gt;
&lt;td&gt;$199&lt;/td&gt;
&lt;td&gt;1,000,000&lt;/td&gt;
&lt;td&gt;User journeys, product analytics, tickets, Fix with AI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scale&lt;/td&gt;
&lt;td&gt;$599&lt;/td&gt;
&lt;td&gt;10,000,000&lt;/td&gt;
&lt;td&gt;365-day retention, unlimited projects&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Annual billing saves 15%. Enterprise and the API Trust add-on for API providers are by conversation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Design partners
&lt;/h3&gt;

&lt;p&gt;We're looking for &lt;strong&gt;5 teams&lt;/strong&gt; that ship mobile, web or backend apps where uptime and retention matter, especially in fintech and payments, e-commerce and tech. Design partners get &lt;strong&gt;3 months of the Scale plan free&lt;/strong&gt;, priority support and a shared channel with our team. In return we ask for a short case study, in your words, and permission to show your name and logo. &lt;a href="https://www.codeskop.com/design-partners?utm_source=devto&amp;amp;utm_medium=launch_post" rel="noopener noreferrer"&gt;Apply on the design partners page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Kotlin Multiplatform and iOS&lt;/strong&gt; are in early access beta today.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenTelemetry ingest&lt;/strong&gt; is in beta, for other languages, for example .NET, Ruby, Rust or Elixir.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Messaging to segments&lt;/strong&gt; (WhatsApp, SMS and email to a group of users) is on the roadmap as a paid add-on.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.codeskop.com/?utm_source=devto&amp;amp;utm_medium=launch_post" rel="noopener noreferrer"&gt;Start for free on codeskop.com&lt;/a&gt;, add one SDK, and see your first real issue with the users it affected.&lt;/p&gt;

&lt;p&gt;We would love your feedback, especially on the docs and the setup. Questions go to &lt;strong&gt;&lt;a href="mailto:support@codeskop.com"&gt;support@codeskop.com&lt;/a&gt;&lt;/strong&gt;, and you can follow along on &lt;a href="https://github.com/Codeskop-io" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, &lt;a href="https://www.linkedin.com/company/codeskop/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; and &lt;a href="https://www.instagram.com/codeskop.dev/" rel="noopener noreferrer"&gt;Instagram&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Olel Nashon&lt;br&gt;
Founder &amp;amp; CTO at Codeskop.&lt;/p&gt;

</description>
      <category>monitoring</category>
      <category>showdev</category>
      <category>startup</category>
      <category>tools</category>
    </item>
  </channel>
</rss>
