Mark @ Remix Jam 💿
@malstrom.me
560 followers 790 following 2.5K posts
Wake me up when the DEFCON levels have changed. They/them. https://malstrom.me https://mastodon.social/@markmalstrom
Posts Media Videos Starter Packs
Pinned
malstrom.me
I figured I’d make an #introduction post since this is really my first time actively using Bluesky. Do y’all do that over here? 🧵 1/
malstrom.me
I don’t think there is a mechanism for performant list rendering. I actually don’t know if they have keying or not.
malstrom.me
I suspect that, similar to React, the way to get finer-grained updates is to break your UI into more components… or they may want you to use the Frame mechanism liberally
malstrom.me
Yeah, partial rendering and the diffing mechanisms are discussed in Michael’s part of the talk. They have a <Frame> component for partial rendering which works more or less like Fresh’s <Partial> component and the client-side reconciler can diff on a vDOM tree or vanilla HTML
malstrom.me
I’m also just curious about how it will benchmark in general. Gonna try to set that up sometime within the next few days
Reposted by Mark @ Remix Jam 💿
omgsean.com
One thing I like about watching Ryan and Michael demo is I always learn some weird esoteric bit of web platform knowledge that eventually comes in handy down the line.
malstrom.me
I'm unsure about queueTask. Maybe once they document the specific use cases beyond focus management it'll make more sense to me, but I have a difficult time groking microtask queues as it is, so I'm not sure I'll be able to take full advantage of queueTask.
malstrom.me
Ah yeah this is very similar to what I put together
Reposted by Mark @ Remix Jam 💿
rude1.blacksky.team
Cooking up an app-view 🧑🏾‍🍳
ASCII art at the Blacksky App View homepage 2421 evts/sec throughput Fetching my own profile from the blacksky app view 123 MiB/s inbound bandwidth
malstrom.me
Super weird how the hover states are in sync
malstrom.me
Seasons 7, 9, and 11 are my all time favorites!
malstrom.me
Here’s one big thing I was thinking about during the talk: given that the fetch router runs anywhere fetch runs and given that Remix will have its own ORM which could theoretically paper over differences between server-side SQL and client-side IndexedDb using the same API for both…
malstrom.me
Let me know what you think once you do!
malstrom.me
I’m not sure that there are a lot of official resources available yet. The repo has all the code in it so far, including a fairly elaborate bookstore site demo. Other than that, there’s just the stream from this afternoon I think. Its more of a preview at this point, alpha before the end of the year
malstrom.me
This is more or less how ivi handles it and they have a similar rendering philosophy: a setup function that returns a render function and a component instance passed to the setup function with an invalidate() method on it
malstrom.me
You could also do something like

function App() {
let count = 1
let double = () => count * 2

return () => <button on={dom.click(() => count++; this.update())}>{double()}</button>
}
malstrom.me
Yeah, I think the typical pattern is to either encapsulate all that logic (doubling and triggering rerendering) into a single function you call each time you want that side effect or you could also just declare your doubled variable in the render function itself if you don’t need it elsewhere
malstrom.me
It was a blast. Surreal getting to meet so many people I’ve been following on here for a while now
malstrom.me
My favorite announcement from this afternoon was their eventing library, which can be used in any framework (and I’m gonna figure out how to put it in all of them). I think it’s sort of brilliant to start from events as your first principles, since they’re so fundamental to UI on the web.
malstrom.me
I’m sure eventually the Remix team or someone from the community will build bundler plugins that improve on that DX, but the vanilla experience there is certainly not ideal.
malstrom.me
The one place I think that the no-build philosophy completely falls down is the DX of declaring hydratable components and frames… I never want to manually type out the path to my source code from within my source code.