Skip to content
Programing

Flutter 3.22 e a Chegada do WebAssembly Estável: Um Novo Nível de Performance para a Web

Published: Duration: 7:44
0:00 0:00

Transcript

Apresentadora: E aí, pessoal, bem-vindos de volta ao Allur! Eu sou a Juliana Santos e é um prazer enorme ter vocês aqui com a gente em mais um episódio. Se você trabalha com desenvolvimento, sabe que a promessa do "escreva uma vez, rode em qualquer lugar" sempre foi o Santo Graal da nossa área, né? Mas a gente também sabe que, na prática, a performance na web nem sempre acompanhava o mobile. O Flutter sempre foi incrível no iOS e Android, mas quando a gente falava de web, sempre ficava aquele "mas..." no ar por causa das limitações do JavaScript. Pois é, esse "mas" acabou de ganhar um xeque-mate. Com o lançamento do Flutter 3.22 e do Dart 3.4, a Google finalmente trouxe o suporte estável para WebAssembly, o famoso Wasm. Isso muda tudo, gente! Não é só um ajuste, é uma evolução de patamar na velocidade e na renderização. E hoje a gente vai mergulhar fundo nisso e também no novo motor Impeller para Android. Se segura aí, que o papo hoje é sobre o futuro da performance cross-platform! Apresentadora: E para desbravar essas novidades comigo, eu recebo hoje o Rafael Brandão. O Rafael é Tech Lead e especialista em Flutter, com anos de estrada construindo aplicações complexas. Rafael, seja muito bem-vindo ao Allur! Cara, que momento massa pra gente conversar sobre Flutter, hein? Convidado: Valeu demais pelo convite, Juliana! É um prazer estar aqui no Allur. E olha, você falou tudo: o clima na comunidade Flutter agora é de "finalmente!". A gente tá vivendo um marco, tipo assim, um divisor de águas mesmo. O Flutter 3.22 não veio pra brincadeira, e falar de Wasm e Impeller é falar de como a gente vai entregar apps muito mais fluidos daqui pra frente. Apresentadora: Pois é, Rafael, vamos começar pelo "prato principal": o WebAssembly estável no Flutter 3.22. Explica pra gente, de um jeito bem pé no chão: o que o Wasm tem que o JavaScript não tinha para fazer o Flutter Web voar desse jeito? Convidado: Boa pergunta, Ju. Cara, o lance é o seguinte: o JavaScript é uma linguagem incrível, mas ele é interpretado, dinâmico. Quando a gente rodava Flutter na web via JS, tinha muita tradução no meio do caminho, o que gerava um certo "overhead". O WebAssembly, ou Wasm, é diferente. Ele é um formato binário de baixo nível. Pensa nele como algo muito mais próximo da linguagem que o processador entende. Com o Flutter 3.22, o código Dart é compilado diretamente para Wasm. O resultado? Cara, a gente tá falando de uma performance que é de duas a três vezes superior ao método tradicional. Sabe aquela sensação de "app travadinho" na web? Com Wasm, isso praticamente some. Apresentadora: Caramba, 3x mais rápido? Isso é muita coisa! Mas assim, na prática, pro desenvolvedor que tá ouvindo a gente agora... o que ele consegue fazer hoje no navegador que antes ele ia pensar duas vezes antes de tentar com Flutter? Convidado: Ah, as possibilidades explodiram! Tipo assim, ferramentas de edição de imagem pesada, dashboards com milhares de dados em tempo real, ou até jogos mais complexos que antes ficavam "engasgando" no browser. Eu tive uma experiência recente num projeto de visualização de dados financeiros, com muitos gráficos interativos ao mesmo tempo. No JS, o frame rate caía bastante. Quando a gente testou a compilação pra Wasm nessa nova versão, a fluidez foi bizarra, parecia que eu tava rodando um app nativo no meu desktop. É aquele momento "aha!", sabe? Você percebe que a barreira entre o que é "site" e o que é "app" tá sumindo de vez. Apresentadora: Massa demais! E por falar em fluidez, não dá pra ignorar o mobile, né? O pessoal do Android sempre teve aquela pontinha de inveja da renderização do iOS, por causa do Impeller. Mas agora o jogo virou com o Flutter 3.22, certo? O Impeller tá finalmente completo para Android? Convidado: Exatamente! Esse era o outro grande elefante na sala. No iOS, o Impeller já tava brilhando, mas no Android o Flutter ainda dependia muito do Skia, que sofria com o tal do "shader compilation jank" — aqueles engasgos chatos logo que você abre o app ou faz uma transição de tela pela primeira vez. Com a versão 3.22, o motor Impeller agora tá estável no Android para dispositivos que suportam Vulkan. O time do Flutter praticamente reescreveu como o app desenha os pixels na tela. Eles otimizaram tudo pra evitar esses travamentos. Apresentadora: E você já sentiu a diferença em apps de produção? Porque o usuário final nem sabe o que é Vulkan ou Impeller, ele só quer que o app não trave, né? Convidado: Com certeza, Ju! Pro usuário, a percepção é de um app "premium". Sabe quando você faz um scroll rápido numa lista cheia de imagens e dá aquela micro-travadinha? Isso é o que a gente quer matar com o Impeller. Eu atualizei um app de e-commerce pro 3.22 semana passada e a diferença nas animações de transição de hero e no scroll da vitrine foi nítida. Parece que o app ficou mais leve, mais responsivo. E o legal é que, como desenvolvedores, a gente ganha isso "de graça" ao atualizar a versão, sem precisar ficar fazendo gambiarra pra otimizar shader. Apresentadora: Isso é música pros meus ouvidos, Rafael! Menos gambiarra e mais performance nativa. Agora, mudando um pouco de assunto, mas nem tanto... e o Dart 3.4? Ele veio junto no pacote, né? Teve alguma coisa nessa atualização da linguagem que te chamou a atenção e que ajuda nesse ecossistema? Convidado: Teve sim! O Dart 3.4 é o que sustenta essa eficiência toda. Ele trouxe melhorias internas pra facilitar justamente essa ponte com o Wasm. Mas o que eu achei legal é como a linguagem tá ficando cada vez mais robusta. Eles estão refinando muito o sistema de tipos e a performance de compilação. Pra quem tá desenvolvendo, o feedback loop tá mais rápido. E olha, o suporte a macros que eles estão testando (ainda em preview, claro) vai ser outra revolução no futuro, eliminando a necessidade de gerar código pra tudo. Mas voltando pro presente, o Dart 3.4 é o motor que permite que o Flutter 3.22 entregue essa promessa de rapidez. Apresentadora: Cara, é impressionante como o ecossistema tá maduro. Mas nem tudo são flores, né? Para o pessoal que tá ouvindo e quer migrar pro Wasm hoje... tem alguma "pegadinha" ou algum desafio que você encontrou nesse caminho? Convidado: Ah, sempre tem, né? (risos). O principal desafio hoje com o Wasm na web ainda é o ecossistema de packages. Nem todo plugin do `pub.dev` já tá 100% compatível com a compilação Wasm. Alguns pacotes que dependem muito de interoperação customizada com JavaScript precisam ser atualizados. Então, se você tem um app gigante com dezenas de dependências externas, minha dica é: testa primeiro. Não sai dando `flutter build wasm` e achando que tudo vai funcionar de primeira. Mas a boa notícia é que a comunidade tá voando pra atualizar tudo. Em poucos meses, acredito que isso nem vai ser mais um problema. Apresentadora: Ótima dica, Rafael. O segredo é cautela e muito teste, como tudo em tech. Bom, a gente tá chegando no final, mas eu queria que você deixasse uma mensagem final pra quem tá na dúvida se foca em Flutter ou se olha pra outras tecnologias web. Com esse Wasm estável, o Flutter virou o "rei" do desenvolvimento multiplataforma de vez? Convidado: Olha, Juliana, eu sou suspeito pra falar, mas o Flutter deu um passo muito largo na frente. Se você quer consistência visual absoluta e performance de alto nível em mobile, desktop e agora na web, o Flutter é imbatível. O Wasm tira o Flutter daquela caixinha de "ferramenta pra sites simples" e coloca ele no topo pra aplicações web robustas. Meu conselho é: aprendam Flutter e Dart. A barreira da performance web caiu, e quem dominar isso agora vai estar criando as aplicações mais incríveis dos próximos anos. Apresentadora: Sensacional, Rafael! Cara, muito obrigada por compartilhar sua experiência aqui no Allur. Esse papo foi muito esclarecedor e eu tenho certeza que deu um gás em quem tava precisando de um motivo pra atualizar seus projetos. Convidado: Eu que agradeço, Ju! Valeu pelo papo, foi massa demais! Apresentadora: E para você que acompanhou a gente até aqui, as principais conclusões são claras: o Flutter 3.22 não é só uma atualização incremental. O WebAssembly estável traz a performance que a gente sempre quis na web, e o Impeller no Android finalmente nivela o jogo da fluidez mobile. Se você quer saber mais, corre na documentação oficial do Flutter ou segue o Rafael Brandão nas redes sociais, ele sempre posta dicas técnicas valiosas.

Tags

web development mobile development performance flutter impeller android webassembly