All technologies

React

37 painsavg 6.0/10
dx 7performance 6compatibility 4architecture 4docs 4security 3migration 3testing 2ecosystem 2dependency 1config 1

React/Next.js serialization vulnerabilities expose TypeScript runtime risks

9

Critical security vulnerabilities like React2Shell (CVE-2025-55182, CVSS 10.0) in Next.js RSC serialization revealed that full-stack JavaScript and TypeScript lack secure serialization models. These runtime CVEs forced developers to reassess security assumptions in TypeScript/React stacks.

securityTypeScriptReactNext.js

Cross-Site Scripting (XSS) Vulnerabilities in Next.js

9

XSS attacks can occur in Next.js through improper use of dangerouslySetInnerHTML, unvalidated user input in dynamic content, third-party scripts, and server-side rendering of malicious content.

securityNext.jsReact

Security Risks with Client-Side Rendering and npm Dependencies

8

React's client-side rendering model introduces XSS vulnerabilities from improperly sanitized JSX content, bypassing PHP's native sanitization. Additionally, heavy reliance on npm packages increases exposure to supply-chain threats and malicious code in third-party dependencies.

securityReactJSXnpm+1

Dependency compatibility blockers during React 19 migration

8

Libraries that assume React 17 or 18 create compatibility issues during React 19 migration. Dependencies often present larger migration barriers than React itself, requiring teams to audit the entire dependency tree before upgrading.

compatibilityReactReact 19

Request Object Dynamicity Limits Caching and Optimization

7

Exposing dynamic request/response objects in the App Router affects the entire route and limits the framework's ability to implement caching, streaming, and future Partial Prerendering optimizations.

architectureNext.jsReact

Hydration mismatches and runtime instability in Next.js 16

7

Next.js 16 introduces hydration errors where client-side reconciliation doesn't match server-rendered HTML, causing flicker, broken interactivity, and console warnings. This issue is particularly prevalent with the new Server Component paradigm.

compatibilityNext.jsReact

Data fetching in useEffect creates cascading round-trip delays

7

Fetching data in useEffect causes a waterfall effect where component renders trigger data fetches, and nested child components wait for parents before making their own requests. This creates 3+ steps before data even starts moving, resulting in users seeing loading spinners for 3-5 seconds instead of immediate content.

performanceNext.jsReact

Excessive Client-Side Payload Increases Parse Time

7

Large data passed to client components (e.g., 7 MB from getStaticProps) must be transferred and parsed by the browser even if unused by the UI, slowing down FCP and LCP.

performanceNext.jsReact

v0 Framework Lock-in (React/Next.js Only)

7

v0 strictly outputs React components and Next.js-compatible code only, forcing developers using Angular, Vue, Svelte, or other frameworks to perform extensive code conversion. The tool also mandates Tailwind CSS and doesn't generate TypeScript by default.

compatibilityv0ReactNext.js+4

useEffect Hook Complexity and Dependency Array Management

7

useEffect is used by 98% of developers but has the lowest satisfaction ratio of any React hook. The top complaint (37%) centers on finicky reactivity, stale closures, and effect cleanup issues. Dependency array problems account for 21% of complaints, a 23.5% year-over-year increase.

dxReactuseEffect

Performance Issues: Unnecessary Re-renders and Bundle Size

7

React applications suffer from unnecessary re-renders, large bundle sizes, slow initial page loads, memory leaks, and poor mobile performance. These issues are partly inherent to client-side SPAs lacking server-side rendering or static site generation.

performanceReactCreate React App

React 19 migration tools are imperfect and cause regressions

7

Automated codemods recommended for React 19 migrations cause regressions or incomplete changes in large codebases. Migration tools are useful but unreliable, requiring teams to treat them as helpers rather than one-click solutions and manually verify changes.

migrationReactReact 19

CSS-in-JS Runtime Overhead Hurts Core Web Vitals

7

CSS-in-JS libraries like Styled Components run JavaScript in the browser to hash class names and inject styles dynamically, causing style recalculations on every injection. This significantly degrades LCP, FCP, and INP metrics.

performanceNext.jsStyled ComponentsReact

RSC introduces client confusion, development complexity, and latency concerns

6

React Server Components (RSC) create confusion about client-server boundaries, increase development complexity, and introduce latency. Simple applications feel overengineered due to RSC requirements, creating a steep learning curve and performance concerns with cold starts on serverless platforms.

architectureNext.jsReact

Importing entire libraries instead of specific functions bloats bundle size

6

Developers commonly import entire libraries when only needing single functions, pulling in 70+ kilobytes of unused code (e.g., lodash). Combined with full icon libraries, moment.js for dates, and analytics packages with unwanted dependencies, this significantly increases bundle size and degrades performance.

dependencyNext.jsReactlodash+1

Steep learning curve requires mastering multiple Next.js subsystems

6

Learning Next.js requires mastering not just React, but also its routing model, rendering modes, proprietary caching behavior, deployment quirks, and middleware runtime. This multi-layered complexity creates a steep onboarding barrier for newcomers.

docsNext.jsReact

Missing Dynamic Imports Lead to Oversized Initial Bundle

6

Without using next/dynamic, components that aren't needed on initial page load (like modals) get shipped in the main bundle, increasing bundle size and harming LCP, FCP, and INP.

performanceNext.jsReact

Improper Use of next/image Causes Large Image Downloads

6

Using regular <img> tags instead of next/image loses built-in optimizations like lazy loading and responsive sizing. Without proper sizes attribute, browsers may download large desktop images on mobile devices, hurting LCP.

