Remix.run Logo
websiteapi 4 days ago

jeez so many ways to do things -

react native flutter ionic

and now swift.

it seems dart + flutter still is the only way to do all targets (cli/web/iOS/android/desktop) though. react native being very close (albeit needs electron).

it surprises me that this hasn't been perfected. surely some big company would look at their balance sheet and see it's worth it even if you take a 10% performance hit on each platform, assuming you can share 90% of the code.

does swift have a good web story or is wasm the main way? desktop?

topspin 4 days ago | parent | next [-]

> it surprises me that this hasn't been perfected

It shouldn't. It's never really been perfected across native GUI APIs after 40+ years: just various degrees of "good enough," plus fobbing it off to web stacks.

Anyhow, I've been playing with gioui, which is golang rendering in a lightweight <canvas>-like. Really nice: fast, small, cross platform GUI with just Go. Scale expectations appropriately.

wahnfrieden 4 days ago | parent | prev | next [-]

Swift on WASM also got very good last year. SQLite in WASM too.

Flutter is still bad on iOS and macOS. No Liquid Glass (except some weird hack attempts that look and behave badly). Liquid Glass isn't an optional decoration, it's the name of the new system-wide UI. Leaving it out of your app is like committing to iOS 6-era skeuomorphic design after iOS 7.

Edit: Several cross-platforms frameworks can do Liquid Glass:

- SwiftUI by using Skip for Android

- SwiftCrossUI

- React Native

I'm glad to see that I can finally target iOS as the first-class citizen, using Apple technologies, and then run that code on other platforms. Instead of having to use frameworks that treat iOS as secondary when it is by far the biggest money-maker for most apps.

cageface 4 days ago | parent | next [-]

I’ve had very good experiences with Flutter on iOS and macOS. It’s actually a lot easier to get good performance in Flutter than SwiftUI.

No cross platform stack can do Liquid Glass yet. You have to wonder if that was one of design goals.

gumby271 4 days ago | parent | next [-]

I'm pretty well convinced it was a goal too. If it wasn't then shame on them since it doesn't accomplish anything else well.

d12bb 4 days ago | parent | prev [-]

It’s nice developer experience indeed. But for me as a user, I hate it. Looks nothing like an iOS app, often even worse than fckng webviews…

wahnfrieden 3 days ago | parent [-]

All those approximations at Liquid Glass are infuriating to use and make every app that does feel cheap and gross

dangus 4 days ago | parent | prev | next [-]

> Liquid Glass isn't an optional decoration, it's the name of the new system-wide UI

Of course it’s optional. Some of the most popular apps on the planet ignore the local UI conventions of their parent OSes entirely.

TikTok is a Flutter app. It looks identical on iOS and Android. It uses basically no native UI elements.

It’s a pretty well-known strategy to create apps that look identical on all platforms so that you lessen your customer confusion and your support burden. The fact that Spotify, Facebook, Uber, and Reddit look exactly the same no matter what platform you’re on is more important than complying with OS design guidelines and UI elements.

d12bb 4 days ago | parent | next [-]

> Spotify, Facebook, Uber, and Reddit

And I hate every one of those apps (well, back when I used Facebook, years ago, I did), because they’re just bad iOS citizens. I, as most iOS users do, don’t care what apps look on Android. For Android users, it’s the same with iOS. Making shitty cross platform apps is all about branding and saving some money for developers, nothing about the users.

dangus 4 days ago | parent [-]

It’s cool that you are a non-conformist badass but their wild popularity proves that a native app experience doesn’t matter.

What does “bad iOS citizen” even mean?

It’s not even about saving money for developers, it’s about the fact that your users expect a consistent experience.

Imagine if you watched an NFL game on NBC and the on-screen graphics were different if you were watching on a Samsung TV versus an LG TV. That’s the issue with native app UI elements (and it would quite literally be an issue with content apps on smart TV app platforms which are way more fragmented than iOS versus Android).

d12bb 3 days ago | parent [-]

Your conclusion is false, as you’re mixing stuff that shouldn’t be mixed here:

1. Spotify, Uber etc are popular because of their product, not the pure quality of their apps. People use Uber because they want to cheaply get somewhere, and Spotify cause that’s there all their shared playlists are.

