React Development

React where Next.js cannot go.

Next.js covers most of what we build for the open web, and it has its own page. React on its own is what we reach for when the application has to live inside somebody else's shell: a merchant-only admin embedded in the Shopify dashboard, a native app in both app stores, or a headless storefront running on a commerce platform's own edge runtime.

That is a different discipline from building a site. You inherit the host's design system, its authentication, its navigation and its performance budget, and the job is to be indistinguishable from the platform while doing the thing the platform cannot do on its own.

What we build with React

Embedded Shopify admin apps

Merchant-only pages built on Shopify Polaris and App Bridge, running inside the Shopify dashboard — product sync, refunds, size guides and Salesforce bridging.

React Native in both stores

Expo and EAS Build pipelines shipping a single TypeScript codebase to the App Store and Google Play, with over-the-air updates where they earn their keep.

Headless storefronts

Hydrogen on Remix deployed to Shopify Oxygen, pairing the Storefront API with a headless CMS for editorial control over a commerce catalogue.

Back-office and internal tools

React Admin over a REST or CRUD data provider, where the fastest honest answer is a generated admin rather than a bespoke one.

Server state handled properly

TanStack Query for caching, invalidation and optimistic updates, instead of hand-rolled loading flags scattered through components.

Native device capability

Camera, maps, biometrics, health data, push and background tasks through the React Native ecosystem — with the permission flows that pass store review.

What is actually in our React projects

Not a wish list. Every library below is running in a repository we maintain.

Core

  • React
  • TypeScript (strict)
  • Vite
  • React Router

Native

  • React Native
  • Expo
  • EAS Build
  • React Navigation
  • Reanimated
  • Skia
  • VisionCamera
  • MMKV

Platform shells

  • Shopify App Bridge
  • Shopify Polaris
  • Hydrogen
  • Remix
  • Oxygen
  • React Admin

State & forms

  • TanStack Query
  • Redux Toolkit
  • MobX State Tree
  • React Hook Form
  • Zod
  • Yup

UI & media

  • Radix UI
  • shadcn/ui
  • Recharts
  • Chart.js
  • Lottie
  • Notifee

Testing & delivery

  • Jest
  • React Testing Library
  • Maestro
  • Playwright
  • Fly.io
  • GitHub Actions
  • Crashlytics

How we work in React

Choosing the stack is the easy part. These are the decisions that determine whether the codebase is still maintainable after we hand it over — and they are the same on every React project we run.

Our certifications
  • Embedded apps are built on the host's own design system rather than a lookalike — a merchant should not be able to tell where Shopify ends and our app begins.

  • Server state goes through TanStack Query rather than bespoke loading and error flags, which is what keeps a growing React app from turning into a pile of useEffect.

  • React Native ships through Expo EAS, so a release is a pipeline with a build number rather than an afternoon on somebody's laptop with the signing certificates.

  • Mobile end-to-end journeys are covered by Maestro flows, because the failures that matter on a phone are navigation and permissions, not unit-level logic.

  • TypeScript runs in strict mode everywhere, including the embedded apps where the host platform's own types are the contract we are coding against.

Looking for the service rather than the stack?

React is how we build. If you would rather start from what you need delivered, our bespoke software development page covers scope, process and engagement.

Bespoke Software Development

Building on React?

Tell us what you are building — or what you have inherited. We will come back with a straight answer on scope and approach.

Get in Touch