head > meta > content escaping issue
See original GitHub issueDo you want to request a feature or report a bug?
I’m guessing it’s a bug.
What is the current behavior?
The following source code,
<meta property="og:image" content="https://onepixel.imgix.net/60366a63-1ac8-9626-1df8-9d8d5e5e2601_1000.jpg?auto=format&q=80&mark=watermark%2Fcenter-v5.png&markalign=center%2Cmiddle&h=500&w=500&s=60ec785603e5f71fe944f76b4dacef08" />
, is being escaped once server side rendered:
<meta property="og:image" content="https://onepixel.imgix.net/60366a63-1ac8-9626-1df8-9d8d5e5e2601_1000.jpg?auto=format&q=80&mark=watermark%2Fcenter-v5.png&markalign=center%2Cmiddle&h=500&w=500&s=60ec785603e5f71fe944f76b4dacef08"/>
You can reproduce the behavior like this:
const React = require("react");
const ReactDOMServer = require("react-dom/server");
const http = require("http");
const doc = React.createElement("html", {
children: [
React.createElement("head", {
children: React.createElement("meta", {
property: "og:image",
content:
"https://onepixel.imgix.net/60366a63-1ac8-9626-1df8-9d8d5e5e2601_1000.jpg?auto=format&q=80&mark=watermark%2Fcenter-v5.png&markalign=center%2Cmiddle&h=500&w=500&s=60ec785603e5f71fe944f76b4dacef08"
})
}),
React.createElement("body", { children: "og:image" })
]
});
//create a server object:
http
.createServer(function(req, res) {
res.write("<!DOCTYPE html>" + ReactDOMServer.renderToStaticMarkup(doc)); //write a response to the client
res.end(); //end the response
})
.listen(8080); //the server object listens on port 8080
editor: https://codesandbox.io/s/my299jk7qp output : https://my299jk7qp.sse.codesandbox.io/
What is the expected behavior?
I would expect the content not being escaped. It’s related to https://github.com/zeit/next.js/issues/2006#issuecomment-355917446.
I’m using the og:image meta element so my pages can have nice previews within Facebook 😃.

Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React? 16.5.2
Issue Analytics
- State:
- Created 5 years ago
- Reactions:34
- Comments:25 (6 by maintainers)
Top Results From Across the Web
Escaping Meta Tag Content? Help - support - HUGO
Hi there. I'm currently running into a frustrating issue that I can't seem to figure out =/ I've got a template that looks...
Read more >Meta tag code is breaking and showing in wordpress site's ...
The problem is: In some posts that code is breaking the meta tag code, ... of the post is showing up on the...
Read more >What's in the head? Metadata in HTML - MDN Web Docs
The <title> element is metadata that represents the title of the overall HTML document (not the document's content.) ...
Read more >4.2.5 The meta element — HTML5: Edition for Web Authors
If the http-equiv attribute is present but not in the Encoding declaration state: in a noscript element that is a child of a...
Read more >HTML meta tag - W3Schools
The <meta> tag defines metadata about an HTML document. Metadata is data (information) about data. <meta> tags always go inside the <head> element, ......
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found

In meta tags escaped paths don’t work… otherwise, this bug would not have be opened.
This is not a bug in React. Using an entity reference for
&(e.g.&) is the correct behavior for xhtml documents:In the HTML spec you do not need to use a character reference for
&as long as what follows it is not a string that forms a named character reference.The example they give is:
Personally, I feel like React made the right call with escaping
&since that works in bothXHTMLandHTML5.