Next.js project scope: what to define before you write a line of code
A practical guide to scoping a Next.js project — page inventory, CMS decision, integrations, performance budget, and timeline maths. For founders and teams.
Notes on Next.js, Sanity CMS, performance, and SEO — written from real production builds. 120 posts.
Start with a guide
A practical guide to scoping a Next.js project — page inventory, CMS decision, integrations, performance budget, and timeline maths. For founders and teams.
A practical Next.js Tailwind workflow: design tokens as CSS variables, reusable component conventions, and a build sequence for shipping pages fast.
A production next.js typescript setup: strict tsconfig, typed routes, Zod boundaries, safe env vars, and a CI type-check gate that catches real bugs.
Directus pricing broken down: self-hosted infra costs, Cloud tier limits, and the sponsorship threshold for larger companies. Real numbers, one table.
The React Next.js patterns I reuse on every project: server components by default, colocated data fetching, typed API boundaries, and error conventions.
Thinking about how to hire a developer for your startup? Here's how to set scope, pick the right budget tier, and avoid the mistakes that burn runway.
Hiring a freelance web developer? Here's what to expect on communication, staging, pricing models, handover, and warranty — before you sign anything.
Comparing create-next-app + manual Tailwind against popular starters. Which tailwind Next.js starter ages well in 2026 and which ones rot.
A practical guide to API-first CMS architecture — omnichannel delivery, developer control, editor experience trade-offs, preview complexity, and glue code cost.
Sanity CMS agency or freelancer? The real cost, speed, and accountability differences — with a clear decision framework for startups, founders, and agencies needing Sanity development.
What does a Sanity CMS developer actually cost in 2026? Freelance rates run $80–$160/hour or $8k–$25k per project. Agency retainers start higher. Breakdown of what drives the price and what you get at each tier.
Next.js route handlers and server actions work for many backend needs, but have real limits. Here's where they hold and where they break.
Yes, Sanity CMS has a genuinely free plan — not a trial. Here are the exact limits: 2 non-admin users, 2 datasets, 500K API requests/month, 10 GB bandwidth. Full breakdown of what's included and when you'll need to upgrade.
How to hire a Sanity CMS developer who actually knows the platform — not a React developer with Sanity bolted on. The skills checklist, portfolio signals, and interview questions that separate specialists from generalists.
A straight total-cost comparison of Webflow site plans vs a custom Next.js + CMS build. Real numbers, one table, honest about where each wins.
A web CMS should work for editors and developers without compromise. Here is the baseline I hold every platform against before recommending it.
Vetting guide for founders and PMs: portfolio signals, App Router interview questions, Core Web Vitals checks, and real rate benchmarks for 2026.
Choosing a Node.js CMS for a custom website? Honest trade-offs across Payload, Strapi, Directus, Keystone, and Sanity with a side-by-side comparison table.
A practical guide to the Next React stack — React, Next.js, hosting, CMS, and styling — what each layer does, why this combination won, and when to walk away.
Thinking about hiring a Shopify developer? This guide covers when you need one, what to ask, and how budget signals reveal build quality before you commit.
Pages Router API routes vs App Router route handlers compared — caching, streaming, edge runtime, and a clear migration path with real code examples.
Hobby, Pro, and Enterprise Vercel pricing explained with real usage line items, per-seat maths, and a realistic monthly total for a mid-traffic marketing site.
Marketing website performance affects conversions, ad ROI, and SEO rank. Here's what the numbers mean in business terms and what to demand from any build.
A founder's practical guide to hiring a web developer — budget ranges, freelance vs agency vs in-house trade-offs, vetting, and contract structure.
A practical setup checklist for a CMS for marketing teams — roles, content models, preview, publishing workflow, and analytics wiring. Done right the first time.
Practical advice for founders on scoping an MVP, picking boring tech, and staging from day one — before startup app development begins.
Static generation, pagination, image handling, and bundle discipline for a Next.js blog that doesn't slow down as content grows. Practical code included.
Pick the right SEO CMS by understanding rendering strategy, structured data support, sitemap control, and editorial workflow. A practical guide for 2026.
Storyblok's free tier: 1 user, 1 space. Paid plans start at $99/month per seat. Here's every plan limit, a real cost example for growing teams, and the upgrade triggers most people hit first.
Thinking about hiring a web designer? This guide covers portfolio signals, performance questions, and the designer vs developer trade-off. Read before you sign.
A plain-English guide to how modern CMS apps work — content models, editing UI, publishing workflows, and integrations — for non-developers choosing the right tool.
Tailwind CSS v4 rewired how teams configure, share, and ship styles. Here's what the CSS-first engine means in practice.
Comparing Mux, Cloudinary, and Bunny Stream for sanity video hosting — upload workflow, adaptive streaming, pricing, and LCP poster handling.
A steady-state cost breakdown of Sanity + Next.js vs WordPress: hosting, plugins, security, and editor time. Real annual totals compared.
Sanity hotspot not applying to your rendered image? Here are the four real causes and exact fixes for each one.
Sanity vs Directus compared across data ownership, schema design, querying, editor UX, and self-hosting for Next.js projects in 2026.
Contentful free tier: 25,000 records, 5 users, 2 locales. The jump to paid starts at ~$300/month — here's what triggers that cliff, what Enterprise actually costs, and which teams should consider alternatives.
Payload CMS is open-source and free. The real cost is hosting, database, and storage. Realistic monthly costs from $5/month to $200+ depending on your setup — full infrastructure breakdown for 2026.
Strapi Community Edition is free and self-hosted. Cloud plans start at $29/month. But the real cost is your server. Full breakdown of infra costs, plugin pricing, and when Strapi Cloud actually makes sense.
Sanity vs Hygraph in 2026: GROQ content lake vs GraphQL-native federation compared on DX, editor UX, pricing, and Next.js fit. Make the right call.
Switching from Contentful? Compare Sanity, Payload, Strapi, Storyblok, and Hygraph as Contentful alternatives for Next.js in 2026 — pricing, schema model, and fit.
A step-by-step guide to exporting WordPress content, mapping schemas, running an import script, converting HTML to Portable Text, and preserving SEO with 301 redirects.
Step-by-step guide to indexing Sanity content with native Embeddings, running a semantic query, and wiring a debounced search UI in Next.js App Router.
How to configure Sanity Agent Actions to trigger AI content workflows from the API — generate drafts, translate, and enrich fields at scale. Includes working code examples and real automation patterns.
Step-by-step setup of Sanity AI Assist (@sanity/assist) in a Next.js + Sanity project: install, config, field instructions, and real editor workflows. Updated for 2026.
Strapi vs Contentful 2026 — self-hosted open-source vs managed SaaS. Pricing, admin UX, API, Next.js fit, and lock-in compared honestly.
Learn how to vet a senior Sanity CMS developer before you hire — portfolio signals, honest questions, and the red flags that reveal real seniority.
A plain-English breakdown of what Sanity CMS development services include — discovery, content modelling, Studio build, migration, and handoff, phase by phase.
Step-by-step guide to Sanity Mux video playback in Next.js: signed URLs, hls.js adaptive streaming, poster images, and LCP optimisation.
Step-by-step: custom Sanity document actions to unpublish, archive, and restore content without deleting, plus Next.js front-end handling for archived docs.
Learn how to write Sanity custom validation rules: required fields, regex, async checks, cross-field logic, and clear editor error messages.
Learn how to configure Sanity Structure Builder's defaultOrdering, documentTypeList grouping, and icons so a 20+ schema Studio still feels deliberate.
A practical guide to Sanity scheduled publishing in Next.js: enabling the plugin, wiring SANITY_REVALIDATE_SECRET, and triggering ISR so content goes live on time.
Payload CMS vs Contentful compared on schema control, API, pricing curve, and Next.js fit for 2026. Pick the right tool before you commit.
Comparing the best free headless CMS options for Next.js in 2026 — Sanity, Payload, Strapi, Contentful, and Storyblok free tier limits and trade-offs.
Side-by-side pricing: Sanity from $0, Contentful from $0 (then $300/mo jump), Payload free to self-host, Strapi from $29/month. Full comparison of free tiers, growth plans, and enterprise costs for 2026.
Sanity vs Strapi 2026: GROQ content lake vs self-hosted SQL, editor UX, image pipelines, pricing, and lock-in trade-offs compared honestly.
Payload vs Strapi: compared on self-hosting costs, TypeScript support, plugin ecosystem, and real migration complexity. Here's which one wins for most teams — and why.
Step-by-step guide to wiring Sanity Presentation plugin for live preview in Next.js App Router, with overlay clicks, GROQ live queries, and draft mode.
Step-by-step guide to wiring Sanity CMS role-based access control with document-level permissions in a Next.js project. Covers custom roles, GROQ filters, and Studio UI.
Tailwind v4 migration in Next.js, step by step: the upgrade codemod, CSS-based @theme config, dropped utilities like bg-opacity-*, PostCSS changes, and production gotchas.
How useFormStatus, useActionState, and use() from React 19 changed the way I build forms and async UI in Next.js App Router. Concrete before/after code.
Wondering if Next.js and Sanity CMS gives marketing teams real editorial control? Here is what the editor experience looks like in practice.
Hiring a Next.js developer without a solid brief wastes time and money. Here is what a good agency brief contains and the mistakes to avoid first.
What does a Sanity CMS Next.js website cost to build in 2026? Real budget ranges by project type, plus hosting, retainer, and what drives cost up.
Next.js vs Astro for content-heavy sites — rendering models, Sanity CMS integration, bundle size, ISR, and when to pick each for a real project.
Step-by-step guide to AnimatePresence page transitions in Next.js App Router, cutting CLS to 0 and lazy-loading Framer Motion to save bundle size.
Step-by-step: webhook-driven Sanity-to-Algolia sync, InstantSearch React UI, and handling stale index edge cases in Next.js. Practical and production-tested.
Step-by-step guide to building a Sanity Studio custom input component using definePlugin, useFormValue, and PatchEvent with a real colour-picker example.
A practical guide to adding JSON-LD structured data to Next.js App Router pages using BlogPosting, BreadcrumbList, FAQPage, and Person schemas.
Step-by-step guide to connecting Sanity document internationalisation to next-intl in the App Router, with schema design, GROQ patterns, hreflang, and slug pitfalls.
How to set up true scheduled publishing in Sanity via the Releases API, plus custom document actions: an approval gate before publish and Slack notifications.
Deep dive into advanced GROQ queries in Sanity: inline joins, the coalesce() function, conditional projections, and array flattening with real payload sizes measured.
An honest look at Next.js partial prerendering PPR in production — what it solves, where it breaks, and which page patterns benefit most.
A step-by-step walkthrough of Next.js bundle size analysis and reduction: finding large imports, fixing vendor chunks, and trimming icon libraries.
Step-by-step: Sanity draft mode preview in Next.js App Router with Vercel Edge Config for zero-downtime secret rotation. No content leaks.
Using Sanity's auto=format with next/image correctly avoids double-encoding and wasted bytes. Here is the exact setup I use in production.
A Sanity CMS development services proposal should show milestones, staging URLs, and scope guardrails. Here is what good looks like.
Sanity's free plan: 2 users, 2 projects, 500K API requests/month. Growth costs ~$15/seat/month. Enterprise is custom. Independent breakdown of every tier, real limits, and hidden costs — verified against official Sanity pricing July 2026.
Payload CMS vs Sanity for Next.js in 2026: hosting, GROQ vs the local API, TypeScript DX, pricing, and lock-in — compared honestly by someone who's shipped both.
A practical walkthrough of Next.js bundle size analysis using @next/bundle-analyzer, with before/after numbers from a real project (487 kB to 301 kB).
Step-by-step: route handlers, cookie strategy, and Vercel Edge Config secret rotation for Sanity draft mode preview in Next.js. No leaks.
Step-by-step guide to Mux video hosting in Next.js and Sanity CMS: sanity-plugin-mux-input setup, direct uploads, signed playback URLs, and poster images for fast LCP.
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 in a Next.js project.
A breakdown of a real Sanity CMS development services proposal — milestones, payment terms, staging promises, and red flags to watch for.
A honest breakdown of WordPress to Sanity migration cost, including plugin savings, hosting, editorial gains, and when the switch simply isn't worth it.
Before you hire a Sanity CMS developer, ask these five questions. Know what a strong answer sounds like — and which answers should worry you.
Sanity vs WordPress headless CMS compared on editor UX, performance, dev experience, and real migration numbers. Honest about where WordPress still wins.
Which CMS wins for a Next.js project in 2026? Sanity, Strapi, and Payload compared on pricing, editor UX, schema modelling, and lock-in. Payload vs Strapi gets its own section. No affiliate bias.
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.
A plain-English breakdown of Sanity CMS website cost in 2026, from small marketing sites to complex multi-locale builds. Real ranges, real drivers.
Kill CLS on Sanity images for good. Pull metadata.dimensions into next/image sizes and aspect-ratio boxes — exact GROQ and component code.
A practical guide to wiring up Vercel Analytics and @vercel/speed-insights/next for real-user Core Web Vitals monitoring in Next.js, with a workflow for catching regressions fast.
Use @sanity/image-url with hotspot, crop, fit, width, and height to crop Sanity images to an exact size in next/image — focal point preserved, with code and the exact GROQ.
Learn how to build Sanity Portable Text custom components in Next.js — code blocks, callouts, embedded forms, and captioned images with full TypeScript types.
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.
Which headless CMS works best with Next.js App Router in 2026? Honest comparison of Sanity, Contentful, Payload, and Storyblok on DX, pricing, and real integration complexity — with a clear recommendation by team type.
A step-by-step guide to Sanity TypeGen: CLI config, generating TypeScript types from GROQ queries, CI integration, and handling schema evolution gotchas.
A practical Next.js App Router tutorial guide for 2026. Covers layouts, route groups, Server Components, data fetching, static export, and the metadata API.
A step-by-step Sanity CMS + Next.js tutorial for developers setting up schemas, GROQ queries, and Sanity Studio with the App Router for the first time.
Step-by-step guide to connecting Sanity webhooks to Next.js route handlers for on-demand ISR revalidation, with correct HMAC signature verification and error handling.
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.
A pattern for consolidating dozens of per-document Next.js revalidations into one tagged endpoint using SANITY_REVALIDATE_SECRET, cutting webhook noise and deploy times by 70%.
How I pre-calculate Sanity image hot-spot crops server-side to eliminate layout shift and guarantee stable LCP under 2.5s on editorial pages.
Sanity's slug field doesn't enforce uniqueness by default. Here's the custom GROQ validation hook that blocks duplicate slugs at publish, across multiple document types.
A production pattern for rolling schema changes in Sanity without throwing runtime errors or requiring a full site rebuild — coalesce in GROQ, migrate later.
A step-by-step approach to identifying orphaned Sanity schemas, measuring Studio bundle impact, and safely removing dead document types without breaking production.
Sanity Studio ships with every draft visible by default. I use structure builder filters, defaultOrdering, and custom panes to cut editor cognitive load by 70%.
A pattern for projecting only the fields your Next.js components actually render, using GROQ's select() and type filters to prune unused blocks from a union array.
A pattern for structuring Sanity references and GROQ projections that eliminates query waterfalls in server components, cutting fetch latency by 200–400 ms.
Cut LQIP overhead on Sanity + Next.js sites to nearly zero using Sanity's built-in metadata.palette instead of inline Base64 blur data. Exact GROQ and component code.
A singleton pattern for i18n navigation that keeps GROQ queries fast, using dynamic field access (field[$param]) instead of string interpolation.
Denormalising references and embedding common fields in Sanity schemas cuts server component render time by 40–60%. Here's the pattern I ship.
Next.js TTFB optimization in practice: Partial Prerendering for the shell, edge runtime for dynamic fragments, and tight GROQ projections — with before/after benchmarks (420ms → 140ms).
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 — and where lazy-loading trades away SEO visibility.
A production pattern for Sanity draft previews in Next.js that keeps published pages on the edge while editors see real-time changes.
INP is responsiveness. Learn how to find long tasks, profile React re-renders, reduce main-thread work, and ship fast interactions consistently.
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.
Core Web Vitals 2026 explained: LCP, INP, and CLS thresholds, how much they really affect Google rankings, field vs lab data, and the fixes that consistently move each metric.
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.