A shortlist in 72 hours, contributing inside two weeks, and a 30-day guarantee if the fit is wrong.
72-hour shortlist · 30-day replacement guarantee · Month-to-month
React has the largest talent pool of any frontend framework, which sounds like good news until you start interviewing.
The pool is enormous and shallow at the top. Thousands of developers can build a component library and wire up a form. Far fewer can tell you why your bundle is 4MB, why a list re-renders on every keystroke, or when useMemo is helping and when it’s just noise in the codebase.
That gap doesn’t show up in a CV or a portfolio site. It shows up four months in, when a feature that should take three days takes two weeks because the state management decisions made early are now load-bearing.
A weak React hire is expensive in a specific way: they ship visible work quickly. The problems surface later, in a codebase your team now has to maintain.
Every React developer on your shortlist has been checked against the things that actually predict performance.
Can they read a React Profiler flame graph and act on it? Do they understand reconciliation well enough to know why a component re-renders? Most candidates who describe themselves as senior cannot do this.
When Context is fine, when you need Zustand or Redux, and when server state belongs in React Query rather than client state at all. The wrong call here compounds for years.
Not whether they have used TypeScript, but whether they can type a generic component properly — and whether they reach for any when it gets difficult.
Server Components, Suspense, and the App Router are genuinely different mental models. We check whether they have shipped with them or only read about them.
React Testing Library, and whether they test behaviour or implementation details.
A live conversation in English, every time. This is where most remote placements fail, and a CV tells you nothing about it.
The damage from a weak React hire is rarely visible in month one. It shows up as a slope.
Say they put shared state in Context because it was quickest. Every consumer re-renders whenever any part of that object changes. Nobody notices early — the app is small. By the time forty components subscribe to it, typing in a search field drops frames on a current MacBook, and the fix is no longer a memo call. It’s a refactor touching every file that used the provider.
Data fetching goes the same way. A chain of useEffect calls, each triggering the next, with no deduplication and no cache. It works. Then someone asks for the same data on a second screen, and you have twice the requests and two copies of the truth that disagree during loading.
The cost isn’t the bad code. It’s the tax on everything built after it. A three-day ticket becomes two weeks, because the work now means understanding and routing around decisions made eight months ago by someone who has left. Teams describe this as the codebase getting slow. What actually happened is that early choices became load-bearing before anyone assessed them.
Replacing the developer later doesn’t unwind any of it. That’s why screening matters more than the guarantee does.
Rate comparisons are meaningless without agreeing what the levels mean.
Mid-level (3–5 years). Builds features independently against a defined architecture. Comfortable with hooks, forms, routing, and API integration. Needs direction on architectural decisions.
Senior (5–8 years). Makes architectural calls and defends them. Sets up state management, performance budgets, and component patterns the rest of the team follows. Reviews code meaningfully. Spots the problem in your existing codebase within a week.
Lead (8+ years). Owns frontend direction, mentors, interfaces with product and design, makes build-versus-buy calls. Worth it when you’re setting up a frontend team rather than adding to one.
Most teams asking for a senior need a senior. Some need a strong mid at a lower rate, and we’ll say so if that’s what we see.
Adding React capacity to an existing team. Most common. They join your standups, your repos, your review process. Onboarded within two weeks.
Migrating from Angular or Vue. Needs someone who’s actually done a migration, not just used both frameworks. Different skill.
Next.js and rendering strategy. SSR, SSG, ISR, and App Router decisions have real consequences for performance and cost. Specialist territory.
Performance rescue. An app that’s slow and nobody knows why. Usually a focused one-to-two month engagement rather than an ongoing seat.
React Native alongside web. Common request, worth being precise about — shared knowledge, genuinely different platform skills. See hire React Native developers.
Week one. They read before they write. Expect questions about why state lives where it does, which components are genuinely shared, and what your testing conventions are. A small pull request by day three or four — a contained bug fix — is a good signal. It proves they can run the app, navigate the repo, and clear your review process.
Weeks two to four. They own a feature end to end. They should start noticing things: a component re-rendering more than it needs to, a prop drilled through four levels, a test asserting implementation instead of behaviour. A senior developer raises these unprompted and proposes a scoped fix rather than a rewrite.
The warning sign is a developer who only ever asks for the next ticket. Usually not laziness. Usually they don’t understand the codebase well enough to hold an opinion and are hoping that goes unnoticed. Four weeks in, silence about your architecture is itself information.
If you aren’t seeing the second pattern by week three, tell us. That is comfortably inside the 30 days.
Hiring on portfolio polish. A beautiful personal site proves taste and spare time. It says nothing about working inside four years of accumulated decisions with a team that disagrees about half of them. Ask instead about the worst codebase they’ve worked in and what they actually did about it.
Treating Next.js as a React detail. The App Router, Server Components, and the server/client boundary are a different model, not an extra library. A strong React developer who hasn’t shipped with them will lose weeks working out where the use-client directive belongs and why their fetch runs twice. Screen for it separately or budget for the ramp.
Interviewing for algorithms instead of rendering. Frontend interviews still lean on data-structure puzzles with almost no bearing on the work. A better test takes fifteen minutes: hand them a component that re-renders too often and ask them to explain why. It separates candidates more reliably than any whiteboard round we’ve seen.
Interviewing for framework trivia instead of judgement. Asking someone to recite the rules of hooks tells you they revised. Asking why a component re-renders more than expected, or when memoisation is worth the complexity it adds, tells you whether they have debugged a slow interface under deadline. The second question is harder to prepare for and far more predictive.
Rates depend on seniority, stack breadth, and engagement length. Tell us the role and we will give you a firm number.
Tell us the role and we will send a shortlist within 72 hours.
Tell Us the RoleTell us the role. Three to five profiles within 72 hours.