Skip to content
North Tech Labs
Technologies — Frontend

React

A component-based JavaScript library we use to build web user interfaces — a strong default for interactive frontends, applied with a deliberate framework and architecture choice on top of it rather than treated as a complete application solution on its own.

React is a JavaScript library for building user interfaces out of reusable components. North Tech Labs uses it as a common default for web frontends because of its component model and ecosystem maturity, but React by itself is only the UI layer — routing, server rendering, and data fetching are deliberate choices we make on top of it, usually via a framework such as Next.js, rather than assumptions baked into React itself.

Where it fits

React organises a user interface into reusable, composable components, which suits products where the frontend has real interactivity and changes over time — dashboards, customer portals, internal tools, SaaS products — rather than a handful of static pages. For businesses that expect to keep adding features to a web product, that component structure keeps the frontend maintainable as it grows, instead of accumulating into a single hard-to-change codebase.

React itself is a UI library, not a full application framework. It doesn't ship routing, server-side rendering, or data fetching out of the box — those come from the surrounding tooling a team chooses, most commonly a framework such as Next.js. That separation gives a team more control over the specific pieces it needs, but it also means more architectural decisions to make upfront compared to a single opinionated framework that makes those decisions for you.

Because React Native shares the same component model, a business building both a web product and a mobile app can share engineering patterns, and in some cases logic, across the two teams. That overlap is a practical advantage when web and mobile are both on the roadmap, though it isn't a reason on its own to choose React for a web-only product.

React's ecosystem is large and well established, which generally means common frontend problems — forms, tables, state management, accessibility patterns — already have mature, well-understood solutions. That reduces the amount of infrastructure a team needs to build from scratch, though it also means the ecosystem's size and variability requires deliberate choices about which libraries to depend on.

Core capabilities

Component-based UI
  • Reusable, composable UI components as the core building block
  • A one-way data flow that makes UI state easier to reason about at scale
  • A large ecosystem of accessible, maintained component libraries
Application architecture (via framework)
  • Routing, server-side rendering, and static generation through Next.js or similar
  • Data fetching and caching patterns layered on top of React itself
  • API route and backend-for-frontend patterns that pair with a Node.js backend
Developer workflow
  • Fast local iteration with hot module reloading
  • Strong TypeScript support for typed components and props
  • Shared component patterns with React Native for teams building web and mobile

Common use cases

  • SaaS product frontendsDashboards, admin panels, and customer-facing application UIs with ongoing feature development.
  • Customer and partner portalsInteractive, authenticated web experiences layered on top of existing backend systems.
  • Marketing sites with product depthPublic-facing sites that combine content pages with interactive tools, calculators, or configurators.
  • Internal tools and admin interfacesOperational dashboards and internal applications where iteration speed and component reuse matter more than SEO or first-load performance.

Architecture & integration considerations

  • Framework selectionChoosing a framework (typically Next.js) to supply routing, rendering strategy, and data fetching, since React alone doesn't make those decisions.
  • Rendering strategyA deliberate choice between client-side, server-side, and static rendering per page or route, based on SEO, performance, and data freshness needs — not a single default applied everywhere.
  • State management approachMatching the state management approach (local component state, context, or a dedicated library) to the actual complexity of the application, rather than over-engineering it upfront.
  • Shared logic with React NativeDeciding which business logic, if any, is worth extracting into shared packages when a web and React Native mobile app exist side by side.

Strengths

  • Mature, widely adopted ecosystemA large pool of maintained libraries and established patterns for most common frontend problems.
  • Component reusabilityA component-based structure that scales reasonably well as a product's UI grows in complexity.
  • Strong hiring and knowledge poolA widely used library, which generally makes it easier to bring engineers onto an existing codebase.
  • Shared model with React NativeThe same component and state patterns apply on mobile, which helps teams building both web and mobile products.

Trade-offs & limitations

  • Not a complete application frameworkReact alone provides no built-in routing, server-side rendering, or data fetching — those require a framework such as Next.js and a set of decisions a more opinionated framework would otherwise make for the team.
  • More setup decisions upfrontRendering strategy, routing, state management, and data fetching are all separate choices, which gives flexibility but also means more architectural decisions before a project can meaningfully start.
  • Ecosystem fragmentationMultiple valid ways exist to solve the same problem (state management, styling, data fetching), which can lead to inconsistency across teams or projects without a deliberate set of conventions.
  • Client-side performance requires attentionBundle size and re-render behaviour need active management on larger applications; they aren't automatically optimal by default.

When to use it

  • The product has meaningful frontend interactivity and is expected to grow over time
  • The team wants flexibility to choose its own routing, rendering, and data-fetching approach
  • A web and React Native mobile app coexist and shared component patterns would help
  • Hiring and long-term maintainability benefit from a widely adopted, well-documented library

When another option may be more appropriate

  • The site is largely static content with minimal interactivity, where a simpler static site generator is a better fit
  • The team wants a single opinionated framework that makes architectural decisions rather than leaving them open
  • An existing frontend in another framework is stable and a migration isn't justified by the roadmap
  • Very tight initial timelines make React's upfront setup decisions a poor trade against a more batteries-included framework

Alternatives & complementary technologies

  • VueA comparable component-based library with a more batteries-included core (routing and state management are closer to official defaults), which some teams find faster to start with.
  • SvelteA compiler-based approach that produces less client-side runtime code, often resulting in smaller bundles and less boilerplate, at the cost of a smaller ecosystem than React's.
  • Full-stack frameworks without a separate SPA layerFor content-heavy sites with limited interactivity, a traditional server-rendered framework can be simpler than introducing React at all.

Frequently asked questions

Is React a full web framework on its own?

No. React is a UI library. Routing, server-side rendering, and data fetching come from a framework built on top of it, most commonly Next.js, which we select and configure as part of the architecture.

Should we use React if we're also building a mobile app?

It's a reasonable factor in favour of React, since React Native shares the same component model, but it isn't a reason on its own — the web frontend's own requirements still come first.

Is React always the right choice for a web frontend?

No. For largely static content or when a more opinionated, batteries-included framework fits the team better, we recommend those instead rather than defaulting to React regardless of fit.

Does React guarantee good performance out of the box?

No. It provides an efficient update model, but bundle size, rendering strategy, and re-render behaviour still need to be actively managed as an application grows.

Considering React for your next project?

Tell us what you're building — we'll confirm whether this is the right technology choice before recommending anything.