React: a complete overview, pros, cons and limits

What React is for and where it pays off: 8 areas, pros and cons, a comparison with Vue, Angular and Svelte, the ecosystem, React 19, code examples, limits and tips.

Stack and technologies Updated

In short

React is a free JavaScript library for building interfaces out of components: a screen is described as a function of data, and React updates the page when the data changes. Created at Meta in 2013, it is the most widespread tool for application-like interfaces — personal accounts, dashboards, SaaS, Telegram Mini Apps — and, through React Native, mobile apps. Its strengths are the component model, a huge ecosystem and talent pool, and mature frameworks like Next.js. Its costs are weight (about 66 KB of compressed JavaScript before your code), the need to choose routing, data and state tools yourself, and SEO that requires server rendering.

React at a glance

The main facts in one table — where React came from, how it works and how it evolves.

Type
A JavaScript library for building user interfaces
History
Facebook (now Meta), 2013; author — Jordan Walke
Governance
In 2025 a move to the React Foundation under the Linux Foundation was announced
License
MIT — free, including commercial use
Idea
The interface is a function of data; components, one-way data flow
Syntax
JSX — markup inside JavaScript or TypeScript
Current version
React 19: Actions, Server Components, the React Compiler
Weight
About 66 KB of gzip for a minimal app built by Vite — before your own code
Frameworks
Next.js, React Router, Expo for mobile
Mobile
React Native — native apps for iOS and Android
Popularity
Among the most used web frameworks in the Stack Overflow survey for years

What React is used for: 8 areas

React is at its best where the screen lives after loading. Under each area — the tools it usually comes with.

  1. 01

    Personal accounts

    Orders, settings, documents and notifications on screens that update without reloading.

    React RouterTanStack Query

  2. 02

    Dashboards and admin panels

    Tables, filters, charts and editing in one place.

    TanStack TableRecharts

  3. 03

    SaaS products

    When the interface is the product, its states and speed of development matter most.

    Next.jsshadcn/ui

  4. 04

    Telegram Mini Apps

    An application inside the messenger: catalogue, booking, payment.

    ViteTelegram SDK

  5. 05

    Editors and builders

    Drag and drop, undo, live preview — many states that change at once.

    dnd-kitZustand

  6. 06

    Mobile apps

    React Native draws native components on iOS and Android from one code base.

    React NativeExpo

  7. 07

    Interactive blocks on sites

    A calculator, a configurator or a cart as an island on an ordinary server page.

    islandsAstro

  8. 08

    Large products with public pages

    Server rendering gives ready pages for search, and React keeps the interactive part.

    Next.jsServer Components

Pros and cons of React

React gives a strong model for complex interfaces and leaves many decisions to you. Both sides come from the same choice.

Pros · 8

  • Components

    A screen is assembled from small reusable parts with clear inputs.

  • Predictable updates

    Change the data — React redraws what is needed; no manual DOM juggling.

  • A huge ecosystem

    Ready libraries for tables, forms, charts, drag and drop and design systems.

  • Many developers

    The largest talent pool among interface tools — the project does not depend on one person.

  • TypeScript out of the box

    Typed props and hooks catch errors before launch.

  • Mobile from the same knowledge

    React Native uses the same model for iOS and Android.

  • Mature frameworks

    Next.js and React Router give server rendering, routing and data loading.

  • The compiler does the optimisation

    The React Compiler adds memoisation automatically instead of manual useMemo.

Cons · 8

  • Weight

    About 66 KB of compressed JavaScript before your code — noticeable on weak phones.

  • A library, not a framework

    Routing, data loading, forms and state — you choose and connect them yourself.

  • SEO needs a server

    Content built only in the browser is seen worse by search engines and AI crawlers.

  • Changing paradigms

    Classes, then hooks, then server components — old code and old articles age fast.

  • useEffect pitfalls

    Effects that sync state cause double requests and loops — the most common React bug.

  • Hydration cost

    A server-rendered page still has to “come alive” in the browser by running the same code.

  • Many dependencies

    A typical project pulls hundreds of packages that need regular updates.

  • Overkill for content sites

    A site that is read gets weight and complexity without a benefit.

React compared with Vue, Angular and Svelte

A qualitative comparison of the four most common tools for interfaces.

CriterionReactVueAngularSvelte
What it is a library a progressive framework a full framework a compiler
Author Meta Evan You and the community Google Rich Harris and the community
Weight in the browser medium smaller the largest the smallest
Entry bar medium low high low
Built-in decisions few, the ecosystem decides routing and state from the team everything routing in SvelteKit
Server rendering Next.js Nuxt Angular SSR SvelteKit
Mobile React Native through third-party tools Ionic through third-party tools
Developers on the market the most many many in enterprise fewer
Best for products, SaaS, mobile together fast start, mid-size apps large corporate systems light and fast interfaces

When to choose React — and when not to

Twelve typical projects with a verdict. Where React is not the best choice, the alternative is named.

  • Personal account

    Best fit

    Many states and live data — React’s home ground.

  • Dashboard or admin panel

    Best fit

    Ready libraries for tables, filters and charts.

  • SaaS product

    Best fit

    The interface is the product, and the team is easy to find.

  • Telegram Mini App

    Best fit

    An application inside the messenger with screens and payment.

  • Editor or builder

    Best fit

    Complex states that change at once.

  • Web and mobile with one team

    Best fit

    React and React Native share the model and part of the code.

  • Online shop

    Works

    Server pages for search, React in the cart and checkout — or Next.js.

  • A calculator on a site

    Works

    As an island; a small one can be done without React.

  • Landing page

    Pick another

    Server HTML: speed on mobile decides the conversion.

  • Corporate site

    Pick another

    Content and a form do not need a framework.

  • Blog or media

    Pick another

    Pages are read: server HTML is faster and clearer for search.

  • A widget of a few lines

    Pick another

    Plain JavaScript or the browser’s own elements.

