A bit of a run down of the experience I have had with using Deno desktop
General:
The core of Deno desktop is based on Deno using the laufey system webview or CEF webview for the frontend allowing apps to be developed with HTML/JS/CSS. Because Deno is essentially a backend JS environment the frontend is handled via the system/CEF webview using HTML/JS/CSS. At the cost of needing to include the Deno runtime in the binary the bundled packages will be larger than Tauri but less than systems that use CEF/Chromium webviews (only if using system webview)
Apps are compiled using Deno desktop into a single binary for packaging (MacOS) with the Resources folder only used for the app icon.
Unlike NW.js and Electron which both bundle a modified Chromium browser Deno uses by default the system webview (laufey) on the particular platform so the shipped application is massively lighter in terms of size.
Deno desktop can also use the CEF webview if desired which will of course make the app sizing similar to NW.js/Electron.
Popular opinion on Deno desktop seems to be as an alternative to Electron which is considered as 'bloatware' so the circle turns. The biggest hassle with Deno desktop as I see it after working with Tauri and NW.js is the need to code up the bridge from FE to BE for features like file system commands (using bindings) rather than having an inbuilt FE API.
Potentially Deno desktop could offer a really good all round desktop environment encompassing HTML/JS/CSS across the BE and FE with a bit more focus on API's to bridge the realms and the build structure is already reasonably sound with good binary sizes available.
Because Deno also supports Node then I suspect that anything that could be done with NW.js should be possible with Deno desktop and there are suggestions that the CEF option could eventually be reworked using a runtime mode which would eliminate shipping a browser with every bundle (this is something I reckon NW.js could benefit from if it was possible).
Not going to bother with comparisons as such suffice to say that my focus these days is on Tauri and Deno Desktop both of which appear quite stable and are under active development.
The brain dump (if you can call it that) .... (with the fullness of time this should grow)
:: Top Tips ::
Dev/Production detection -
I wanted to detect if the app was running in Dev or Prod - an easy way on macOS is to check for the icon.icns file in the Resource folder of the macOS app package.
During Prod the AppIcons.icns file will be in the bundle Resources folder but the folder will not exist when running DEV build
eg:
try {
//PROD
var fileExists = await Deno.readFile(... + 'Resources/AppIcon.icns');
} catch(e) {
// DEV
...
}
Retina Screen sizing on Macs -
Window settings for X, Y, width and height will be doubled when shown on screen eg: width of 200 will be 400 actual pixels on retina screen.
A window created with no width/height settings will default to 800 x 600 and show onscreen as 1600 x 1200
