Figma's engineering and design blog describes how it built a collaborative design tool in the browser, with C++, WebAssembly, and Rust.
HN commenters cite it for how Figma used WebAssembly and C++ to cut load time and build a pro design tool on the web.
San Francisco; Full Time; Onsite
I'm the cofounder of Figma (https://www.figma.com), a startup in San Francisco building a browser-based collaborative design tool to improve the way designers and developers work together. We're a small team (~30) and we're looking for talented engineers (https://www.figma.com/careers) who are interested in tackling hard technical problems with smart people and building a product that startups will rely on.
If you want to see what we value, you might find these interesting:
- First principles thinking: https://medium.com/figma-design/introducing-vector-networks-3b877d2b864f
- Pushing the web to the limit: https://medium.com/figma-design/building-a-professional-design-tool-on-the-web-6332ed4f1fcc
Upcoming/ongoing projects:
- Develop a plugin ecosystem from the ground up
- Build a community of design content and tools from scratch
- Cross-document shared symbols
- Multiplayer editing infrastructure (realtime simultaneous editing)
Our tech stack: C++, Emscripten, WebAssembly, Node, TypeScript, React, WebGL, Ruby, Sinatra
If you're interested in learning more about what we're working on or want to meet up to talk about any of my other projects (http://madebyevan.com/), you can email me at wallace@figma.com.
Explain? This sounds like a native wrapper on a browser. Does that solve the aliasing problem?
How about performance and battery life? I recall a blog post from the Figma team bragging about how they closed the gap to only 2X slower than a native app. [1]
[1] https://medium.com/figma-design/building-a-professional-design-tool-on-the-web-6332ed4f1fcc#.6sh7f5slz
He push and work on the implementation of Rust [1] and WebAssembly [2] to the tool.
[1] https://medium.com/figma-design/rust-in-production-at-figma-e10a0ec31929
[2] https://medium.com/figma-design/webassembly-cut-figmas-load-time-by-3x-76f3f2395164
Vector editing has a lot of CPU bound tasks. Evan has some writing regarding the transition to WASM https://medium.com/figma-design/webassembly-cut-figmas-load-time-by-3x-76f3f2395164
Of course there's a lot more tech used in building it - https://medium.com/figma-design/building-a-professional-design-tool-on-the-web-6332ed4f1fcc