<?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: Akok</title>
    <description>The latest articles on DEV Community by Akok (@978190375).</description>
    <link>https://dev.to/978190375</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%2F4209198%2F129b6618-8e48-4af0-b1bd-3e4c8ca23229.jpg</url>
      <title>DEV Community: Akok</title>
      <link>https://dev.to/978190375</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/978190375"/>
    <language>en</language>
    <item>
      <title>A developer's screenshot workflow: bug reports, code review, and step guides</title>
      <dc:creator>Akok</dc:creator>
      <pubDate>Mon, 26 Oct 2026 16:45:33 +0000</pubDate>
      <link>https://dev.to/978190375/a-developers-screenshot-workflow-bug-reports-code-review-and-step-guides-2kgo</link>
      <guid>https://dev.to/978190375/a-developers-screenshot-workflow-bug-reports-code-review-and-step-guides-2kgo</guid>
      <description>&lt;h2&gt;
  
  
  Why another screenshot post
&lt;/h2&gt;

&lt;p&gt;Developers take screenshots all day: a bug report, a design review, an API example, a step in an onboarding doc. The built-in tools capture pixels; the real work starts &lt;em&gt;after&lt;/em&gt; that—annotating, redacting, stitching, writing the steps down.&lt;/p&gt;

&lt;p&gt;I build InSnap, a screenshot and screen-recording tool for macOS and Windows, so take the tool mentions with that bias. The workflow below works with any editor; InSnap just removes the app-switching.&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%2F3wti6pzy0u5t8ygjylb1.jpg" 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%2F3wti6pzy0u5t8ygjylb1.jpg" alt="Annotating a screenshot inline" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Bug reports that get fixed
&lt;/h2&gt;

&lt;p&gt;A screenshot alone tells the reader &lt;em&gt;what&lt;/em&gt; you saw, not &lt;em&gt;what you did&lt;/em&gt;. Three additions change that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Numbered steps.&lt;/strong&gt; Put 1, 2, 3 on the screenshot in the order you clicked. In InSnap, changing a number shifts the following numbers automatically, so you do not renumber by hand.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Arrows that point at the exact control.&lt;/strong&gt; Draw them on the capture overlay; no image editor round trip.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redaction before sharing.&lt;/strong&gt; Solid fill for tokens and passwords, high-strength mosaic for names and emails. Blur is the weakest option—avoid it for secrets.&lt;/li&gt;
&lt;/ul&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%2Fluucm36df5woqqyslune.jpg" 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%2Fluucm36df5woqqyslune.jpg" alt="Numbers and arrows on the capture overlay" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Long stack traces and logs rarely fit on one screen. A scrolling screenshot stitches the whole page into one image:&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%2F8wnu05bl7cgsha5ti91c.jpg" 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%2F8wnu05bl7cgsha5ti91c.jpg" alt="Scrolling screenshot with a live preview" width="800" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then attach a template the reader can reproduce:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Environment&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; OS: macOS 14.4 / Windows 11 23H2
&lt;span class="p"&gt;-&lt;/span&gt; App version: 1.2.3 (build 456)
&lt;span class="p"&gt;-&lt;/span&gt; Runtime: Node 24 / Chrome 155

&lt;span class="gu"&gt;## Steps&lt;/span&gt;
&lt;span class="p"&gt;1.&lt;/span&gt; Open Settings → Notifications
&lt;span class="p"&gt;2.&lt;/span&gt; Turn off Email alerts
&lt;span class="p"&gt;3.&lt;/span&gt; Reload the page

&lt;span class="gu"&gt;## Expected / actual&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Expected: the toggle stays off
&lt;span class="p"&gt;-&lt;/span&gt; Actual: it turns back on after reload

&lt;span class="gu"&gt;## Attachments&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Screenshot: above (steps 1–3)
&lt;span class="p"&gt;-&lt;/span&gt; Recording: screen-recording.mp4
&lt;span class="p"&gt;-&lt;/span&gt; Console log: long screenshot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2. Code review and before/after
&lt;/h2&gt;

&lt;p&gt;For UI changes, a before/after pair is faster to review than a paragraph. Capture both states, stitch them in the image editor, and paste the result into the PR.&lt;/p&gt;

&lt;p&gt;When I need to &lt;em&gt;use&lt;/em&gt; a screenshot while coding—a design spec, an API response, a config snippet—I pin it above other windows instead of switching tabs. Pinning a clipboard text or JSON also works: it renders as a readable card, not an image of text.&lt;/p&gt;

