React / Next.js / Angular / TypeScript
Hire Senior React
Developers in Morocco
Interfaces for products where an AI agent is doing the work. Streaming, interruptible, and still legible when the answer rewrites itself halfway through.
We are not a frontend agency. We build the interface on top of a backend we also built, so there is nobody to blame across the seam. Read the availability section before you read anything else.
You will get a real answer on capacity, not a yes
01 / Read this first
What we can actually field
Every other vendor puts this at the bottom, vaguely. It is the question you are actually holding, so it goes first.
We are a small engineering company, not a bench
There is no row of idle React engineers waiting for a contract. If we do not have the right person the day you ask, we recruit against your requirements and you interview every candidate. That is slower than a vendor who assigns whoever is free, and it is why the person who starts is the person who stays.
Frontend is not our deepest discipline, and we will say so
Our centre of gravity is backend, data and AI systems. We build strong product frontends on top of them. If you want a specialist frontend studio to own a design system across twelve product teams, that is a different firm and we will tell you on the first call.
Where we are genuinely strong
Interfaces attached to something hard underneath. Streaming agent output, long-running jobs, complex state, real-time data, admin surfaces that operators live in eight hours a day. The part most frontend shops subcontract is the part we already own.
What you get instead of scale
One team across the whole seam. No API contract negotiated between two vendors, no week lost to whether the bug is frontend or backend, no integration phase because there was never a disintegration.
The only honest answer to “how many, by when”
It depends on the month, so we will not print a number that might be wrong by the time you read it. Ask on the call and you get the real figure for that week, including when the answer is that we cannot help you in your timeframe. We would rather lose the deal there than at month two.
02 / The shift
Every UI assumption AI just broke
The patterns the industry spent fifteen years refining assume discrete actions, synchronous responses and static state. An agent is none of those things. This is why so many AI features feel bolted on: the model is fine and the interface is still built for a form submit.
Gartner expects around 30% of new applications to use AI-driven adaptive interfaces by 2026, up from under 5% two years earlier. The interface layer is where that gets decided.
Discrete actions
A click maps to one request and one response.
An agent runs for ninety seconds, calls four tools, changes its mind once, and the user can interrupt at any point. There is no single response to wait for.
Synchronous responses
Show a spinner, get JSON, render.
Tokens arrive continuously. The interface renders a partial answer that may be revised, and has to stay readable while it changes under the reader.
Static component trees
The developer decided every component at build time.
The agent decides at runtime which component should appear. Your job stops being to design screens and becomes to design the set of things it is allowed to render.
Errors at the end
The request fails, you show a toast.
Failure lands mid-stream, after the user has already read three paragraphs. You need to fail without discarding what was already useful.
One source of truth
Server state, cached client side.
Agent state, tool state, streamed message state and user edits all move at once, and the user expects to edit something the agent is still writing.
Three ways to let an agent drive the interface
Generative UI is a spectrum, not a switch. The choice is a control decision, and it is one you should make deliberately rather than inherit from a demo.
Most control
Controlled
You build the components. The agent chooses which to render and with what data.
The right default for almost everyone. Your design system stays intact, the surface is auditable, and nothing unreviewed reaches a user.
Middle ground
Declarative
The agent emits a schema. Your app maps that schema onto components it already owns.
What Google’s A2UI does, streaming JSONL against an allow-listed component set. Good when the shape of the answer genuinely varies.
Most flexibility
Open ended
The agent writes raw markup and the app renders it in a sandbox.
Genuinely useful for internal tools and prototypes. On a customer-facing surface it is a security and brand decision before it is an engineering one.
We default to controlled, because an allow-listed component set is the difference between an agent that surprises a user and an agent that embarrasses you in front of one.
03 / The hard part
Streaming is a state machine, not a loading spinner
Most teams discover this after shipping. A stream is not one request with a slow response. It is a sequence of events that can start, revise, branch into a tool call, fail halfway and still need to leave the user with something useful.
// AG-UI is an open, event-based protocol for streaming agent
// activity to a frontend over SSE. Adopted by Google,
// LangChain, AWS, Microsoft, Mastra and PydanticAI.
RunStarted // the agent is working; show it
TextMessageStart
TextMessageContent // ...repeats, token by token
TextMessageEnd
ToolCallStart // "searching your documents"
ToolCallArgs // args stream too; render intent early
ToolCallEnd
RunFinished | RunError
// Every one of those is a UI state. A component that only
// knows loading and done will render nonsense for six of them.Interruption is a first-class feature
A ninety second run the user cannot stop is a hostage situation. Stop has to actually cancel work server side, not just hide the output, or you are billing for tokens nobody will read.
Show the tool call, not just the answer
Users forgive slow. They do not forgive opaque. "Searching 1,240 documents" turns dead time into evidence of work, and it is the single cheapest trust win in an agent product.
Failure mid-stream must keep what worked
Three good paragraphs then an error should leave three good paragraphs and a retry, not an empty state. Discarding partial output is the most common streaming bug we are called in for.
Do not autoscroll a reader
Pinning to the bottom while someone is reading paragraph two is hostile. Follow the stream until the user scrolls, then stop and offer to jump back down.
Reserve the space before it fills
Content arriving token by token that pushes the page around is a layout shift with extra steps. Size the container first, then fill it.
Let them edit what the agent is writing
The moment output is editable mid-stream you have a conflict model to design. Most products pretend this does not exist and users find it in week one.
Make the uncertainty visible
A confidence signal, a citation, a "this came from your document" marker. An agent that sounds equally certain when it is guessing trains users to distrust the whole product.
04 / React or Angular
Both moved in 2026, and the honest answer is it depends
We work in both. Anyone who tells you one is simply better is telling you which one they know. Here is what actually changed and what it means for a decision you are making now.
Compiler, Server Components
React 19
The React Compiler applies memoisation automatically, so most of the useMemo, useCallback and React.memo that cluttered React codebases is now the compiler’s job. Server Components closed most of the server-rendering gap that used to favour Angular.
Pick it for: product teams, fast iteration, the largest hiring pool, and anything where Next.js earns its place.
Signals stable, zoneless
Angular 20
Signals and incremental hydration are production stable, and zoneless change detection means Angular no longer needs zone.js at all. Reported gains against Angular 19 are roughly 30 to 40% faster initial render and about half the unnecessary re-renders.
Pick it for: large teams that want consistency enforced by the framework rather than by code review, and enterprises already standardised on it.
What we would actually ask you
Not which framework you prefer. How many people will touch this in three years, who reviews their code, and whether you would rather the framework stop them doing something odd or stay out of the way. That answer picks the framework. Reactivity is where both are competing now, and on raw performance the gap is no longer the deciding factor.
05 / Standards
The bar, stated as numbers you can hold us to
“Good UX” is unfalsifiable. These are not.
| Measure | Target | Why this one |
|---|---|---|
| Largest Contentful Paint | ≤ 2.5s | Google’s good threshold, and the one your ranking is graded against. |
| Interaction to Next Paint | ≤ 200ms | Replaced First Input Delay as a Core Web Vital. It measures every interaction, not just the first, which is why sites that passed FID now fail. |
| Cumulative Layout Shift | ≤ 0.1 | The metric streaming interfaces fail most often, because content arrives after layout. |
| Keyboard reachable | 100% | Every interactive element. Not a preference, a legal exposure in several of your markets. |
| Contrast | WCAG AA | The cheapest accessibility win and the one design reviews skip. |
| Works without JavaScript | Core paths | Not everything. The paths that matter, because a failed bundle should not be a blank page. |
Measured on real devices, not a laptop
Lab scores on a fast machine over fibre are a comfortable lie. Field data from actual users is the number that matters, and it is usually worse.
Design handoff is a conversation, not a file
We will read your Figma and then ask which states are missing, because empty, loading, partial, error and too-much-data are almost never in it and they are most of the work.
TypeScript, strict
Not any with extra steps. If the types do not describe the data, they are decoration that costs build time.
Accessibility as we go
Retrofitting it after a design is signed off costs several times more than building it in, and everyone discovers this at the same late moment.
06 / Rates
What it costs
$4,800–$7,200
per month / one senior frontend engineer / full time
Same figure as every other role we staff, because the seniority bar is the same. Moves on experience, how much design ownership you need and contract length. Most frontend engagements we take on are part of a wider build, so the sensible starting question is usually whether you want a dedicated team rather than a single frontend seat.
You have a backend we did not build
Fine, and common. We will want to read the API before quoting, because an interface is only as good as what it can ask for.
You need a design system across many teams
Specialist frontend studio territory. Not us, and we will say so on the first call.
You want AI features bolted onto an existing app
Our favourite shape of work, and the place where the interface usually needs more rethinking than clients expect.
07 / Questions
Straight answers
How many senior React engineers can you field, and by when?
It depends on the month, so we will not print a number that could be wrong by the time you read it. Ask on the call and you get the real figure for that week, including when the answer is that we cannot help in your timeframe.
Do you work in TypeScript and Next.js?
Yes, and strict TypeScript by default. Next.js where it earns its place, which is most product applications and not every one of them.
Do you do Angular as well as React?
Yes. Angular 20 brought stable signals and zoneless change detection, which closed a lot of the gap people still argue about. Which one we would recommend depends on your team size and how much you want the framework enforcing consistency.
How do you handle design handoff?
We read the Figma, then come back with the states that are missing. Empty, loading, partial, error and too-much-data are rarely in a design file and they are most of the engineering. If you have no designer, we will tell you whether you need one.
What are your accessibility and performance standards?
WCAG AA contrast, every interactive element keyboard reachable, and Core Web Vitals at the good thresholds: LCP under 2.5 seconds, INP under 200 milliseconds, CLS under 0.1. Measured on field data from real devices, not a lab score on a fast laptop.
What does a frontend engineer cost per month?
$4,800 to $7,200 a month, embedded full time. The same range as every other role we staff, because the seniority bar does not change by discipline.
Can you build an interface for our AI agent?
That is the work we are best suited to. Streaming, interruption, tool-call surfaces, partial failure and generative UI with an allow-listed component set. We default to the controlled pattern so the agent cannot render something you have not reviewed.
Why should we use you rather than a frontend specialist?
If frontend is genuinely all you need, maybe you should not. Our advantage is owning both sides of the API, so there is no seam to argue across. If the hard part of your product is under the interface, that is worth more than a deeper frontend bench.
Show us the interface
Thirty minutes with an engineer. Bring the screen users complain about, or the AI feature that works in a demo and not in the product. You get a straight answer on capacity in the first five minutes.
Also for you
Python engineers for what sits underneath / DevOps and observability / every role we staff