Przemysław Zalewski

Next.js, with and without Vercel

A Next.js developer who will also tell you when Next.js is the problem

App Router, Server Components, streaming, caching rules nobody remembers. I ship Next.js when it earns its place and rescue apps where it did not. Below, a demo that measures the difference between a request waterfall and one streamed response.

Available from November 2026 · Wrocław, Poland (CET), remote

Przemysław Zalewski
  • “someone you can always count on”public LinkedIn recommendation
  • “a true bias for action”client CTO, on LinkedIn
  • 15+ yearsshipping software
  • Free call, no pitch deck30 minutes, then you decide
9years of TypeScript, React and Node.js
2017React in production since
~30%of merged PRs in 2026 opened by an AI agent, ~85% reviewed by me
15+years shipping software

Why me

Rescue, with numbers

A hundred requests on first load, force-dynamic everywhere, a regression on every minor bump. I measure first, then fix the three things that matter, then hand you a checklist for the rest.

Streaming done right

One HTML response, slots filled out of order as results arrive, no hydration when none is needed. I built that for agent output without a client framework. Next.js can do it too, if nobody fights the defaults.

Outside Vercel

Self-hosted Next.js on a Node.js server or Docker, or the static parts on Cloudflare. The honest answer sometimes is “stay and go all-in on Vercel”. I will say which.

Same-day on advisories

When React2Shell landed I patched our product the day the advisory went out and swept the code for the same bug class. Next.js apps get the same treatment.

Proof

Work I can show

Problem, what I did, result. Client names only where I am allowed to use them.

Streaming agent output in one HTML request, no client framework

The problem
Agent output arrives out of order and takes a while. A page that waits for everything feels broken.
What I did
One HTML response streamed from the server, slots filled out of order as results arrive, no hydration, no client framework.
Result
First paint in milliseconds, the rest fills in live. The same idea runs the stream demo on the Next.js page.

streaming HTML no hydration

See also: JavaScript

Help center moved from WordPress into the repo as docs-as-code

The problem
An unmaintained WordPress help site: red in audits, no sitemap, expiring certificates, plugins nobody understood.
What I did
Markdown in the repo, versioned with the product, all languages generated automatically, interlinking, 301 redirects for every old address, help added to the Definition of Done.
Result
One machine less to break during holidays, docs that match the product, better SEO and GEO, context agents can read.

docs-as-code 301s i18n

See also: Cloudflare · Maintenance & CI/CD

Same-day response to React2Shell and other advisories

The problem
Critical advisories in React, Node.js, WordPress and OpenSSH land without warning and proof-of-concept scanners follow within days.
What I did
A fixed pattern: official source, patch the same day, WAF mitigation, a regex sweep of our own code for the same vulnerability class, hardening flags for Node.js, reading material for the team.
Result
React2Shell patched the day the advisory went out, days before public scanners went live.

same-day patch WAF code sweep

See also: TypeScript & Node.js · Maintenance & CI/CD

One foot in the door

Not ready for a project? Start smaller.

Two ways to see how I work before you commit to a sprint. Fixed scope, a number in writing after a short call.

Next.js codebase audit, one week

I read the repo, CI, tests, security and the parts the team avoids. You get a written report with findings ranked by risk, a plan with milestones and a go or no-go you can defend. I have run this for a large software house before its clients saw the code.

Code review of one pull request or one module

Send me the diff that worries you. Within a few days you get line-level comments, the three things I would change first and whether I would merge it.

Ask about an audit Free 30-minute call first. If an audit is the wrong tool, I say so on the call.

Live demo

Waterfall versus stream

Left: twelve sequential requests, the shape of a page that fetches in every component. Middle: the same twelve in parallel. Right: one streamed HTML response from a Worker, with five slots arriving out of order. The timeline shows time to first byte, each chunk and the total.

Demo loading…

Then answer the five questions under the timeline. They are the ones I ask on a rescue call.

How it works

Three steps from this page to a running project.

  1. 1

    A 30-minute call

    You describe the product and the problem. I ask the questions I would ask on day one. If I am not the right person, I say so and point you to someone who is.

  2. 2

    Scope in writing

    A short written plan follows: what we build first, what we measure, how we work together and what it costs. No slide deck.

  3. 3

    Something to touch in week one

    The first slice ships in the first week: deployed, measured, reviewable. From there the work is paced by what the numbers say.

Fit check

Is this a fit?

A good fit when

  • You need a senior who owns delivery, not a pair of hands
  • The product has to ship and be measured, with or without a product manager
  • A solo engagement or a team of up to four
  • TypeScript, React, Node.js, Cloudflare, Postgres, PostHog

Probably not when

  • A program that needs a ten-person vendor team
  • A stack built around Java, Python or a cloud I do not sell
  • Body leasing by the hour with no say in how the work is done
  • A start before November 2026

Working style

How I work

Review as a craft

Hundreds of pull requests reviewed. I review for the product and its reasons. The code comes second.

Zero bug policy

A bug is fixed or consciously closed, never parked. Alerts and error tracking in every project, so I learn about problems before the client does.

Measured, not assumed

PostHog in every project from day one. A tracking plan per feature and dashboards leadership actually reads.

FAQ

Questions people ask before they book

Should we leave Next.js?
Sometimes. If the product is a content site, probably not. If it is a long-lived app with a stable API and you deploy outside Vercel, the framework may cost more than it gives. I run a short audit and give you the answer with numbers, including “stay”. If the answer is “plain React”, that work is on the React page.
What goes wrong with the App Router?
Fetch in every component with no cache plan, server actions used as an API, everything dynamic because one thing was, and upgrades that change caching semantics under your feet. All fixable, all measurable.
Can you deploy Next.js outside Vercel?
Yes: Node.js server, Docker on a VPS, or static export with the dynamic bits on Cloudflare Workers. I will tell you which features you lose and whether you used them.
What does a rescue engagement look like?
Week one: measure, read, write the findings. Weeks two to four: the three fixes with the biggest effect, each behind a test. Then a checklist your team can run without me. It is the sprint-sized rung on the offer ladder.
Do you build new Next.js apps too?
Yes, when it fits: content-heavy sites, marketing plus app in one repo, teams that already know it. With a cache plan written down on day one.
How soon can you start?
November 2026. Book the call and we start with the measurement week.
Przemysław Zalewski

Let’s find out in 30 minutes

A free 30-minute call. You bring the problem, I bring questions. No prices on this page because scope comes first.

If I am the wrong person I will say so on the call and point you to someone better.

After you book: a calendar invite, then the call. Nothing else to fill in.

Available from November 2026 · B2B contract or employment · Wrocław, Poland (CET), remote