{"author":"alooPotato","children":[{"author":"alooPotato","children":[],"created_at":"2022-10-11T16:00:14.000Z","created_at_i":1665504014,"id":33164989,"options":[],"parent_id":33164922,"points":null,"story_id":33164922,"text":"Some links to how the InboxSDK can modify Gmail:<p>[1] Inserting buttons into the compose toolbar &lt;<a href=\"https:&#x2F;&#x2F;uploads-ssl.webflow.com&#x2F;5ff703387b4e84030da35e5e&#x2F;600676ef4544e0a21c39a1c4_feature%201%20(1).png\" rel=\"nofollow\">https:&#x2F;&#x2F;uploads-ssl.webflow.com&#x2F;5ff703387b4e84030da35e5e&#x2F;600...</a>&gt;<p>[2] Adding indicators to threads in a list &lt;<a href=\"https:&#x2F;&#x2F;uploads-ssl.webflow.com&#x2F;5ff703387b4e84030da35e5e&#x2F;600676ef455767be400f1bd9_feature%202.png\" rel=\"nofollow\">https:&#x2F;&#x2F;uploads-ssl.webflow.com&#x2F;5ff703387b4e84030da35e5e&#x2F;600...</a>&gt;<p>[3] Adding a sidebar to a thread &lt;<a href=\"https:&#x2F;&#x2F;uploads-ssl.webflow.com&#x2F;5ff703387b4e84030da35e5e&#x2F;600676f1f118b3103782361f_feature%203.png\" rel=\"nofollow\">https:&#x2F;&#x2F;uploads-ssl.webflow.com&#x2F;5ff703387b4e84030da35e5e&#x2F;600...</a>&gt;<p>[4] Adding buttons to a thread toolbar &lt;<a href=\"https:&#x2F;&#x2F;uploads-ssl.webflow.com&#x2F;5ff703387b4e84030da35e5e&#x2F;60059a0a365087d482d1bc49_feature%205.svg\" rel=\"nofollow\">https:&#x2F;&#x2F;uploads-ssl.webflow.com&#x2F;5ff703387b4e84030da35e5e&#x2F;600...</a>&gt;<p>[5] Adding autocomplete search results &lt;<a href=\"https:&#x2F;&#x2F;uploads-ssl.webflow.com&#x2F;5ff703387b4e84030da35e5e&#x2F;60059a0c1573b278e5707bbe_feature%206.svg\" rel=\"nofollow\">https:&#x2F;&#x2F;uploads-ssl.webflow.com&#x2F;5ff703387b4e84030da35e5e&#x2F;600...</a>&gt;<p>[6] Adding sections to the left nav &lt;<a href=\"https:&#x2F;&#x2F;uploads-ssl.webflow.com&#x2F;5ff703387b4e84030da35e5e&#x2F;600676ee41d334c2f2b13cab_feature%207.png\" rel=\"nofollow\">https:&#x2F;&#x2F;uploads-ssl.webflow.com&#x2F;5ff703387b4e84030da35e5e&#x2F;600...</a>&gt;<p>[7] Defining full page routes with custom content &lt;<a href=\"https:&#x2F;&#x2F;uploads-ssl.webflow.com&#x2F;5ff703387b4e84030da35e5e&#x2F;60059a077761a59842777804_feature%208.svg\" rel=\"nofollow\">https:&#x2F;&#x2F;uploads-ssl.webflow.com&#x2F;5ff703387b4e84030da35e5e&#x2F;600...</a>&gt;<p>[8] Adding entire sections to the inbox &lt;<a href=\"https:&#x2F;&#x2F;uploads-ssl.webflow.com&#x2F;5ff703387b4e84030da35e5e&#x2F;60059a091a37984c27accae9_feature%209.svg\" rel=\"nofollow\">https:&#x2F;&#x2F;uploads-ssl.webflow.com&#x2F;5ff703387b4e84030da35e5e&#x2F;600...</a>&gt;<p>[9] Adding keyboard shortcuts &lt;<a href=\"https:&#x2F;&#x2F;uploads-ssl.webflow.com&#x2F;5ff703387b4e84030da35e5e&#x2F;60059a09cad816afce3a160b_feature%2010.svg\" rel=\"nofollow\">https:&#x2F;&#x2F;uploads-ssl.webflow.com&#x2F;5ff703387b4e84030da35e5e&#x2F;600...</a>&gt;","title":null,"type":"comment","url":null},{"author":"sachinjain","children":[],"created_at":"2022-10-11T16:21:37.000Z","created_at_i":1665505297,"id":33165288,"options":[],"parent_id":33164922,"points":null,"story_id":33164922,"text":"This is very powerful, thanks for sharing this.","title":null,"type":"comment","url":null},{"author":"felipe_malara","children":[],"created_at":"2022-10-11T16:36:29.000Z","created_at_i":1665506189,"id":33165455,"options":[],"parent_id":33164922,"points":null,"story_id":33164922,"text":"Thank youuu<p>This is amazing guys, hoping to contribute with the platform soon.<p>Cheers from DragApp","title":null,"type":"comment","url":null},{"author":"smashah","children":[],"created_at":"2022-10-11T16:45:57.000Z","created_at_i":1665506757,"id":33165579,"options":[],"parent_id":33164922,"points":null,"story_id":33164922,"text":"Great news. Will definitely be using this :)","title":null,"type":"comment","url":null},{"author":"soco","children":[{"author":"alooPotato","children":[{"author":"another_devy","children":[{"author":"frew","children":[{"author":"another_devy","children":[{"author":"alooPotato","children":[],"created_at":"2022-10-11T18:35:56.000Z","created_at_i":1665513356,"id":33167247,"options":[],"parent_id":33166091,"points":null,"story_id":33164922,"text":"Should be right at the top of <a href=\"https:&#x2F;&#x2F;inboxsdk.github.io&#x2F;inboxsdk-docs&#x2F;\" rel=\"nofollow\">https:&#x2F;&#x2F;inboxsdk.github.io&#x2F;inboxsdk-docs&#x2F;</a>","title":null,"type":"comment","url":null}],"created_at":"2022-10-11T17:24:38.000Z","created_at_i":1665509078,"id":33166091,"options":[],"parent_id":33165786,"points":null,"story_id":33164922,"text":"Great, I think this should be in documentation, couldn\u2019t find it on GitHub as well","title":null,"type":"comment","url":null}],"created_at":"2022-10-11T17:01:53.000Z","created_at_i":1665507713,"id":33165786,"options":[],"parent_id":33165744,"points":null,"story_id":33164922,"text":"It does! That was actually one of the motivations for open-sourcing.","title":null,"type":"comment","url":null}],"created_at":"2022-10-11T16:58:25.000Z","created_at_i":1665507505,"id":33165744,"options":[],"parent_id":33165633,"points":null,"story_id":33164922,"text":"Does it work with manifest V3?","title":null,"type":"comment","url":null}],"created_at":"2022-10-11T16:50:07.000Z","created_at_i":1665507007,"id":33165633,"options":[],"parent_id":33165602,"points":null,"story_id":33164922,"text":"We haven&#x27;t seen that at all. 10&#x27;s of millions of users have used apps built on this SDK.<p>I think the reason it isn&#x27;t an issue is because Gmail (the client&#x2F;server) doesn&#x27;t really know that there are extensions running","title":null,"type":"comment","url":null}],"created_at":"2022-10-11T16:47:54.000Z","created_at_i":1665506874,"id":33165602,"options":[],"parent_id":33164922,"points":null,"story_id":33164922,"text":"Is there a higher risk of the user&#x27;s account being blocked by Google after using this?","title":null,"type":"comment","url":null},{"author":"xixixao","children":[{"author":"jinpan","children":[],"created_at":"2022-10-11T16:58:14.000Z","created_at_i":1665507494,"id":33165743,"options":[],"parent_id":33165719,"points":null,"story_id":33164922,"text":"&gt; It vastly increased the number of end users (20M+) using apps built on our SDK. This gave us significant leverage with Google. They are super supportive of the SDK and give us early access to several builds to ensure the SDK doesn\u2019t break when they make updates to Gmail.","title":null,"type":"comment","url":null}],"created_at":"2022-10-11T16:56:08.000Z","created_at_i":1665507368,"id":33165719,"options":[],"parent_id":33164922,"points":null,"story_id":33164922,"text":"Has Google given any guarantees about maintaining compatibility with browser extensions?","title":null,"type":"comment","url":null},{"author":"adeptima","children":[{"author":"worewood","children":[{"author":"adeptima","children":[],"created_at":"2022-10-11T17:18:57.000Z","created_at_i":1665508737,"id":33166007,"options":[],"parent_id":33165972,"points":null,"story_id":33164922,"text":"No necessary bad or evil. However perception of intentions here dont give a good feeling. Better to investigate more.","title":null,"type":"comment","url":null},{"author":"alooPotato","children":[],"created_at":"2022-10-11T17:30:17.000Z","created_at_i":1665509417,"id":33166171,"options":[],"parent_id":33165972,"points":null,"story_id":33164922,"text":"See Fred&#x27;s comment above - the one thing that&#x27;s different about our SDK vs typical JS libraries is that Gmail is a moving target AND several extensions may be working modyifying Gmail at the same time. It&#x27;s really important that developers are on the latest compatible versions of the SDK.<p>The app id&#x27;s are used to reach out to developers who may be on too old of a version of the SDK.<p>All that being said, seems like we could make this opt in. Another idea might be to post warnings in the dev console (in dev mode) if the version of the SDK you are using is too old. We&#x27;ll explore all of these but have other ideas?","title":null,"type":"comment","url":null}],"created_at":"2022-10-11T17:16:16.000Z","created_at_i":1665508576,"id":33165972,"options":[],"parent_id":33165835,"points":null,"story_id":33164922,"text":"Wow. This is bad in so many ways. Hasn&#x27;t nobody made a truly free as in freedom fork?","title":null,"type":"comment","url":null},{"author":"frew","children":[{"author":"adeptima","children":[],"created_at":"2022-10-11T17:20:26.000Z","created_at_i":1665508826,"id":33166025,"options":[],"parent_id":33165985,"points":null,"story_id":33164922,"text":"Fred, your comment is greatly appreciated! Will investigate more","title":null,"type":"comment","url":null}],"created_at":"2022-10-11T17:17:14.000Z","created_at_i":1665508634,"id":33165985,"options":[],"parent_id":33165835,"points":null,"story_id":33164922,"text":"The fundamental motivation for the app id concept is that part of the value that InboxSDK provides is cushioning the developer from version conflicts, both from Gmail updates and from multiple extensions that all use InboxSDK. So we use app ids + a custom error reporting mechanism to aggregate anonymized error reports in order to figure out incompatibilities + reach out to the developer as appropriate.<p>You&#x27;re welcome to make the app id opaque. Also feel free to file an issue for making a setting to disable the app id - definitely not opposed to adding it as an option given interest.<p>-Fred<p>Eng @ Streak","title":null,"type":"comment","url":null},{"author":"AgentME","children":[],"created_at":"2022-10-11T19:01:56.000Z","created_at_i":1665514916,"id":33167656,"options":[],"parent_id":33165835,"points":null,"story_id":33164922,"text":"(Streak and InboxSDK developer here)<p>&gt;2. source code looks a bit old search &#x2F;* @flow *&#x2F;<p>The codebase is in a hybrid setup of Flow and Typescript right now as we&#x27;ve been incrementally moving to Typescript. We&#x27;ve been opportunistically updating code to Typescript as we go. Both parts are still typechecked and we still see either system as a massive improvement over untyped Javascript. There is some awkwardness at the boundaries requiring some types to be specified again in the other system, but neither has any real concepts the other doesn&#x27;t so it&#x27;s not as painful as one might think. We do expect to get the codebase to pure Typescript in the future; we&#x27;ve recently finished a large conversion of an internal non-InboxSDK codebase of ours.<p>&gt;3. <a href=\"https:&#x2F;&#x2F;github.com&#x2F;InboxSDK&#x2F;InboxSDK&#x2F;blob&#x2F;main&#x2F;package.json\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;InboxSDK&#x2F;InboxSDK&#x2F;blob&#x2F;main&#x2F;package.json</a> dev dependencies mixed with everything else<p>That package.json isn&#x27;t actually part of the published npm package. Only the files in packages&#x2F;core&#x2F; are published in the npm package. The project wasn&#x27;t originally set up to be published on npm and when we started publishing to npm, we wanted the package to have a separate readme and directory structure from the main then-private repo so we set up that separate directory for publishing it. There may be some room to streamline that setup, especially since now there&#x27;s no public&#x2F;private split.","title":null,"type":"comment","url":null}],"created_at":"2022-10-11T17:04:43.000Z","created_at_i":1665507883,"id":33165835,"options":[],"parent_id":33164922,"points":null,"story_id":33164922,"text":"InboxSDK is very nice. However my personal stopper is the use of YOUR_APP_ID_HERE for broadcasting to mothership.<p>Didnt check the source code fully for a while.<p>1. hello-world example gives you a warning right into the face:<p>InboxSDK Developer Warning: Invalid AppId\nYou&#x27;ve loaded the InboxSDK with an unregistered appId. Registration is free but necessary to load the SDK.<p><a href=\"https:&#x2F;&#x2F;github.com&#x2F;InboxSDK&#x2F;hello-world\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;InboxSDK&#x2F;hello-world</a><p>It would be great to see it truly open source without YOUR_APP_ID_HERE hustle<p>2. source code looks a bit old \nsearch &#x2F;* @flow *&#x2F;<p>3. <a href=\"https:&#x2F;&#x2F;github.com&#x2F;InboxSDK&#x2F;InboxSDK&#x2F;blob&#x2F;main&#x2F;package.json\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;InboxSDK&#x2F;InboxSDK&#x2F;blob&#x2F;main&#x2F;package.json</a>\ndev dependencies mixed with everything else<p>Overall it&#x27;s still a very valuable project. Hacking into gmail or any other big SaaS service UI is multiyear unpleasant journey. Did it for LinkedIn myself. Lot of respect in InboxSDK team anyway.","title":null,"type":"comment","url":null},{"author":"samuelstros","children":[{"author":"alooPotato","children":[{"author":"samuelstros","children":[],"created_at":"2022-10-11T18:33:16.000Z","created_at_i":1665513196,"id":33167204,"options":[],"parent_id":33166218,"points":null,"story_id":33164922,"text":"1) I have to add everyone to a box if I want to collaborate.\n2) I want to collaborate directly in a thread. See <a href=\"https:&#x2F;&#x2F;missiveapp.com&#x2F;features&#x2F;collaborative-writing\" rel=\"nofollow\">https:&#x2F;&#x2F;missiveapp.com&#x2F;features&#x2F;collaborative-writing</a>","title":null,"type":"comment","url":null}],"created_at":"2022-10-11T17:32:52.000Z","created_at_i":1665509572,"id":33166218,"options":[],"parent_id":33166032,"points":null,"story_id":33164922,"text":"Hope someone builds this with the InboxSDK!<p>Would love to know how Streak can do better at the collaboration use case for you though","title":null,"type":"comment","url":null},{"author":"kak9","children":[{"author":"samuelstros","children":[],"created_at":"2022-10-12T07:33:45.000Z","created_at_i":1665560025,"id":33173964,"options":[],"parent_id":33173140,"points":null,"story_id":33164922,"text":"We choose Missive for now because Missive feels like a proper snappy desktop app and is vastly cheaper ($15 vs $50 per user). Front feels like a bloated website wrapped in Electron.<p>But, Missive is full of design flaws. They seem to add feature after feature without taking the relation between different features into account, nor do they seem to have a UX designer on the team. The Snooze shortcut for example opens a different snooze selector in a private email compared to a team email. The list of quirks goes on.<p>I fear that we will eventually switch to Front because Missive is unintuitive or (please someone build that) Gmail with collaboration features.","title":null,"type":"comment","url":null}],"created_at":"2022-10-12T05:13:47.000Z","created_at_i":1665551627,"id":33173140,"options":[],"parent_id":33166032,"points":null,"story_id":33164922,"text":"how do missive and front compare to each other? Do you find one superior?","title":null,"type":"comment","url":null}],"created_at":"2022-10-11T17:20:43.000Z","created_at_i":1665508843,"id":33166032,"options":[],"parent_id":33164922,"points":null,"story_id":33164922,"text":"I love Streak for singleplayer but prefer Missive or Front for collaboration.<p>It would be awesome if someone can turn Gmail into a collaboration hub like <a href=\"https:&#x2F;&#x2F;missiveapp.com&#x2F;\" rel=\"nofollow\">https:&#x2F;&#x2F;missiveapp.com&#x2F;</a> or Front with this SDK.","title":null,"type":"comment","url":null},{"author":"btown","children":[{"author":"alooPotato","children":[],"created_at":"2022-10-11T17:31:58.000Z","created_at_i":1665509518,"id":33166201,"options":[],"parent_id":33166120,"points":null,"story_id":33164922,"text":"Yeah this is a great idea. Will explore.","title":null,"type":"comment","url":null}],"created_at":"2022-10-11T17:27:05.000Z","created_at_i":1665509225,"id":33166120,"options":[],"parent_id":33164922,"points":null,"story_id":33164922,"text":"This is incredible! A few years ago we used InboxSDK to build a custom interface to visualize all kinds of interaction information from a corporate database, based on a currently selected or hovered email address or thread (and in a way that it could be used alongside Streak, and actively was!).<p>It was a breath of fresh air, but not having access to source code meant that when we went outside of the supported interfaces and needed to do some reverse engineering ourselves, we were working with a hand tied behind our back, and couldn&#x27;t easily contribute any of our findings upstream. Now, it&#x27;s the perfect solution, and I hope an open community sprouts up around this!<p>Regarding the updates, it might be a good idea to put together a status page just for the SDK - similar to <a href=\"https:&#x2F;&#x2F;status.streak.com&#x2F;\" rel=\"nofollow\">https:&#x2F;&#x2F;status.streak.com&#x2F;</a> but perhaps a product that doesn&#x27;t track historical uptime :) and provides more granular subscription capabilities.<p>That way, any project using this can subscribe to &quot;Gmail made a change, if you&#x27;re affected you&#x27;ll need to bump your InboxSDK version and re-publish to the Chrome store&quot; in a Slack thread or even write a webhook-creates-a-Github-PR integration and - in cases where there are business users of their extension - ensure that any resulting outage is triaged appropriately. And perhaps subscribe to more minor releases in a separate more-asynchronous Slack channel. I imagine this might be helpful for Streak as a consumer of the SDK as well :)","title":null,"type":"comment","url":null},{"author":"bilalq","children":[{"author":"frew","children":[{"author":"michaelmior","children":[{"author":"alooPotato","children":[{"author":"kiliancs","children":[],"created_at":"2022-10-11T18:30:19.000Z","created_at_i":1665513019,"id":33167143,"options":[],"parent_id":33166601,"points":null,"story_id":33164922,"text":"Understandable, but really a deal-breaker for many.","title":null,"type":"comment","url":null},{"author":"bilalq","children":[{"author":"alooPotato","children":[],"created_at":"2022-10-12T00:02:29.000Z","created_at_i":1665532949,"id":33170907,"options":[],"parent_id":33170779,"points":null,"story_id":33164922,"text":"Most of our users of Streak don&#x27;t know and def don&#x27;t care what Manifest V3 is.","title":null,"type":"comment","url":null}],"created_at":"2022-10-11T23:48:06.000Z","created_at_i":1665532086,"id":33170779,"options":[],"parent_id":33166601,"points":null,"story_id":33164922,"text":"I suspect there&#x27;s a shift coming once Chrome forces manifest v3. TamperMonkey also gives you a unified API to build your unified API on top of.","title":null,"type":"comment","url":null},{"author":"michaelmior","children":[{"author":"alooPotato","children":[],"created_at":"2022-10-12T15:33:18.000Z","created_at_i":1665588798,"id":33178493,"options":[],"parent_id":33178232,"points":null,"story_id":33164922,"text":"Maybe. But as someone who prioritizes what we build, no one asking for it is a pretty strong signal not to build it.","title":null,"type":"comment","url":null}],"created_at":"2022-10-12T15:17:23.000Z","created_at_i":1665587843,"id":33178232,"options":[],"parent_id":33166601,"points":null,"story_id":33164922,"text":"&gt; Those requests have mostly disappeared more recently<p>Could it be because Firefox users have given up? I wonder what percentage of your user base <i>would</i> be Firefox users if it were supported. Of course I don&#x27;t have an answer to that, but I don&#x27;t think lack of requests necessarily translates to lack of interest.","title":null,"type":"comment","url":null}],"created_at":"2022-10-11T17:58:21.000Z","created_at_i":1665511101,"id":33166601,"options":[],"parent_id":33166438,"points":null,"story_id":33164922,"text":"We don&#x27;t officially support it but some folks have had success.<p>From a user perspective, we used to get asked all the time to support Firefox for Streak. Those requests have mostly disappeared more recently - seems like our user base is predominantly Chrome and Edge.","title":null,"type":"comment","url":null}],"created_at":"2022-10-11T17:48:41.000Z","created_at_i":1665510521,"id":33166438,"options":[],"parent_id":33166376,"points":null,"story_id":33164922,"text":"Any chance Firefox support is on the roadmap?","title":null,"type":"comment","url":null},{"author":"cxr","children":[],"created_at":"2022-10-12T10:59:01.000Z","created_at_i":1665572341,"id":33175197,"options":[],"parent_id":33166376,"points":null,"story_id":33164922,"text":"Chrome left the WebKit ecosystem about a decade ago.","title":null,"type":"comment","url":null}],"created_at":"2022-10-11T17:44:44.000Z","created_at_i":1665510284,"id":33166376,"options":[],"parent_id":33166339,"points":null,"story_id":33164922,"text":"I don&#x27;t believe so, but we target everything in the Webkit ecosystem (Chrome, Edge, Safari), so Firefox would be the only odd browser out.","title":null,"type":"comment","url":null}],"created_at":"2022-10-11T17:42:16.000Z","created_at_i":1665510136,"id":33166339,"options":[],"parent_id":33164922,"points":null,"story_id":33164922,"text":"This is interesting.<p>We&#x27;re shifting away from browser extensions to TamperMonkey scripts because of the futility of trying to get everyone in the company to use the same browser. Would your SDK be usable with TamperMonkey?","title":null,"type":"comment","url":null},{"author":"josteink","children":[{"author":"koolhead17","children":[],"created_at":"2022-10-11T18:34:30.000Z","created_at_i":1665513270,"id":33167223,"options":[],"parent_id":33166609,"points":null,"story_id":33164922,"text":"Same this side. We are happy user of Gmail.js[1]<p>[1] <a href=\"https:&#x2F;&#x2F;github.com&#x2F;KartikTalwar&#x2F;gmail.js\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;KartikTalwar&#x2F;gmail.js</a>","title":null,"type":"comment","url":null},{"author":"goforbg","children":[],"created_at":"2022-10-12T06:58:12.000Z","created_at_i":1665557892,"id":33173751,"options":[],"parent_id":33166609,"points":null,"story_id":33164922,"text":"Came here to tell the exact same thing actually.","title":null,"type":"comment","url":null}],"created_at":"2022-10-11T17:58:57.000Z","created_at_i":1665511137,"id":33166609,"options":[],"parent_id":33164922,"points":null,"story_id":33164922,"text":"Nice move open-sourcing it. At the company I work for, we considered InboxSDK when making an Gmail-integrating extension.<p>But at the time it was closed-source so we went with the open-source Gmail.js[1] instead.<p>Now that InboxSDK is open-source too, how do you guys feel they compare? Do they have their different strengths or niches?<p>[1] <a href=\"https:&#x2F;&#x2F;github.com&#x2F;KartikTalwar&#x2F;gmail.js\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;KartikTalwar&#x2F;gmail.js</a>","title":null,"type":"comment","url":null},{"author":"usamaejaz","children":[],"created_at":"2022-10-11T18:54:58.000Z","created_at_i":1665514498,"id":33167557,"options":[],"parent_id":33164922,"points":null,"story_id":33164922,"text":"Amazing news! InboxSDK is amazing and now it&#x27;s even more awesome.","title":null,"type":"comment","url":null},{"author":"nip","children":[{"author":"alooPotato","children":[],"created_at":"2022-10-11T19:09:59.000Z","created_at_i":1665515399,"id":33167789,"options":[],"parent_id":33167586,"points":null,"story_id":33164922,"text":"That&#x27;s great to hear!","title":null,"type":"comment","url":null}],"created_at":"2022-10-11T18:57:13.000Z","created_at_i":1665514633,"id":33167586,"options":[],"parent_id":33164922,"points":null,"story_id":33164922,"text":"This is awesome news!<p>My team built the first version of the Pipedrive Gmail extension [1] and Inbox SDK was [2] instrumental to getting it to work we wanted to: among other things we used the routing mechanism heavily to give contextual views depending on where the user was within gmail.<p>Thanks for your work, and thanks for making it open-source!<p>[1] <a href=\"https:&#x2F;&#x2F;www.pipedrive.com&#x2F;en&#x2F;blog&#x2F;pipedrive-gmail-extension\" rel=\"nofollow\">https:&#x2F;&#x2F;www.pipedrive.com&#x2F;en&#x2F;blog&#x2F;pipedrive-gmail-extension</a><p>[2] I don&#x27;t work in Pipedrive anymore and I don&#x27;t know whether Inbox SDK is still used at this point in time.","title":null,"type":"comment","url":null},{"author":"raoulj","children":[{"author":"alooPotato","children":[],"created_at":"2022-10-11T19:34:34.000Z","created_at_i":1665516874,"id":33168167,"options":[],"parent_id":33167695,"points":null,"story_id":33164922,"text":";)","title":null,"type":"comment","url":null}],"created_at":"2022-10-11T19:04:32.000Z","created_at_i":1665515072,"id":33167695,"options":[],"parent_id":33164922,"points":null,"story_id":33164922,"text":"Congrats to the team! Excited to see the community in full force.  Looking forward to sending some PR\u2019s your way :)","title":null,"type":"comment","url":null},{"author":"dekervin","children":[],"created_at":"2022-10-11T20:38:36.000Z","created_at_i":1665520716,"id":33168929,"options":[],"parent_id":33164922,"points":null,"story_id":33164922,"text":"I have a personal app that I have been using for years that stopped working last week or the week before. I actually thought Streak was folding and started hacking a replacement for my use case.<p>Streak was one of the app I recommended most to indie entrepreneurs. \nGlad to hear you&#x27;re still standing !","title":null,"type":"comment","url":null},{"author":"tkk23","children":[],"created_at":"2022-10-11T21:03:10.000Z","created_at_i":1665522190,"id":33169218,"options":[],"parent_id":33164922,"points":null,"story_id":33164922,"text":"Can this already be called the spiritual successor of Lotus Notes or are important components missing?","title":null,"type":"comment","url":null},{"author":"fillskills","children":[{"author":"alooPotato","children":[],"created_at":"2022-10-11T21:50:06.000Z","created_at_i":1665525006,"id":33169685,"options":[],"parent_id":33169226,"points":null,"story_id":33164922,"text":"Yeah this would be a cool product. You&#x27;d have to use both the InboxSDK to build your UI in Gmail as well as using the Gmail API (<a href=\"https:&#x2F;&#x2F;developers.google.com&#x2F;gmail&#x2F;api\" rel=\"nofollow\">https:&#x2F;&#x2F;developers.google.com&#x2F;gmail&#x2F;api</a>) to make sure new incoming emails are correctly sorted by your rules.","title":null,"type":"comment","url":null},{"author":"timwis","children":[],"created_at":"2022-10-12T06:02:29.000Z","created_at_i":1665554549,"id":33173426,"options":[],"parent_id":33169226,"points":null,"story_id":33164922,"text":"I imagine you know this already, but hey.com has this as a key feature.<p>I&#x27;ve even seen an article or two about how to get Fastmail to do something similar, which I imagine would work for Gmail too, e.g. <a href=\"https:&#x2F;&#x2F;www.joshuawood.net&#x2F;make-fastmail-work-like-hey\" rel=\"nofollow\">https:&#x2F;&#x2F;www.joshuawood.net&#x2F;make-fastmail-work-like-hey</a>","title":null,"type":"comment","url":null}],"created_at":"2022-10-11T21:03:55.000Z","created_at_i":1665522235,"id":33169226,"options":[],"parent_id":33164922,"points":null,"story_id":33164922,"text":"Will it be possible to create a &#x27;allow&#x2F;disallow list&#x27;? I have been dreaming of an inbox where I can block all incoming emails by default. A separate page shows tags of incoming domains and people (highlighting how much you have communicated with them previously). Then I can whitelist whose communication I actually want to see in my inbox.<p>Looking at the docs this isnt possible so far but happy to be corrected. Great product and also very nice of you to OSS it.","title":null,"type":"comment","url":null},{"author":"ocdtrekkie","children":[{"author":"alooPotato","children":[{"author":"saimiam","children":[],"created_at":"2022-10-12T00:33:27.000Z","created_at_i":1665534807,"id":33171156,"options":[],"parent_id":33170945,"points":null,"story_id":33164922,"text":"&gt; <i>In terms of competition amongst email providers, it seems pretty healthy - Hey (www.hey.com) would be an example I point to of being able to start a new email service.</i><p>And pretzelbox.cc (mine)! It\u2019s an inbox for your domain. Can\u2019t believe you didn\u2019t mention this super niche tool used by me and my four alt accounts!","title":null,"type":"comment","url":null}],"created_at":"2022-10-12T00:05:48.000Z","created_at_i":1665533148,"id":33170945,"options":[],"parent_id":33170424,"points":null,"story_id":33164922,"text":"Yes there are lots of users of Gmail. But I feel like email in general is one of the more open protocols we have. I understand it&#x27;s hard to self host nowadays but at least it&#x27;s possible. And Gmail isn&#x27;t the only major player.<p>In terms of competition amongst email providers, it seems pretty healthy - Hey (www.hey.com) would be an example I point to of being able to start a new email service. Def can&#x27;t say the same about social networking protocols...","title":null,"type":"comment","url":null}],"created_at":"2022-10-11T23:05:55.000Z","created_at_i":1665529555,"id":33170424,"options":[],"parent_id":33164922,"points":null,"story_id":33164922,"text":"&gt; Over 1.8B users spend their days in Gmail!<p>Way to absolutely depress me one paragraph in.<p>It&#x27;s really unfortunate to see a whole ecosystem trying to ossify this problem with even more dependence on a monopoly. Even if this tool is open source, it&#x27;s an open source tool to lock you into a proprietary one, rather than using open standards to create strong mail-enabled applications people can run where they choose.","title":null,"type":"comment","url":null},{"author":"matt_holden","children":[],"created_at":"2022-10-12T03:25:09.000Z","created_at_i":1665545109,"id":33172427,"options":[],"parent_id":33164922,"points":null,"story_id":33164922,"text":"When I was a product leader at Dropbox back in 2015, we chose to build our Gmail integration on the InboxSDK and we&#x27;re generally happy we did.<p>It let us focus on our core user experience, without worrying about all the DOM hacking, Gmail variants, constant version updates, etc.<p>If you want to build cool experiences in Gmail, highly recommended.","title":null,"type":"comment","url":null},{"author":"goforbg","children":[],"created_at":"2022-10-12T06:57:36.000Z","created_at_i":1665557856,"id":33173746,"options":[],"parent_id":33164922,"points":null,"story_id":33164922,"text":"This is actually great, we use aria labels at inboxpirates.com to extract most of the Gmail data. Saw this and Gmail Js (<a href=\"https:&#x2F;&#x2F;github.com&#x2F;KartikTalwar&#x2F;gmail.js&#x2F;\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;KartikTalwar&#x2F;gmail.js&#x2F;</a>)<p>It seems more robust than Gmail JS","title":null,"type":"comment","url":null},{"author":"mihilie","children":[],"created_at":"2022-10-15T04:57:38.000Z","created_at_i":1665809858,"id":33211894,"options":[],"parent_id":33164922,"points":null,"story_id":33164922,"text":"Wonderful initiative, thank you!!!<p>Would this allow me to change the labels (in the NavMenu I guess)? For example, I&#x27;d like to add an icon to each label, and the icon&#x27;s onClick event will be used to alter the text in the search box.","title":null,"type":"comment","url":null}],"created_at":"2022-10-11T15:55:09.000Z","created_at_i":1665503709,"id":33164922,"options":[],"parent_id":null,"points":257,"story_id":33164922,"text":"Hi HN! We\u2019re Aleem, Chris, Borys, Meichen and Zach from Streak (YC S11) and today we\u2019re open sourcing our InboxSDK <a href=\"https:&#x2F;&#x2F;www.inboxsdk.com\" rel=\"nofollow\">https:&#x2F;&#x2F;www.inboxsdk.com</a>, which makes it easy to build apps for Gmail.<p>Over 1.8B users spend their days in Gmail! Having your app built into the Gmail workflow is a better user experience and gives you great user retention.  InboxSDK gives you a high-level, declarative API to insert your UI into Gmail without having to directly manipulate the DOM yourself. End users install a browser extension to use your app.<p>The SDK can add UI to multiple areas of Gmail. For example, adding a button is as simple as:<p><pre><code>  composeView.addButton({\n    title: &quot;My Nifty Button!&quot;,\n    iconUrl: &#x27;https:&#x2F;&#x2F;example.com&#x2F;foo.png&#x27;,\n    onClick: function(event) {\n      event.composeView.insertTextIntoBodyAtCursor(&#x27;Hello World!&#x27;);\n    },\n  });\n</code></pre>\nInboxSDK enables you to add info to the sidebar on threads, add items in the left navigation tree, insert results into the search box, navigate to full page routes, add toolbar buttons to the compose window, add label indicators to thread list views and many more. You can see some examples in my comment posted below.<p>Hubspot, Dropbox, Giphy, Clickup, Loom, Todoist, Clearbit and our own Streak have all built apps using the InboxSDK.  The InboxSDK is open source dual-licensed under the MIT and Apache 2.0 licenses for maximum flexibility.<p>Why use the InboxSDK over rolling it yourself? Several reasons: (1) it\u2019s hard to do DOM manipulation in a performant way; (2) you need to handle all the different configurations of Gmail\u2014there are a lot, and they change often: e.g. conversation view on&#x2F;off, multiple inboxes, chat left&#x2F;right, personal vs Workspace accounts; (3) You have to maintain compatibility with tons of other Gmail extensions so you don\u2019t stomp over each other.<p>On a technical level, the InboxSDK handles all the DOM watching and manipulation, XHR interception, multiple extension coordination, and exposes a high level API to developers. We make use of page-parser-tree, another package we open sourced that helps detect elements on the page performantly. The trickiest bit we handle is intercepting and modifying network requests that Gmail makes in order to support several of the APIs we expose.<p>We\u2019ve been building this SDK for years - it\u2019s what powers Streak (www.streak.com), an 8 figure ARR SaaS business. We built the InboxSDK for ourselves because we wanted to separate our logic for wrangling Gmail from that of our app. Several years ago we let developers use a hosted version of our SDK. We didn\u2019t want anyone else to go through the same pain to integrate deeply with Gmail. There were two unexpected benefits:<p>It vastly increased the number of end users (20M+) using apps built on our SDK. This gave us significant leverage with Google. They are super supportive of the SDK and give us early access to several builds to ensure the SDK doesn\u2019t break when they make updates to Gmail.<p>We spent an ungodly amount of time maintaining compatibility with other Gmail extensions. Once the InboxSDK became a defacto standard, all the apps (currently &gt;1000) that used it were instantly compatible (the InboxSDK operates under the model that there will be several extensions running at the same time and it elects a leader to route all modification through).<p>Why open source it now? First, several companies were nervous about us hosting the SDK. We mainly did this so that every extension was running the same version of the SDK, but with the recent Chrome manifest V3 changes, remote code execution is no longer supported. Not hosting the SDK removed the primary reason why the project needed to be closed source. We do need to figure out a new way of keeping all developers relatively up to date on the latest version of the SDK, <i>any ideas?</i><p>We\u2019d love feedback! The repo is <a href=\"https:&#x2F;&#x2F;github.com&#x2F;inboxSDK&#x2F;inboxsdk\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;inboxSDK&#x2F;inboxsdk</a>, and the docs are: <a href=\"https:&#x2F;&#x2F;inboxsdk.github.io&#x2F;inboxsdk-docs\" rel=\"nofollow\">https:&#x2F;&#x2F;inboxsdk.github.io&#x2F;inboxsdk-docs</a>","title":"Show HN: Open-Sourcing InboxSDK (YC S11) \u2013 Build Apps in Gmail","type":"story","url":null}
