<?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: InexperiencedPotato</title>
    <description>The latest articles on DEV Community by InexperiencedPotato (@inexperiencedpotato).</description>
    <link>https://dev.to/inexperiencedpotato</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%2F4206037%2F7bd5a6fc-6586-4b7f-9eee-52c88f88197e.png</url>
      <title>DEV Community: InexperiencedPotato</title>
      <link>https://dev.to/inexperiencedpotato</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/inexperiencedpotato"/>
    <language>en</language>
    <item>
      <title>Catch Chrome extension packaging mistakes before you upload (free, local tool)</title>
      <dc:creator>InexperiencedPotato</dc:creator>
      <pubDate>Sun, 25 Oct 2026 06:27:16 +0000</pubDate>
      <link>https://dev.to/inexperiencedpotato/catch-chrome-extension-packaging-mistakes-before-you-upload-free-local-tool-31ce</link>
      <guid>https://dev.to/inexperiencedpotato/catch-chrome-extension-packaging-mistakes-before-you-upload-free-local-tool-31ce</guid>
      <description>&lt;p&gt;Every extension developer has done it: you zip the folder, upload it, and then&lt;br&gt;
find out something small was wrong. A file the manifest points to isn't in the&lt;br&gt;
ZIP, a default locale is missing a message, or an icon isn't really a PNG.&lt;/p&gt;

&lt;p&gt;I wanted to catch those mistakes &lt;strong&gt;before&lt;/strong&gt; uploading, without sending my&lt;br&gt;
extension anywhere. So I built &lt;strong&gt;ExtensionRelease Guard&lt;/strong&gt;, a small Windows&lt;br&gt;
desktop app that inspects the ZIP locally.&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%2Fru2ika25qhikeg4keo33.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%2Fru2ika25qhikeg4keo33.png" alt="ExtensionRelease Guard auditing a sample extension" width="800" height="541"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What it checks
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The ZIP itself:&lt;/strong&gt; absolute or path-traversal entry names, duplicate and
case-colliding names, encrypted entries, symlinks, and suspiciously high
compression ratios.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;manifest.json:&lt;/strong&gt; required fields and basic structure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;References:&lt;/strong&gt; files the manifest points to (scripts, icons, resources) that
don't exist in the archive.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Locales:&lt;/strong&gt; the default locale and its messages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Icons:&lt;/strong&gt; that icon files really are the image type they claim to be.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each finding comes with a short note on &lt;em&gt;why it matters&lt;/em&gt; and &lt;em&gt;what to do&lt;/em&gt;, and&lt;br&gt;
the app gives a readiness summary. A &lt;strong&gt;Manifest&lt;/strong&gt; tab lists the permissions and&lt;br&gt;
host access the extension requests, labelled as observations or confirmed&lt;br&gt;
inconsistencies.&lt;/p&gt;

&lt;h2&gt;
  
  
  Other things it does
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Drop a ZIP onto the window to audit it.&lt;/li&gt;
&lt;li&gt;Export a report as HTML, JSON or TXT.&lt;/li&gt;
&lt;li&gt;Compare two saved JSON reports to see which findings are new, fixed or
unchanged between builds.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What it does not do
&lt;/h2&gt;

&lt;p&gt;It is a pre-release inspection aid, not a guarantee. It reads the archive&lt;br&gt;
without extracting or running anything, so it can't judge what your code does,&lt;br&gt;
and a clean result does &lt;strong&gt;not&lt;/strong&gt; mean your extension is safe or will pass Chrome&lt;br&gt;
Web Store review. It only catches the problems it knows how to look for.&lt;/p&gt;

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

&lt;p&gt;It's free and open source (MIT), for Windows. The executable is unsigned, so&lt;br&gt;
SmartScreen may warn; the SHA-256 is in the release notes so you can verify&lt;br&gt;
the download.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Download and source: &lt;a href="https://github.com/InexperiencedPotato/ExtensionReleaseGuard" rel="noopener noreferrer"&gt;https://github.com/InexperiencedPotato/ExtensionReleaseGuard&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Releases: &lt;a href="https://github.com/InexperiencedPotato/ExtensionReleaseGuard/releases" rel="noopener noreferrer"&gt;https://github.com/InexperiencedPotato/ExtensionReleaseGuard/releases&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm the author. I'd like feedback on false positives and on checks you wish it&lt;br&gt;
had. Issues and pull requests are welcome. If you find it useful, there's an&lt;br&gt;
optional &lt;a href="https://ko-fi.com/inexperiencedpotato" rel="noopener noreferrer"&gt;Ko-fi link&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>opensource</category>
      <category>python</category>
      <category>google</category>
    </item>
  </channel>
</rss>
