Why do they call it Jamstack and when should I use it?
The jamstack is useful in quite a lot of situations, and this is due in part to the broad nature of the term. You see while some “stacks” refer to a very specific group of technologies brought together to form a set, the jamstack does not.
Where does jamstack fit in?
Take the MERN stack for example, the M in MERN means Mongo, a JavaScript document database. The E, Express, a server side JavaScript library. R, React a JavaScript UI library and finally N for Node the technology that makes it possible to run all this JavaScript on the server in the first place. The MERN stack clearly uses a very specific set of technologies, each one getting a letter in the name. This isn’t really how jamstack gets its name. You see the J in jamstack stands for JavaScript. Something all the technologies in the MERN stack use, and funnily enough MERN apps are not really jamstack*. So then you might wonder what jamstack means then?
JAMstack breaks down into:
- JavaScript
- API’s
- Markup
If you are a programmer used to other stacks this might actually confuse you a bit. This may seem a bit vague. That is because while it uses the word stack it is almost more of an architecture similar to how MVC is an architecture. We don’t call it the MVCstack though. On Jamstack.org they have a great post explaining what the actual ideas behind the jamstack are, but to briefly summarize. Use static site builders to build out a majority of your site. Then use API’s, either third party or custom built to add as much dynamic content as you need. It is a really awesome idea that has been around for a long time.
Before the jamstack was JAMstack
Well before it was called that JAMstack I started messing around with this approach after learning that Development Seed uses something called Jekyll. You could even use AJAX and build a Rails API and you where fully jamstacking in the Victorian era. I was making many a todo app this way let me tell you, and even a little bit of client work. A bit strange to reflect on this time and remember using things like CoffeeScript to make “jamstack” apps.
Back in the Jekyll days this was a fine way to build some sites. As long as your client was basically entirely hands off it was no problem. You can even still see most Development Seed posts from back then take a widely anti-cms stance. Back then most people relied on some UI that you could write posts in that would commit markdown to a GitHub repo. Wild times, obviously clients hate this, most of this is different now. Client hand-off for jamstack sites is really easy while still giving a lot of power to a non technical content manager of the site.
This improvement in client experience is something I was long awaiting to reach the stages it did in 2019. These improvements where mainly do to the SaaS eco-system that sprung up in the space. One of the early examples that is still doing well is Contentful but nowadays there are countless options. While waiting for this upgrade in the CMS eco-system something I did not see coming happened, and the whole web moved to JavaScript stacks.
Putting the J in Jam.
It was around this time I started seeing the jamstack word used on talks found on YouTube, and learned about Netlify. I was using Github Pages and Surge if I remember right. JavaScript static site generators where not fun to work with. The main one I remember was Metalsmith, and compared to Jekyll this was not tool for me. This all changed when Gatsby came along. By the time I found Gatsby I had already taught myself React. This was the perfect tool at the time. I dove super deep into Gatsby and learned most everything there was to know. It is still an incredible tool to this day. Overall, I am very happy the world moved to JavaScript stacks and embraced the jamstack method.
You are probably still wondering when you should use the jamstack. I hope that by providing you some history you might have perspective on why my answer to that is very simple. If you are investing in a web project, you should likely consider the jamstack, with very few exceptions. I personally have built most of my websites this way for a long time now and plan to continue for the foreseeable future. I recommend it to most clients I speak to, and only see things improving in the future for the jamstack.
*I think MERN apps can be hosted as cloud functions and you could certainly make a case for this being a jamstack app, but traditional MERN apps are not.