Apple está finalmente implementando uma importante especificação no Safari/WebKit!

O Safari é, obviamente, um navegador muito relevante no iOS, porém ainda mais relevante é o seu motor de renderização — o WebKit. O motivo é simples: a Apple obriga a sua utilização por todos os outros navegadores, ou seja, quando você usa o Chrome, por exemplo, você tem acesso às funcionalidades do navegador do Google, mas a renderização da página em si é toda feita pelo WebKit (na verdade por um fork dele, chamado Blink).

Obviamente a Apple tem os seus motivos para ter feito tudo dessa forma: facilitar a vida dos desenvolvedores (que só precisam testar as suas páginas uma única vez) e dos seus usuários (que têm uma experiência consistente, independentemente do navegador).

Ícone do WebKit

Mas isso também tem um lado negativo: se o WebKit deixa de implementar algo relevante para a evolução da web, todos os navegadores para iOS ficam juntamente parados no tempo.

Quem utilizava a internet no começo dos anos 2000 deve se lembrar que o Internet Explorer dominou a então chamada “guerra dos navegadores” por muitos anos, atrasando — e muito! — as novidades para a web. Entre os lançamentos das versões 6 e 7 do navegador, por exemplo, foram mais de cinco anos de espera! Não é à toa que muitos desenvolvedores queriam a qualquer custo a morte da sexta versão.

E o que esse cenário da década passada tem a ver com o Safari/WebKit? Bom, a Apple estava começando a ganhar uma fama similar, já que negligenciou por um bom tempo algumas importantes especificações web (um tanto injustamente, eu diria).

Mas, felizmente, trazemos uma boa notícia: uma das especificações mais importantes que ainda não está presente no Safari, os Service Workers, teve o seu status de implementação no site oficial do WebKit alterado. Antes exibido como “under consideration” (“sob consideração”), agora é apresentada como “in development” (“em desenvolvimento”)! É possível inclusive ver que os primeiros passos já foram dados.

Service Workers sendo implementado no WebKit

O que são Service Workers?

Sem entrar muito em detalhes técnicos, essa especificação permite que scripts de páginas rodem em background (plano de fundo). Pode não parecer grande coisa, mas é!

Algo que passa a ser possível com isso, por exemplo, são as páginas que funcionam offline (obviamente você precisa entrar pelo menos uma vez no site). Outra coisa bacana que passa a ser possível são notificações push mesmo sem ter o app instalado — no entanto, ainda é cedo pra dizer se a Apple irá ou não permitir isso.

Existem outras vantagens, como melhorias em performance (veja aqui algumas análises) e também um gerenciamento de cache mais eficiente.

Um pouco sobre PWA (Progressive Web App)

Service Workers são extremamente importantes para que os PWAs sejam suportados no iOS. De forma bem resumida, PWAs são web apps (aplicativos que rodam no navegador) que, quando o navegador suporta determinada funcionalidade, usufruem destas; mas quando não suportam, também funcionam perfeitamente.

Essas funcionalidades estão geralmente relacionadas àquelas antes disponíveis apenas para apps nativos, como exibição em tela cheia (sem a barra de endereços do navegador), acesso aos sensores do aparelho (giroscópio, acelerometro, etc.), envio de notificações push, funcionamento offline, entre outras coisas.

Curiosamente, a App Store não existia no iOS iPhone OS 1.0 e apps de terceiros rodavam apenas em navegadores, muito similar à proposta dos PWAs. Como bem sabemos, isso tudo mudou: apps nativos são muito mais populares no mundo móvel atual, mas por uma série de motivos (os quais eu deixarei para um artigo futuro) vemos a ideia dos web apps voltar lentamente.

A verdade é que é quase impossível prever como os aplicativos serão desenvolvidos no futuro, mas eu particularmente acredito muito que ambas as estratégias (apps nativos e PWAs) coexistirão por um bom tempo, dado que cada uma tem as suas vantagens.

Ok, parece legal! Quando chegará?

É bastante improvável (pra não dizer impossível) que isso chegue na primeira versão estável do iOS 11, mas muito em breve desenvolvedores e usuários verão essas novidades. Lembrando que, quando o dia chegar, qualquer navegador no iOS passará a suportar essa especificação automaticamente!

Nos resta torcer para que não demore muito, afinal, essa é uma daquelas mudanças em que todo mundo sai ganhando! ᕕ( ᐛ )ᕗ

Taggeado:

Posts relacionados

Comentários