Products · Product
React
Raised as a usability problem by 545 people on Hacker News over 13 years (2014–2026), in 409 threads.
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25The tutorial is hard to use on a phoneUnreviewed
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
Every issue, all time, most people first
Hooks are hard to use and to understand intuitivelyUnreviewed
20142026- Hidden state in hooks is hard to debug, with unpredictable, non-intuitive behaviour2026-11-02
- Wrapping third-party JS libraries in React needs awkward workarounds, causing sync issues and extra re-renders2026-10-02
- Component lifecycles and hook rules are confusing, and performance pitfalls are easy to hit2026-04-01
Developers forget how useEffect works, causing frequent bugsUnreviewed
20142026- Components with many useEffect calls become brittle and hard to reason about2026-02-21
- Developers miss dependencies and need linters to catch mistakes in useEffect lists2025-09-16
- Docs are full of dos and don'ts but don't explain what useEffect actually does2025-09-15
Dependency arrays and stale closures are hard to work withUnreviewed
20142026- Dependency arrays and stale closures are super annoying to work with2025-10-28
- Easy to forget the dependency array, so linting rules are needed to catch it2023-09-06
- Easy to miss that an empty dependency array changes behavior2022-12-26
Front-end frameworks are too hard for newcomers to learnUnreviewed
20142026- Official docs assume prior knowledge, confusing beginners; breaking changes make tutorials obsolete2024-11-30
- Documentation is frustrating and the ecosystem keeps changing, making learning hard2023-03-24
- Docs push beginners into server frameworks too early, overwhelming them with incidental complexity2023-03-18
JSX is too complicated for designers without coding experienceUnreviewed
20142026- JSX is non-ergonomic and confusing, mixing HTML and JavaScript2025-05-21
- Many JSX syntax exceptions are hard to learn and easy to get wrong, with obtuse errors2023-01-13
- JSX makes it confusing to tell where JavaScript versus HTML syntax is legal2022-03-24
Interactions lag about 200ms on older devices with heavy pagesUnreviewed
20142026- App lags in Safari compared to Firefox and Chrome with many DOM elements2025-08-27
- Web apps take over 10 seconds to load, mostly spent in JavaScript2025-04-01
- Page slows to a crawl and freezes after about 20 minutes with 3000 divs2024-12-01
Hard to step through, and error messages are unhelpfulUnreviewed
20142026- React is hard to step through and its error messages are unhelpful2022-10-08
- React apps fail to serve basic user needs that plain web forms handle2022-09-09
- Couldn't work out how to inspect React state without the browser extension2021-04-21
Pages take 10-60+ seconds to load, with spinners throughoutUnreviewed
20142026- Pages take 10-60+ seconds to load, with spinners shown throughout2025-08-25
- Pages take multiple seconds to become usable on older or cheap Android phones2024-12-04
- Pages take multiple seconds to load on old or cheap Android devices2024-11-30
Screens re-render 12+ times on each state changeUnreviewed
20142026- Frontend is slow, re-rendering a screen 12+ times on state changes2025-04-23
- Direct DOM changes cause slow, blinking screen redraws, requiring change detection workarounds2023-07-19
- Simple UI updates trigger render dozens of times, slowing interaction2023-02-01
Webpack and Babel configuration is painful and hard to debugUnreviewed
20142026- Webpack and Babel configuration is painful and hard to debug2019-09-27
- Diagram of many tools is too overwhelming and scary for beginners2018-07-06
- Nearly unusable without switching to Webpack, transpilers and JSX2017-08-20
Noticeable scroll lag compared to other sitesUnreviewed
20142026- Animations lag behind fast scrolling, queuing up nonsensical animations when jumping through the article2025-12-20
- Scrolling the sheet is very laggy on a Pixel 4a2023-11-24
- Scrolling feels choppy on a phone compared to Google Sheets2023-11-24
Hooks behave unlike regular functions, making render loops hard to debugUnreviewed
20142026- Component function re-runs on every render, so code must be memoized or moved into hooks to avoid side effects2024-10-22
- Hooks behave unlike regular functions, making render loops hard to debug2022-07-03
- Hard to predict how many times a hook runs or renders2022-03-21
Scrolling gets trapped inside each code window, interrupting page scrollUnreviewed
20142026- Scrolling gets trapped inside each code window, interrupting page scroll2023-03-17
- Scrolling hijacked by static left pane; code visibility tied to scroll position, hard to scan2019-11-15
- Scroll position resets as content loads, forcing repeated scrolling on mobile2017-11-02
Hooks, classes and lifecycle methods are confusing and changingUnreviewed
20142026- Lifecycle design needs workaround hooks that are confusing and rarely used2026-01-18
- Hooks cause confusion; one wrong dependency or derived state makes apps misbehave2022-03-21
- API keeps changing; hooks and classes don't mix, making it confusing to use2021-03-25
Bloated assets make pages slow to load and respondUnreviewed
20142026- Many websites feel slow and bloated, causing frustration during use2025-07-31
- Heavy SPA frameworks make simple pages slow to load on poor connections2025-06-19
- Bloated, slow framework makes the UI feel unresponsive and slow to load2022-06-03
Managing state is unintuitive for developersUnreviewed
20142026- Adding a React UI forces rewriting the whole core because React demands control of all state2025-08-11
- Developers must manually memoize to avoid excessive rerendering, making React more complex2023-09-01
- Managing state in React is unintuitive for developers2023-03-11
Inline conditionals and loops in JSX are ugly and hard to writeUnreviewed
20142026- JSX list rendering with conditionals is hard to scan and parse2021-07-03
- Writing conditionals and props in JSX is awkward and verbose2021-01-22
- Writing conditionals and loops inline in JSX is ugly and painful2020-02-13
Complex state causes confusing bugs from leaky abstractionUnreviewed
20142026- Hidden abstractions make bugs like stale closures and effect loops hard to trace2025-10-25
- Complex state leads to weird, confusing bugs due to leaky declarative abstraction2024-07-30
- Abstraction leaks and needs its own browser tools, adding operational complexity2022-12-27
Pages take 250-500ms to render, hurting the experienceUnreviewed
20142026- Pages show gray placeholders while waiting for data, and loading takes twice as long2023-03-12
- Pages take 250-500ms to render, which hurts the user experience2022-09-10
- Takes 50 seconds to first render on slow connections2019-01-29
Needs specialized knowledge to use correctlyUnreviewed
20142026- Complex concepts and terminology; hard to know when to optimize2026-05-26
- Increasingly complex; needs specialized knowledge to use correctly2024-05-03
- Confusing to start with; took days to understand why it is so complex2017-03-12
Easy to end up in confusing reactivity situationsUnreviewed
20142026- Easy to end up in confusing reactivity situations, footguns2025-09-16
- Unintuitive footguns make projects easy to get wrong and miserable2024-12-06
- Footguns: must use className instead of class, and conditionals are awkward to write2023-03-08
Stale state in callbacks forces passing state down to childrenUnreviewed
20142026- Stale state in callbacks forces passing state down to child components2022-08-17
- Easy to miss the hidden call that stops a component rendering2019-10-24
- Callbacks must be threaded through many intermediate component layers, making changes messy2017-02-05
The tutorial is hard to use on a phoneUnreviewed
20142026- Tutorial is confusing, introducing many tools the reader has never used2021-03-08
- The tutorial is hard to use on a phone2019-11-15
- Doesn't show examples or live demos; instructions lead to confusing errors and long videos2017-09-29
Having to write className instead of class feels unnaturalUnreviewed
20142026- Having to write className instead of class feels unnatural to the author2025-01-09
- Must learn slightly different names like className instead of class, which is infuriating2018-05-09
- Designers must remember non-HTML quirks like className instead of class2015-01-28
Basic setup like server-side rendering needs heavy configurationUnreviewed
20142026- Complex rendering model and hard-to-tame lifecycle make performant websites very hard to build2026-01-18
- Server-first rendering makes websites feel slow and needs glue code2025-10-09
- Takes so much configuration to set up basic things like server-side rendering2016-07-22
Simple pages require learning JSX, hooks and build tooling firstUnreviewed
20142026- Simple pages require learning JSX, hooks, lifecycle and build tooling first2025-09-16
- Tutorial assumes strong JavaScript background and gives little practical guidance for websites2017-09-29
- Beginners stumble on JSX, precompilation, components and missing state guidance2016-03-29
Developers easily make common mistakes that hurt performanceUnreviewed
20142026- Developers must jump through too many hoops to do anything2026-02-13
- Developers easily make common mistakes that hurt performance2025-09-02
- Developer must remember keys and array rules, reconciliation leaks into everyday coding2021-06-30
Maintaining state needs an excessive amount of boilerplate codeUnreviewed
20142026- SetState approach leads to endless opaque boilerplate that is hard to understand2020-12-12
- Requires a preposterous amount of code and boilerplate to maintain state2017-08-19
- Needs a lot of unavoidable boilerplate such as reducers, actions, and mapStateToProps2016-11-08
Supporting library docs are poor and every example differsUnreviewed
20142026- Documentation is poor and the library keeps making breaking version changes2024-12-28
- Library is poorly documented, making it hard to learn and use2022-09-20
- Supporting library docs are horrible and every example does things differently2016-09-12
Links can't be opened in new tabs or show target URLsUnreviewed
20142026- Links can't be opened in new tabs, lack context menus, and don't show target URLs2025-09-16
- Links ignore ctrl or shift clicks, so users can't open them in a new tab2024-09-25
- Cmd+click often fails to open links in new tabs and UI actions are slow2022-08-29
Component classes and HOCs are hard to type correctly in TypeScriptUnreviewed
20142026- React-specific TypeScript typing docs are hard to find2019-08-22
- Nested function type signatures were too confusing to understand, so he abandoned TypeScript2019-02-25
- React component classes and HOCs are hard to type correctly in TypeScript2018-05-18
Abstractions hide how things work, so the underlying workings must be learnedUnreviewed
20142026- Abstractions made the tool so hard to learn it needed team retraining2022-05-13
- Abstractions hide what is happening, so developers must still learn the underlying workings2022-02-16
- Abstractions become confusing and undocumented, unusable for others, needing documentation and usability fixes2021-10-20
Mixing markup with JavaScript makes code hard to readUnreviewed
20142026- Mixing HTML and JS syntax together is hard to read and work with2023-03-08
- Mixing HTML-like markup with JavaScript makes the code hard to read2019-03-29
- Looks like HTML but breaks copy-pasted HTML, confusing rules for tags and quoting2019-02-25
Hard to verify logic split across multiple lifecycle methodsUnreviewed
20142026- Hard to verify logic is correct when split across multiple lifecycle methods2022-09-20
- Complex lifecycle methods need docs and parameter checks to sequence correctly2022-03-01
- Lifecycle methods are confusing and contrived, and hard to use correctly for server-side rendering2018-03-28
Must learn many concepts like useState and hooks to express UIUnreviewed
20142026- Developer can't understand why simple UI state changes became obtuse and frustrating2023-07-05
- Requires learning many concepts like useState and hooks; seen as overly complex to express UI2021-06-29
- Forces many mental models and APIs to achieve UI = f(state)2021-02-04
Unreviewed issues were grouped by machine: Claude Haiku labelled each comment as a usability complaint, named what it's about and summed up the problem in a line, and a small model grouped similar problems. Nobody has checked them by hand. Expect mistakes.
The newest 50 complaints
- Hidden state in hooks is hard to debug, with unpredictable, non-intuitive behaviour2026-11-02
- Wrapping third-party JS libraries in React needs awkward workarounds, causing sync issues and extra re-renders2026-10-02
- Finds React code hard to read; 'use state zero' and const for changing value are confusing2026-09-06
- Pages are unusable for tens of seconds while huge bundles hydrate2026-09-03
- Typical React pages break back and forth buttons and standard browser functionality, and accessibility suffers2026-07-30
- Too many things to learn before building anything with it2026-07-14
- Divs used as buttons lack keyboard navigation and roles; fake links break middle-click and URLs2026-06-10
- Complex concepts and terminology; hard to know when to optimize2026-05-26
- Intuitive use of the framework commonly causes issues, forcing non-intuitive workarounds2026-05-26
- Default error handling makes failures hard to diagnose for users2026-04-28
- Component lifecycles and hook rules are confusing, and performance pitfalls are easy to hit2026-04-01
- Components with many useEffect calls become brittle and hard to reason about2026-02-21
- Hard to inspect the DOM and work out what the app is doing2026-02-20
- Websites built with React end up bloated, slow and inaccessible, and it takes deep expertise to avoid this2026-02-16
- Developers must jump through too many hoops to do anything2026-02-13
- Dependencies so numerous that a novice never got it to build2026-02-12
- Page source is useless for React sites since everything loads dynamically, making bugs hard to track down2026-01-20
- Suspense is confusing and forces extra nesting that makes components harder to reason about2026-01-19
- Complex rendering model and hard-to-tame lifecycle make performant websites very hard to build2026-01-18
- Lifecycle design needs workaround hooks that are confusing and rarely used2026-01-18
- Animations lag behind fast scrolling, queuing up nonsensical animations when jumping through the article2025-12-20
- Hooks make non-trivial component logic awkward and hard to work with2025-12-04
- Docs are lacking and hard to search; new project feels complex and unintuitive2025-12-01
- Modals did not hide content from screen readers and accessibility checkers2025-11-11
- Hooks keep multiplying for edge cases, making the API bloated and harder to learn2025-11-08
- Shared geometry code often runs too slowly to be usable in React Native app2025-11-08
- Couldn't find documentation for the updated router, so following guides caused errors2025-11-07
- Opaque framework-dependent implementation leads to other hard-to-diagnose issues2025-10-28
- Dependency arrays and stale closures are super annoying to work with2025-10-28
- Hidden abstractions make bugs like stale closures and effect loops hard to trace2025-10-25
- Frequent infinite re-renders and lost input state, needing arcane workarounds like useCallback and useMemo2025-10-25
- Searching the docs for CRA returns zero results after it was removed2025-10-17
- Hooks are hard to use; colleagues struggle beyond basic React2025-10-17
- Constant churn in docs, tooling and project setup options confuses developers2025-10-17
- Official docs oversimplify hooks, leaving confusing behavior unexplainable and the API hard to use2025-10-09
- Server-first rendering makes websites feel slow and needs glue code2025-10-09
- Hooks are very counter-intuitive, and people only get used to them over time2025-10-09
- Hard to understand how to properly use startTransition2025-10-08
- Developers miss dependencies and need linters to catch mistakes in useEffect lists2025-09-16
- Lifecycle and state become confusing once SSR and query caching are added2025-09-16
- Easy to shoot yourself in the foot with re-render loops and useEffect misuse2025-09-16
- Easy to end up in confusing reactivity situations, footguns2025-09-16
- Simple pages require learning JSX, hooks, lifecycle and build tooling first2025-09-16
- Confusing concepts like hooks and memo; hard to start projects without templates2025-09-16
- Links can't be opened in new tabs, lack context menus, and don't show target URLs2025-09-16
- Docs are full of dos and don'ts but don't explain what useEffect actually does2025-09-15
- Overdesigned React sites with buttons moving and odd text sizes hurt usability2025-09-15
- Pages load slowly, sometimes don't load, and react sluggishly2025-09-15
- Developers easily make common mistakes that hurt performance2025-09-02
- Can't tell which clickable elements are buttons; must click randomly to find out2025-08-27