<story><title>A Go Package for Building Progressive Web Apps</title><url>https://go-app.dev/</url></story><parent_chain><item><author>oefrha</author><text>One problem with golang&amp;#x27;s wasm target is that the generated binary is huge. For instance, I checked app.wasm of this documentation site and the four examples listed at &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;go-app.dev&amp;#x2F;built-with&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;go-app.dev&amp;#x2F;built-with&lt;/a&gt;:&lt;p&gt;0. This site: 14.9MB, 3.4MB gzipped;&lt;p&gt;1. 13.5MB, 3.2MB gzipped;&lt;p&gt;2. 15.4MB, 3.2MB gzipped;&lt;p&gt;3. 4.7MB, 1.2MB gzipped (this is an extremely bare bones demo);&lt;p&gt;4. 25.0MB, 5.4MB gzipped.&lt;p&gt;You can save a bit more with brotli, but not much more. I built an app with golang wasm last year, but ended up rewriting everything in good old TS since I couldn&amp;#x27;t justify the ~15MB raw, ~2.7MB brotli&amp;#x27;ed payload.&lt;p&gt;I guess you can make some huge savings if tinygo has enough capabilities to cover all your needs. Not sure if it&amp;#x27;s possible with this library, but if it is, they certainly haven&amp;#x27;t explored it, hence the 3.4MB gzipped wasm for a documentation site.</text></item></parent_chain><comment><author>void_mint</author><text>&amp;gt; but ended up rewriting everything in good old TS since I couldn&amp;#x27;t justify the ~15MB raw, ~2.7MB brotli&amp;#x27;ed payload.&lt;p&gt;What were the size improvements?</text></comment>
<story><title>A Go Package for Building Progressive Web Apps</title><url>https://go-app.dev/</url></story><parent_chain><item><author>oefrha</author><text>One problem with golang&amp;#x27;s wasm target is that the generated binary is huge. For instance, I checked app.wasm of this documentation site and the four examples listed at &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;go-app.dev&amp;#x2F;built-with&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;go-app.dev&amp;#x2F;built-with&lt;/a&gt;:&lt;p&gt;0. This site: 14.9MB, 3.4MB gzipped;&lt;p&gt;1. 13.5MB, 3.2MB gzipped;&lt;p&gt;2. 15.4MB, 3.2MB gzipped;&lt;p&gt;3. 4.7MB, 1.2MB gzipped (this is an extremely bare bones demo);&lt;p&gt;4. 25.0MB, 5.4MB gzipped.&lt;p&gt;You can save a bit more with brotli, but not much more. I built an app with golang wasm last year, but ended up rewriting everything in good old TS since I couldn&amp;#x27;t justify the ~15MB raw, ~2.7MB brotli&amp;#x27;ed payload.&lt;p&gt;I guess you can make some huge savings if tinygo has enough capabilities to cover all your needs. Not sure if it&amp;#x27;s possible with this library, but if it is, they certainly haven&amp;#x27;t explored it, hence the 3.4MB gzipped wasm for a documentation site.</text></item></parent_chain><comment><author>nikki93</author><text>When I&amp;#x27;ve tried it out for wasm game development, the biggest issue I had was frequent GC pauses (was a few every second) causing frame drops. TinyGo gets at this issue. I&amp;#x27;ve used C++ since then, focusing on a small subset that keeps things flexible and compiling fast. Been hacking on a Go -&amp;gt; C++ compiler lately that produces that subset.</text></comment>