Remix.run Logo
▲ yboris a day ago

Vibe coding can yield us Tauri apps that end up being like 3mb rather than 130mb for a "Hello World" app.

▲m_w_ a day ago | parent | next [-]

I would go one step farther - if you're vibe coding, skip Tauri altogether. I've been on-and-off vibecoding a GitKraken replacement using egui instead, and the memory footprint is very low. Otherwise can't tell the difference, as I'm not reading the code either way.

▲wren6991 a day ago | parent | next [-]

Using Tauri on Linux gave me appreciation for why Electron just ships an entire browser. WebKitGTK is kinda rough around the edges.

▲egeozcan a day ago | parent [-]

I vibe-coded a paste manager using wails (https://github.com/egeozcan/mahpastes), and I'm currently on linux (bazzite) and I have 0 problems with the rendering.

▲wren6991 a day ago | parent | next [-]

One of the things I hit is that there is no way to trigger an "open folder" dialog. It gets mapped to "open file" instead. The correct hooks exist in both WebKit and in GTK, but not wired up in WebKitGTK. I think the fix would be quite minor but I looked into what is involved in raising a patch and decided to leave it. There are a lot of minor paper cuts like this.

I did hit a couple of CSS or rendering quirks, but the rendering perf also seemed noticeably poor, and that's harder to live with.

▲Arrowmaster 14 hours ago | parent | prev | next [-]

Try it on an older LTS distro release that is still under distro support or even better, one that's under extended paid only support. Anything pre 2022 is probably completely broken and anything pre 2024 might have strange bugs. There was a great one where building a Tauri or Wails app on Ubuntu 22.04 for better compatibility but running it on a newer distro had a font rendering bug because of the older Webkit2Gtk. Trying to display emojis crashed the apps.

▲jorl17 a day ago | parent | prev [-]

Recently vibe coded this https://www.rominabox.app/ and also loved Tauri for the "builder" part of it! What a pleasure to work with.

Granted, it's very simple, but I felt it was a breeze.

▲kelvie a day ago | parent | prev | next [-]

Isn't egui really cpu inefficient though? It repaints at 60fps if e.g. you move the mouse over it

▲Aeolun 21 hours ago | parent | next [-]

Egui mostly repaints on the GPU, so the inefficiencies doesn't really show up until you try to render 10k tree nodes in a list or something, and even then you can do virtualization.

▲m_w_ a day ago | parent | prev | next [-]

If it is, it hasn't been a problem so far. I have been focused heavily on memoization, to what extent that's possible when fully vibe coding.

Fwiw, what it's trying to replace (GitKraken) is slow, clunky, and resource hungry, so it's not hard to beat.

▲tdhz77 a day ago | parent | prev [-]

No mobile support either

▲anthk a day ago | parent | prev | next [-]

Egui maybe.

▲crizantlai 7 hours ago | parent [-]

Why does nobody talk about GPUI? I had a great experience developing with it. My app starts up in ~200ms and uses ~75MB of RAM.

▲catigula a day ago | parent | prev [-]

You're probably doing something the LLM has less fluency with.

▲0x457 a day ago | parent | next [-]

LLMs can for sure write GTK4 (or Relm4), Swift UI, whatever windows uses, Kotlin for Android.

▲catigula a day ago | parent [-]

They can write brainfuck. I said less fluency.

▲0x457 a day ago | parent [-]

What I meant: they can write it pretty well. Probably because share of good quality code of native apps is much higher bad quality, due to all js slop we had even before LLM slop.

▲m_w_ a day ago | parent | prev [-]

Definitely would concede this, but I haven't had any issues so far. It's been able to make things look exactly as I've dictated them, even with relatively complex visualization of git branching. I get the sense that, with how capable Opus 5.5 is, "less capable" no longer means "not capable enough".

▲james2doyle a day ago | parent | prev | next [-]

You can just skip Tauri entirely and get true native apps. No web wrapping required

▲sosodev a day ago | parent [-]

But there’s still no way to get consistent results cross-platform without a web view, right? I guess Tauri isn’t even consistent because it relies on the system’s browser and they do differ to some degree.

▲tadfisher a day ago | parent | next [-]

My friend, inconsistency is the entire point. You now have incredible power to write truly native apps that fit in with the platform and follow all the standards. The bottleneck is now you, or whoever owns each target platform and understands what native apps feel like.

▲sosodev a day ago | parent | next [-]

So I’m supposed to maintain a native app for each platform and try to be sure they’re aligned in every way except visuals? Sounds like a recipe for bad UX if anybody uses more than one of them.

▲Kuyawa a day ago | parent | next [-]

Not you, your coding agent, for three platforms and at least ten languages

If you go Rust all the way all you need is the installer for each platform

▲rafaelmn a day ago | parent [-]

Agents are pretty shit at making UX decisions unless you're heavily in the training distribution

▲mickael-kerjean 20 hours ago | parent | prev | next [-]

Yes. That's exactly what I'm currently doing with my sync client: https://github.com/mickael-kerjean/fdrive

The core contains the logic all the underlying platform uses and the platforms only handle wiring and ux

▲bigstrat2003 a day ago | parent | prev | next [-]

On the contrary: using a web view is the worst possible UX for your users. It's slow, uses a ton of memory, and doesn't integrate well with the desktop. The only reason people ever did it was laziness, not because it produced a better product.

▲Rohansi a day ago | parent [-]

I'd argue that being slow and using a ton of memory has more to do with (very) poorly optimized websites rather than blaming browsers as a whole. Sure, they'll never be as efficient as native, but people put a lot of work into optimizing browsers and most websites are never optimized.

Memory use alone is an interesting case for comparison because websites tend to have a lot more images/videos loaded than other applications. All of those PNGs and JPEGs need to be decompressed before you can paint them to the screen which makes them much larger.

▲skydhash a day ago | parent [-]

> I'd argue that being slow and using a ton of memory has more to do with (very) poorly optimized websites rather than blaming browsers as a whole.

A web browser is a huge platform. Audio, 2D and 3D graphics, file handling, network requests,... A lot of code while your application needs are tiny. That is wasteful and a security risk.

▲Rohansi a day ago | parent [-]

That's really only argument against shipping a browser with your application. For ordinary websites (or WebViews) that's not really a concern because it is shared and automatically updated.

▲newdee a day ago | parent | prev [-]

Yes

▲lynndotpy 20 hours ago | parent | prev | next [-]

Do people really want this? IME the worst, slowest apps on a given OS are native.

I remember a time when you could feel that apps were built on a consistent set of standards on a platform, and that meant they were fast, and it was weird when an app had its own wacky GUI. But today, native apps are neither consistent across eachother, nor are they performant.

WebView2 is native on Windows and the practical default, but who wants more apps like Microsoft Teams? Music.app is native on macOS and slower than music.apple.com, but who wants more apps like Apple Music? These are abysmally slow apps.

Things are better on Linux before, but "native" is DE-specific anyways. Between electron, GTK, and KDE, I tend to prefer electron. Only second to apps like Blender or Godot, which have great UX advantages from having their own bespoke GUI frameworks which are consistent across OSes.

▲marcus_holmes 19 hours ago | parent | next [-]

It's more that no-one cares about consistency across platforms because each of us only has one platform.

I will never see the Windows version of your app, because I don't run any Windows machines. I will never know if your Windows UI is consistent with your MacOS UI.

I do care if your app uses a bunch of key shortcuts or UI conventions that no other MacOS app uses. If I have to learn a whole new set of UI conventions just because your app decided not obey the standard MacOS UI conventions, that will annoy me a lot.

▲andyclap2 9 hours ago | parent | next [-]

Sample size of 1?

Sent from my Android phone, windows gaming pc, Mac dev laptop, iOS tablet, Ubuntu home server... or sshing to my remarkable reader's minimal Linux?

▲lynndotpy 12 hours ago | parent | prev [-]

No no, I am saying "native" is not consistent even within an OS.

I do agree keyboard shortcut consistency is important and useful. GIMP is awful on macOS just for this reason

▲vrighter 11 hours ago | parent | prev [-]

because native should mean using the tools provided by the os. Not using a reinvented wheel which defeats the entire point

▲mort96 a day ago | parent | prev | next [-]

Yeah the problem is having to write 5 apps, not the inconsistency.

▲mikestew a day ago | parent | next [-]

If you're writing five apps, you're doing it wrong. A huge amount of probably any app can be contained in a common blob of business logic and wiring, with some native presentation on top. Yes, I oversimplify, but folks have been doing exactly that for decades. More work? Yup, even with a common engine it's more work than firing up Electron. That's where "do we even give a shit about what we're shipping?" comes in. If there's no pride in the finished product, well, Electron isn't going to save your product, either.

▲dpkirchner a day ago | parent | next [-]

IME, the UI library idiosyncrasies are the pieces that take the longest to get right. Common business logic is super simple by comparison.

▲vel0city 19 hours ago | parent [-]

Especially since all the critical "business logic" in this case that will be shared is likely to be the backend store front APIs and what not. It's the platform things which will end up being radically different.

▲mort96 a day ago | parent | prev [-]

> A huge amount of probably any app can be contained in a common blob of business logic and wiring, with some native presentation on top.

I keep seeing people claim this, yet most UI software I see really doesn't do anything that complicated. It's some basic database CRUD stuff and some basic algorithms, and then all the actual effort lies in making the UI feel good.

▲skydhash a day ago | parent | prev [-]

> Yeah the problem is having to write 5 apps, not the inconsistency.

Isn’t that what abstraction and interface is about? You can write the common business logic and presentation concerns, and then share it across each native implementation.

That is what web wrapping is in truth, but it’s just inneficient because of the huge surface area of web technologies.

▲mort96 a day ago | parent [-]

For a whole lot of apps, almost all of the difficult stuff is in making the UI feel right.

▲skydhash a day ago | parent [-]

Aesthetics, usability, and technical flavor are different axes and feel right is a subjective point. And based on anecdata, usability is what actual users want. Web wrapping is mostly an exclusive focus on aesthetics. With native frameworks, you often get very close to "feel right" without much effort.

▲Karrot_Kream a day ago | parent [-]

> With native frameworks, you often get very close to "feel right" without much effort.

I've only seen this sentiment on nerd forums but never among my less technical friends, so I'm a bit reluctant to accept this wisdom honestly. That said, if you're just building something for a technical crowd you'll probably make them much happier if you make your implementation use native widgets and take up much less memory and redraw faster at the expense of a slightly jankier UX. Though, this is probably why IRC clients all feel janky lol.

For example a lot of my less technical friends/family really like the visual design of Spotify even though it conflicts with a lot of design language on MacOS, Windows, and Android.

▲agentdev001 a day ago | parent | prev [-]

Or my manager... or my stakeholders. Damn you powers that be!

▲masklinn a day ago | parent | prev | next [-]

> But there’s still no way to get consistent results cross-platform without a web view, right?

… good? I want my applications to be consistent with the platform they run on, not with their own stupidity on other platforms.

▲tavavex a day ago | parent | next [-]

The hidden reason why so many people are frustrated with 'modern design' that goes unaddressed is that most software nowadays completely ignores the standards of the system it runs on. Every single developer of even the most trivial apps insists that their design language is the most important in the room, which is what brings us to the temptation of using a webapp for everything so every user on every OS sees the exact same thing. It's gotten so bad that the only places I see native system UIs from third parties is either older software or hobbyist projects, but never anything corporate.

▲exmadscientist a day ago | parent [-]

Some of that is also that what "native UI" means has shifted a bit. To look at Windows, Win95 had a thoroughly considered UI design that was very well adapted to both what it needed to do and the hard constraints on it. Win11 is... kind of a shitshow. (Are parts of it still from Windows 3.1? I haven't tried to track them down... but in Win10 there were a few dark corners.) It made sense to match the native UI in the Win95 days. It often doesn't now, it's simply not a target worth hitting. You could just use Win32 and target the older Win95 look, but apart from appearance issues, it was designed to work well in 1995, and we simply demand different things from our UIs now. Like support for touchscreens. Old Win32 apps are painful on touchscreens. (But, often, awesome without a mouse.) And those are real considerations, not oooh-shiny-new-thing designer BS.

▲tavavex a day ago | parent [-]

Yes, modern Windows design is a bit of a mess, caused by both the designer bug of redesigning everything (we have had at least 3 different Windows design languages prevalent over the last 10 years) and Windows having to support extremely old legacy software. The second was almost nonexistent when Windows 95 was designed, they could have a true clean slate, so the comparison isn't as fair. But still, even with the abundance of native UI frameworks, the point holds true that no new software uses any of them, no matter if it's Win32 or WinUI. They could implement them very easily, and some hobbyist software does so, and it looks very native and in-line with the rest of Windows 11, but they choose not to.

And yes, the 3.11 ODBC file selector is still in Windows 11. Praise be to legacy components.

▲ModernMech a day ago | parent | prev [-]

As a user of both windows and mac operating systems, I'd rather the app be consistent between them so I don't have to adopt a different workflow depending on which OS I'm using the app on.

▲bhaak a day ago | parent | prev | next [-]

What’s wrong with something like Qt or wxWidgets for native crossplattform GUI frameworks?

▲wtallis 16 hours ago | parent [-]

Native doesn't mean "not a web view", it means native. The eight Qt apps on my Mac are really obvious, with basic fundamentals like toolbars, drop down boxes, and context menus bearing no resemblance whatsoever to any native Mac app from any decade.

10-15 years ago it was possible to reliably clock a Qt on Mac app before it finished launching, simply from the app using the wrong hourglass cursor. (The old cursor that had once been a hallmark of classic Mac OS apps ported through Carbon frameworks, and which disappeared from daily usage when the Finder was finally rewritten atop the NeXTSTEP-derived Cocoa frameworks.)

▲joshheitzman a day ago | parent | prev | next [-]

Skia is the 2D graphics library used in Chromium. A number of GUI frameworks (Flutter and Avalonia) directly use Skia to do non-native platform GUIs that are consistent across platforms.

▲0rzech 7 hours ago | parent | next [-]

Flutter is migrating to Impeller, which has much better runtime characteristics and font rendering. It's already being used by default on desktop and mobile. [1][2] But your point still holds, of course.

[1] https://docs.flutter.dev/perf/impeller

[2] https://flutter.dev/go/can-i-use-impeller

▲adastra22 a day ago | parent | prev [-]

"Consistent across platforms" is not a user requirement.

▲0rzech 7 hours ago | parent [-]

Sometimes it is, sometimes it isn't. But it wasn't OP's argument, was it?

▲bryanlarsen a day ago | parent | prev | next [-]

Is consistent results what you want? non-native controls look and behave funny on iOS, and the iOS look on any other platform is annoying.

▲ogoffart a day ago | parent | prev | next [-]

There is also Slint that'd fir perfectly. Others have built game launcher with it as well

▲vrighter 11 hours ago | parent | prev [-]

that's great! cross platform means it doesn't fit in anywherec not it fits in everywhere

▲freakynit a day ago | parent | prev | next [-]

Like these https://goodapps.store/

Disclaimer: All mine, open-source, ai-assisted, less than 5MB each. I love rust+tauri combo.

▲Kuyawa a day ago | parent | prev | next [-]

Much better it can give us just webview in wry and winit without tauri bloat

▲sensanaty a day ago | parent | prev | next [-]

Except EGS's slop garbage is 400MB on linux

▲AlienRobot a day ago | parent | prev | next [-]

Tauri doesn't solve the problems Electron solves. It just externalizes the solution so things can subtly stop working randomly.

▲sick_of_slop a day ago | parent | prev [-]

[dead]