Looking at you Ionic, Tauri, ...
Looking at you Ionic, Tauri, ...
Looking at you Ionic, Tauri, ...
A pile of HTML + JS is the only cross platform GUI toolkit that's practical to deploy.
I'm not really happy about it myself, but realistically there's not any other option than just bundling a website into a wrapper.
And to pre-empt any replies; your proposed solution must support Windows, Linux (X11 and Wayland), MacOS, iPhone, Android, Chromium and Firefox.
And to pre-empt any replies; your proposed solution must support Windows, Linux (X11 and Wayland), MacOS, iPhone, Android, Chromium and Firefox.
If you are a website, that's easy, you are actually making the correct choice with Electron insofar that you want a browser.
If you're doing an application not a webpage, then we're walking W+L+Mac+Phones, that's more tricky. I'm assuming for a second you want a usable UI (otherwise we'd be using Electron again :P ) so we're talking two applications at least, one for mobile, one for desktop + maybe iPads.
And then it's usually already too pricey to bother:
Why is Firefox a 'platform'? I'm assuming chromium is for chromeOS devices, but I don't know of any device that just runs Firefox.
they probably meant web versions of the app that run both on chromium and gecko (firefox) browser engines
As Communism said, yeah I was ment a web application. No need to spend dev time working on a different version of your app if you can just reuse the web version.
If you count browser engines, don't forget Webkit.
Chromium and Firefox are web browsers, of course they only support HTML+JS. That’s what they were designed for.
of course they only support HTML+JS.
WebAssembly is becoming more popular, which lets you run code written in languages other than JavaScript in a browser. It's not possible to do everything yet, so you still need some JS code and a bridge between the WASM and JS, but it's getting there. Emulators that run in the browser often use it.
Avalonia and Uno Platform if you are working with C#
I know the guy working on makepad is trying to solve this problem along with vr headsets, Apple tv, etc. It's really painful because of dependency bloat messing with build times so he ended up rewriting a bunch of things 🤷♂️.
Raylib.
qt?
JUCE is weirdly capable of non-audio related UIs and runs on all these platforms.
"Here's a website that you needed to install on your phone to see!"
They want you to install the app so they cand send you notifications/ads.
Yup. That plus steal all your contacts and anything else they can get direct or indirect permissions for.
I though the same but I tried Tauri and it makes sense. Unlike electron you're not shipping the entire browser with your app and the the low level stuff is just rust so the integration is nice and easy. And using webview for UI? Why not? The reactive libraries are actually nice to work with, it's easy to customize, you have all the tools to inspect/debug your code. It's definitely better then trying to fit GTK into rust.
lol they did, that's what webapps RUN ON. TBH I don't get the original complaint. Lots of people have bad webapps; back when native apps were the norm, lots of people had bad native apps. It's not really a problem with the runtime framework.
They run on them, but its not that easy compared to a web app. Why isn't everyone programming in machine code? Every other language literally runs on it. There is a reason we use abscractions.
You mean, it's all Electron? 🌍👨🚀🔫👩🚀
At least webviews don’t (yet, Google be trying) have the ability to request attestation & ban me for not using the stock, bloatware OS every device comes with. Bonus that I get to keep my data inside the browser’s sandbox; it’s the easiest way to be safe with proprietary software.
If only my bank could get the memo & make their website not suck (it legit checks for Netscape Navigator 4 in the source) so I can be at peace with microG+LineageOS in the phone space (all the banks here do it & I already switched once until my bank, slowly but inevitably ‘modernized’ their app).
But my beloved Netscape! How will I possibly learn a new browser? I'm too old to learn!
We switched to Flutter, works great for IOS and Android, but the website is trash.
I tried Flutter and hated it. It was buggy (there's thousands of post on the internet saying that you have to do 'rm ios/Podfile && flutter build ios' and similar. the build breaks often and standard solution is 'turn it off and on again'), the components library is too verbose and not nice to work with, the support was bad (as in open a bug report with example repo and they would react after 6 months) and everything that's not 'hello world' was complicated or impossible (like writing tests). I'm definitely not using it again.
We had a third party do the development, it worked out really well. At some point I'll need to learn it when we take it over.
Cross-platform apps - The Linux experience:
I am glad that atleast it ends there. It could have been worse.
Though calling them "cross platform" when all you're doing is opening a website in a browser is IMO a bit rich. Is lemmy cross-platform, too?
If at least they had native UI elements on each platform, we'd be getting somewhere. Fitting design and all.
It's not just "opening a website in a browser". The UI itself is displayed in a WebView, but Electron (and Tauri etc.) also have code running outside the WebView which interfaces with native APIs etc. Just for a simple example - a normal browser application couldn't open a file on your drive before without showing a dialog (and it still can't without getting permission first), which Electron etc. can.
And this code is absolutely cross-platform. So how is it rich to call an application with a cross-platform UI and cross-platform functionality "cross-platform"?
Would you prefer new terminology? Like platform-neutral UI? The way I see it there's CLI, GUI, and WebUI. When discussing platforms for the first two, were discussing the OS, but for the last the platform is the browser.
I honestly don't care what the user interface is as long it's efficient at getting done what I need it to do.
I fucking hate Electron
If given a choice between an electron app and nothing, I choose the electron app.
same. still dont like them tho
I choose nothing.
Or a website
I'll talk nothing over a terribly implemented Electron app that devours system resources and brings every other Electron app down when it inevitably OOMs.
You hate electron or you hate developers who make inefficient electron apps? Some examples? (Serious question, because I make electron apps)
There's no such thing as a efficient electron app. First electron apps have 80MB of overhead since electron needs to bundle a whole ass browser. Also in runtime this requires 120MB of ram.
If you really want to use webviews to make an app use Tauri.
Mainly electron itself. For example the discord app (which uses electron) is less memory efficient (and much more restrictive etc.) than just a separate Firefox instance. It also had many problems with being up to date, but that's due to the discord devs deciding they want an own, custom electron, based on an outdated version. The main problem with electron for me stems from the chromium base, as basically any large app based on chromium (discord, spotify and steam) has massive flickering and performance problems on Wayland+Nvidia. A special combination, but still a factor for a 'cross platform' framework.
On the other hand, stuff like Signal never had any problems on my machine.
So, just use the stock electron, optimally the system one [electron binary], and see if you can enable wayland compatibility natively (otherwise we need to use environment variables etc., which works moderately at best).
Developers who make inefficient apps. Most apps are sadly utter garbage
Yes
Often times there's just no reason to package a web app into an app container.