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).
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 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/reactversions - Returning
undefined/invalid JSX type - Module resolution picks a wrong typing
⚡ Quick fix
- Fix the import and exported component type
npm ls @types/reactand dedupe- Ensure the function returns
JSX.Element/ReactNode
Detailed fix by platform
Linux
npm ls @types/react && npm dedupe
How to diagnose
- Import — Correct?
- Types — One @types/react?
- 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:
Similar errors
- Cannot find module './App.vue' or its corresponding type declarations TypeScript: error TS2307: Cannot find module './App.vue' or its corresponding type declarations.
- 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
- 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.
Most viewed in TypeScript
Other ways to find it
Where this error sits
Origin: On your device. Errors that are often confused with or caused by this one (click to open):
🧠 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.
Report a correction or suggest an improvement
Last updated 5 Nov 2026