| react-scripts not found |
'react-scripts' is not recognized as an internal or external command / react-scripts: command not found |
node_modules is missing or broken, so the react-scripts binary isn’t available. |
| Could not Fast Refresh |
[vite] hmr invalidate … Could not Fast Refresh. Export is incompatible. |
Fast Refresh fell back to a full reload because the file exports non-components alongside components. |
| Vite failed to resolve import |
[vite] Internal server error: Failed to resolve import "x" from "src/App.jsx". Does the file exist? |
Vite couldn’t find an imported file or package. |
| non-serializable value |
A non-serializable value was detected in the state / in an action, in the path |
Redux Toolkit’s middleware found a Date, Promise, class instance or function in state or an action. |
| Adjacent JSX elements |
Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>? |
A component returns two sibling JSX elements without a single parent. |
| Prerender error |
Error occurred prerendering page "/x". Read more: https://nextjs.org/docs/messages/prerender-error |
A page threw an error while Next.js was rendering it at build time. |
| Suspended synchronous input |
Error: A component suspended while responding to synchronous input. |
A component suspended (lazy load or data fetch) during an update that wasn’t wrapped in a transition, and the… |
| cross-origin error |
Error: A cross-origin error was thrown. React doesn't have access to the actual error object in development. |
An error happened in a script loaded from another origin, so the browser hid the details from React. |
| Actions must be plain objects |
Error: Actions must be plain objects. Instead, the actual type was: 'function'. |
A function (thunk) was dispatched but the thunk middleware isn’t configured. |
| async Client Component |
Error: async/await is not yet supported in Client Components, only Server Components. |
A component marked "use client" was declared async. |
| Target container is not a DOM element |
Error: createRoot(...): Target container is not a DOM element. |
The element passed to createRoot/render doesn’t exist when the script runs. |
| Dynamic server usage |
Error: Dynamic server usage: Route /x couldn't be rendered statically because it used `cookies` |
Next.js tried to statically render a route that reads request-specific data (cookies, headers, searchParams). |
| Element type is invalid |
Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined |
JSX referenced a component that is undefined — almost always a default/named import mismatch. |
| Functions cannot be passed |
Error: Functions cannot be passed directly to Client Components unless you explicitly expose it by marking it with "use server". |
A Server Component passed a function prop to a Client Component. |
| Hydration failed |
Error: Hydration failed because the initial UI does not match what was rendered on the server |
The HTML rendered on the server differs from the first client render, so React (Next.js/Remix) can’t attach t… |
| Invalid hook call |
Error: Invalid hook call. Hooks can only be called inside of the body of a function component. |
A hook ran outside a function component/custom hook, conditionally — or two copies of React are loaded. |
| next/image hostname |
Error: Invalid src prop on `next/image`, hostname "x" is not configured under images in your `next.config.js` |
next/image refuses to optimize images from domains not allowed in next.config.js. |
| Maximum update depth |
Error: Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. |
A component keeps updating itself in an effect or lifecycle — usually a useEffect that sets state its own dep… |
| Minified React error |
Error: Minified React error #31; visit https://react.dev/errors/31 for the full message |
A production React build threw an error whose message was shortened to a number. |
| NextRouter was not mounted |
Error: NextRouter was not mounted. |
next/router’s useRouter was used inside the App Router (app/ directory), which uses next/navigation instead. |
| No QueryClient set |
Error: No QueryClient set, use QueryClientProvider to set one |
TanStack Query hooks ran outside a QueryClientProvider (or a duplicate copy of the library is installed). |
| Nothing was returned from render |
Error: Nothing was returned from render. This usually means a return statement is missing. |
A component returned undefined (React 17 and earlier) — usually a missing return or a return followed by a li… |
| Objects are not valid as a React child |
Error: Objects are not valid as a React child |
You tried to render a plain object (or a Promise/Date) directly in JSX; React can only render strings, number… |
| Too many re-renders |
Error: Too many re-renders. React limits the number of renders to prevent an infinite loop. |
A state update runs during render, which triggers another render, which updates state again — forever. |
| useNavigate outside Router |
Error: useNavigate() may be used only in the context of a <Router> component. |
A React Router hook ran in a component that isn’t rendered inside a Router provider. |
| Jest ESM |
Jest: SyntaxError: Cannot use import statement outside a module (Jest encountered an unexpected token) |
Jest tried to run untransformed ES module syntax — usually from a dependency in node_modules. |
| Can't resolve 'fs' |
Module not found: Can't resolve 'fs' (Next.js / webpack 5) |
A Node.js built-in (fs, path, crypto, net) is imported into code that runs in the browser bundle. |
| Module parse failed |
Module parse failed: Unexpected token. You may need an appropriate loader to handle this file type |
Webpack found syntax it can’t parse because no loader is configured for that file (JSX, TypeScript, CSS, or m… |
| No routes matched |
No routes matched location "/x" |
React Router found no route definition for the current URL. |
| react-hooks/exhaustive-deps |
React Hook useEffect has a missing dependency (react-hooks/exhaustive-deps) |
ESLint warns that the effect reads a value that isn’t in its dependency array, so it may use a stale value. |
| React must be in scope |
ReferenceError: React is not defined / 'React' must be in scope when using JSX |
JSX was compiled with the classic runtime, which needs React imported in every file. |
| Unable to find an element |
TestingLibraryElementError: Unable to find an element with the text: x |
getBy* found no matching element in the rendered output. |
| useContext undefined |
TypeError: Cannot destructure property 'user' of 'useContext(...)' as it is undefined. |
A component read a context with no matching Provider above it. |
| key is not a prop |
Warning: `key` is not a prop. Trying to access it will result in `undefined` being returned. |
A component tried to read props.key, which React reserves and never passes down. |
| uncontrolled to controlled |
Warning: A component is changing an uncontrolled input to be controlled |
An input’s `value` started as `undefined` (uncontrolled) and later became a defined value (controlled), or vi… |
| not wrapped in act |
Warning: An update to Component inside a test was not wrapped in act(...) |
A component updated state after the test’s synchronous assertions — async work wasn’t awaited. |
| setState during render |
Warning: Cannot update a component (`Parent`) while rendering a different component (`Child`) |
A child component updated a parent’s state during its render instead of in an effect or event handler. |
| componentWillMount renamed |
Warning: componentWillMount has been renamed, and is not recommended for use. |
A class component uses legacy lifecycle methods (componentWillMount/WillReceiveProps/WillUpdate). |
| unique key prop |
Warning: Each child in a list should have a unique "key" prop |
When rendering a list with `.map()`, each element needs a stable, unique `key` so React can track items betwe… |
| findDOMNode deprecated |
Warning: findDOMNode is deprecated and will be removed in the next major release. |
A component (often an old library like react-transition-group v1, react-draggable) uses findDOMNode, which St… |
| refs on function components |
Warning: Function components cannot be given refs. Attempts to access this ref will fail. Did you mean to use React.forwardRef()? |
A ref was passed to a function component that doesn’t forward it. |
| Functions not valid as child |
Warning: Functions are not valid as a React child. This may happen if you return a Component instead of <Component /> from render. |
A function (usually a component itself) was rendered instead of calling/rendering it as an element. |
| Invalid DOM property |
Warning: Invalid DOM property `class`. Did you mean `className`? |
HTML attribute names were used in JSX instead of their React/DOM property names. |
| Prop did not match |
Warning: Prop `className` did not match. Server: "x" Client: "y" |
A prop rendered on the server differs from the client — usually CSS-in-JS class names or random IDs. |
| ReactDOM.render deprecated |
Warning: ReactDOM.render is no longer supported in React 18. Use createRoot instead. |
The app uses the legacy root API, so React 18 features (concurrent rendering, automatic batching) are disable… |
| non-boolean attribute |
Warning: Received `true` for a non-boolean attribute `x`. |
A boolean was passed to a DOM attribute that expects a string, or a custom prop leaked through to a DOM eleme… |
| defaultProps deprecated |
Warning: Support for defaultProps will be removed from function components in a future major release. |
A function component (often inside a library) uses Component.defaultProps. |
| async useEffect |
Warning: useEffect must not return anything besides a function, which is used for clean-up. It looks like you wrote useEffect(async () => ...) |
An async function was passed directly to useEffect, so it returns a Promise instead of a cleanup function. |
| useLayoutEffect SSR |
Warning: useLayoutEffect does nothing on the server |
A component using useLayoutEffect was server-rendered, where layout effects can’t run. |
| validateDOMNesting |
Warning: validateDOMNesting(...): <div> cannot appear as a descendant of <p>. |
The JSX produces invalid HTML nesting, which also causes hydration mismatches in SSR. |
| needs useState |
You're importing a component that needs useState. It only works in a Client Component but none of its parents are marked with "use client" |
In the Next.js App Router, a component using hooks or browser APIs is rendered as a Server Component. |