Comparison with wails #3521
-
I stumbled upon wails https://github.com/wailsapp/wails |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 14 replies
-
Wails is easier |
Beta Was this translation helpful? Give feedback.
-
tauri will be more stable and smaller |
Beta Was this translation helpful? Give feedback.
-
I guess eventually the pros will produce some item by item comparisons but here is my take on WAILS/Tauri and Neutralino/NWjs as well. As an amateur hobbyist I am looking for a way to make desktop apps leveraging the simplicity of using HTML/JS/CSS without having to get involved with more intensive lower level languages. I also occasionally want to do apps for both Windows and Mac so web makes it easy. The other good thing about using HTML/JS/CSS for most of the app coding is that compiling is not necessary (WASM excepted) so dev can be simply done with text editors and doesn't require complex toolchains. Uptil now NW.js has done this quite well - custom builds of the distributed binary can be done by developers if they wish (not necessarily easy) but otherwise apps can be developed using just HTML/JS/CSS/Node technologies. Core features such as windowing/notifications/events/etc are implicit within the binary but made available via the nw API to the JS/Node world so no need to get to grips with lower level languages such as C++/Rust/Go/etc. The downside of NW.js is the size of the shipped binary because a browser is always being bundled (Chrome). This led me to look at Neutralino/WAILS/Tauri which all offer the advantage of a vastly smaller shipped binary package by using the OS'es inbuilt webview interface. At this point I would suggest that one of the biggest weaknesses of all these distros is that they are effectively one man bands (although Tauri appears to be more heavily resourced) and this means fixes/features/docs are too slow at times. Note 1: I haven't covered Electron here as I don't use it but it is similar to NW.js and rather better resourced - it also suffers from large shipped binary size. Note 2: The static web archive I have used initially to try the distros is old school with linked JS script files and standard page href links (no modules or ES stuff). Of the three (Neutralino/WAILS/Tauri) WAILS and Tauri look to be quite similar in concept with Neutralino almost but not quite. All three have small binary sizes as a result of not having to ship a browser. Neutralino (uses C++ for backend) - Pros: Easy to use with distributed compiled binaries. Server binary using C++ code and Client library using JS. Cons: Native menus not available. Usage: I find it great for small apps and archived static webs. It has extensions but documentation and useful examples are thin on the ground but potentially should be good - pro devs should have more success here. Manual bundling of Mac .app packages is easy but a toolchain could be handy. WAILS (uses Go for backend) - Pros: Cons: Usage: Tried a static web archive and worked fine in dev mode but links/JS not working in production mode. The fix may entail some changes within the backend Go code so looks like for a simple app dev needs to get involved with Go coding. The WAILS example app works well but it is designed around ES module coding which I think WAILS prefers. Tauri (uses Rust for backend - other languages on roadmap) - Pros: App bundling done with builds. Cons: Native Menus require Rust coding Usage: Tried a static web archive and it worked well in both dev and production. The production build for Mac actually produced a debug binary, a raw binary, a packaged .app bundle and a DMG.
I see these distros as a means to bring web tech into the desktop arena and provide a fusion of web and traditional desktop but sometimes it appears that the web ethos (along with Mobile) seems to predominate at the expense of the boring desktop feature set - things like native menuing are necessary in desktop to provide a consistency of use within an OS (bad enough that Apple changes the OS every year). Most app examples I've seen tend toward the web SPA approach in the main window using a framework of some sort - still to find a decent example of a desktop multi-window paradigm. Endnote: For me if shipped binary size is not an issue I would still use NW.js as apps can be coded with HTML/JS/CSS/Node without having to get involved with low level backend stuff. Neutralino is my next choice for smaller app sizes but the robustness of the backend needs improving but at least efforts are made to bring core functions out into the JS world. At this stage I would take Tauri over WAILS as it appears more feature complete but unfortunately too many core features are hidden in tha backend - caveat here - I think both distros have mechanisms for the backend to talk to the frontend for databases and stuff but it appears not implicit for things like windowing and menus, it is up to the dev to code. With Tauri I must say that the fact I could drop a simple web archive into the dist folder and do a build with a DMG as a result was impressive and I have managed to change the native menus around a bit but I would rather be doing it with JS. At the moment for me Tauri is potentially the best but would be good to see basic core functions like multi-windows/notifications/native menus made available in the JS space. |
Beta Was this translation helpful? Give feedback.
I guess eventually the pros will produce some item by item comparisons but here is my take on WAILS/Tauri and Neutralino/NWjs as well.
As an amateur hobbyist I am looking for a way to make desktop apps leveraging the simplicity of using HTML/JS/CSS without having to get involved with more intensive lower level languages. I also occasionally want to do apps for both Windows and Mac so web makes it easy.
The other good thing about using HTML/JS/CSS for most of the app coding is that compiling is not necessary (WASM excepted) so dev can be simply done with text editors and doesn't require complex toolchains.
Uptil now NW.js has done this quite well - custom builds of the distributed binary c…