I was a huge Remix fan and supporter of Ryan until this pointless debate. We really should be propping each other up in tech instead of tearing each other down. If the goal of Remix is to "use the platform", why complain about how Liveview uses the right tools for the job?
Dug in deeper, had no idea anything was draggable and I didn't have any mp3s on my computer to upload before.
Noticed it uses Sortable.js for drag/drop, this means the UI state is driven by DOM manipulation outside of LiveView.
Somebody sent me a Trellix (dumb mini trello) that drove the UI through a websocket on drag/drop and it was super janky. Since LiveBeats uses Sortable and syncs in the background it avoids jank.
I would call this bailing on LiveView's model though. This is the ceiling I'm talking about.
When LiveView stops becoming the source of truth, you lose composition with the rest of the system. It gets difficult to compose and synchronize other random DOM libraries with each other, the UI, and server state.
I'm sure you view it differently, that these mount hooks to go do any DOM manipulation you want is a feature, not a ceiling.
But if any web app can just go "write a bunch of DOM manipulation" then I guess express.js has no frontend ceiling either and the concept loses all meaning.
To me, the ceiling is any time you stop using LiveView to drive UI updates and do something else.
This app does a great job of avoiding network latency in favor of a separate abstraction to drive those DOM updates, so I can't find any jank.
I didn't say I'd find jank though. I said I'd break it, and I did 😉
I'm actually super happy with how much you all care about getting rid of jank too. The only difference here (I suspect) is that I view using something like Sortable.js instead of something built on LiveWire is a ceiling