Gustav Hansen's Avatar

Gustav Hansen

@stav.dev

Engineering @ Sanity, living in Berlin. More questions than answers.

106
Followers
666
Following
60
Posts
22.02.2024
Joined
Posts Following

Latest posts by Gustav Hansen @stav.dev

Preview
Request for developer feedback: focusgroup  |  Blog  |  Chrome for Developers Try out focusgroup and comment on the proposal.

Open UI has been working on speccing out the focusgroup attribute: a declarative way to support roving focus & add keyboard nav to composite widgets like toolbars/menus

We'd love your feedback!

Learn more & see open questions: developer.chrome.com/blog/focusgr...

H/t to Edge folks for prototyping

05.03.2026 16:54 👍 68 🔁 20 💬 6 📌 2

+ dependency diff between versions
+ size difference between versions
+ aggregate release notes for versions from GitHub

❤️

27.02.2026 19:35 👍 2 🔁 0 💬 0 📌 0

That's the moment I took away my doggos Kong 🙈

26.02.2026 10:14 👍 1 🔁 0 💬 0 📌 0
Preview
Practical Decentralization The point of decentralization is to guarantee the rights of individuals and communities on the Internet. Pulling that off is a balancing act between practicality and ideology.

New blogpost about atproto

It's not federation, it's not a p2p mesh. It's a secret third thing: practical.

www.pfrazee.com/blog/practic...

25.02.2026 17:13 👍 566 🔁 139 💬 32 📌 33

Container Timing - a new W3C performance metric - has migrated from Bloomberg to the WICG Github org 🎉

@jason-williams.co.uk made the Bloomberg Terminal use this web metric to measure human-perceived time to start apps. We've found it more useful than existing metrics.

github.com/WICG/contain...

25.02.2026 09:29 👍 37 🔁 6 💬 2 📌 0

@joshellis.co.uk 👀

25.02.2026 17:56 👍 1 🔁 0 💬 0 📌 0

Pretty major improvement to website security! For those that can't use this immediately, FF 148 also brings Trusted Types to newly baseline which can go a long way in helping prevent XSS.

Chromium also looks set to follow shipping Sanitizer soon (probably 147).

24.02.2026 15:11 👍 31 🔁 7 💬 1 📌 0

Only half-heartedly to be honest. It was originally part of a refactoring that got scrapped but the first tries showed that it won’t be simple to infer the right types. I’ll take this thread as motivation to look at it again tomorrow though 🚀

23.02.2026 20:26 👍 2 🔁 0 💬 0 📌 0

Are you open to a contribution around this? At the time I wasn’t sure whether this is aligned with your idea and obvs queriesOptions is a terrible name … 😅

23.02.2026 20:07 👍 1 🔁 0 💬 1 📌 0

What we are missing is a way to share multiple queries together with the combine function. QueryOptions allows to share the whole singular payload (incl. select) but there is no easy way (type-wise) to achieve the same for multiple queries (incl. combine), which is the single source for custom hooks

23.02.2026 19:52 👍 1 🔁 0 💬 1 📌 0

That’s great and matches my experience 100%. One thing I am curious about is how you see using custom hooks around useQueries, because there is no queriesOptions API that allows for easy sharing multiple queries?

23.02.2026 19:33 👍 1 🔁 0 💬 1 📌 0
Preview
Child’s Play, by Sam Kriss Tech’s new generation and the end of thinking

this article is a wild ride

20.02.2026 16:29 👍 26 🔁 9 💬 4 📌 4

Schema benchmarks are here 🚀

19.02.2026 17:36 👍 3 🔁 0 💬 1 📌 0
Preview
We Ralph Wiggumed WebStreams to make them 10x faster - Vercel WebStreams had too much overhead on the server. We built a faster implementation. See how we achieved 10-14x gains in Next.js rendering benchmarks.

This is great to see vercel.com/blog/we-ralp...

While specific runtime products may compete around features and performance, this kind of research on how to work around the inherent performance bottlenecks in web streams ultimately helps everyone.

18.02.2026 22:03 👍 17 🔁 7 💬 1 📌 1

That’s a very impressive list of fixes. 👏 Congrats to the team for shipping those.

17.02.2026 18:42 👍 0 🔁 0 💬 0 📌 0
Preview
git recent: what branch did I work on? Mega short blog post, mostly for me to remember, but also might be useful to you. In a project I'll often work on and move around different branches throughout…

git recent: what branch did I work on? by @remysharp.com

remysharp.com/2026/02/12/g...

15.02.2026 20:45 👍 9 🔁 2 💬 1 📌 0

