Nice usage of newer APIs to check for the font...
That said, I really appreciate the work that went into react-icons, to take several open icon libraries (including FontAwesome's) and normalize them into SVGs and wrap them in a React library. This way if you only use 5 icons, you don't load the whole font, and don't have to setup a custom font builder toolchain.
Although it touches on it... it's a bad example... I tend to prefer early return wherever possible, and putting the shortest conditional group higher. I feel that "else" is usually a code smell.
Likewise, I will sometimes use continue to avoid additional logic vs. a larger nested conditional block.
I find that the flatter the code the better, and that being able to see everything you need to see on screen, where practical is very important... shorter methods, etc.
One more minor disadvantage is that fetch can't make synchronous requests, which means it can't be used to implement, for example SCORM directly on the server... though you could create a caching interface that did use fetch.
LOL at the reference to npm being "oh, like Bower" which is funny because you need node+npm to install Bower... something I always found incredibly amusing. and the biggest knock against Bower in the first place.
The rest of the rant is a little funny, but seriously... for the use case, jQuery would probably be fine... I'd probably use babel with the polyfills, and run through that.
It looks like there's definitely a push to get the async bits all in time... I think object rest/spread and object props are both pretty important in terms of cleanliness and usability.