Service / 03
React.
Next.js.
Shipped fast.
Senior React freelance support. Dashboards, e-commerce, data-heavy apps. App Router, Server Components, TypeScript, the complicated stuff.

Service / 03 / Capabilities
What's covered.
Dashboards and admin panels
Data-heavy interfaces. Complex state, real-time updates, high-performance data tables (50k+ rows), charts. Apps that stay fast even with a lot going on.
E-commerce
Next.js storefronts with Shopify, Stripe, or custom backends. Server Components help with page speed and SEO.
Full-stack apps
API routes, database connections, auth. Everything in one codebase. App Router, Server Components, Server Actions.

10+ years senior delivery
Why me
Senior delivery you don't have to project-manage.
I have been using Next.js since before App Router and Server Components existed. Most engagements involve inheriting a codebase, so I prioritise leaving things in a state your team can maintain, not just shipping the feature.
- React 19 + Next.js 16 + TypeScript as the default stack
- Server Components and Server Actions where they earn their keep
- Zustand or React Query over heavy Redux setups
- Storybook + Playwright for confidence in shipping
Engagement / Snapshot
A typical react & next.js development engagement.
Lead time
<7
Days to start, contract permitting
Length
4-12
Weeks for fixed-scope work
Reply
<24
Hours, every working day
Day rate
POA
Quoted per engagement
FAQ / React & Next.js Development
Frequently asked
Q · 01
App Router or Pages Router?
App Router for new builds. I have shipped both, so happy to maintain Pages Router projects or plan a staged migration when it makes sense.
Q · 02
Server Components or client?
Server-first by default. Move to client components only when interaction or browser APIs require it. Less JavaScript shipped, faster pages.
Q · 03
How do you handle state?
Zustand for app state, React Query for server state, Redux Toolkit when the project already uses it. I avoid pulling in Redux for new builds unless the team has the expertise. I am comfortable in serious Redux codebases, though. I recently spent months inside a large inherited one with classic actions, reducers, selectors, API middleware, and normalizr-shaped state, so if you have an established Redux setup I work in its patterns rather than ripping them out.
Q · 04
Tests?
Vitest with React Testing Library for unit and component tests. It is a much faster drop-in replacement for Jest, so I reach for it by default and only stay on Jest when a project already runs it. Playwright for end-to-end, Storybook for visual review and accessibility.
How I work
Remote-first. Async by default.
Inspired by Remote and the way Basecamp ran a distributed team without burning anyone out. Meetings are expensive, writing is cheap, and momentum belongs to whoever can make a decision without a calendar invite.
01 / Specs
Specs before code
A short written spec covering problem, scope, and acceptance before anything gets built. Cuts rework, makes review easier, and means we never argue about what was agreed.
02 / Workstreams
Workstreams over standups
Active work lives in tickets and PRs with running notes. Async updates instead of daily standups, so deep work is the default and meetings only happen when they earn it.
03 / Loom > Zoom
Loom over meetings
Most reviews and walkthroughs go out as a 5-minute Loom you can watch at 2× when convenient. We jump on Meet / Zoom / Teams when the topic actually needs a conversation.
Channels / Tools
Slack
Async, threaded, no expectation of instant reply
Loom
PR walkthroughs, demos, design reviews
Google Meet / Zoom / Teams
Booked when conversation > writing
Linear / Jira / GitHub
Source of truth for the work
Notion / Docs
Specs, decision records, retros

The pitch
I write the code, talk to your team, and ship what we agreed. No agencies. No PMs. No surprises.
James Donnelly
Freelance developer · Manchester