Skip to main content
BS

Blog

Thoughts on web development, frontend architecture, and design.

Shipping an MCP server with your design systemJuly 8, 2026

How to give AI coding agents accurate, version-correct knowledge of your component library by shipping an MCP server inside the npm package itself — building a JSON index from your existing docs, exposing it over a small stdio server with a couple of tools, and bundling the whole thing so it adds zero infrastructure and zero weight to consumers.

Rendering Strategies on the Web: CSR, SSG, ISR, SSR, and RSCMay 22, 2026

A practical comparison of the five rendering strategies you actually choose between in a modern React app — Client-Side Rendering, Static Site Generation, Incremental Static Regeneration as the hybrid middle ground, classic Server-Side Rendering with hydration, and Server-Side Rendering with React Server Components — including where each one wins and where it hurts.

Zero trust: protecting yourself from npm supply chain attacksApril 12, 2026

Practical security practices for package managers to defend against supply chain attacks: disabling post-install scripts, install cooldowns, lockfile validation, deterministic installs, and safe upgrade strategies.

useSyncExternalStore: Replacing React Context with a global state storeApril 10, 2026

Replacing React Context and useState with useSyncExternalStore for shared client state, using a real theme provider refactoring as the example.

Domain-Driven Design in Frontend ApplicationsMarch 16, 2026

A practical look at applying Domain-Driven Design principles in frontend projects to separate domain logic from technical implementation, improving longevity and making it easier to swap external services.

Caching with the cache-control headerFebruary 22, 2026

A practical guide to HTTP caching with the cache-control header, covering max-age, public vs. private, immutable, stale-while-revalidate, and hash-based cache busting for static assets.

Choosing your styling solution: from vanilla CSS to utility frameworksFebruary 2, 2026

A practical guide to choosing between CSS, preprocessors, CSS Modules, CSS-in-JS, and utility frameworks for your next project.

(Micro) Frontend Architectures: Benefits, Drawbacks and when to utilize themJanuary 21, 2026

A practical guide to (micro) frontend architectures: monoliths, vertical and horizontal splits, and runtime script injection. Learn when each approach makes sense and what trade-offs to expect.

Animations on the Web: CSS, requestAnimationFrame, Web Animations API, and View TransitionsJanuary 13, 2026

A practical guide to modern web animation: when CSS is enough, when to reach for requestAnimationFrame, Web Animations API, and how View Transitions make UI changes feel continuous.

HTTP Streaming: Benefits and DrawbacksJanuary 12, 2026

An exploration of HTTP streaming, how it works in modern frameworks like Next.js, and when you should (or should not) use it.

Level up as a frontend developerOctober 12, 2025

If you want to level up as a frontend developer, you need to get really good at the web fundamentals and at communication.

Too many consultants and managers - not enough delivery excellenceMay 18, 2025

A rant about the current state of the software development industry and the lack of career opportunities for skilled developers.

Dynamic redirects with Next.js middlewareFebruary 22, 2025

How to use Next.js middleware to create dynamic redirects based on rules defined in an external source like a headless CMS.

The power of responsive variants in componentsDecember 22, 2024

How to use responsive variants in components to create a more dynamic and flexible design system.

Don't use JavaScript for that - Part 1 - Inpage TransitionsSeptember 30, 2024

Don't use JavaScript for smooth scrolling and in page transitions.

Keeping accessibility in mindSeptember 18, 2024

A short guide on how to keep accessibility in mind when building digital products

Building reusable multi-brand component libraries with React - Lessons learnedSeptember 12, 2024

Lessons learned from building component libraries with React