Aplicativos Web Progressivos

mobile 31 de Jan de 2017

Peças de Legos Fonte: https://www.jisc.ac.uk/sites/default/files/lego-buckets-inform-header.jpg

A web tomou de assalto o mundo da computação ao ponto de termos hoje um equivalente web para praticamente qualquer software imaginável. Isso mudou os nossos hábitos e fez com que consumíssemos software como serviço, bastando que o acesso a Internet através de um navegador estivesse garantido.

Ao mesmo tempo, vimos a web avançar lentamente sobre outros campos, invadindo os desktops e chegando até mesmo aos dispositivos embarcados como SmartTVs e outros IoTs, territórios tradicionalmente ocupados por linguagens mais próximas do hardware, como C e C++.

Desde o crescimento de uso dos dispositivos móveis, uma série de novas APIs foram gradualmente incorporadas à web, possibilitando o acesso aos diferentes sensores e hardwares presentes nos celulares atuais, tais como GPS, acelerômetro, microfone, câmera, etc. Aplicações cada vez mais complexas podem ser desenvolvidas apenas com HTML, JavaScript e CSS.

Progressive web apps vieram justamente para tomar parte do espaço que hoje é dominado pelas aplicações nativas. No fundo, apps web progressivos nada mais são do que web apps responsivos. Contudo, o time do Google Chrome cita 10 conceitos fundamentais que diferenciam apps progressivos de web apps comuns:

  1. Seguros: é necessário usar HTTPS para evitar que o conteúdo acessado possa ser visualizado por terceiros.
  2. Progressivos: o usuário começa acessando um website e pode optar por instalar a aplicação como um app, inclusive para acesso offline.
  3. Responsivos: ajustável para qualquer formato: desktop, mobile, tablet ou o que quer que venha pela frente.
  4. Independentes de conectividade: com uso de service workers para execução offline ou em redes de baixa velocidade.
  5. Aspecto de App: sensação, interações e navegação no estilo de apps nativos.
  6. Atualizados: sempre atualizados graças ao processo via service worker.
  7. Encontráveis: identificáveis como "aplicações" graças aos padrão W3C para manifests e registro de service worker, o que permite que sejam indexados por mecanismos de busca.
  8. Reengajadores: torne o engajamento fácil através de recursos como notificações push.
  9. Instaláveis: permita que usuários instalem os apps que considerarem mais úteis na tela de home sem que seja preciso passar por uma app store.
  10. Lincáveis: compartilhamento fácil através de URL e sem instalações complexas.

Não confunda apps progressivos com aplicações feitas em Apache Cordova, React Native, NativeScript, Electron ou NW.js. Essas tecnologias embarcam uma aplicação web em um contêiner executável, tal qual um .apk, .exe ou outros formatos existentes.

Por mais que você goste de desenvolver aplicações nativas, não há como negar que elas pecam no quesito produtividade: escrever uma base de código diferente para cada plataforma móvel (Android, iOS, Windows etc.) e outra para a web é algo escalável apenas para grandes empresas.

O conceito de apps progressivos é diferente. A ideia é oferecer uma experiência uniforme e otimizada para dispositivos móveis tanto no acesso web quanto na utilização offline "appficada".

Quem quiser saber mais sobre o assunto, pode começar pela palestra que Sergio Lopes fez no FrontinSampa e acessar a página do Google sobre progressive apps. Não deixe de acessar o site pwa.rocks com exemplos de bons aplicativos que utilizam a técnica.

Texto publicado originalmente na coluna "Post do Kemel" na revista Locaweb #64

Marcadores