Recursos

Os Progressive Web Apps podem fazer mais do que apenas renderizar conteúdo na tela ou conectar-se a serviços da Web. Os PWAs lidam com arquivos do sistema de arquivos, interagem com a área de transferência do sistema, acessam hardwares conectados ao dispositivo e muito mais. Todas as APIs da Web estão disponíveis para seu PWA, e algumas outras APIs ficam disponíveis quando o app é instalado.

Use What Web Can Do Today para saber o que é possível em cada plataforma. Para APIs ou recursos individuais, você pode usar Posso usar ou as tabelas de compatibilidade de navegadores no MDN.

Sempre verifique o suporte a recursos

A primeira letra em PWA significa "progressivo" e vem da ideia de aprimoramento progressivo e detecção de recursos. Você não espera que seu app funcione da mesma forma em todos os dispositivos. A diversidade de contextos e recursos em bilhões de dispositivos em diferentes países faz dos PWAs uma plataforma excelente, graças à progressão de cada um.

Isso significa que você precisa desenvolver o app em camadas que podem não estar disponíveis em todos os dispositivos e verificar a disponibilidade antes do uso.

Antes de usar a API, é necessário verificar com o JavaScript se ela existe ou perguntar a ela se um serviço está disponível no dispositivo em questão.

Web potente

A Web é muito poderosa hoje em dia. Exemplo:

  • É possível criar um app de chat por vídeo hiperlocal com WebRTC, geolocalização e mensagens push.
  • É possível tornar um app instalável.
  • Você pode adicionar efeitos de vídeo com o WebAssembly.
  • Você pode até colocá-lo em realidade virtual com o WebGL e o WebXR.

Capacitar seu PWA

Vamos dividir as APIs de recursos de PWA em quatro grupos:

  • Verde: APIs disponíveis em todos os navegadores e plataformas, quando tecnicamente possível. A maioria deles já foi enviada há muitos anos, é considerada madura e pode ser usada com segurança. Um exemplo de API desse grupo é a API Geolocation.
  • Verde-claro: as APIs estão disponíveis apenas em alguns navegadores. Considerando a falta de suporte em algumas plataformas, eles amadurecem dentro do subgrupo de navegadores suportado para que você possa usar o recurso com confiança neles. Um exemplo de API desse grupo é a WebUSB.
  • Amarelo: APIs experimentais. Essas APIs ainda não estão consolidadas. Elas estão disponíveis somente em alguns navegadores e dentro de testes ou testes. Falamos um pouco sobre esses recursos no capítulo experimental.
  • Vermelho: o grupo de APIs que não podem ser usadas em um PWA e onde os planos para adicioná-las ainda são de longo prazo. Um exemplo de API desse grupo é a fronteira geográfica virtual.

Recursos sustentáveis

Veja abaixo uma lista dos recursos mais importantes que você pode usar no PWA.

Princípios básicos

  • Como armazenar arquivos em cache localmente usando a API Cache, conforme visto no capítulo Como armazenar em cache.
  • Executar tarefas em linhas de execução usando workers da Web, como no capítulo "Gerenciamento de complexidade".
  • Como gerenciar solicitações de rede com diferentes estratégias em um service worker, conforme visto no capítulo Service workers.
  • 2D Canvas para renderizar gráficos 2D na tela usando a API Canvas.
  • Canvas de alto desempenho 2D e 3D ou WebGL (link em inglês), para renderizar gráficos 3D.
  • WebAssembly, ou WASM, para executar código compilado de baixo nível para melhorar o desempenho.
  • Comunicação em tempo real usando a API WebRTC.
  • Web Performance para avaliar e ajudar a fornecer uma experiência melhor. Consulte o guia da API Performance para mais informações.
  • Armazene dados localmente com o IndexedDB e o gerenciamento de armazenamento para consultar cotas e solicitar armazenamento permanente, conforme visto no capítulo Dados off-line.
  • Áudio de baixo nível graças à API Web Audio.
  • Detecção em primeiro plano usando a API Page Visibility.
  • Comunicação de rede usando a API Fetch e a API WebSocket.

Hardware e sensores

  • Gamepads para ler informações provenientes de gamepads e joysticks padrão conectados ao dispositivo usando a API Gamepad.
  • Autenticação biométrica (como reconhecimento facial ou de impressão digital) usando Web Authentication ou WebAuthn.

Integração com sistemas operacionais

Recursos verde-claro

Veja uma lista dos recursos mais importantes que podem ser usados no PWA, com a ressalva de que eles podem não estar disponíveis em todos os navegadores.

Conceitos básicos

  • WebGL 2.0, a nova versão da especificação WebGL para corresponder ao OpenGL 3.0.
  • Codecs, acesso de baixo nível aos frames individuais de um stream de vídeo e blocos de áudio; útil para aplicativos da Web que exigem controle total sobre a forma como a mídia é processada por meio da API Web Codecs.

Hardware e sensores

  • A opção Ambient Light lê o nível de luz atual ou a iluminação da luz ambiente ao redor do dispositivo, além da API Sensors.
  • A Vibração fornece ao usuário um retorno tátil quando algo acontece, se o dispositivo for compatível, com a API Vibration.
  • A gravação de mídia captura os dados gerados por um objeto MediaStream ou HTMLMediaElement (como uma tag <video>) para análise, processamento ou salvamento em disco, graças à API MediaRecorder.
  • Com a API Screen Wake Lock, a aplicação de um wake lock impede que o dispositivo escureça ou bloqueie a tela quando o PWA precisar continuar em execução.
  • A realidade virtual permite o uso de fones de ouvido e outros dispositivos no PWA, graças à API WebXR Device.
  • A realidade aumentada pode ser alcançada no seu PWA de várias maneiras, como usando a API WebXR Device ou o app Safari Quick Look para conteúdo de RA.
  • Detecte usuários inativos com a API Idle Detection.
  • Graças à API Screen Orientation ou à propriedade orientation do Manifesto de apps da Web para apps instalados, o bloqueio de orientação bloqueia a orientação para retrato ou paisagem enquanto o PWA está na tela.
  • Apresentar conteúdo em projetores e telas secundárias graças à API Presentation.
  • Bloqueie um ponteiro para receber informações de movimento delta de ponteiros (mouse, trackpads e ponteiros) em vez de valores de posição (útil para alguns jogos), graças à API Pointer Lock.

Integração com sistemas operacionais

Recursos