I love the Jamstack and have been using it for every web project of mine for the past few years. I've never necessarily needed anything that static sites couldn't give me but there have been times where I've come close and really had to push the limits of static site generation.
The main drawback for static sites is that anything "dynamic" has to be done client-side with JavaScript or some funky API calls. Most of the time, what you see on a static site is what everybody sees, sometimes minus a few tweaks such as color scheme or language.
The major issue I see with static sites is that they are very difficult for a non-technical fellow to maintain. As a developer, it's easy to maintain: just push your next Markdown post to the GitHub repo. But try asking anyone other than a developer how to do that and they won't have a clue.
I mean, I struggle to teach my non-developer buddies Markdown.
Let's say you want to host an online magazine with your buddies. If you decide to take the static approach, good luck teaching your friends how to get their posts onto the GitHub repo. Chances are that'll be your job. You'll have to convert whatever they write to Markdown and upload it to the repo yourself.
In a dynamic site, you would have a backend to handle all that stuff. Just give them a username and password and all is well.
Fortunately, there is a solution: the headless CMS! But to me, this feels like too much fiddling around. What sucks is that the main reason I like static sites is also their biggest drawback: they're simple.
I like being able to chuck files onto the GitHub repo and call it a day. I also like not having to manage a whole new tech stream that is a headless CMS. I like static sites being a one and done deal, no external CMS needed.
The main reason I am so persistent that everything I do has to be static is because of the raw dollars I save on hosting.
Static sites are much cheaper to get online. You don't need a dedicated environment to construct the webpage on load. Just chuck the HTML files on cloud storage.
I see this as a huge perk I have as a developer. If my non-technical friends wanted to make a website for their business/whatever, they really have to open their wallets and shill out an expensive monthly fee to some corporation.
Whereas all I have to do is npm install
a few things and connect the GitHub repo to Netlify. It's crazy how it's this easy...for a developer.
Sorry if you came to this article looking for an answer, but I'm trying to figure that out too.
It seems simple on the surface. If you need a backend and/or admin accounts: go dynamic.
But with a headless CMS, or just very tech-savvy friends, you can make a static site work.
I do think where we have to draw the line though is when it comes to visitor accounts and user-generated content.
Maybe you could hook up some rig where all user posts are just pushed to a GitHub repo, but I think at that point, you might as well shill out the extra bucks for a proper dynamic host and a SQL database.
Buuuuut there are static sites out there that do exactly this for public comment threads.
So...where do we draw the line? Probably somewhere between a news site and a social media platform.
If you have any ideas for how to improve this article, please contact me. This came out far more technical than I planned so there may be a few facts that aren't technically true.