Next.js SEO: adding JSON-LD structured data with schema.org schemas
Jun 10, 2026 · 7 min read
A practical guide to adding JSON-LD structured data to Next.js App Router pages using BlogPosting, BreadcrumbList, FAQPage, and Person schemas.
Notes on Next.js, Sanity CMS, performance, and SEO — written from real production builds.
Jun 10, 2026 · 7 min read
A practical guide to adding JSON-LD structured data to Next.js App Router pages using BlogPosting, BreadcrumbList, FAQPage, and Person schemas.
Jun 09, 2026 · 6 min read
Step-by-step guide to connecting Sanity document internationalisation to next-intl in the App Router, with schema design, GROQ patterns, and slug pitfalls.
Jun 08, 2026 · 7 min read
Step-by-step guide to building custom Sanity document actions: approval gates, Slack notifications on publish, and scheduled releases via the Releases API.
Jun 07, 2026 · 6 min read
Deep dive into advanced GROQ queries in Sanity: inline joins, coalesce, conditional projections, and array flattening with real payload sizes measured.
Jun 06, 2026 · 5 min read
An honest look at Next.js partial prerendering PPR in production — what it solves, where it breaks, and which page patterns benefit most.
Jun 05, 2026 · 5 min read
A step-by-step walkthrough of Next.js bundle size analysis and reduction: finding large imports, fixing vendor chunks, and trimming icon libraries.
Jun 04, 2026 · 6 min read
Step-by-step: Sanity draft mode preview in Next.js App Router with Vercel Edge Config for zero-downtime secret rotation. No content leaks.
Jun 02, 2026 · 6 min read
Using Sanity's auto=format with next/image correctly avoids double-encoding and wasted bytes. Here is the exact setup I use in production.
Jun 01, 2026 · 6 min read
A Sanity CMS development services proposal should show milestones, staging URLs, and scope guardrails. Here is what good looks like.
May 31, 2026 · 7 min read
Sanity Free plan = 2 datasets, 2 editors, 500k API requests/mo; Growth ~$15/seat. Every limit, the upgrade triggers, and which tier you need in 2026.
May 30, 2026 · 8 min read
Payload CMS vs Sanity for Next.js projects in 2026. Hosting, GROQ vs local API, TypeScript DX, pricing, and lock-in compared honestly.
May 28, 2026 · 5 min read
A practical walkthrough of Next.js bundle size analysis using @next/bundle-analyzer, with before/after numbers from a real project.
May 27, 2026 · 6 min read
Step-by-step: route handlers, cookie strategy, and Vercel Edge Config secret rotation for Sanity draft mode preview in Next.js. No leaks.
May 26, 2026 · 6 min read
Step-by-step guide to Mux video in Next.js and Sanity CMS: plugin setup, direct uploads, signed playback URLs, and poster images for fast LCP.
May 25, 2026 · 6 min read
Learn when to use Sanity's auto=format image URL API vs next/image formats, how cache keys work, and how to keep payloads small.
May 24, 2026 · 5 min read
A breakdown of a real Sanity CMS development services proposal — milestones, payment terms, staging promises, and red flags to watch for.
May 23, 2026 · 6 min read
A honest breakdown of WordPress to Sanity migration cost, including plugin savings, hosting, editorial gains, and when the switch simply isn't worth it.
May 22, 2026 · 6 min read
Before you hire a Sanity CMS developer, ask these five questions. Know what a strong answer sounds like — and which answers should worry you.
May 20, 2026 · 7 min read
Sanity vs WordPress headless CMS compared on editor UX, performance, dev experience, and real migration numbers. Honest about where WordPress still wins.
May 20, 2026 · 7 min read
Comparing Sanity, Strapi, and Payload CMS on pricing, DX, lock-in, schema modelling, and image pipelines. No vendor bias, just real trade-offs.
May 20, 2026 · 6 min read
Deciding whether to hire a Sanity developer or an agency? Five honest trade-offs covering cost, speed, accountability, and risk to help you choose right.
May 19, 2026 · 6 min read
A plain-English breakdown of Sanity CMS website cost in 2026, from small marketing sites to complex multi-locale builds. Real ranges, real drivers.
May 18, 2026 · 6 min read
Kill CLS on Sanity images for good. Pull metadata.dimensions into next/image sizes and aspect-ratio boxes — exact GROQ and component code.
May 17, 2026 · 7 min read
A practical guide to wiring up Vercel Analytics and Speed Insights for real-user Core Web Vitals monitoring in Next.js, with a workflow for catching regressions fast.
May 16, 2026 · 6 min read
Stop letting next/image crop faces out of your hero. Wire Sanity hotspot + crop coordinates into next/image objectPosition — with code and the exact GROQ.
May 16, 2026 · 6 min read
Learn how to build Sanity Portable Text custom components in Next.js — code blocks, callouts, embedded forms, and captioned images with full TypeScript types.
May 15, 2026 · 5 min read
Slow pages, locked content, and plugin chaos are warning signs your WordPress site has hit its ceiling. Here's how to know when a headless rebuild makes sense.
May 14, 2026 · 8 min read
Comparing the best headless CMS options for Next.js in 2026 across schema DX, App Router support, pricing, and editor experience.
May 13, 2026 · 6 min read
A step-by-step guide to Sanity TypeGen: CLI config, generating TypeScript types from GROQ queries, CI integration, and handling schema evolution gotchas.
May 12, 2026 · 7 min read
A practical Next.js App Router tutorial guide for 2026. Covers layouts, route groups, Server Components, data fetching, and the metadata API.
May 11, 2026 · 7 min read
A step-by-step sanity cms nextjs tutorial for developers setting up schemas, GROQ queries, and Sanity Studio with the App Router for the first time.
May 11, 2026 · 6 min read
Step-by-step guide to connecting Sanity webhooks to Next.js route handlers for on-demand ISR revalidation, with HMAC signing and error handling.
May 10, 2026 · 6 min read
Sanity CMS or Contentful for your next Next.js build? Honest comparison — pricing, GROQ vs GraphQL, editor DX, lock-in, and which one wins where.
May 09, 2026 · 5 min read
A pattern for consolidating dozens of per-document Next.js revalidations into one tagged endpoint, cutting webhook noise and deploy times by 70%.
May 08, 2026 · 5 min read
How I pre-calculate Sanity image hot-spot crops at build time to eliminate layout shift and guarantee stable LCP under 2.5s on editorial pages.
May 07, 2026 · 4 min read
A pattern for enforcing unique slugs across Sanity document types using a custom validation function and GROQ query, preventing duplicate URL conflicts at schema level.
May 05, 2026 · 5 min read
A production pattern for rolling schema changes in Sanity without throwing runtime errors or requiring a full site rebuild.
May 04, 2026 · 5 min read
A step-by-step approach to identifying orphaned schemas, measuring Studio bundle impact, and safely removing dead document types without breaking production.
May 03, 2026 · 4 min read
Sanity Studio ships with every draft visible by default. I use structure builder filters and custom panes to cut editor cognitive load by 70%.
May 02, 2026 · 5 min read
A pattern for projecting only the fields your Next.js components actually render, using GROQ coalesce and select operators to prune unused blocks.
May 01, 2026 · 5 min read
A pattern for structuring Sanity references and GROQ projections that eliminates query waterfalls in server components, cutting fetch latency by 200–400 ms.
Apr 29, 2026 · 5 min read
Cut LQIP overhead on Sanity + Next.js sites from 48 kB to under 5 kB. The production pattern, with the exact GROQ and Image component code.
Apr 28, 2026 · 5 min read
A singleton pattern for i18n navigation that keeps GROQ queries fast and avoids embedding nav arrays in every document fetch.
Apr 27, 2026 · 5 min read
Denormalising references and embedding common fields in Sanity schemas cuts server component render time by 40–60%. Here's the pattern I ship.
Apr 27, 2026 · 5 min read
Combining Next.js Partial Prerendering, edge runtime, and selective Sanity queries to hit sub-200ms TTFB on content-heavy pages without stale data.
Apr 27, 2026 · 5 min read
Portable Text blocks can bloat client bundles. Here's how I defer serializers with dynamic imports and RSC boundaries to keep marketing pages under 80 kB.
Apr 27, 2026 · 4 min read
A production pattern for Sanity draft previews in Next.js that keeps published pages on the edge while editors see real-time changes.
Apr 25, 2026 · 4 min read
INP is responsiveness. Learn how to find long tasks, profile React re-renders, reduce main-thread work, and ship fast interactions consistently.
Apr 24, 2026 · 4 min read
LCP is usually one big image. Here’s how to identify the true LCP element, reduce TTFB, ship the right image bytes, and consistently hit <2.5s on real devices.
Apr 22, 2026 · 5 min read
Core Web Vitals affect rankings, conversions, and perceived quality. Here’s what each metric means, target thresholds, how to measure, and the fixes that move the needle.
Apr 20, 2026 · 4 min read
A practical breakdown of when Next.js + Sanity is the right stack, what it buys you for SEO and velocity, and the trade-offs to watch.