TS2604: JSX element type does not have any construct or call signatures TypeScript Origin: On your device OSI layer 7 · Application Last updated 5 Nov 2026

TypeScript: error TS2604: JSX element type 'Foo' does not have any construct or call signatures.

You used something as a JSX component that TypeScript doesn't see as a component (not a function/class returning JSX).

Exact message you may see error TS2604: JSX element type 'Foo' does not have any construct or call signatures.JSX element type does not have any construct or call signaturesTS2604 JSX element typeerror TS2786: 'Foo' cannot be used as a JSX component. Its return type 'void' is not a valid JSX element
Seen on: TypeScript React

Meaning

Check the import: default vs named, namespace import used as a component (import * as Foo), a variable typed as unknown/object, mismatched @types/react versions (duplicates), or a component returning void/non-JSX. After React 18/19 type upgrades, ensure single @types/react.

Common causes

  • Wrong import form (default/named)
  • Component typed incorrectly
  • Duplicate @types/react versions
  • Returning undefined/invalid JSX type
  • Module resolution picks a wrong typing

⚡ Quick fix

  1. Fix the import and exported component type
  2. npm ls @types/react and dedupe
  3. Ensure the function returns JSX.Element/ReactNode

Detailed fix by platform

Linux

  1. npm ls @types/react && npm dedupe

How to diagnose

  1. Import — Correct?
  2. Types — One @types/react?
  3. Return — JSX?

🔧 Still not fixed?

Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:

Where this error sits

Origin: On your device. Errors that are often confused with or caused by this one (click to open):

Cannot find module './App.vue' or its corresponding type declarations — TypeScript: error TS2307: Cannot find module './App.vue' or its corresponding type declarations. (Vue)Cannot find module '.…ERESOLVE: next requires react ^18 (peer dependency conflict) — npm: ERESOLVE unable to resolve dependency tree — Found: react@19.0.0 / Could not resolve dependency: peer react@"^18.2.0" from some-lib (Next.js)ERESOLVE: next requir…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. (React)Functions not valid a…Invalid DOM property — Warning: Invalid DOM property `class`. Did you mean `className`? (React)Invalid DOM propertyInvalid hook call (duplicate React in Next.js) — Next.js: Error: Invalid hook call. Hooks can only be called inside of the body of a function component — Cannot read properties of null (reading 'useContext') (Next.js)Invalid hook call (du…non-boolean attribute — Warning: Received `true` for a non-boolean attribute `x`. (React)non-boolean attributeNothing was returned from render — Error: Nothing was returned from render. This usually means a return statement is missing. (React)Nothing was returned …Objects are not valid as a React child — Error: Objects are not valid as a React child (React)Objects are not valid…TS2604: J…

Explore the map of this error Full error map →

🧠 Still stuck? Analyze your error

Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.

💬 What worked for others

No tips yet — did something else fix this for you?

Share what worked for you

Tips are checked by an editor before they appear. Links are removed.