2. People buy whatever tv is on sale when their old one breaks, but the vast majority will stay with their phone platform, so couldn’t care less what their apps look on the other platforms out there.

So, native experience does matter, but obviously only as one of multiple deciding factors.

> What does “bad iOS citizen” even mean?

Doesn’t look like native apps, doesn’t feel like native apps (come on, most multi platform frameworks don’t even get the scrolling right, one of the most basic forms of interaction), doesn’t use all of the platforms features to their fullest, as applicable for the type of app.

wahnfrieden 3 days ago | parent [-]

What I meant to say in my original message is that if you are using system default-ish iOS UI styling, Liquid Glass is not optional decoration. If you have your entirely own UI and design system, sure you don't need it. But many of these Flutter apps or other such toolkits are using it to approximate system default UI except either without the Liquid Glass parts or with uncanny and incomplete approximations of it.

neonmagenta 4 days ago | parent | prev | next [-]

Exactly. Branding and UX are breaking out of the box for guidelines in the successful platforms. You want to be able to pick up any device and have the user know exactly what theyre doing

wiseowise 4 days ago | parent [-]

Thank God I’m only using web versions whenever possible.

dangus 3 days ago | parent [-]

Which also have consistent branding and UX with the apps.

wiseowise 3 days ago | parent [-]

That's fine, as long as I have native OS dialogs/settings.

uripont 4 days ago | parent | prev [-]

I thought TikTok used native implementations and Lynx (their cross-platform framework)

dangus 4 days ago | parent [-]

I dunno, the ByteDance logo is on the Flutter web page.

But it really doesn’t matter either way. The point is that TikTok doesn’t follow any OS conventions.

satvikpendem 4 days ago | parent | prev | next [-]

> Edit: Several cross-platforms frameworks can do Liquid Glass:

This is pretty funny because you just listed SwiftUI three times but in different configurations. They're not truly cross platform, they just wrap Apple's native design code. In contrast, I can (and do) use a package like liquid_glass_renderer to get Liquid Glass everywhere, on all my devices, with one codebase.

wahnfrieden 4 days ago | parent [-]

If this is the current state of it, I can spot a dozen details that are wrong or missing: https://x.com/imadetheseworks/status/1973765948218941771/vid...

Maybe it will get there... Meanwhile I would rather use technologies that provide the full experience on the platform where it matters, and would never want those liquid components on platforms like Android or Windows anyway.

satvikpendem 4 days ago | parent [-]

Well, the library is literally 3 months old, and it's made by one person as an OSS package, so yes, I'm sure you can spot those wrong details. Still, it'll get there, especially once Flutter gets official support for Liquid Glass, as they are planning on working on it later this year or into next year, currently they are refactoring their current design library code.

> and would never want those liquid components on platforms like Android or Windows anyway.

That's where we disagree then, I like the design itself but don't like it stuck on only one platform. I make apps with wholly custom UI designs, not following any particular OS' "native" design, and that's why Flutter is so powerful, because I am not constrained to what pixels I can render to a screen, nor should I be.

websiteapi 4 days ago | parent | prev [-]

in my experience wasm on web, though it works, has too slow a first page load time for slow connections.

wahnfrieden 4 days ago | parent [-]

Embedded Swift WASM is very small now. But it is still behind on some useful capabilities like having a replacement for Codable (which last I read may be getting a more performant replacement). Regular Swift WASM got a lot smaller too last year though.

websiteapi 4 days ago | parent [-]

interesting - do you have a good example of a non-trivial web app that uses swift wasm?

wahnfrieden 4 days ago | parent [-]

Goodnotes

LorenDB 4 days ago | parent | prev | next [-]

Qt/QML can do all those targets as well (although it is admittedly jankier on mobile than Flutter or Swift would be).

palata 3 days ago | parent [-]

I never understood that. Qt is C++. The only valid reason to use C++ is "not having a choice" (which happens to me, too). But if you write a mobile app, I find it extremely weird to choose C++ instead of a modern language.

