Post

Not trying to be a dick by highlighting some examples, rather trying to share some of the magic that I've recently found. I get it. I used to dismiss hypermedia apps (and still do think HTMX doesn't go far enough) for richly interactive apps. But there are examples out there.

And before someone says these are toys or whatever, here is David Nolen discussing how he also shared the same viewpoints before, tried sync engines for what is effectively a Quickbooks app, and ultimately found Datastar to be the best solution for them.

To be clear: I love Solid and have learned a lot on your streams over the years but felt like there was a bit of dismissal as to the current reality of hypermedia as an option *also for highly interactive apps*, particularly Datastar.

Try slowing down the network and interacting with it and see what happens. No feedback that anything is in flight and if i drag a card and then try to edit another before that is done the entire app freezes. I do think Ryan is genuinely open to be proven wrong here but this isn't it.

I have a fiber internet connection. This is my experience interacting with an app built with SPA bsky.app/profile/drk..... This never resolved btw. Just kept hanging. So why are we pretending like adoption SPA for a slow network matters when you hit this multiple times a day across SPA apps?

drk@drk.wtf

Just another day in SPA paradise.

Maybe a kanban board does need something like SolideJS (it dones't), but even then use it for the surface that has more complex interactions.

Most of the time/most apps you'll likely have a fine connection. Your bottleneck is likely a slow server. Network around trip is fine and can be masked or mitigated in lots of cases. No bundler or a npm attack vector required!

For sure! Can you clarify which part isn't it? Not trying to be rude, want to be explicit about what we're agreeing or disagreeing on. The feedback on the kanban board example could be improved, agree. How does a SPA handle the slow network roundtrip better here? Not following that part.

Trello as a demo comes from a challenge by Ryan Florence where he roasted peoples implementations seeing specifically how interacting with them broke in various ways when network was slow. There isn't a clear rule set but not waiting for network on every action feels like table stakes.

I'm not familiar with this challenge, will check it out. But I feel like we're talking around each other? You can easily add more clientside state to a datastar app if you want more--it's just signals. You can dial how much state you want to project on the client.

yeah this one pretty much proves the point ryan was trying to make you either make janky apps or put everything into web components choose between bad dx and bad ux with solid you dont have to choose

brother… very unimaginative! You can get similar ergonomics on the backend w/ JSX. Code abstracted away in reusable web components so more interactive UX can still be provided in a declarative way as well. You app code still stays lean.

brother even opening a dropdown has latency forget about the actual client-server interactions... how does opening a dropdown cause client server roundtrip lmao

This is a false dichotomy that I don't think you intended to sound as sensational given your other responses below, re: nuance. I don't really want to keep going back and forth here though. I feel like the original intent of this thread has been misinterpreted (or miscommunicated or both).

As @drk.wtf said, after over a decade of having my teams fumble with SPA architecture, D* has been refreshingly simple (in the Rich Hickey sense of the word) while still giving me the tools to build high-fidelity apps. I appreciate Solid2 (and use it on an app in prod!).

Thanks for posting. I would respond but @gabbev.bsky.social pretty much has it completely covered. He's not trying to be difficult. The first thing I do when playing around with an app is throttle the network and see if it holds up. I did that on stream too. I hope this thread serves as a reference.

I think with any approach you hit the same issues and there's nothing inherent with hypermedia that prevents you from working with slow/throttled networks while sacrificing UX.

That said what I am hearing generally is there are gaps in author ergonomics. Like you have to do a lot more imperative work where with Solid it's declarative and provides a APIs making it something you think about less.

So I agree w/ plain Datastar that's a lot left to the implementer. I don't see Datastar as solving the same thing as Solid. So it gets muddy when putting Datastar on the spectrum and comparing it to SPA meta frameworks.

I'm suggesting that because of their wheelhouse modern SPA frameworks tend to account for this category in their design. I view HyperMedia as lower level protocol. I don't see an issue communicating with HTML partials etc. There is just a lot that sits on top of that. bsky.app/profile/ryan...

Ryan Carniato@ryansolid.bsky.social

No one is dismissing hypermedia or the like. Server components are basically a nod to them. There is just a reason like how you acknowledge you can't stop at HTMX, that I don't stop at Datastar. Not anything wrong with what its doing.

For sure. My argument is SPAs come with a bigger bag of complexity in the process. I don't think you need to reinvent the browser to solve for latency mitigation techniques. Routing, bundler dependencies, bespoke wire formats, syncing state.

To make sure I'm following: you're saying modern SPA frameworks account for slow networks in their design. I assume you're referring to optimistic intent and/or the fact that SPAs tend to localize more state than typical hypermedia stacks.