From our blog

Check out our latest news and updates.

Why component names matter more with AI in the loop
Why component names matter more with AI in the loop
07/08/2026 — [email protected]

A human reads a bad component name and opens the file. A model reads it and guesses. Naming quietly became an interface...

Streaming responses without breaking your UI
Streaming responses without breaking your UI
28/07/2026 — [email protected]

Streaming makes a slow response feel fast. It also means rendering text that is syntactically incomplete, and handling a...

Rate limits, retries and the backoff you actually need
Rate limits, retries and the backoff you actually need
26/07/2026 — [email protected]

Every AI feature meets a 429 eventually. Whether that is a blip or an outage depends on retry logic written before you n...

How to evaluate an AI feature before you ship it
How to evaluate an AI feature before you ship it
24/07/2026 — [email protected]

You cannot unit test "is this a good answer", but you can build a set of real cases with known-good outputs. An afternoo...

Writing prompts your team can maintain
Writing prompts your team can maintain
20/07/2026 — [email protected]

Prompts are code with none of the tooling. Treat them like code anyway — version them, review them, test them, and expla...

What to tell users when the model is wrong
What to tell users when the model is wrong
18/07/2026 — [email protected]

Your AI feature will be confidently wrong in front of a user. What the interface does in that moment decides whether the...

AI adoption without a rewrite
AI adoption without a rewrite
16/07/2026 — [email protected]

The best first AI feature is small, measurable and easy to switch off. Start where a wrong answer is cheap and the value...