The React ecosystem: tools for common tasks

React itself only draws the interface; everything else comes from the ecosystem.

TaskTools
Building Vite
Frameworks Next.js, React Router, TanStack Start
Server data TanStack Query, SWR
Client state Zustand, Jotai, Redux Toolkit
Forms React Hook Form, Zod
Components and UI kits shadcn/ui, Radix, MUI, Mantine
Tables TanStack Table, AG Grid
Animation Motion
Styling CSS Modules, Tailwind
Tests Vitest, Testing Library, Playwright
Mobile React Native, Expo

The limits of React and common mistakes

  1. Effects instead of calculations

    What can be calculated from props during render does not need useEffect and extra state.

  2. One giant component

    A thousand lines in one file re-render together and cannot be read.

  3. Global state for everything

    Data from the server belongs in a query cache, not in a global store.

  4. Content only in the browser

    Public pages need server rendering, otherwise search and AI see an empty page.

  5. Huge lists without virtualisation

    Ten thousand rows on screen freeze any framework; draw only what is visible.

  6. A package for every trifle

    Each dependency is weight and an update to keep track of.

8 tips for React that stays fast and clear

  1. 01

    TypeScript from the start

    Typed props are the cheapest documentation and the first line of defence.

  2. 02

    Small components

    One component — one job; it is easier to read, test and reuse.

  3. 03

    Calculate, do not synchronise

    Derived values are computed during render; effects are for talking to the outside world.

  4. 04

    A query cache for server data

    TanStack Query handles loading, errors, refreshes and caching for you.

  5. 05

    The React Compiler

    It adds memoisation itself — remove manual useMemo and useCallback where it is on.

  6. 06

    Server rendering for public pages

    Next.js or islands on a server page — so search engines see the content.

  7. 07

    Measure the bundle

    Check what each new library adds; load heavy screens only when needed.

  8. 08

    Accessibility in components

    Real buttons, labels and focus — a beautiful div with a click is not a button.

What React looks like: 3 examples

A component with state, a form on React 19 Actions and a custom hook. Checked by TypeScript 7 in strict mode, rendered on the server and clicked through in Chromium.

A component with state

Typed props in, markup out; a click changes the state, and React redraws the price.

ProductCard.tsx
import { useState } from 'react';

type Product = { id: number; name: string; price: number; inStock: boolean };

// a component is a function: props in, markup out
export function ProductCard({ product }: { product: Product }) {
  const [qty, setQty] = useState(1);

  return (
    <article className="card">
      <h3>{product.name}</h3>
      <p>Price: {product.price * qty}</p>
      {product.inStock ? (
        <button onClick={() => setQty(qty + 1)}>Add one more ({qty})</button>
      ) : (
        <p>Out of stock</p>
      )}
    </article>
  );
}

A form on React 19 Actions

The form sends itself, the button knows the request is in progress, and the answer comes back as state.

SubscribeForm.tsx
import { useActionState } from 'react';

type State = { ok: boolean; message: string };

// React 19 Actions: the form sends itself, and the state of the request comes back
async function subscribe(_prev: State, form: FormData): Promise<State> {
  const email = String(form.get('email') ?? '');
  if (!email.includes('@')) return { ok: false, message: 'Check the email' };
  // here — a request to your server
  return { ok: true, message: 'Done, thank you!' };
}

export function SubscribeForm() {
  const [state, action, pending] = useActionState(subscribe, { ok: false, message: '' });

  return (
    <form action={action}>
      <input name="email" type="email" placeholder="[email protected]" required />
      <button disabled={pending}>{pending ? 'Sending…' : 'Subscribe'}</button>
      {state.message && <p role="status">{state.message}</p>}
    </form>
  );
}

A custom hook

Reusable logic with its own state: the chosen theme survives a page reload.

useLocalStorage.tsx
import { useEffect, useState } from 'react';

// a custom hook: reusable logic with its own state, typed by the value
export function useLocalStorage<T>(key: string, initial: T) {
  const [value, setValue] = useState<T>(() => {
    const saved = typeof window === 'undefined' ? null : localStorage.getItem(key);
    return saved === null ? initial : (JSON.parse(saved) as T);
  });

  useEffect(() => {
    localStorage.setItem(key, JSON.stringify(value));
  }, [key, value]);

  return [value, setValue] as const;
}

// any component can use it: the theme survives a page reload
export function ThemeSwitch() {
  const [theme, setTheme] = useLocalStorage<'light' | 'dark'>('theme', 'light');
  return (
    <button onClick={() => setTheme(theme === 'light' ? 'dark' : 'light')}>
      Theme: {theme}
    </button>
  );
}

Questions about React

Is React a framework or a library?

A library: it draws the interface. Routing, data loading and server rendering come from frameworks like Next.js or React Router.

Does a website need React?

A site that is read — usually not; an interface people work in — usually yes.

React or Vue?

Both are good. React has a larger ecosystem, more developers and React Native; Vue is easier to start with and has more built in.

Is React bad for SEO?

Only when content is built in the browser. With server rendering pages come ready, and search engines see them.

What is new in React 19?

Actions for forms and requests, server components in frameworks and the React Compiler that optimises re-renders automatically.

What is Next.js?

The most popular React framework: server rendering, routing and an API in one project.

Can one team build web and mobile?

Yes, with React and React Native — the model and part of the code are shared.

How much does React weigh?

A minimal app built by Vite is about 66 KB in gzip before your own code.

Online form

Development
in React

I build interfaces in React with TypeScript where the screen works like an application: personal accounts, dashboards, admin panels and Telegram Mini Apps. Tell me about the task — I answer within one working day.

Or write to [email protected]