&lt;p&gt;Share links are useful when the attachment would expire in chat. In InSnap that is the optional Cloud subscription (expiry and optional password); a saved file attached to the PR is enough for local teams. Pro and Cloud are separate; neither includes the other.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Docs and debugging
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Copy text from an image.&lt;/strong&gt; Box the error, hit OCR, then select text directly on the image. Recognition runs locally—no upload—and works well for Chinese, English and Latin-script languages. Japanese kana, Korean and Russian are not reliable yet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep a command or JSON beside the code.&lt;/strong&gt; Pin the clipboard: plain text, Markdown and HTML become a floating card.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Find that screenshot from last week.&lt;/strong&gt; History keeps captures locally and indexes OCR text, so searching an error code finds the image even if the file name is meaningless.&lt;/li&gt;
&lt;/ul&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%2Fgt170vn1tuv0i0k6iszl.jpg" 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%2Fgt170vn1tuv0i0k6iszl.jpg" alt="OCR: select text directly on the screenshot" width="800" height="502"&gt;&lt;/a&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%2Fvkjsw21ybuifmh0gc88b.jpg" 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%2Fvkjsw21ybuifmh0gc88b.jpg" alt="Searchable screenshot history with tags and OCR text" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Turn a task into a guide
&lt;/h2&gt;

&lt;p&gt;Recording a task is often faster than writing the steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Start guide recording.&lt;/li&gt;
&lt;li&gt;Do the task normally. Every click becomes a step: a screenshot taken &lt;em&gt;before&lt;/em&gt; the click, a marker on the target, and a title derived from the button or input name. Double clicks merge; drags are ignored.&lt;/li&gt;
&lt;li&gt;Stop. The guide opens in an editor.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In the editor you can rewrite titles, reorder or hide steps, add substeps and callouts (tip/warning/note), crop each screenshot, and blur the same region across &lt;strong&gt;all&lt;/strong&gt; steps in one action.&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%2Fgnjka35i2slc9a5ib2ee.jpg" 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%2Fgnjka35i2slc9a5ib2ee.jpg" alt="Guide editor: steps on the left, screenshot in the middle, annotation tools on the right" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Export matters more than editing: PDF for customers, Word for colleagues, PowerPoint for training, HTML for a knowledge base, Markdown for a repo, SCORM for an LMS, JSON for automation.&lt;/p&gt;

&lt;p&gt;For screen recordings, the same idea applies to video. “Record &amp;amp; edit” stores mouse and keyboard events; the editor generates zoom segments around clicks and follows the cursor between them. You can delete or add segments on the timeline instead of keyframing by hand.&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%2Fhgjykyvynfqe0pyk0c5q.jpg" 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%2Fhgjykyvynfqe0pyk0c5q.jpg" alt="Video editor with generated zoom segments" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. My setup
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;th&gt;macOS&lt;/th&gt;
&lt;th&gt;Windows&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Capture&lt;/td&gt;
&lt;td&gt;&lt;code&gt;⌘1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Ctrl+1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pin clipboard&lt;/td&gt;
&lt;td&gt;&lt;code&gt;⌘2&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Ctrl+2&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Other actions (long screenshot, recording, guides, history) are optional global hotkeys. Inside the capture overlay, &lt;code&gt;⌘A&lt;/code&gt; selects the full screen, &lt;code&gt;⌘C&lt;/code&gt; copies, &lt;code&gt;⌘S&lt;/code&gt; saves, &lt;code&gt;⌘Z&lt;/code&gt; undoes.&lt;/p&gt;

&lt;p&gt;Settings worth turning on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;auto-detect windows and UI elements (hover instead of dragging edges);&lt;/li&gt;
&lt;li&gt;screenshot history with OCR indexing;&lt;/li&gt;
&lt;li&gt;output options: scale Retina captures to 1x and add a 1px border for docs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  6. Limits, honestly
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No Linux build.&lt;/strong&gt; macOS 14.4+ and Windows 10+ only.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OCR is local and language-limited.&lt;/strong&gt; Chinese, English and Latin-script languages are good; Japanese kana, Korean and Russian are weak.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart erase is a local algorithm, not a generative model.&lt;/strong&gt; It works best on flat, gradient and UI backgrounds; subjects that match the background color can leave artifacts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pro and Cloud are separate.&lt;/strong&gt; Pro unlocks advanced tools (long screenshots, GIF, video effects, guides, smart erase); Cloud is an optional subscription for hosted share links. Neither includes the other.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Screenshots, annotation, pinning, OCR and history are free&lt;/strong&gt;, including basic MP4 recording.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;If your current loop is &lt;em&gt;system screenshot → open Preview → draw arrow → send in chat → open a recorder for the video&lt;/em&gt;, collapsing it into one tool saves a surprising amount of context switching.&lt;/p&gt;

&lt;p&gt;InSnap runs on Mac and Windows: &lt;a href="https://insnap.cn" rel="noopener noreferrer"&gt;https://insnap.cn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I build InSnap. The workflow above is what I use for my own bug reports and docs; the tool is optional.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>softwaredevelopment</category>
      <category>tools</category>
    </item>
  </channel>
</rss>
