React Helmet: Facebook Open Graph
Most search engines and crawlers use server's response directly, not allowing you to alter it with javascript. So yes, what you need is server-side rendering.
Or, you can use tools like gatsbyjs, react-static. Basically, they render your components into HTML files beforehand.