There's been a movement for some time now surrounding decoupling the front-end of websites in order to increase responsiveness and ease of development. It's an interesting idea and I can certainly see the benefits. Traditionally, the front end of a website would be tightly coupled to the back end, so taking Drupal as an example, Drupal has its own ecosystem with it's own concepts of how the code is arranged and executed. The back-end has a strict module system which needs certain files to be in certain formats at certain places in order for Drupal to find and interpret them.

This is also the case for Drupal's theming system. Theme files need to be a certain format, in a certain location, using certain templates according to certain rules. For Drupal specifically, you can change lots of these conditions, however, you are very much locked into the Drupal ecosphere.

Now lets say you wanted to, instead of using Drupal's theming system, use a React or Angular app on the front-end? You didn't want to have to deal with the nuances of Drupal's template suggestion system or you wanted an AJAX front-end? The way to achieve this would be to decouple the front-end... literally remove the front-end from the back-end. So the back-end could still be Drupal with all the goodness that comes along with that (user management, permissions, content types) but you could use whatever software you'd like for the front-end based on the situation and your expertise.

This setup is becoming more popular nowadays and in theory, is not that difficult to setup. All you need is a back-end that you can query for information and a front-end that displays that information. In practice, this normally takes the form of using REST APIs to query the back-end database using a front-end service, which unpacks the response and changes the view as necessary. This can all happen asynchronously so it can make the website appear faster to visitors.

From what I've seen of it so far, I can see the following pros and cons:

Advantages

  • Updating the front-end is completely separate from the back-end, so there is little to no risk of a front-end release breaking the back-end.
  • Front-end specialists may feel more comfortable since they will be working in isolation, their own ecosystem, completely controlled by the front-ender.
  • Asynchronous page loading always looks cool (and appears faster to site visitors).

Disadvantages

  • Setup can be more complicated since you essentially have two systems talking to each other... it will generally take longer.
  • This setup tends to be more bespoke, there are fewer out of the box solutions.
  • This isn't necessarily a disadvantage, but you will have a divergence of the front and back-end skill set. It will further reinforce the separation of front-end and back-end specialists.

This architecture is still relatively new and so I'm looking forward to seeing how it matures in the coming years.