Drupal, as you probably already know, is one of the most flexible and feature-rich CMS's. Due to the advanced support of JSON API and GraphQL, this framework is an ideal choice when creating both the server- and user-side of your web application.
Nevertheless, despite the fact that Drupal is mostly preferred for the flexibility it provides for developers, it is still not quite flexible enough to provide hyper-fast processing of user requests and implement immediate interface response to user activity. In order to solve these issues, the Drupal creators introduced the notion of decoupled - or headless - architecture. This type of architecture becomes useful when a developer needs to create an interactive web solution with a significant amount of dynamically-refreshed content.
In this feature, you will find out more about the role of React library in the creation of software solutions with decoupled architecture.
Why is Drupal sometimes not enough?
Ordinary employment of the Twig template engine and the jQuery library doesn’t always help achieve efficient user request processing. In particular, when the complexity of code constructions defining the project frontend-backend interaction increases, the project itself is being dramatically configured, which may decrease its performance and negatively affect the work of interactive elements. Instead of looking for new and even more complicated ways to resolve this issue, the Drupal creators decided to provide the users with an ability to personally pick the tools for front-end creation.
In this way, one gets not only the standard developmental environment but also the ability to use the built-in mechanisms for the increase of performance. Read on below about how it looks in theory and which technologies are best to use for it.
How to optimize the Drupal-based solution's performance with API
In the foundation of many modern projects based on web technologies lies integration with various APIs. Instead of wasting time working through specific functionality, web developers get the ability to work on the carcass of websites and apps. Thus, APIs are very powerful template solutions that lie in the base of the innovational-by-nature headless architecture.
As for the Drupal engine, according to the principles of the discussed architecture, it’s used only to build backend – a kind of an interface for content processing. API is ‘attached’ to the backend, with the help of which content is transmitted to the frontend (or even to some other receiver - a mobile app, for instance). Then, if necessary, it is transformed and goes back to the server via, again, the API in the renowned form.
Unfortunately, despite the rich history and advanced age of both mentioned structures, the methods of realizing interaction between them haven’t been studied that well yet. That’s why even many experienced programmers that worked with Drupal for some years in their commercial developments still haven't figured out the intricacies of setting up communication between the two.
What is headless architecture?
Generally speaking, the practice of combining Drupal and ReactJS allows programmers to create high-performance and highly responsive websites thanks to all the advantages they get from their favorite JS-framework or library (in our case, React - a very flexible, rapidly developing solution). Moreover, using React with Drupal, you can automate the data exchange and direct it to absolutely any CMS, or even a mobile application.
Drupal and React: how this combination works in practice
As you might have already understood, in order to create a headless solution, you need to build the two separate projects, each of which will belong to a dedicated subdomain. In this way, you’ll be able to separate the data and its realization, providing the first in XML/JSON/HAL+JSON formats and the latter in HTML format. Find out below how it looks stage by stage.
- Choose the suitable version of Drupal. For starters, let’s note that all the old Drupal versions (starting with the 7th and finishing with the older ones) aren’t sufficient for constructing the decoupled websites and apps. The connection between the backend built in Drupal and the backend written via ReactJS library is reached due to RESTful services. They, in turn, function well enough only in the newest, 8th version of Drupal;
- Write frontend in React. Everything is simple here. If you have already practiced React in work with commercial projects before, it won’t be that difficult for you to write the user part of the website/web application;
- Work on the server part. The server part, as has been mentioned, is built via Drupal 8. Once the backend is ready, we need to connect the REST module to it (or a GraphQL core module). It depends on what you prefer to work with – RESTful or non-RESTful architecture) and, optionally, such useful modules as REST UI/RelaxedServices/JSON API;
- Provide the server-side rendering. In order for rendering of dynamic components to run ‘properly’ (i.e. without felt delay), you will have to realize the server-side rendering via connecting the virtual server with Node.js installed on it. In this case, instead of several HTML files, your web solution will have to load only one, which will significantly accelerate the processing of changes and make it closer to the ‘real-time mode’.
Of course, everything described above can only help create a general picture of how combining React and Drupal app/website parts together works. You can find a detailed, rich-with-useful-links tutorial on how to provide integration between Drupal and ReactJS on Github.
Drupal and React for web development: conclusion
If you study the materials from the recommended sources, you might realize that it is not that simple to integrate an interface of a React-based web application. On the other hand, considering the benefits this integration brings, it would be no use ignoring it in most cases. So if you are planning to build an app with voluminous animation and a large number of interactive elements, but are not confident in your skills in headless architecture creation, let us help you! Contact our employees by one of the addresses on our website and we'll be glad to discuss all the details of your project.