
Pages Router to App Router Migration Risk Checklist
A Pages Router to App Router migration checklist for Next.js teams, covering routing, data fetching, caching, metadata, server components, and rollout.
Articles
React is a declarative and flexible JavaScript library used for building user interfaces and applications. It allows developers to compose application UIs from reusable components, while providing an accessible route into more complex front‑end development.
Below you will find a subset of articles from my blog specifically about React and related React SPA to Next.js migration. This is an area I have worked with for many years, and it has been a regular subject in my writing. There are forty‑six articles collected together for you below.

A Pages Router to App Router migration checklist for Next.js teams, covering routing, data fetching, caching, metadata, server components, and rollout.

React developer vs. Next.js developer explained through production concerns: rendering, routing, caching, SEO, deployment, CMS data, and debugging.

Memoization helps JavaScript functions run faster by caching previous results. Here's a clear guide on how and when to use memoization effectively.

React performance work is often about avoiding repeated effort. This guide looks at memoisation, browser caching, and smarter data‑fetching choices.

Why JavaScript pages get crawled but not indexed, covering rendered content, metadata, canonicals, links, noindex rules, quality, and crawl signals.

A React SPA to Next.js SEO migration checklist for preserving indexing, redirects, metadata, rendered HTML, internal links, crawl paths, and launch confidence.

React's virtual DOM optimises performance by reducing updates to the real DOM. Here, I explain how it works, how it compares, and why it improves efficiency.

useMemo and useCallbackOptimise React performance with useMemo and useCallback only where profiling shows expensive calculations, unstable functions, or avoidable re‑renders.

Memory leaks in React can cause sluggish performance and excessive memory usage. Here, I explore common causes, how to prevent them, and debugging techniques.

Higher‑Order Components (HOCs) in React wrap components to enhance functionality. Here, I explore how HOCs work, common use cases, and when to use them.

React's reconciliation algorithm updates the UI by comparing the virtual DOM with the previous state. I explore how it works and why it improves performance.

A retrospective on React component APIs before hooks settled, covering render props, higher‑order components, context, classes, and migration judgement.

styled‑componentsUse transient props in styled‑components to keep styling‑only props out of the DOM, clean React output, and support safer component migration work.

Add seeded randomisation to an SSR Gatsby project, keeping content order deterministic across builds while still rotating destination‑style content.


useEffect HookUnderstand the empty dependency array in React useEffect, including run‑once behaviour, cleanup, stale data risks, and how different dependencies behave.

A tour of commonly misunderstood JavaScript features, from sort(), slice(), splice(), split(), Math.random(), parseInt(), isNaN(), typeof, and more.

A discussion about the JavaScript modulo operator, its functionality, origins, and diverse applications in web dev, including arithmetic and complex algorithms.