27 January 2021

Web app, the ideal middle ground between website and mobile app

What is a web app? And what are the differences with mobile apps? Let's enter the world of the front end again to explore this fascinating aspect in greater depth.

We continue our analysis of the front-end that began with Augusto Montoni's discussion. We shall focus on web apps, a subject that Francesco Pasquini, Senior Front-End Developer, dealt with in his talk during the "mashfrog digital university", the training course organised by mashfrog to share the skills of the Group's various business lines.

What are Web Applications?

A Web Application is a software program that runs exclusively on the client side of all usable devices. It is an original program that is written from scratch, and that can “run” online, offline or via a corporate intranet. Basically, it is a cross between a website and a mobile app, with the difference that the web app does not physically reside in a device but on the web, and therefore does not need to be downloaded or installed to be used. Web Applications emerged several years ago, and they meet the same needs which drove the development of apps: to simplify life for the user, in this case avoiding the need to download software or overload the PC. 

What are they not suitable for?

At this point, Francesco lists three communication needs for which, according to his experience, web apps are not the most suitable solution; although he does specify that this technology can also be applied in such cases.

-    Showcase websites. It would not make sense to create a web app to build a showcase website, which is generally static and has few back-end functions. Furthermore, the source code of a web app is very compact and does not track any content, so it is not very functional from an SEO point of view.
-    Blogs, newspapers and documentary material. CMSs were developed specifically for this purpose; they come pre-configured to support such functionality with an effort much lower than that required by a web application. 
-    PoCs. Web apps are definitely not suitable for making demos to present to customers; indeed, it would be useless and expensive to develop features without knowing whether they will be used or not.

So what are they good for?

Let's see instead the main purposes for which web applications are the best technology to use.

-    Dashboards with charts and tables
-    Interactions with maps
-    Business management
-    Commercial enterprises (e-commerce)
-    PWAs (Progressive Web Apps).

In general, web applications are suitable for everything that is not "standard" and in any application where the customer requires a high level of customisation and wants to be independent in the use of various functions. PWAs, on the other hand, are created to solve the problem of web apps that no longer work when offline: they are web applications that work as if they were mobile apps, but with the advantage of also working offline. However, these technologies are quite innovative and not very consolidated. They don't yet offer shared best practices and standards useful for implementing them at their best.

Pros and cons of web apps

Francesco lists the strengths and weaknesses of web apps, starting with the main benefits.

PROs
-    Multilayer structure. A multilevel architecture is one that separates the front end from the back end and the database, enabling you to intervene over time on any one of the three levels without interfering with the others.
-    Maintainable code. This aspect depends a lot on how the programmer works, but if the work setting is shared with the entire team, the code can also be worked on by people other than the author of the core.
-    NPM community. This community enables developers to share their libraries, enabling others to download and install them on their own web apps, thus facilitating everyone's work.
-    They do not take up memory on devices. As mentioned before, web applications do not have to be installed and updated and therefore do not take up memory; this is because they rely on the browser cache.

CONs
-    Rendering for SEO. As already mentioned, web apps use a code that is not read by search engines and therefore does not allow for the default optimisation of content from an SEO standpoint.
-    Considerable effort and experience requirements. To develop a web app, resources must follow dedicated training paths or, in any case, have some sector-specific experience.
-    Complexity of certain features, such as the camera, GPS and Bluetooth, which are easier to operate with apps.
-    Security. More than a weakness, it is a fact: the security aspects can never be delegated to the front end, but concern the back end.

Looking ahead

In conclusion, Francesco shows us what the future evolutions of web applications can be, goals to aim for in order to obtain increasingly secure and certified programs.
-    OOP, Object-Oriented Programming, a technology that provides more solidity to the application and fewer bugs.
-    Scalability, which enables the integration of new features and sustains the long life of an application.
-    LTS framework, i.e. long-term support framework.
-    Conversion to APP. There are now more and more tools that enable web apps to be converted into apps. In the future, this will make it increasingly possible to create, with a single batch of code, both web apps that can be consulted on a site and mobile apps that can be downloaded from a store onto any device.
-    Microfrontends are mostly used for large projects in which various companies participate and to which diverse microfrontends can be coupled to ensure that teams can benefit from greater freedom of choice. 

Francesco Pasquini, Senior Front-end Developer, has worked for over ten years as a programmer, starting with relational databases and then moving on to the back-end. After laying the foundations and gaining experience in OOP languages, he decided to move to front-ends thanks also to the constant growth of typed frameworks. He joined mashfrog in 2018, where he mainly deals with front-end Web Application development.