👀 Chrome 145 DevTools has Soft Navigation markers

Nice DX improvement for building SPAs

17.02.2026 12:32 👍 33 🔁 4 💬 0 📌 0

I’ve noticed the same for EMs.

17.02.2026 13:30 👍 0 🔁 0 💬 0 📌 0
What Do We Really Know About the Back Button?
What Do We Really Know About the Back Button? YouTube video by Interface Studies

Published a new video on "Interface Studies"

What Do We Really Know About the Back Button? This video traces the concept of "back" across five distinct systems. Each system makes a different wager on what kind of past should be available to the user. youtu.be/Z4cS2Ivg2-M?...

16.02.2026 16:02 👍 23 🔁 3 💬 0 📌 2
#FOSSBack: Scott Jenson - Why is UX so hard to contribute to FOSS
#FOSSBack: Scott Jenson - Why is UX so hard to contribute to FOSS YouTube video by Plain Schwarz

@jenson.org had similar thoughts. I recommend some of his talks on the topic, if you are up for it und fully agree with you. youtu.be/Mjup7Mrj7uU?...

16.02.2026 21:03 👍 2 🔁 0 💬 0 📌 0
Vitest 5 · vitest-dev vitest · Discussion #9664 We wanted to start gathering feedback for the next major version. Vitest 4.1 is on its way and will include a lot of new features without any breaking changes (including tags, around hooks, --detec...

Vitest 4.1 is on the horizon, but we're already looking ahead! What are your main pain points in your testing workflow right now?

Let us know in the Vitest 5 discussion thread!

16.02.2026 13:21 👍 50 🔁 10 💬 0 📌 0

You might also be interested in github.com/sanity-io/st...

15.02.2026 19:28 👍 4 🔁 0 💬 0 📌 0
Preview
Automate repository tasks with GitHub Agentic Workflows Build automations using coding agents in GitHub Actions to handle triage, documentation, code quality, and more.

We're super jazzed to be launching GitHub Agentic Workflows into technical preview today!

"Generative AI" kind of fooled us into thinking that AI is synchronous, but async AI can have so much more value for us as developers. 🧵

github.blog/ai-and-ml/au...

13.02.2026 20:45 👍 28 🔁 9 💬 5 📌 1

This is one of my favorite things, data model explainers!

Makes me think of #rfc9110, which turned my head super fast. Instead of a technical document on http the protocol, a rfc on what the model of http is.
datatracker.ietf.org/doc/html/rfc...

Understanding not what is but what it means enables!

14.02.2026 19:20 👍 45 🔁 6 💬 0 📌 0
Preview
Launching Interop 2026 – Mozilla Hacks - the Web developer blog Interop 2025 brought a bunch of new web platform features & fixes, but here's what's coming in 2026…

If you had to pick _one_, which web platform feature would you like in Firefox that isn't part of the Interop 2026 effort? hacks.mozilla.org/2026/02/laun...

13.02.2026 09:34 👍 32 🔁 8 💬 20 📌 1

border-shape can handle both insets and outsets, so you can do effects like this chevron nav (corner-shape can't do both).

This means you get a perfectly-wrapping focus ring without needing to manage z-index or having it partially covered due to overlap.

Demo: codepen.io/una/pen/ByzY...

05.02.2026 20:08 👍 206 🔁 31 💬 9 📌 6
Post image

HARVARD BUSINESS REVIEW: “.. In our in-progress research, we discovered that AI tools didn’t reduce work, they consistently intensified it.”

hbr.org/2026/02/ai-d...

10.02.2026 13:16 👍 2547 🔁 1042 💬 70 📌 268

@overlookmotel.bsky.social, @camchenry.com 🙏🏼

12.02.2026 09:00 👍 1 🔁 0 💬 0 📌 0

No, but please talk to your financial advisor. Love, doctor

11.02.2026 20:38 👍 2 🔁 0 💬 0 📌 0
interface TabsProps {
  /** @renders* {Tab} */
  children: React.ReactNode;
}

<Tabs>
  <Tab />    // ✅ Valid!
  <Button /> // 🚫 Error!
</Tabs>

interface TabsProps { /** @renders* {Tab} */ children: React.ReactNode; } <Tabs> <Tab /> // ✅ Valid! <Button /> // 🚫 Error! </Tabs>

I built an ESLint plugin that enforces which components can be passed as children/props in React.

Annotate with a @​renders annotation, get errors when the wrong component is passed.

GitHub: github.com/HorusGoul/es...

04.02.2026 20:49 👍 28 🔁 2 💬 2 📌 1