Inline styles are good enough. In fact, with React it’s the best way to go.
CSS was invented before we had programming abstractions (like functions or variables) to generate our HTML. If you wanted to make every header on your page big and blue, you had to wrap each one in a
<font face="verdana" size="5" color="blue"> tag. This got tedious. In a programming language, you would just write a function
header() or a variable
header_style and re-use it. But HTML doesn’t have functions or variables, so the W3C invented a new language with abstractions for style, called CSS.
And then, of course, CSS wasn’t good enough, because it didn’t have arithmetic and variables. So we had to invent new languages on top of it, like LESS and SASS.
Yet, people are so used to CSS that they think they still need it. They’ve invested so much energy into learning its intricacies, and developing complex, customized workflows that regularly exploit its most elaborate features that they’ve become defensive and resistant to the suggestion that it isn’t necessary. The same thing happens when people try to suggest that GIT can be simplified—check out this academic research on how people react to a simpler GIT.
The people who argue for separation between content and style often don’t know the history of their dogma. You see, HTML evolved from SGML, which was designed at IBM’s in-house technical document writing, where it was deemed more proper for a technical writer to care only about the words and not the fonts used. This developed a cult following at IBM, along with the color blue, 7-bit character codes (instead of 8), and a few silly songs. This cult followed the WWW mailing list, since it used an SGML derivative, and was very vocal in the standardization process to separate content from style, even though it doesn’t make sense now that 90% of HTML is written to achieve a custom look. I mean, how many DIVs does the average page have today, just to help arrange things within things so that they nest properly on the page?