<story><title>Things I wish I knew before making a paid extension (2019)</title><url>https://www.amie-chen.com/blog/making-paid-extension/</url></story><parent_chain></parent_chain><comment><author>quwert95</author><text>These are great points. I&amp;#x27;d like to add some more to them:&lt;p&gt;On minified source code, Extensions&amp;#x2F;Add-Ons are allowed to be deployed with minified source code as long as you provide the unminified versions to Google&amp;#x2F;Mozilla during review time.&lt;p&gt;On chrome vs. browser namespaces, a quick &amp;#x27;let chrome = browser;&amp;#x27; can help you keep the diffs small between versions. I have yet to find a complete solution to fixing &amp;#x27;forked code&amp;#x27; between Google&amp;#x2F;Mozilla Extensions&amp;#x2F;Add-Ons.&lt;p&gt;Also, storage mechanisms between browsers using the same extension code can be completely different. Beware if you&amp;#x27;re using caches, navigator.storage, and storage.local.&lt;p&gt;Finally, extensions don&amp;#x27;t consider themselves secure, depending on the browser. moz-extension:&amp;#x2F;&amp;#x2F; is not considered secure for cache access, whereas chrome-extension:&amp;#x2F;&amp;#x2F; is.&lt;p&gt;There lots of little &amp;#x27;gotchas&amp;#x27; like these when developing browser extensions. :)</text></comment>
<story><title>Things I wish I knew before making a paid extension (2019)</title><url>https://www.amie-chen.com/blog/making-paid-extension/</url></story><parent_chain></parent_chain><comment><author>mastermojo</author><text>YC W19 Sapling here. We have a freemium browser extension that acts as a grammar checker. Couple thoughts below:&lt;p&gt;1. Source code. You are allowed to minify source code. Chrome actually recommends minifying source to improve performance. If you require certain permissions you&amp;#x27;ll have to submit un-minified source for security review.&lt;p&gt;2.  Cloud&amp;#x2F;subscription based models are the way to go if piracy is an issue, but it doesn&amp;#x27;t make sense for all products. Licensing hasn&amp;#x27;t been an issue for Sapling fortunately because the &amp;quot;brains&amp;quot; of our app are in the cloud. I know hacker news is very privacy conscious but our language models are too large to run on a user&amp;#x27;s end machine right now. Spier Pro seems like a useful web-scraping helper. People who can pirate a chrome extension probably can probably run xpath scripts or a free xpath testing extension themselves so if I were Amy I wouldn&amp;#x27;t worry _too_ much about piracy.&lt;p&gt;3. Forked Code. There should be no reason to do it. Firefox and Edge have done a lot of work to support most of the chrome apis. You can handle minor edge cases build time with a variable toggle. Keep the same manifest, even. Browsers are good about ignoring keywords in the manifest they don&amp;#x27;t recognize. My recommendation is to pretend they are the same platform until you find bugs&amp;#x2F;issues and hard code around them. Theres a handful but it&amp;#x27;s very manageable.&lt;p&gt;[0] &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;blog.chromium.org&amp;#x2F;2018&amp;#x2F;10&amp;#x2F;trustworthy-chrome-extensions-by-default.html&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;blog.chromium.org&amp;#x2F;2018&amp;#x2F;10&amp;#x2F;trustworthy-chrome-extensi...&lt;/a&gt;&lt;p&gt;[1] &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;stackoverflow.com&amp;#x2F;questions&amp;#x2F;37649620&amp;#x2F;does-chrome-market-accept-extensions-with-minified-and-or-obfuscated-source-code&amp;#x2F;56006881#56006881&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;stackoverflow.com&amp;#x2F;questions&amp;#x2F;37649620&amp;#x2F;does-chrome-mar...&lt;/a&gt;&lt;p&gt;[2] &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;developer.mozilla.org&amp;#x2F;en-US&amp;#x2F;docs&amp;#x2F;Mozilla&amp;#x2F;Add-ons&amp;#x2F;WebExtensions&amp;#x2F;Chrome_incompatibilities&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;developer.mozilla.org&amp;#x2F;en-US&amp;#x2F;docs&amp;#x2F;Mozilla&amp;#x2F;Add-ons&amp;#x2F;Web...&lt;/a&gt;</text></comment>