Innov8ProTech
Next.jsTechnologies / Next.js

The React framework
for production.

Routing, rendering, data fetching, and deployment — solved. Below is how we structure Next.js projects and which rendering mode we reach for when.

App Router
Server Components
Edge Runtime

routing

The file system
is the router.

Folders become URL segments. Special files — page.tsx, layout.tsx, loading.tsx — define what each route does. No config file. No route table.

layoutShared chrome that wraps everything below it
pageWhat renders at that URL
loadingStreamed fallback while the route resolves
errorError boundary for that segment
routeAPI endpoint at that path
app/

The App Router — every folder is a route segment.

layout.tsxlayout

Root layout. Wraps every page. Providers, fonts, global chrome.

page.tsxpage

Home route. Server Component by default.

loading.tsxloading

Streaming fallback shown while the route loads.

error.tsxerror

Error boundary for the route and its children.

not-found.tsxnotfound

404 UI rendered when notFound() is called.

products/

Nested route group.

page.tsxpage

/products — the product list.

loading.tsxloading

Skeleton shown while products load.

[id]/

Dynamic route segment.

(marketing)/

Route group — doesn't affect the URL.

about/page.tsxpage

/about — no /marketing prefix.

pricing/page.tsxpage

/pricing

api/

Route handlers.

webhooks/route.tsroute

POST endpoint for Stripe webhooks.

rendering

Six rendering modes. Picked per route.

Next.js is unique in that every route chooses its own rendering strategy. The rest of the app doesn't have to agree.

ModeWhenExample
Static (SSG)Content that doesn't change oftenMarketing pages, blog posts, docs
Server (SSR)Per-request data, personalizationDashboards, search results
ISRStatic speed, periodic updatesProduct catalogues, news
StreamingLong content, progressive renderFeeds, nested layouts
ClientInteractivity, hooks, browser APIsForms, toggles, real-time UIs
EdgeGeo routing, auth, personalization at edgeA/B tests, redirects

the split

Server by default. Client by exception.

This is the single biggest change in modern Next.js. Every component is a Server Component unless it says otherwise. Getting this right is most of the job.

Server Component

default
  • Fetches data directly — no API layer needed
  • Ships zero JavaScript to the browser
  • Can access secrets, env vars, and databases
  • Streams to the client as it renders
  • Cannot use hooks, state, or event handlers

Client Component

'use client'
  • Interactivity — onClick, onChange, forms
  • React hooks — useState, useEffect, useRef
  • Browser APIs — window, localStorage, geolocation
  • Third-party libraries that expect a browser
  • Realtime — WebSockets, subscriptions, live data

faq

Next.js
questions.

When Next.js instead of plain React?
When SEO matters, when you need server rendering, when you want full-stack in one codebase, or when you want file-based routing out of the box. Plain React with Vite for internal dashboards where none of that matters.
App Router or Pages Router?
App Router for everything new. Server Components, nested layouts, streaming, and parallel routes are all App Router features. Pages Router only for legacy codebases awaiting migration.
How do you decide Server vs Client Components?
Server Components are the default — they fetch data directly, don't ship JavaScript, and stream. We switch to Client Components only where interactivity is needed. The boundary is marked with 'use client' and reviewed in code review.
Where do you deploy Next.js?
Vercel for most projects — it's optimised for Next.js and gives preview deployments out of the box. AWS via SST or OpenNext when the client has infrastructure requirements or data residency rules.
How do you handle data fetching?
Server Components fetch directly with fetch() and Next.js's cache primitives. Client components use React Query for anything that needs caching, background refresh, or optimistic updates.
What about SEO?
Server rendering, generateMetadata, sitemap generation, structured data — all first-party. We measure Core Web Vitals in production and iterate on real numbers.

Building with Next.js?

We can help — whether you need a team or just engineers.