performanceNext.jsReact

Inconsistent Project Structure and Code Organization

6

React projects lack standardized patterns for component organization and code structure. Unlike Vue or other frameworks, React projects vary significantly in structure, leading to unclear project layouts, poor code reusability, scalability challenges, and accumulated technical debt.

architectureReact

Excessive Boilerplate and Complexity in React Codebases

6

React codebases suffer from excessive complexity (20% of pain points) and boilerplate (15%). The accumulation of hooks, rules, patterns, and workarounds creates codebases that are hard to maintain and riddled with hacks, making even simple code reviews feel like navigating bureaucratic mazes.

dxReact

State Management Complexity and Prop Drilling

6

Complex state logic across components, excessive prop drilling through multiple component levels, state synchronization issues, and race conditions in async operations create significant cognitive overhead. Developers struggle with global state complexity and synchronization across the application.

architectureReact

Testing Complexity and Brittleness

6

React developers face challenges with complex component testing, time-consuming integration tests, brittle test maintenance, mock complexity, and gaps in test coverage. Testing infrastructure is difficult to set up and maintain effectively.

testingReact

Memoization Complexity and Mental Overhead

6

Knowing when to use useMemo, useCallback, and React.memo adds significant mental overhead for developers. This complexity stems from React's component-based reactivity model requiring the entire component function to re-run on every update, forcing developers to manually optimize with memoization.

dxReactuseMemouseCallback+1

React Ecosystem Fragmentation and Too Many Choices

6

Developers face overwhelming fragmentation across state management (Redux, Zustand, Context), routing (React Router, etc.), server-side rendering (Next.js, alternatives), and other core concerns. 11% of developers specifically cited ecosystem complexity as a pain point, describing it as navigating competing solutions and rapidly evolving metaframeworks.

ecosystemReactReduxZustand+3

Learning Curve for React Paradigms in WordPress

6

React introduces paradigms that fundamentally differ from PHP or jQuery workflows. Developers must understand state management, hydration (syncing server-rendered markup with client-side React), and new mental models, creating significant learning friction for traditional WordPress developers.

migrationReactWordPressSSR+2

TypeScript Configuration and Integration Challenges

5

Developers encounter difficulties with TypeScript configuration and integration in React projects, contributing to poor overall development experience and inconsistent typing patterns across codebases.

configReactTypeScript

React Testing Complexity with act() Function

5

Wrapping updates in act() for tests remains confusing and error-prone, especially with asynchronous operations. This adds friction to the testing workflow and requires additional cognitive load.

testingReactact

Complex Form and Validation Logic Requirements

5

React lacks built-in support for complex form validation logic. Native HTML validation attributes cannot cover substantial use cases, forcing developers to reinvent form validation solutions repeatedly. Framework alternatives like Svelte with SuperForms provide more integrated solutions.

dxReact

React's Deviation from Web Standards and Native APIs

5

React violates traditional web development standards by requiring JSX instead of HTML, pushing CSS-in-JS and inline styles instead of cascading CSS, using custom routing instead of native window.location and history API, and introducing 'use server' directives instead of standard fetch/JSON/HTTP patterns. These deviations create debugging nightmares and bad practices.

dxReactJSXCSS-in-JS

Community Fragmentation and Disagreement on React Direction

5

The React community exhibits growing frustration and disagreement about where React is headed, how it's developed, and recommended approaches for using React. Tensions exist between React team recommendations (full-stack, server components) and community concerns about complexity, accessibility, and backwards compatibility.

ecosystemReact

Poor IDE Support and Conditional Rendering Ergonomics

5

React's requirement to factor conditionals into separate functional components or use ugly ternary operators creates poor ergonomics. The lack of first-class IDE support exacerbates this issue, making conditional logic difficult to write and maintain.

dxReact

Unexpected Cookie Behavior in Next.js Server Components

5

The cookies() API allows type-checked usage like cookies().set() anywhere, but fails at runtime in certain contexts. This unexpected behavior differs from traditional request object access and creates developer footguns.

compatibilityNext.jsReact

Poor Community Support Channels and Documentation

4

React community channels like Discord suffer from poorly formatted unclear questions and lack of expert engagement. Even clear, answerable questions receive poor responses compared to other language communities. Documentation is often incomplete or depressing for non-Node.js backend use cases.

docsReact

Abundance of New Unfamiliar React APIs (Profiler, ViewTransition, cache, etc.)

4

React 19 introduced numerous new APIs with low familiarity among developers: Profiler (57% unfamiliar), ViewTransition (41%), Activity (41%), cache (41%), useEffectEvent (40%), useDeferredValue (39%). This creates knowledge gaps and increases the learning curve for developers trying to stay current.

docsReactProfilerViewTransition+3

Documentation Gaps for WordPress-Specific React Practices

4

While React adoption in WordPress grows, documentation specifically addressing WordPress contexts remains insufficient. Developers frequently rely on generic React resources that overlook WordPress-specific practices, library usage, and Block Editor design patterns.

docsReactWordPress

StrictMode Double-Rendering Confusion

4

Developers continue to get tripped up by effects running twice in development mode due to StrictMode. This behavior confuses developers and stems from React's fundamental architecture requiring entire component functions to re-run on updates.

dxReactStrictMode

Deprecated forwardRef Pattern

3

The forwardRef pattern has been a longstanding pain point for React developers for years. While React 19 deprecates forwardRef in favor of ref as a prop, legacy codebases and older patterns still create friction.

migrationReactforwardRef