Swasthya Sarathi
A healthcare-companion platform for Swasthya Sarathi
A website and mobile app development project for a multi-service healthcare companion — It helps peo...
Read itReact 19 · TypeScript · Vite · TanStack Query
React is the easy part. The choices around it decide whether an app does well or goes bad. We do React development in TypeScript with the right way to show pages, server data handled by TanStack Query, and slow screen updates measured, not guessed.
Last updated
React won the frontend because it made complex screens easier to build, and almost everything around it now expects it. But the library is the easy part. A React project does well or goes bad because of a set of choices around it. These are: which framework wraps it, whether it shows pages from the server, how server data and screen data are kept apart, and whether anyone is watching the bundle size. We do React development that gets those choices right first. We use TypeScript, keep server data in a proper data layer, and keep screen data small and planned. The result is React that nobody complains about. It is fast on a mid-range phone, easy for the next engineer to read, and still pleasant to work in three years later.
Talk to a React engineerEvery component has types, so mistakes show up in the editor and not as a white screen on the live site.
A size limit for the first load of the main page, checked in CI. If it gets worse, the build fails. We do not wait for a bad quarter.
We measure how fast the app responds to clicks with the React profiler. We find needless re-renders and fix the cause.
Components are built on accessible parts, so keyboard and screen-reader support is part of the base. It is not added in a rush before an audit.
React is the library the rest of the frontend world orbits, and most of what people call "React development" is really a set of decisions around React: which framework wraps it, how state is managed, how data is fetched, and whether the app should render on the server at all. Get those four right and React is a joy to maintain for years. Get them wrong and you have the sprawling, re-rendering, prop-drilled application that gives React its bad reputation.
The reflex to reach for a client-rendered SPA is the source of most of the React pain we are asked to fix: a blank page until a large bundle downloads and runs, poor SEO unless you work very hard, and a slow first paint on the mid-range Android your users actually hold. If the app is public and needs to rank, we build it in Next.js with server rendering so crawlers and users get real HTML. If it is a logged-in dashboard where SEO does not matter, a light Vite SPA is the right and simpler choice. The mistake is using one answer for both. It is the first thing we settle.
A lot of buggy React comes from data fetching written by hand: useEffect chains, loading flags, timing bugs and old cached data, repeated in every component. We use TanStack Query as our standard (or the framework's own data layer) for server state — caching, deduplication, background refetching and invalidation handled once, correctly. That leaves genuine client state — the cart drawer, the wizard step, the theme — for a small, deliberate store like Zustand, or Redux Toolkit when the app is large and the team wants strict conventions. Mixing server data and screen data into one big global store is the most common design mistake we have to fix.
We write React in TypeScript, always, because a typed component contract catches the prop and shape errors that otherwise show up as a white screen on the live site. On speed, we do not guess: we profile with the React DevTools profiler, find the components re-rendering for no reason, and fix the actual cause — an unstable callback, a context that is too broad, a list without stable keys — rather than adding memo everywhere and hoping. Most "React is slow" complaints are a handful of fixable re-render problems, not the framework.
Vite for the dev server and build, because fast feedback is not a luxury. A component library built on accessible parts — Radix or React Aria — so keyboard and screen-reader support is built in and not added later. Testing with React Testing Library at the component level and Playwright for the flows that carry money. And a bundle size limit checked in CI, because a React app's size only ever grows unless someone is watching it, and the person watching should be the build, not a customer on a slow connection.
| Choose React | Choose something else | |
|---|---|---|
| Complex, interactive product UI | Yes. This is what React is for: rich state, many components, and a design system shared across screens. | For a mostly static content site, a lighter tool shows pages faster with far less JavaScript. |
| Public page that must rank | Yes, but as Next.js with server rendering, not as a client-rendered SPA. | For pure content with a team that works in it every day, a CMS or a static site generator can be simpler. |
| Mostly static marketing content | Too much as a client SPA. You send a lot of JavaScript just to show text. | Astro or a static generator: almost no JavaScript, faster first view, cheaper to run. |
| You have a React web + mobile roadmap | Strong. Types, checking rules and logic can be shared with a React Native app with little repeated work. | If mobile is Flutter, that sharing is lost. Think about it before you decide. |
| Simple server-rendered site, small team | Ask whether you need a SPA at all before taking on its extra build and caching work. | Laravel Blade or a server-rendered stack is faster to finish for a team that already uses it. |
| Team is Vue- or Angular-first | No reason to force React if the team is productive and invested elsewhere. | Stay with Vue or Angular. The gain from React's large ecosystem is real only if your team works in it. |
Screens full of data, with real state: filters, tables, charts and live updates. They are built to stay fast and easy to read as they grow, in TypeScript throughout.
Public pages that must rank and load fast: server rendering, real HTML for search crawlers, and a bundle that stays within its size limit on a mid-range phone.
A typed, documented, accessible component library in Storybook. Your marketing site and product both use it, so the brand looks the same in both.
Live dashboards, editing together and showing who is online, over WebSockets. We handle the odd cases with server data and lost connections, and do not just hope they never happen.
Data fetching written by hand, a global store holding everything, no types and no tests. We fix these step by step while the app keeps going out to users.
A check against real user data, the re-render and bundle problems fixed at the cause, and size limits checked in CI so it does not quietly get worse.
A library, a component and people to hire for almost anything. This wide choice is React's biggest advantage. If it is not managed, it is also the cause of its bloat.
TypeScript catches the prop and shape errors that otherwise show up as a white screen. We treat a public component without types as a fault.
TanStack Query does caching, removing repeated requests and refreshing old data correctly. So it is not rebuilt, with bugs, in every component.
Server-rendered React gives crawlers and users real HTML and a fast first view. A client SPA gives them a blank page and a bundle to wait for.
When it is built on accessible parts, keyboard and screen-reader support comes built in. Adding it after an audit costs far more.
A React bundle only grows unless the build enforces a size limit. We let the build do the watching, not a customer on a slow connection.
The four choices that decide a React project are settled first. Then we build in small slices, each one working from screen to server.
How pages are shown (SPA or server-rendered), the framework, how state is organised, and the data layer. We write down the choice and the trade-off before we build a component, because these cost a lot to change later.
Accessible parts, design tokens, and the empty, loading and error screens that nobody remembers to draw. Written up in Storybook so the team builds from one source and not from screenshots.
Each sprint delivers a working path from screen to API, typed from start to finish, with server data on the data layer and tests on the flows that carry risk. A demo and a list of changes every two weeks.
Re-renders measured and fixed at the cause, the bundle kept under its size limit in CI, and Core Web Vitals checked against real user data and not a test on office wifi.
The component library, a note on how it is built, and a getting-started session so your team owns it. Or we move to a monthly plan and keep building your roadmap.
The tools we pick when the choice is ours. We can swap them for what your team already uses.
Dashboards, portals and public pages that stay fast as they grow, with the trade-offs written down.
A fleet, ePOD and route-planning platform that works offline first, for drivers on roads with poor signal. The two ready...
A Shopify store for a Surat ethnic-wear label. It has 200+ SKUs of lehengas, sarees and suits, sorted by type, colour, f...
A Shopify storefront for a Surat watch and eyewear retailer — where shoppers can browse by gender, brand, style and comb...
Tell us what it does and where it hurts. A senior engineer reads every enquiry and replies within one business day with the scope, the risks and a price. You do not get a brochure.
FAQ
Proof
Swasthya Sarathi
A website and mobile app development project for a multi-service healthcare companion — It helps peo...
Read itMV Tech Education
A website development project for a Bihar vocational institute. It is a course list and admissions s...
Read itPatna Taxi
A website development project for a Patna and Muzaffarpur cab operator. It is a fast taxi-booking si...
Read itReact that is built on the server, ranks in Google and does not send 300 KB of JavaScript...
ExploreThe framework we have built more business systems on than any other. Laravel 12 with Octan...
ExploreOne codebase, both stores, and a release you can fix the same afternoon. We build React Na...
ExploreLet's talk react development
A senior engineer reads every enquiry. You'll get a real answer — scope, risk and a number — within one business day.