
Today’s issue: A runaway Promise train, inside info on the 6th installment of Indiana Jones, and how I plan to embroider the Bytes logo on my Christmas sweater.
Welcome to #538.


When your agents get access to a "library of behaviors"
The team at Vercel just released “a library of behaviors for agents” called the UI SDK. It’s basically a framework-agnostic version of React’s hooks that can be used with any component library. So what’s the big deal, haven’t we seen this before?
Well, yes kinda… back in 98 we wrote about zag.js, a framework-agnostic toolkit for building complex interactions. And in many ways the UI SDK is this same idea, but with special tooling for agents to test and drive the framework. It provides over 50 built-in building blocks for things like keyboard navigation, focus, selection, popups, drag and drop, and the ARIA attributes those interactions need.
Here’s how it works:
Define a primitive: A primitive describes a component’s behavior: its state, the functions that change it, and the parts that use it (slots).
const reactions = definePrimitive({
name: "reactions",
state: () => ({}),
api: () => ({}),
slots: (slot) => ({
root: slot({}),
reaction: slot<{ value: string }>({
props: { value: "string" },
attrs: () => ({ type: "button" }),
}),
}),
})
Render its parts: createParts(primitive, elements) is a framework-specific adapter that turns each slot into a component you can render. You pass it a primitive and a mapping of what elements or components to associate with each slot.
Compose behaviors: You can combine behaviors from other primitives, hook into external stores, and broadcast changes to other components via the api attribute.
Connect an agent: Agents get their own API to hook into the framework allowing them to observe state updates agent.subscribe(), see the component tree agent.snapshot(), and drive your UI agent.act(). These hooks are much more token-efficient than using browser tools or computer use.
Bottom line: Being forced to attend cotillion classes in middle school forever biased me against using someone else’s “library of behaviors” but I hope your agent enjoys all the new features.


When you're curious how this AI thing is going for everyone else
Now that every company is all in on AI, do you ever wonder how that’s been going for them?
Well, Sonar surveyed over 1,000 developers and engineering managers about how they and their companies are using AI-coding tools and compiled the results into this comprehensive report.
We won’t spoil all the results, but one common theme was how little developers trust AI-generated code. And while we’re never going back to the way things were before, teams need tools to bridge this gap.
Developers whose teams verify AI code with SonarQube were more likely to say AI has improved their defect rates, technical debt, and code quality.
Read the report and see how the results compare to what you’ve experienced.

Christoph Nakazawa released fate 2.0, which now supports GraphQL, Vue.js, client state management and fields that are reactive across the client / server boundary. At this rate fate 3.0 is going to have its own implementation of Unreal Engine.
Soren Blank wrote a blog about the history of menus and the silly invisible shape every UI library has to draw to prevent users from rage-quitting your app.
Semgrep Guardian helps AI agents and humans catch relevant security risks and fixes them before your code ships, so you and your team can sleep easier at night. Try our Bytes-exclusive 60-day free trial. [sponsored]
Pietro Miotti wrote about how his AI agents (re)discovered an ancient Maya site in Mexico using NASA lidar data. Lucasfilm is supposedly adapting this into the screenplay for the 6th Indiana Jones movie where Indy works from home because his sciatica prevents him from flying.
Ryan Carniato created a new language called ReactiveScript for creating reactive UIs.
Maggie Appleton wrote a post about fortune telling and speculative design which outlines tools design engineers can use to build the UIs of the future.
Blacksmith is a drop-in replacement for GitHub runners that’s significantly faster and costs 60% less. It’s dead simple and also fully observable in your CI pipeline. [sponsored]
Alistair Smith wrote about “thenables”, the story of what happens when your Promise train gets derailed because of a WebKit bug.
Thinking Machines released Inkling 2 Small, a new home-grown open-weight model that does really well on DesignArena benchmarks.
The wait is over. Expo Simulators is officially out, so your agents can finally look at the app they keep telling you is done. Each one gets its own iOS or Android simulator, checks its work, and attaches a replay to the PR. Available now on all paid plans. [sponsored]
Kath Horvak created ZigZag, free, open-source embroidery software that lets you turn SVGs into stitches.
The GraphQL Foundation announced a specification for GraphQL over HTTP which hopefully means terrorists GraphQL developers will stop returning 200 for errors.