I think it's great they did what works for them. Personally though, I am starting to believe React, or indeed any reactive framework, is extremely ill suited for most websites. It adds a layer of complexity on many levels that IMHO is not worth the tradeoff. Not only the amount of tooling required (node_modules), also the fact that you're expected to write all your own elements (components) and override default browser functionality, and expect all of that to work perfectly (forever) is baffling to me. React is an extremely complex layer that abstracts away a quite simple and well understood concept: markup. If your content is mostly static, just use markup and sprinkle a bit of js on top of you must. Your visitors will be grateful. If you're building a web based application, which you're probably not, use React.
I'm sorry but you lost me at “Write blog in React.” The art/science and tech of writing should be as decoupled as possible from the tools (CMS, React, etc.) Make people write -- then enable the features, UX, and the other facades of a blog with the tooling -- React, Vue, WordPress, Movable Type, Blogger, and FooBar.
From TFA:<p>> <i>My idea was that surely it's possible to write a bunch of markdown, and then have that get wrapped in a bunch of JSX tags that come pre-styled, using the styles of your existing repo? For example, what I expected was to be able to write *test* (Markdown for bold) and then get a component that looked like<Bold>test</Bold> where <Bold> is a library-defined React component</i><p>It surely is possible, so perhaps I can share some links if others are wondering the same thing.<p>If you like to roll your own solution for that, you can use the unified ecosystem: <a href="https://unifiedjs.com/" rel="nofollow">https://unifiedjs.com/</a><p>However, if you want JSX just do what everyone does and reach for MDX:
<a href="https://mdxjs.com/" rel="nofollow">https://mdxjs.com/</a><p>> <i>We thought this would be a no-brainer and that there would be some CMS/SSG libraries out there that made this Markdown conversion process easy and facilitated integration with any number of frontend frameworks.</i><p>You thought correct:<p>- NextJS MDX integration: <a href="https://nextjs.org/docs/pages/building-your-application/configuring/mdx" rel="nofollow">https://nextjs.org/docs/pages/building-your-application/conf...</a>
- Gatsby MDX integration: <a href="https://www.gatsbyjs.com/docs/how-to/routing/mdx/" rel="nofollow">https://www.gatsbyjs.com/docs/how-to/routing/mdx/</a><p>Or check <a href="https://jamstack.org/generators/" rel="nofollow">https://jamstack.org/generators/</a> for more options
But since you seem to like
So when the primary purpose of your blogs content is to deliver information accessibly, any user block JavaScript by default for security/privacy, any TUI browsers, & we crawlers get nothing but a blank screen—not even a noscript. You can’t convince me this is a rational usage of a technology—this is essentially static HTML. There’s a lot of justified complaints in here about how terribly limited Markdown is for creating blogs/documentation, but the solution shouldn’t be jumping to React but consider choosing something with better features & extensibility for actually writing something beyond a comment (such as reStructuredText or Asciidoctor).
> We recognized that a full-on SSG wasn't going to do the job.<p>Why? The article doesn't explain.<p>> it turns out that it's not so easy to "just use a CMS." Like many others, we initially looked into popular ones like Ghost, Hugo, Jekyll, and Publii<p>I don't know what Publii is; but Hugo and Jekyll aren't CMS's.<p>> all I really wanted was to be able to write Markdown, and then get some React Components that were styled well enough to use in my blog<p>Why was this a technical requirement? Why should the output from Markdown be a React component? Why does she need React for her blog? The article doesn't say.
I think being in a position where the person writing the content is comfortable with writing code and/or won't make a mistake that will mess with layout etc is pretty unique.<p>I would imagine that's the most common reason people use a CMS.
I don't want to be the jerk in the comments but this seems pretty poorly conceived.<p>* What are you going to do when you hire a non-technical writer down the road?<p>* The handwringing about control over SEO smacks of NIH and makes little sense. It feels like a very thin justification for this weird scheme.<p>* You are a technical company but you couldn't figure out how to apply your look and feel, which isn't unique and feels like a bootstrap template, to something or anything else.<p>* Your content is JSON in JS<p>I'm going through some of your blog posts and I just don't see where this kind of overkill is necessary. Nothing I'm seeing can't be represented in markdown with a little front matter. I mean MDX lets you use react components, which doesn't feel like a good idea to me either but feels like a better idea than this.<p>I dunno, kind of a strange read first thing in the morning.
My first reaction was to think that someone is re-inventing the wheel again for not good reason, but as usual "it depends".<p>If you are trying to have your blog as your main website and not just one sub-category it makes sense to use a blogging framework (Hugo, Ghost, Wordpress etc.), but I realized that having a blog integrated in a product isn't so straight forward if you want to keep your existing footer, header, CSS and share it.<p>I tried to use Hugo to integrate a blog in my Rails app but it was a bigger amount of pain than just doing it quickly in your existing code base with all the tools and styles already available.
Wondering why Docusaurus (<a href="https://docusaurus.io" rel="nofollow">https://docusaurus.io</a>) did not match their needs. Works perfectly fine as a blogging engine for our tech blog.
A project I've been slowly working on over the years is JSON Blog -> <a href="https://github.com/jsonblog/jsonblog-cli">https://github.com/jsonblog/jsonblog-cli</a><p>The idea being you can have a file called blog.json, and your entire site structure can be generated from it. (in whatever fashion you want aka templates)<p>You can store the content of the blog posts in the blog.json or they blog posts can reference something at a quasi permanent place e.g. ipfs
The author may be conflating rendering and content management.<p>There's been a huge push in the past few years for "headless CMS": content is managed entirely separately from the actual website or app where it's leveraged.<p>In this specific case, YAML frontmatter MDX along with Next.js, Gatsby or similar would have done the trick.<p>Shameless plug: if you want to focus on managing content rather than juggling YAML and git, I'm building Pages CMS [1]. It adds a user friendly interface on top of GitHub when dealing with flat files.<p>[1]: <a href="https://pagescms.org/" rel="nofollow">https://pagescms.org/</a>
Really surprising to hear these folks couldn't have written a e.g. Hugo template to fit the site's look and feel in a very short amount of time.
This risks making your blog invisible to search engines, unless their crawler goes to the significant additional expense of either executing JavaScript or developing a custom spider to identify and load the JSON directly.
“Specifically, sure we could write a Ghost blog that used our preferred font and colors, but it still wouldn't have the GetWaitlist navigation header or footer or "look and feel" of the rest of our website. Plus, if we wanted production deployment to be easy at all, then we'd have to host it on a subdomain.”<p>This is entirely incorrect. If you want to reproduce your header and footer in some other thing, simply copy your header and footer! View-Source, copy, paste. It’s that easy.<p>Hosting it on a subdomain? Nope, you don’t have to do that either. You can use nginx to serve the path, you can use httpd to serve the path, you can use AWS ALB’s, HAProxy, pretty much every web server that can load balance can host your path to the blog outside of the path to /.<p>I stopped reading after this failure to do due diligence and use common sense.
give keystatic a try: <a href="https://keystatic.com" rel="nofollow">https://keystatic.com</a><p>- open source<p>- configuration files for the cms data model<p>- github based (no database)<p>- yml, markdown, json output<p>- simple and aesthetic