【Gatsby.js】How to Fix MDXProvider Error 'Warning: The tag <item> is unrecognized in this browser. If you meant to render a React component, start its name with an uppercase letter.'
Thank you for your continued support.
This article contains advertisements that help fund our operations.
Table Of Contents
This article explains how to fix the MDXProvider error 'Warning: The tag <item> is unrecognized in this browser. If you meant to render a React component, start its name with an uppercase letter.' in Gatsby.js.
Error Details
Warning: The tag <item> is unrecognized in this browser. If you meant to render a React component, start its name with an uppercase letter.
Solution
As the error message suggests, component names must be written in uppercase.
Correct Example
import { MDXProvider } from "@mdx-js/react"
import ItemComponent from "../components/item"
const components = {
Item: ItemComponent,
}
const BlogPostTemplate = ({ data, location, children }) => {
return <MDXProvider components={components}>{children}</MDXProvider>
}
export default BlogPostTemplate
Incorrect Example
const components = {
item: ItemComponent,
}
Conclusion
While migrating from .md
to .mdx
, I encountered this error when trying to use the following approach:
import RehypeReact from "rehype-react"
const renderAst = new RehypeReact({
createElement: React.createElement,
components: {
item: ItemComponent,
},
}).Compiler
This issue arose when attempting to make it work in MDX as well.
I hope this helps someone facing the same problem.