Disclaimer: I have seen teams writing mobile apps in Qt, and it was systematically a lot slower to develop, with a lot of pain, and resulting in worse apps. Even if you only have C++ devs, I would argue that it may be worth giving them the time to learn a modern language and write the mobile app with it.

rubymamis 2 days ago | parent [-]

Hi there! I'm curious about the use cases people you know used Qt to develop for mobile. Do you mind expanding on this?

I'd love if you could also contact me (my socials are in my profile) as I'm developing a set of components to help exactly in that situation.

palata 2 days ago | parent [-]

> I'm curious about the use cases people you know used Qt to develop for mobile.

They were developing non-trivial mobile apps. The kind where you use your fingers on a touch screen, but that are more complex than just showing a text and an image. Say Google Maps, or WhatsApp.

The problem was not the lack of components: the problem was that it was C++. C++ is more complex to write correctly than Swift or Kotlin and harder to debug. Which made those teams measurably a lot slower. It's just the wrong technology for the use-case, IMO.

rubymamis 2 days ago | parent [-]

I also write complex UIs with QML and C++. I do not consider myself an expert in C++ but there is clearly a subset of it that I feel comfortable in. I think the combo of QML & C++ is great since QML lets you focus on the UI - and does a great job at it, and in C++ you can write performant code. C++ isn't that complicated these days - if you stick to a subset you're familiar with.

palata 2 days ago | parent [-]

How much experience do you have writing mobile apps in Kotlin or Swift, as a comparison? I have worked in C++ for years, and in Swift for years. I have seen the exact same app being written both in Java and in C++.

> in C++ you can write performant code

This almost certainly does not matter for a mobile app, and definitely not for the UI part. In case your app has to do something that may need C++ (e.g. computer vision), then you can just call a C++ library over FFI.

> C++ isn't that complicated these days

I didn't mean that it is complicated. I can totally write C++. What I meant is that it is more complicated to get it right than modern languages. If users complain about a segmentation fault, it's often pretty tricky to debug. In Java/Kotlin, you will get an exception that tells you exactly which line crashed.

