My main issue is having to buy my parents a bigger TV every few years because the fonts keep getting smaller and their eyes keep getting worse.
WebAssembly and Rust may be massive overkill for most web applications, but so is React or Vue or whatever Javascript framework is popular these days. When the inevitable rewrite happens, we might as well enjoy the benefits of the new, faster-than-the-old-evolved-moloch web UI.
If anything the move from the old system (React+WebAssembly) to the new one (Rust+minimal JS+WebAssembly) will make the web application itself smaller and easier to grasp.
A valid reason to switch to Rust should be a better developer experience, but it will require lots of upfront effort to realize the benefits. I doubt that it's worth it for small to medium-sized web applications.
Also, React itself is very much lightweight and fast, it's the developers who use it to program slow websites.
They mentioned Leptos as an inspiration but this is clearly very different and has a lot of interesting features.
wondering if that’s the UI in question
Not just my predecessor was confused by the wording and categories put on the page.
The concept behind the way these platform renders is very similar, so the new Amazon UI may be terrible as well, but I wouldn't expect whoever made the GUI framework they use now to make the same mistakes Flutter made.
Edit: after looking into this some more, it looks like the approach Amazon took is quite different from most Rust UI libraries. They have written their own framework that basically re-implements React but entirely on the WebAssembly side. I don't think it works by throwing a <canvas> onto the screen and implementing a browser rendering engine in JS+WASM like Flutter does. They also seem to target native code where they do all the rendering themselves, but probably faster because they control all the layers and don't need to build a general-purpose UI engine for their video player with extra steps.
It's fast, ergonomic, and the code has fewer defects than code written in other languages. (Google did a study on this.)
It's not as unapproachable as the memes make it seem. It's no harder or less productive than Java or Golang to write. (Google also did a study on this.)
The Rust WASM deploy story is sublime and is going to help it take over the world.
You can mix and match a C# Blazor component and a Rust component, and a Python component and they all compile to WASM and runs at equal speed.
It seems like Flutter apps run better in Chrome, but I'm on Firefox. Could be a Flutter optimisation issue or something in Flutter triggering a Firefox bug. Whatever it is, it's making me avoid Flutter web apps.
I wonder if Flutter could run via wasm in browser.
> … but also in browsers because some living room devices today have just an HTML5 browser and don't even have flash space big enough to put our native C++ engine.
The answer is probably "because the alternative is worse". I too would rather make a single web app than separate Tizen/tvOS/WebOS/Android/whatever Roku runs apps.
In my experience of building consumer web applications, they all start fast.
Then someone says “We need to track every interaction in mixpanel. What’s even the point if we don’t know it happened”.
Then the sales team says “We need to track in Salesforce, nobody on our team looks at mixpanel”
Then the marketing team goes “We must consolidate in google analytics, nothing else fits our usecase”
Then the other product team says “We need Amplitude”
Then the re-engagement marketing team goes “Braze for us please, we must know when customers do a thing so we can trigger campaigns”
Then the product growth hacker marketing team says “Our recommendation engine needs to use the custom in-house framework so we can train our models”
Then someone goes “Hey it looks like we’re losing events sometimes, you have to make sure users don’t leave the screen until all events are submitted”
Then someone has a cool idea: “Wow it would be great if we could see where users are looking with something like Hotjar”
And now you have an app where every interaction triggers 20 different trackers, waits for all of them to settle, then reacts to your action. Just look at the AWS homepage one day – I once counted 70 requests blocked by Brave’s built-in blockers before I even moved my mouse. It’s slightly better after login – only a dozen or so tracker requests iirc.
case in point, AWS homepage is miles ahead any smart tv menu and I doubt they write it in rust.
Anything CPU-bound blocks the JS-based UI thread on web, but not necessarily the browser’s native UI thread. However you would have to do pretty egregious things for this to be a noticeable problem, you almost certainly won’t get there with tracking scripts.
The issue is I/O-bound work. This doesn’t block the UI, but you aren’t guaranteed that the user will stick around for you to make those requests. So you generally want to flush them immediately, or in critical cases even wait for them to complete.
As soon as you’re waiting for API requests to complete before updating the UI, you add 10s to 100s milliseconds of lag to every interaction. But this doesn’t block natively rendered interactions (like form inputs), just the parts you control via JavaScript (like what’s on the page).
Ah but you could just not render things with JavaScript and let the browser handle it! Yes. Except now you are almost guaranteed to lose tracking events because you trigger page-level navigation before even firing your asynchronous events. The browser bails on all requests the page was making as soon as you leave the page.
But once you build up enough of those background waiting tasks, you can actually cause enough CPU-bound work to be noticeable. Kinda like a garbage collection cycle. On top of that you’re limited to how many concurrent API requests (10 I think) the browser can make so if you’re sending requests to 10 different services, now the requests your user cares about are waiting in line.
tldr: on the web a user may hard close your app at any point, so people make things feel slow in an effort to work around this. There are also some hard limits you may run into if not careful