Skeletons are just another big, flashy indeterminate loading bar. They feel slightly faster because you can get a feel for the content layout, but only as long as the size and behaviour perfectly matches the loaded content. Usually they don't, and the entire screen reflow six times before all the skeletons are loaded in, which take up more precious data to slow down the important parts of your application as well. Most of the time they feel slower because you're actively being tricked as a user by the "almost there" page layout. They're an indeterminate loading spinner in disguise.
If you want to make your code feel faster, show your users that something is happening. Give them actual, real progress bars. Fill up a bar somewhere as content comes streaming in from your myriad of endpoints and unnecessary tracking libraries. Focus on shaving down your load times instead of optimizing the way you show them! Do you really need those four JSON calls to load data that could've been in the HTML the first time?