On top of that, C++ is slower to write. Again I have been able to compare teams working on the same app both in C++ and in Java/Kotlin/Swift (Java is not exactly a modern language, but still it's a lot faster to develop with).

And after all those disadvantages of using C++ for a mobile app, you end up with a UI that doesn't feel native to the platform.

Again: I still write C++ when it makes sense (usually that's for legacy reasons or libraries availability, otherwise Rust is a better choice IMO). But for writing a mobile UI? Doesn't make any sense to me.

Even for writing a Desktop app, I don't understand why people use Qt instead of e.g. Java. Kotlin/Compose seem to be coming on Desktop too, which makes a lot of sense to me. And maybe even Flutter.

Finally, I don't understand writing a cross-platform UI for Desktop and mobile. On mobile, I have a big finger and a small touch screen. On Desktop, I have a big screen, a mouse and a keyboard. Those require different UIs. Sharing the logic is fine, but the UI needs to be written for the platform.

rubymamis a day ago | parent [-]

> How much experience do you have writing mobile apps in Kotlin or Swift, as a comparison?

No, in the mobile space I've only used React Native and QML with C++.

> This almost certainly does not matter for a mobile app, and definitely not for the UI part.

I disagree. For example, I expect block editors to handle large texts efficiency - both in terms of power draw and performance. Writing in a non-compiled language already puts you in a disadvantage in both aspects. But this is just the standard I set to myself - the entire industry clearly has different priorities.

> I didn't mean that it is complicated. I can totally write C++. What I meant is that it is more complicated to get it right than modern languages. If users complain about a segmentation fault, it's often pretty tricky to debug. In Java/Kotlin, you will get an exception that tells you exactly which line crashed.

Yep, I generally agree, tho with good debugging tools and LLMs I have found this to not be a problem anymore.

> On top of that, C++ is slower to write. Again I have been able to compare teams working on the same app both in C++ and in Java/Kotlin/Swift (Java is not exactly a modern language, but still it's a lot faster to develop with).

I write in TypeScript at my day job and C++ for my side projects and I don't feel like I'm slower in C++. Again, I'm using the subset I'm conformable with.

> And after all those disadvantages of using C++ for a mobile app, you end up with a UI that doesn't feel native to the platform.

That has certainly been the case, and what I'm trying to fix - because I've proven that it is fixable by caring about UI/UX. QML is great for UI, it's just that Qt developers (both the developers of Qt and those using it) don't care much about those things. But it's definitely posiible to get good results. For example, I'm working on SwipeStackView like other iOS apps have in QML, and I'm liking what I've made so far: https://rubymamistvalove.com/notes-mobile-swipe-stack-view.M...

> Even for writing a Desktop app, I don't understand why people use Qt instead of e.g. Java. Kotlin/Compose seem to be coming on Desktop too, which makes a lot of sense to me. And maybe even Flutter.

Again, I can't stretch how FUN, easy, and overall a great experience to develop with QML and C++ together, it's just HOW GUI should always been. I'm thinking of creating some Youtube tutorials that will try to present this feeling.

> Finally, I don't understand writing a cross-platform UI for Desktop and mobile. On mobile, I have a big finger and a small touch screen. On Desktop, I have a big screen, a mouse and a keyboard. Those require different UIs. Sharing the logic is fine, but the UI needs to be written for the platform.

100%. Completely in agreement. The fact that you can develop both Desktop and mobile apps in QML doesn't mean you must make them share the same code (at least, not fully). I think Kirigami have gone the wrong way with their 'adaptable' UI (I've also thought about doing that until I realized it's the wrong approach). One should always start with the UX that the end result should be - never start from tech considerations.

[1] https://develop.kde.org/frameworks/kirigami//

palata a day ago | parent [-]

> Writing in a non-compiled language already puts you in a disadvantage

Both Kotlin and Swift are compiled.

> But this is just the standard I set to myself - the entire industry clearly has different priorities.

I think you just underestimate the performance of Java/Kotlin/Swift, languages that you admitted you don't have any experience with.

> tho with good debugging tools and LLMs I have found this to not be a problem anymore

Again: try modern languages with good debugging tools and LLMs :-). I think your bias is that this is all you know.

> because I've proven that it is fixable by caring about UI/UX

It requires care, which means more effort. All that for being at best similar to the native tools, but probably never exactly the same. And it cannot be better, because the native ones are the ones defining how it should be.

> I can't stretch how FUN, easy, and overall a great experience to develop with QML and C++ together, it's just HOW GUI should always been

But you said you don't have experience with the native Android/iOS way. I personally have used QML/C++, Flutter, Android (Java/Kotlin, the old XML way and the new Compose way) and SwiftUI. QML/C++ is by very far the worst.

I would advise that you try either Kotlin/Compose or Swift/SwiftUI to get an idea. You can still use C++ to share some code (say you write a complex library in C++, no need to rewrite it in Kotlin and Swift), but starting a new mobile UI with QML these days is just madness IMHO :-).

yk09123 4 days ago | parent | prev | next [-]

I find Kotlin Multiplatform to be far and away a better experience than flutter

flax 4 days ago | parent | next [-]

Could you explain why? I have been interested, in theory, in Kotlin Multiplatform. But I'm already very comfortable in Dart and Flutter. I have decades of experience with Java, Javascript, and quite a few years with Typescript. Kotlin feels like a different kind of language, one I find grating. I think this is primarily aesthetic, but it's still enough to make getting over the initial hump annoying. As petty as it is, I think the lack of statement-terminating semicolons is a major reason I do not like it. I would welcome a factual list of things that make the KM experience better for you.

vips7L 4 days ago | parent | next [-]

Kotlin doesn’t feel right to me either. I did a portion of AoC in it this year and it was surprisingly more verbose than I expected. I think the thing I liked the least was trailing lambda syntax combined with how verbose it was to define variables with types.

It also inherits all of the bad parts of the JVM. Crappy build tooling (gradle), and then the slow startup and high memory usage.

cosmic_cheese 4 days ago | parent [-]

Coming from writing a ton of Swift (and previously Obj-C), Kotlin’s ergonomics feel kinda off. It also feels like it’s different for the sake of being different more often than I’d like.

Larrikin 4 days ago | parent [-]

Can you give concrete examples? I played with Swift in school after already making the dive into Kotlin. It just felt like Kotlin but trapped on Apple. Part of the program even included a course in using a different language every couple weeks where we went through Scala, Lisp, and some others just to see what they could do.

Currently Kotlin is far and away my favorite language but I also haven't looked into the newer languages recently and am interested in hearing pain points people have. Especially if it isn't annoyances with Gradle

cosmic_cheese 4 days ago | parent [-]

Broadly speaking, Kotlin deviates from popular conventions more than Swift does. For example, Kotlin expects you to use inline if statements where in Swift, ternary operators work like they do in C, JavaScript, and many other languages.

There's also things like Swift's guard statements that can help make intent clearer and read a bit more nicely.

myHNAccount123 4 days ago | parent [-]

Same opinion. It just feels off. Why use `fun` for function declarations instead of func or function? Dropping () before { makes it hard to tell what runs first. It feels like it's trying to be different for the sake of being different. I'm not able to quickly skim kotlin code like other 'C-like' languages and tell what is going on because it's trying to be too clever.

llmslave2 3 days ago | parent [-]

You're just not used to it.

vips7L 3 days ago | parent [-]

https://steveklabnik.com/writing/the-language-strangeness-bu...

satvikpendem 4 days ago | parent | prev | next [-]

I used Kotlin as well and it just feels off too. The package support is a major thing, as I don't want to mess around in Gradle, I want something that Just Works™. Dart 3 has much of the same feature set as Kotlin now with sealed class support, it's just not as functional, but it recently got tearoffs so you don't have to specify the class, just the property, similar to Swift (ie if you have an `enum Color { red, blue }` and a function takes `Color`, you can just do `f(.red)` not `f(Color.red)`).

The main thing though is that Dart has pub.dev and a CLI that makes it extremely easy to add packages, via `dart pub add`. If I do want to go more of a functional route I'll just use Rust instead, it has all of what Kotlin has and more, plus a similar streamlined package management as Dart in the form of `cargo add`.

BoorishBears 4 days ago | parent | prev [-]

Funny you say that since Dart is the primary reason most people I know don't want to use Flutter.

There's been a trend of improved DX for languages used in app development:

ObjC -> Swift

Java -> Kotlin

Javascript -> Typescript

...Dart feels like the before with no after, even though it got traction in the era of the Afters.

vips7L 4 days ago | parent | next [-]

Darts pretty good. It has a lot of modern features, nullable types, pattern matching, sum types, and factory constructors; some really good build tooling. It can compile fully AoT.

saagarjha 4 days ago | parent [-]

It’s not very good if you’re comparing it against Kotlin or Swift though.

realusername 4 days ago | parent | next [-]

It's a matter of taste, even just the swift example on this website makes me raise eyebrows.

saagarjha 3 days ago | parent [-]

I think that is valid because the syntax shown off here is controversial. However, I think Dart is just generally worse in almost all of its features.

wiseowise 4 days ago | parent | prev | next [-]

It is great if you’re comparing it against Kotlin or Swift, unless you’re stuck in an era of 1.x Dart.

saagarjha 3 days ago | parent [-]

I would consider it to be weaker in power to both

wiseowise 3 days ago | parent [-]

Programming languages aren’t anime.

satvikpendem 4 days ago | parent | prev | next [-]

Eh, it's getting there, slowly at first but more rapidly now. It now got tearoffs, I explained in another comment but

> if you have an `enum Color { red, blue }` and a function takes `Color`, you can just do `f(.red)` not `f(Color.red)`

Dart is getting new features pretty fast, they really started focusing on the DX more after Dart 2 and now especially after Dart 3. Macros were supposed to ship but it was incompatible with the goals of fast compilation, so other sorts of smaller features will ship instead.

virtualwhys 4 days ago | parent [-]

Big turnoff with Dart is the lack of json (de) serialization -- kind of shocking to have to resort to source code generation libraries in a modern language.

Also, statement based instead of expression based, and not immutable by default are kind of a drag; not the end of the world but a bit unpleasant, IMO.

satvikpendem 4 days ago | parent | next [-]

Serialization support is coming, probably this year. As for statements vs expressions, it does have some expressions such as if and for inside lists but changing it wholesale to an expression based language would be too much of a breaking change.

virtualwhys 3 days ago | parent [-]

Serialization support has been coming for years, I lost patience.

Otherwise, yes, some support for expressions, some support for immutability, no support for optional semi-colons, no privacy modifiers so "_" littered everywhere.

I just found it to be an exceedingly ugly language when I used it a couple of years ago. Yes, some more pleasant modern functionality has been bolted on since then, but it's unfortunate that Dart was chosen as the backing language for Flutter, which is an awesome mobile framework.

satvikpendem 3 days ago | parent [-]

Serialization has always been possible via libraries, so most people were doing fine with that, what is coming is native serialization support, but in practice it will be functionally the same, ie rather than you running build_runner, the compiler will do it for you. I'm not sure what you used but that's what you were hung up on, there were always ways to solve it.

Dart is a pragmatic language, it has everything you need and has a lot of benefits too, such as sound null checking (very few languages have this, Rust comes to mind), JIT and AOT support (Javascript / TypeScript such as for React Native doesn't, and Kotlin is just getting there with Kotlin Native but it still has a lot of issues), and now more functional programming concepts with algebraic data types via sealed classes and pattern matching.

What language would you have chosen when Flutter came out circa a decade ago, or, we can be even more charitable and ask what language would you use today if you were to implement Flutter? I'm curious because everyone has their own ideas but they all don't work for one reason or another.

dtmorgan 2 days ago | parent [-]

[dead]

vips7L 3 days ago | parent | prev [-]

I thought dart could natively deserialize via dart:convert? It just only decodes to lists and maps, you have to manually map into classes.

4 days ago | parent | prev [-]
[deleted]
websiteapi 4 days ago | parent | prev | next [-]

isn't this just because Dart is way newer than those? it's from the 2010s. it's really modern in comparison (same generation as Kotlin swift and typescript)

BoorishBears 4 days ago | parent [-]

> Dart feels like the before with no after, even though it got traction in the era of the Afters.

It's aged like the recent languages but feels clunkier like a language that's much much older.

mdhb 4 days ago | parent | prev | next [-]

Dart is hands down the best modern language out there for app development right now what are you even talking about? I understand that maybe a lot of people haven’t used it or maybe haven’t used it in years and that probably drives a lot of the FUD but for those who use it, it has stupidly high ratings from developers who use it and has for years.

BoorishBears 4 days ago | parent [-]

It's not FUD when you make something terrible* and that reputation doesn't immediately slough off.

And I just checked the Dart release notes from all of 2025: https://dart.dev/resources/whats-new

Great progress! But smells a lot like the language I had it pegged for when "underscore as a wildcard" lands in February 2025, 2 years after pattern matching lands.

How did they ship pattern matching in 2023, with a million examples of how to do it right already hashed out and in the wild... and then not figure out a wildcard symbol for 2 years?

-

* Dart was awful, lost to Javascript because no one rated it highly enough to justify moving off Javascript, and was practically dead until Flutter dusted off the corpse and pivoted away from their browser goals... so super weird revisionism to act like we're talking about some beloved evergreen language.

munificent a day ago | parent | next [-]

> How did they ship pattern matching in 2023, with a million examples of how to do it right already hashed out and in the wild... and then not figure out a wildcard symbol for 2 years?

We shipped support for `_` as wildcards in patterns with Dart 3.0 when pattern matching first shipped.

However, prior to Dart 3.0, `_` was already a valid identifier (as it is in most other languages). The feature you're mentioning from last year was to remove support for uses of `_` as an identifier outside of patterns. This way `_` consistently behaves like a wildcard everywhere in the language. We didn't ship that in 3.0 because it's a breaking change and those are harder to roll out without causing a lot of user pain.

It's OK to not like Dart. There are multiple popular languages for a reason. But it is helpful when communicating about a language to others to be accurate so that they can make their own informed opinions.

wiseowise 4 days ago | parent | prev [-]

You seem confused and indeed spreading FUD.

Dart wasn’t awful. It wasn’t adopted at the time because it had a distinct runtime that would require splitting web in two which nobody wanted. On top of that it gave Google too much power, because now they would control both runtime (V8) + language (Dart).

TypeScript won and became king because it was pretty much JS 2.0 instead of JS++ like Dart.

BoorishBears 3 days ago | parent [-]

In your version of history Dart was always a great language... but Google was simultaneously too powerful for other vendors to allow Dart to proliferate, but also too weak to sustain it themselves despite Chrome going on to do just that for many many web standards.

I'm sure that's a really cozy idea, but doesn't pass the "common sense" test: a bit like your random misuse of the term FUD.

-

The simple reality is it wasn't very good, so no one was rushing to use it, and that limited how hard Google could push it. ES6 made Javascript good enough for the time being.

Dart 1.x had a weak type system, and Dart 2 was adding basics Kotlin already had almost 2 years earlier: that was also around the time I first crossed paths with Flutter, and honestly Flutter by itself was also pretty god awful since it was slowly reinventing native UI/UX from a canvas.

(It was a lot like Ionic: something you used when you had a captive user-base that literally couldn't pick a better product. Great for Google!)

wiseowise 3 days ago | parent [-]

> In your version of history Dart was always a great language... but Google was simultaneously too powerful for other vendors to allow Dart to proliferate, but also too weak to sustain it themselves despite Chrome going on to do just that for many many web standards.

"In my version of history"

It takes two seconds to find this if you weren't there when it happened. Google had a fork of Chromium with Dart VM called Dartium, it wasn't a matter of resources. Industry flipped Google off, plain and simple.

Educate yourself before making such claims, the decision to not adopt Dart wasn't because of its technical merits as a language.

The rest of your comment is just your opinion, so you do you. I'm not a Dart or Flutter devrel team to sell you their product.

BoorishBears 3 days ago | parent [-]

I guess this is the Dunning-Kruger effect everyone talks about!

To understand just enough to regurgitate what happened, but miss why it happened... and then assume someone who's pointing at the much more relevant why is just plain wrong.

Because the why requires actually understanding of things like developer mindshare rather than regurgitating search results.

-

The hint I'll leave if you're willing to consider maybe you don't know everything ever... look at who's feedback is being promoted when Chrome wants to do obviously unpopular things on the web: https://github.com/webmachinelearning/prompt-api/blob/main/R...

https://github.com/mozilla/standards-positions/issues/1213

And model for yourself what happens if developer interest exceeds vendor refusal in magnitude, so Google just ships the thing, without a feature flag, to a massive percentage of the web-going world.

wiseowise 3 days ago | parent [-]

http://xahlee.info/comp/CoffeeScript_Dart_Javascript.html

Keep trying, though, if you believe hard enough you might rewrite history.

BoorishBears 2 days ago | parent [-]

I guess you're not willing, or not capable? Either way, good luck: must be a hard way to live :)

wiseowise 4 days ago | parent | prev [-]

Have you even used modern Dart?

cageface 4 days ago | parent | prev | next [-]

The last time I looked at it was far less mature on non-Android platforms than Flutter. Has that changed?

crowbahr 4 days ago | parent [-]

Flutter has been abandoned by all the large companies - Google is throwing their weight in on KMP and has laid off the flutter teams.

satvikpendem 4 days ago | parent | next [-]

This is completely incorrect. Large companies like Canonical are all in on Flutter even now, they're making it the default for desktop UI development in Ubuntu and are writing a lot of their own apps in Flutter.

The "layoffs" were not any of the core team, it was just an offshoring, of infrastructure devs at Google that happened to work on Flutter builds, to Europe where they rehired for the same positions there.

cageface 4 days ago | parent | prev | next [-]

This is a large exaggeration. There are still a lot of people working on Flutter at Google and large companies continue to adopt it.

Google's wildly popular NotebookLM is a recently released Flutter app, for example.

websiteapi 4 days ago | parent | prev | next [-]

I heard of the flutter layoffs, but my understand is that it was unrelated to KMP. fwiw google still uses flutter

wiseowise 4 days ago | parent | prev | next [-]

Source?

> Google is throwing their weight in on KMP

Hahah.

mdhb 4 days ago | parent | prev [-]

Just straight up making shit up here. WTF are you talking about?

palata 3 days ago | parent [-]

Google Workspace has been moving to KMP. They said at KotlinConf that it has replaced their decade-old transpiler from Java to ObjC, which is very impressive.

mdhb 3 days ago | parent [-]

Yes this is because they are starting with a Java codebase and that obviously makes sense there.

You have other platforms like Google earth who when it was time for a proper rewrite went with flutter and dart along with a bunch of Google cloud stuff and Google Ads.

satvikpendem 4 days ago | parent | prev | next [-]

That's funny, I found it the exact opposite, not the least of which is that it requires a JetBrains IDE to even run it. VSCode or neovim with Flutter and really most every other UI framework like React (and Native) work great.

Regarding KMP specifically, I didn't find it much use to only write business logic in one language, while still having to rewrite the UI up to 6 times (mobile, web, desktop), I'd rather have everything all in one.

Compose Multiplatform looks promising as it's Flutter-like in that it renders its own UI but it's still quite early, I know they say it's "stable" but when I used it, it really didn't seem so, plus the package support is extremely lacking compared to Flutter and of course the behemoth that is React (and Native)'s npm.

These days I'm looking forward to Dioxus, they're making their own native renderer similar to Flutter but especially for web, they are not doing the canvas trick, because they actually use plain HTML and CSS as their markup languages so they can compile directly to browser standards sites while still having a non-webview experience on mobile and desktop.

websiteapi 4 days ago | parent | prev | next [-]

Kotlin Multiplatform does seem pretty appealing, but haven't looked into it very much

wiseowise 4 days ago | parent | prev [-]

In what way? It’s an unfinished, hot garbage bolted on top of Gradle. Flutter is light years ahead in terms of polish and development experience.

palata 3 days ago | parent [-]

I think you're confused. It's not "something on top of Gradle". For instance to run on in Swift on iOS, it has to compile to native, and then it wraps it in a C interface and finally in a Swift interface. This has absolutely nothing to do with Gradle.

wiseowise 3 days ago | parent [-]

> For instance to run on in Swift on iOS, it has to compile to native, and then it wraps it in a C interface and finally in a Swift interface. This has absolutely nothing to do with Gradle.

And what exactly orchestrates the process of compilation (invoking Kotlin compiler + fetching dependencies)?

palata 2 days ago | parent [-]

Whatever you want, really. The default just happens to be Gradle because that's the default on Android.

My point is that the fundamental difference between Flutter and KMP is not at all Gradle.

Last time I checked, Flutter was relying on messaging. KMP leverages FFIs. Flutter is a framework, KMP is not. If all you see is the command line you invoke to run the build, I think you're missing a lot.

andycall 2 days ago | parent | prev | next [-]

React/Vue + TailwindCSS are now ready for building Flutter apps.

https://openwebf.com/en/blog/announcing-webf

cyberax 4 days ago | parent | prev | next [-]

React Native doesn't use Electron on mobile, it's a misconception. But it does depend on interpreted JavaScript on iOS and Android.

websiteapi 4 days ago | parent [-]

I mean on desktop

avtar 4 days ago | parent [-]

React Native doesn’t depend on Electron for desktop apps either. It renders using native UI components and don’t use a browser engine.

websiteapi 4 days ago | parent [-]

I know react native for windows is a thing, but is it on par with electron these days? my understand is that it was way beyond, but I could def be wrong

kenferry 4 days ago | parent | prev | next [-]

The bigger hit than performance is usually user experience quality and “write once debug everywhere”.

websiteapi 4 days ago | parent [-]

true - though I don't think that's inherent, more just the mentality of one who might pursue this.

SchwKatze 4 days ago | parent | prev [-]

There is also Dioxus

satvikpendem 4 days ago | parent [-]

I was initially uninterested in Dioxus because they just used webviews but their native renderer is really interesting now because it has a lot of strengths, using plain HTML and CSS as the markup language so that they don't have to render to a canvas on the web like Flutter, Compose Multiplatform or many other WASM based renderers do, as they can just, well, ship the HTML and CSS directly. But then on mobile and desktop, it will be rendered without a webview, so you get all the benefits of each platform.