You may have heard the term JAMStack being thrown around a lot recently in web development circles.
In my opinion, the defining features of JAMStack can be summarised as follows...
- Statically render your markup
- Use client-side fetching to make your site dynamic
- Decouple your backend from your frontend
These ideas have been championed by cool developer-tooling companies such as Netlify (whose founders coined the term), Vercel and a whole bunch of other companies building tools that empower the stack. For example, companies providing CMS products like Sanity or image hosting like Cloudinary.
JAMStack isn't that new
Chances are, if your blog is a bunch of static files, then you're already using JAMStack. Congratulations. Welcome to the club!
JAMStack is being sold to developers
The main way this new approach is being pushed forward is by capturing the attention of developers. Of course, these ideas wouldn't mean much to non-developers anyway.
This has led to what I would say is the biggest misconception about JAMStack, and that is... "JAMStack is about Developer Experience".
JAMStack Is Not About Developer Experience
Don't get me wrong. The developer tooling associated with the JAMStack revolution is well built and exciting.
Separating a messy backend from the frontend can be incredibly empowering for frontend developers. Having full decision-making control over the frontend without being constrained by choices made on the backend can be hugely impactful. Often this leads to more considered and accessible web experiences with an additional performance boost too.
But JAMStack is more than just the look on a developer's face after a really good coding session.
One of the down sides to JAMStack is that there can be so many decisions to make. What framework? Which tools? Which service?
There are lots of other approaches to web development that have a simpler onboarding process that also don't require you to make so many decisions. For many developers, this alone is a good enough reason to stick to their well-understood, battle-tested tools.
Developer experience is subjective.
Pushing it to the edge
I would argue that JAMStack is actually more of a push towards developing web applications that can take full advantage of improvements in cloud technology.
JAMStack apps were born to be served on CDNs.
CDNs are cloud networks that can serve your content from "edge nodes" in regions all around the world. The advantages of using a CDN, as opposed to having a server somewhere in the world, which will probably fall over at some point, is that your application can be highly available, scalable & fast to serve.
Highly available because if one region goes down, users will just be served up content from the next closest region.
Scalable because web traffic is automatically load balanced.
Fast because CDNs are optimised for fast content delivery, wherever you are in the world.
This is how the world works now
The development of this kind of technology is based on the fact that this is how the world works now. The nature of the internet is that your users can be anywhere. Therefore, it is important to make sure that irrespective of where your users are, they will always receive the best service.
JAMStack doesn't always make sense
On the other hand, deploying your site globally doesn't always make sense.
Whether you're building internal tools for your company or you just prefer the tried and tested path, you can always make a good argument for not choosing the JAMStack way.
I should also mention that using a CDN isn't a unique thing to the JAMStack. It feels most natural to use a CDN when serving static files but you can serve cached contents from a server-rendered application in the same way. There are added complications, such as cache-invalidation, but many applications run quite happily behind a reverse-proxy cache served through a CDN in regions all over the world.
The difference is, with JAMStack, this is delightfully easy.
For most developers, the wisest path to tread in 2020 is to build web applications the JAMStack way.
The overall advantage that JAMStack gives developers from the start is the opportunity to focus less on deployment and general performance and more about crafting an excellent user experience.