Personally, the user experience is bad in Figma, as each time it wants me to login in the browser while using the Figma desktop app. Every time you start up the app :(
Also requires me have a working internet to be able to use it. Sketch or Affinity Designer don't have these problems. I hope they will fix that problem with Figma.
Being so strongly tethered to the web is absolutely Figma's achilles's heel. Well that, and its needless Electron wrapping for its desktop version. Its file format not being open and well documented (unlike the Sketch file format) is also concerning to me.
So if they…
- Add a full offline mode
- Ditch Electron for a more focused/lightweight webassembly+canvas implementation
- Open and document their file format to allay lockin concerns
…I'd be much more inclined to use it instead of Sketch.
Sorry, I used ambiguous language. What I was suggesting was replacing Electron with a standalone webassembly+canvas engine, since much of Chromium is redundant in this particular case.
The document is rendered with WebGL on the canvas but the UI around it (layers panel, properties panel) is React. Not to mention a lot of other business logic for things like permissions that’s shared with the rest of the fullstack app. So either way you need some sort of browser engine.
If you use the native webview, it’ll probably use less memory but be slower because it’s basically running Safari instead of Chrome. It’s probably the wrong tradeoff for Figma because the browser’s memory usage and JS heap memory is pretty negligible compared to the amount of memory the user’s document uses, especially large ones with a lot of images. There’s way more room for optimization there and that has nothing to do with Electron.
It’s fun to think about what the performance would be if it was 100% C++ given infinite resources but realistically it’d be way less productive and more bug prone than React. I’ve written UIs in C++ before,would not repeat. That time would be better spent optimizing actual bottlenecks, like rendering the design file (where the GPU is the bottlebeck).
We actually have a native (not WASM) with native webview build we use internally for debugging with XCode. No, performance isn’t better enough to warrant dealing with Safari issues and shipping that over the Electron + WASM build.
Thanks for the detailed answer! That all makes sense, I actually saw one of your engineers present at a conference a few years ago and was really impressed. The tech blog is also fascinating to read.
Also requires me have a working internet to be able to use it. Sketch or Affinity Designer don't have these problems. I hope they will fix that problem with Figma.