
Rewrite, Refactor, or Strangle? A Practical Decision Framework
A practical framework for choosing rewrite, refactor, or strangler paths, based on risk, delivery pressure, change cost, and organisational appetite.
Articles
In web development, architecture is the shape of a system over time: the boundaries we choose, the responsibilities we assign, and the trade‑offs that keep change affordable as a product grows. Good front‑end architecture is rarely about grand diagrams alone; it is more often about clarity, resilience, and leaving teams with something they can still work with sensibly six months ‑ or even years ‑ later.

A practical framework for choosing rewrite, refactor, or strangler paths, based on risk, delivery pressure, change cost, and organisational appetite.

Multi‑tenant applications serve multiple customers from a single codebase. Here, I walk through building a scalable multi‑tenant web application using Next.js.

Build design systems for web apps with Figma tokens, Storybook components, npm packages, release discipline, supply‑chain care, and team adoption.

Technical debt describes the cost of future change, not just code someone dislikes. Its origins, accidental debt, and how to make a useful case for improvement.

An endpoint is an access point; an API is the wider interface and contract. Understand methods, paths, base URLs, and what an integration actually needs.

React Hooks, introduced in React 16.8, bring state and lifecycle features to functional components. Here, I explore how they work and why they matter.

Authentication checks identity; authorisation controls actions on resources. Why login, roles, OAuth, and interface checks answer different questions.

Libraries and frameworks differ in scope, structure, and control. Why inversion of control is a useful guide, but callbacks and package labels aren't enough.

React error boundaries explained with fallback UI, componentDidCatch(), getDerivedStateFromError(), logging, placement strategy, and what they cannot catch.

How URLs, URIs, and URNs overlap, why the standards use different vocabulary, and what the distinction means for links and identifiers in a web application.

Back end, backend, and back‑end are spelling choices, not different architectures. How to use them clearly without hiding the system boundary.