Headless web development sadly doesn't actually have anything to do with jam...
So what is it?
Jamstack.org seems as good a place to start as any:
Jamstack is an architecture designed to make the web faster, more secure, and easier to scale. It builds on many of the tools and workflows which developers love, and which bring maximum productivity.
Sounds good so far, but let’s break things down a bit.
Getting into a jam
For the past decade or two, web pages have generally been rendered on-demand. When you visit a site, your computer (the client) requests a resource from another computer (the server). The server gathers all the stuff required to display that resource, arranges it in a nice readable template and serves it back to you.
This approach relies on monolithic software. This means that most (if not all) of the data, logic, and presentation is handled in one place – usually a CMS such as WordPress. Systems like this trend towards bloat and can become difficult to maintain, time-consuming to work on, and susceptible to bugs. This is part of the reason complete rebuilds are necessary every few years.
Many popular systems have evolved to be more extendable and flexible (with theme and plugin ecosystems). But this is just kicking the can down the road. Just ask any developer who’s had to maintain a plugin-laden CMS for a few years and note the thousand-yard stare.
By contrast, Jamstack sites adopt a headless approach. Instead of handling the head (the user-facing bits) in the CMS, it becomes a completely separate entity with data pulled from multiple sources – a process known as decoupling. These elements are then combined into highly optimised pre-rendered files.
- Decoupling means that the services used (or even the site itself) can be swapped out with relative ease as business needs change. Those same services can also be used across multiple websites and apps if necessary. This benefits content creators and developers.
- Pre-rendering means that the entire site can be served statically from a Content Delivery Network (CDN), which boils down to being extremely fast – a dream for the user experience and SEO crews.
- Since the site is served statically, there are fewer opportunities for cyberattacks such as SQL injection.
- You won’t be short of options either – there are lots of headless CMS and static site generators at this point as Jamstack spreads, and just about every serious web service provides some kind of API.
- Some traditional CMS (such as WordPress) also provide APIs to expose their content, so some of your needs might already be catered for!
- It requires a significant investment in time and skills if you don’t already have the knowledge and resources available.
- With traditional CMS, a lot of common website features (e.g. SEO best practices, user login) are provided OOTB. Although Jamstack (and headless approaches in general) grant greater freedom, there’s a certain amount of redundant effort in resolving these problems in a new context.
- There aren’t as many support resources as there are for more established technologies. Nothing insurmountable, but it can extend the time taken to solve problems.
- More data services means more things to go wrong! This means more work upfront to select reliable data services and implement them in a robust way.
- There are some problems specific to the Jamstack space. For example, when you update content in your CMS it isn’t available until the site is built again, so you need to find a way to trigger a site build based on updates – potentially an issue on larger sites, where full builds can take some time to complete. One solution to this is atomic deployment as provided by hosts such as Netlify.
So what now?
The best way to get started with Jamstack is to get stuck in! Jamstack.org is a great starting resource with curated lists of frameworks and CMS options. You should also check if your current CMS of choice provides an API that a Jamstack site can leverage.
You’ll also need to consider hosting – there are a few options for this ranging from generalised hosting to hosting optimised for Jamstack. Other specialist hosting companies are increasingly providing support, one example being WPEngine with their hotly anticipated Atlas solution.
There’s a lot to love about the Jamstack architecture, and some clear benefits to be gained if you can handle the hurdles. It’s also a compelling option if you practice continuous improvement paradigms such as Growth Driven Design.