Almost every TechNboost build ships on Next.js. It is the framework we reach for first — for marketing sites, for custom web applications, for e-commerce storefronts, for content platforms. But the honest truth is that not every project needs it, and recommending it where it doesn’t fit is just consultant theater. This is when we recommend it and when we don’t.
What Next.js is genuinely good at
Three things Next.js does better than any other framework we work with:
- Hybrid rendering. Static pages where it makes sense (marketing, content), server-rendered where it matters (product pages, dashboards), client-rendered where interactivity demands it. One framework, one mental model.
- Image, font, script optimization out of the box. Lighthouse 90+ on mobile is a default, not a project. That alone is worth the migration cost from most legacy stacks.
- The deployment story. Vercel makes preview deployments per pull request trivial. Clients see every change in a real URL before code merges to main. The feedback loop tightens dramatically.
Where it shines for our clients
- Marketing and content sites where SEO matters more than interactivity
- Multi-tenant SaaS dashboards that need both server data and rich client UX
- Custom e-commerce storefronts with editorial product pages and a real checkout flow
- Editorial platforms where category routing, image-heavy cards, and structured data matter
- Any app where you want one codebase covering marketing + product
When we recommend something else
Three scenarios where Next.js is overkill — and we say so:
1. A small marketing site that never changes
If the client wants a 4-page site and doesn’t need a CMS, plain HTML + Tailwind on Cloudflare Pages is faster to build, cheaper to host, and easier to maintain. Recommending Next.js here is just billing more hours.
2. A simple e-commerce store
If the catalogue is fewer than 50 SKUs, doesn’t need custom product pages, and the brand is fine with template-looking checkout, Shopify with a clean theme is the right answer. We build custom Next.js stores when the brand or the catalogue or the checkout demands it — not because we like the framework.
3. A content publication where the team won’t maintain a Next.js codebase
If the eventual maintainer is a marketing team without engineering support, WordPress (yes, WordPress) on managed hosting can be the right answer. Friction matters more than purity.
The boring decisions that matter more than the framework
Once you’ve picked Next.js, the choices that actually decide whether the site is good are not React-specific. They’re things like:
- Hosting target — Vercel by default, but Cloudflare Workers for ultra-low-cost static, AWS for clients who need a specific compliance regime
- CMS — Supabase for relational content, Sanity for editorial, a flat MDX folder for very small sites
- Image strategy — next/image + Cloudinary, with AVIF + WebP and explicit responsive sizes
- Auth — Supabase auth for most, Clerk for B2B SaaS, NextAuth for self-hosted
- Analytics — Plausible by default, GA4 when the marketing team needs it, PostHog when product analytics matter
// A typical product page — server-rendered for SEO, with edge caching.
import { ImageResponse } from "next/og";
import { getProduct } from "@/lib/products";
import { notFound } from "next/navigation";
export const revalidate = 600; // refresh every 10 min
export async function generateStaticParams() {
const products = await getProducts();
return products.map((p) => ({ slug: p.slug }));
}
export default async function ProductPage({
params,
}: {
params: Promise<{ slug: string }>;
}) {
const { slug } = await params;
const product = await getProduct(slug);
if (!product) notFound();
return <ProductView product={product} />;
}Pick the framework that fits the work, not the work that fits the framework. Most of the time that’s Next.js — but recommending it to everyone makes us no better than a consultancy that recommends WordPress to everyone.
If you’re at the start of a build and wondering whether Next.js is right for you, the honest answer almost always lives in a 30-minute discovery call, not a blog post.

