I don't think it would make sense to link to an edited down version of the talk, given the context. It's also missing the part I quoted from.
18.01.2026 06:55 β π 1 π 0 π¬ 1 π 0@columk.bsky.social
Fullstack Developer | Climbing | Paragliding
I don't think it would make sense to link to an edited down version of the talk, given the context. It's also missing the part I quoted from.
18.01.2026 06:55 β π 1 π 0 π¬ 1 π 0Yes, I meant the call to set the optimistic state shouldn't be wrapped in another one (a nested transition), like you would with the useState updater. I thought that could be what you meant by "everything should be in a transition except useOptimistic".
17.01.2026 17:30 β π 2 π 0 π¬ 1 π 0That's not my take so you'd have to ask Ricky.
Text inputs should be the highest priority, but if the input is causing some side effect then that should be deferred in some way. Either with a transition or by using useDeferredValue to use the input value elsewhere with a lower priority.
I think he means that the call to the optimistic updater itself doesn't have to be wrapped in a transition, since it's going to break out of the transition anyway to perform the update.
16.01.2026 19:36 β π 1 π 0 π¬ 2 π 0www.columkelly.com/blog/use-opt...
Updated the todo examples and some of the writing after getting feedback from @ricky.fm
To be fair, Ricky's version of the final example is very clean, (although it took me a while to grasp). useOptimistic might save you after all.
That one should work, even when mashed.
16.01.2026 06:05 β π 0 π 0 π¬ 0 π 0π€£ (if you're in a transition!) I'll update the todo examples tonight.
16.01.2026 00:29 β π 1 π 0 π¬ 1 π 0Wow that's really clean, thanks. Useful to think of it that way. useAsyncState.
15.01.2026 23:52 β π 2 π 0 π¬ 1 π 0New blog post
www.columkelly.com/blog/use-opt...
#webdev #react
Tech blogs that I used to enjoy are entirely written by ChatGPT now. I get it, we all want more free time, but it's still a shame.
sunilpai.dev/posts/seven-...
@emilkowal.ski I'm very curious what you think of the async react showcase at async-react.dev
The intention was to demo the last 10 years of innovation but it seems like bad UX to me. I know you have thoughts on why loading patterns like this can make an app feel much slower than it is.
Hear hear
tanstack.com/blog/directi...
Thanks @deadcode.website!
30.10.2025 16:20 β π 0 π 0 π¬ 0 π 0let user = api.authenticate(token); // Get the user's list of friends (an array). let friendsPromise = user.listFriends(); // Do a .map() to annotate each friend record with their photo. // This operates on the *promise* for the friends list, so does not // add a round trip. // (wait WHAT!?!?) let friendsWithPhotos = friendsPromise.map(friend => { return {friend, photo: api.getUserPhoto(friend.id))}; } // Await the friends list with attached photos -- one round trip! let results = await friendsWithPhotos;
This is really cool
blog.cloudflare.com/capnweb-java...
#webdev
π
alex.party/posts/2025-0...
#webdev #ai #frontend
Seconding that the scroll is pretty finicky on mobile. Tricky to get the tab content centered and then the tabs sometimes won't scroll until they're focussed first with a tap.
15.04.2025 03:37 β π 1 π 0 π¬ 1 π 0My Discover page is all cute pets and nature photos no matter how many times I select "see less of this" on those posts. Something is definitely broken.
13.04.2025 00:04 β π 8 π 0 π¬ 0 π 0With image models you can train a LORA to reproduce a conventionally beautiful face accurately using as little as one reference image. With an unusual face, you need to train with a much larger dataset to get the same result.
12.04.2025 04:38 β π 0 π 0 π¬ 0 π 0I've been playing around with this. I'd like to have a component continue suspending until the image within has fully loaded. I have tried throwing a promise and then resolving it in the onload callback but couldn't get it to work.
10.04.2025 18:48 β π 0 π 0 π¬ 0 π 0People conflate SPA with CSR and MPA with SSR, forgetting that SPAs can combine rendering methods. I'd say most RSC apps are SPAs, although an RSC app with form navigation is actually a combination of SPA and MPA.
08.04.2025 17:23 β π 9 π 1 π¬ 1 π 1I see Kafka in a lot of job requirements so this was useful context.
Following up on your question to listeners, I'd love to hear a deep dive on long polling. Or even a full podcast on different ways to push data to the client. Long polling, SSE, websockets...
type InputProps = InputHTMLAttributes<HTMLInputElement> & CustomInputProps const Input = ({customProp, ...rest}: InputProps) => { console.log(customProp) return <input {...rest} /> } export default function App() { return <Input type="text" name="foo" customProp="bar" /> }
I've made the mistake of listing out a bunch of input attributes as prop types when I want to pass them to a component. React actually a type for these which makes it much cleaner.
#webdev #frontend #react #typescript
Really enjoyed your talk on API design yesterday. It's here if anyone's interested: youtu.be/l3PxErcKeAI?...
26.03.2025 18:56 β π 2 π 0 π¬ 0 π 0@wesbos.com thanks, that was my potluck q about NextJS.
I'm still confused because revalidateTag also clears the client's router cache completely.
In my testing, even calling it on a tag that doesn't exist does this. It makes all layouts and routes that were cached suspend again when navigating.
@tej.as do you really need to rely on data-test attributes with Playwright? I thought the standard was to use user-facing attributes like accessibility roles and labels.
25.03.2025 20:20 β π 0 π 0 π¬ 0 π 0A great interactive visualisation of different types of storage from PlanetScale. Reminds me of Sam Rose's Turing Machine visualization.
planetscale.com/blog/io-devi...
#webdev
There's a node compat flag that adds unjs polyfills for a lot of them, but not http. Workers use web requests. Best bet is to nag the library authors to use web APIs.
20.03.2025 07:51 β π 0 π 0 π¬ 0 π 0I think it might be working because I hydrate the store in an effect with data from the server. It seems to be working anyway. I'm uncertain as the docs are clear that using it outside of context will cause issues.
In case you're curious: github.com/columk1/thre...
github.com/columk1/thre...
@tkdodo.eu is there a way to force a global state issue with Zustand on the server? I'm using it in Next.js without Context but I'm struggling to find any issue. I've tried running multiple browser sessions and a suite of e2e tests but everything seems to work fine, no state is shared between users.
13.03.2025 20:43 β π 2 π 0 π¬ 1 π 0There are lots of posts with 1 like and no replies, and sometimes they're above posts that were made more recently with more interaction. It's all a bit confusing. None of it fits the "trending" descriptor.
13.03.2025 16:07 β π 3 π 0 π¬ 0 π 0