On the Rust/Electron side, all the heavy lifting is done in Rust-land, and so far, it's going pretty well. It's not all roses of course - it takes a bounce or two to start instead of launching instantly, and it seems there's not much to be done about Electron's baseline memory usage or size on disk.
(I went down a crazy rabbit hole of compiling Chromium/Electron to see if there were things that could be stripped out, because I honestly don't need much, but realized that is a very large undertaking. Possibly another day. Some kind of "Electron Lite" would sure be awesome...)
But in general I'm spending an inordinate amount of time paying attention to performance. It was my main concern with the Electron platform. So far I've got playback on par, and stuff like loading files, silence detection, and drawing waveforms is actually faster than the Mac version. It feels snappy.
I looked at a bunch of cross-platform UI toolkits, and everything has its tradeoffs. Qt is probably the most full-featured alternative, and I’ve had experience with it in the past, but I didn’t love the idea of tackling a project this size in C++. On the Rust side, Tauri is very promising but it’s still early days.
Aside from the framework, the other big tradeoff is 1 app vs multiple - more “nativeness” for a much slower feature velocity. The big companies like Slack and Figma don’t even make that trade with millions in funding… and it seemed unwise to take that on as a solo bootstrapped developer.
In terms of stuff like ecosystem, building/packaging, updater support, and even nice little native details like progress bars on app icons, Electron has a lot going for it. The big downsides in my mind are startup time, baseline memory usage, and disk size. Once it’s up and running, IMO app performance is almost all down to the app’s code. So I’m optimizing where I can - being mindful of algorithms, avoiding memory copies, trying to keep things cache-friendly, avoiding heavy JS stuff, taking copious benchmarks, etc.
It would help with both the disk and memory usage, easy to learn after web frameworks (both the framework, Flutter, feels familiar and Dart is super easy to learn), works well with Rust, but of course it has its downsides (no longer can rely on the html js css ecosystem).
IMO this project is already in debt on innovation tokens[0] given I didn't know Rust coming in, nor much at all about video. And then, hybrid web/native stuff is just not very widespread so there's not a lot of existing answers for things. Lots of digging into code and figuring stuff out. The web stack (Svelte, TypeScript) is the one part of this thing that already felt familiar, and I didn't want to throw that out.
0: from Choose Boring Technology :) http://boringtechnology.club/