AI
Fable 5 and Mythos 5 Shutdown: Lessons for AI Apps
The Fable 5 and Mythos 5 shutdown broke apps with hardcoded model IDs. A model-dependency lesson for AI teams, not a politics story.
Blog
Long-form articles on architecture, performance, testing, and the real-world techniques used to ship modern web apps. Written by Thomas Findlay, Toptal-certified consultant, Codementor mentor, and Telerik/Progress blog author.

FeaturedReact
RTK Query patterns that scale: endpoint code splitting with injectEndpoints, precise cache tags, token refresh, TypeScript integration, and optimistic updates.
Read article
AI
The Fable 5 and Mythos 5 shutdown broke apps with hardcoded model IDs. A model-dependency lesson for AI teams, not a politics story.

AI
When Anthropic disabled Fable 5 and Mythos 5 for every customer, hardcoded model IDs broke. Build a model-agnostic provider layer with typed fallbacks.

React
A six-dimension audit that turns an AI-generated React prototype into a shippable app, covering data, errors, types, performance, a11y, and observability.

React
A layered testing strategy for AI-generated React code using TypeScript, Zod, Vitest, React Testing Library, and a thin Playwright pass.

React
A 12-item pre-merge checklist for AI-generated React and Vue PRs, organised by behaviour, dependencies, types, and surface area.

React
Nine React anti-patterns Cursor, Claude Code, and Copilot produce by default, with the production-grade fix for each and a pre-merge checklist.

AI
A six-phase methodology for onboarding to an unfamiliar codebase, paired with AI tools like Understand-Anything, Aider, Cody, and DeepWiki.

React
A practical comparison of RTK Query and TanStack Query covering caching, ergonomics, bundle size, and when each is the right pick.

React
A practical comparison of Zustand and Redux Toolkit covering boilerplate, devtools, middleware, scaling, and when each is the right pick.

React
TanStack Query handles any async operation, not just HTTP requests. This article covers four practical use cases: Browser APIs, IndexedDB, async storage libraries, and Web Workers, each with interactive code examples.

Nuxt
File system routing in Nuxt 3 doesn't support colocating non-route files alongside page components, making feature-driven project structures difficult. This article covers how to set up custom routing using the pages:extend hook and automate route registration across your project.

React
Learn how to apply Inversion of Control in React by injecting JSX into deeply nested components via Context API, replacing brittle prop drilling with a flexible render function pattern.

Javascript
Learn how to trigger file downloads in React using the Blob API and a temporary anchor element, with no external libraries. Covers JSON and CSV export, with TypeScript examples.

Vue
Unoptimized images are one of the fastest ways to hurt a Lighthouse score. This guide shows how to use the @nuxt/image module in Nuxt 3 to resize, compress, and lazy-load images, with before-and-after Lighthouse results.

Vue
Vue 3's customRef API lets you control exactly when a reactive value updates. This article shows how to build a debounced ref composable with customRef, a TypeScript version, and the VueUse refDebounced alternative.

Vue
Vite does not resolve the @ import alias by default. This article shows how to configure resolve.alias in vite.config.js, set up jsconfig.json or tsconfig.json for editor intellisense, and avoid the most common setup mistakes.

Vue
Vue 3.4 added the defineModel() macro, which makes multiple v-model bindings much simpler. This article covers defineModel() for Vue 3.4+, and the useVModel composable pattern for older versions.

Vue
Explore Vue Enterprise Pattern and take advantage of CSS variables and CSS modules to create Vue components with variants based on a design system and provide variant styles using the Variant Style Provider component.