I'm planning to create a cross-platform desktop app that can copy and restore files between drives for backup purposes. As a backend developer, I'm mostly familiar with Node.js and TypeScript, but I don't have extensive frontend experience aside from a few projects using Svelte and Bootstrap. My first thought was to develop the app with Electron, but I have concerns about how well it will handle performance when transferring large files. I've recently discovered Tauri, which could allow me to use Svelte for the frontend and Rust for the backend. I'm open to learning Rust if it's a better option. Any suggestions or guidance would be greatly appreciated!
5 Answers
Have you considered using Flutter? It's a solid option for cross-platform applications. You might want to check it out!
If you're just transferring files without additional processing, performance is mostly dictated by the filesystem rather than the language or frontend you use. It might help to create a minimal prototype and test its performance against standard file operations, like the built-in Windows file copy functionality. Resetting the file system cache between tests could give you clearer results.
You might want to try using C# with AvaloniaUI. It will involve learning C#, but coming from Node, you might find the transition smooth. It's worth a shot!
I usually go for Wails to build my desktop apps. It's lightweight, produces native binaries and utilizes the system's webview instead of bundling Chromium, which is a plus. You can start with the SvelteKit template and add Bootstrap for styling. There's a setup guide here: https://wails.io/docs/guides/sveltekit. It's pretty flexible too, allowing you to connect it directly to your backend or even write the backend in Go right inside the app.
If you're looking for a non-web solution, Avalonia is a great choice for Mac, Windows, and Linux. I tried Tauri recently and it seems decent as well. Since your main function is file copying, virtually any framework should work since the drive speed and network will likely be your limiting factors, rather than the framework itself. Don't worry too much about Node.js affecting performance.
I ran some basic tests copying 700 MB across 1,000 files:
- Tauri/Rust took about 800ms
- Electron/Node.js clocked in around 700ms.
So far, it seems like the choice of framework doesn't significantly impact file transfer performance for my situation. I'm going to conduct more thorough tests to make sure.