Hotwire
Pra ficar mais claro e pra que possamos ter uma visão mais abrangente do Hotwire Native, vamos começar falando do Hotwire, das bibliotecas que o compõem e do papel que cada uma delas desempenha na criação de aplicações modernas utilizando Ruby on Rails.
O que é o Hotwire?
O Hotwire (HTML Over The Wire) é uma proposta do time da Basecamp para simplificar a forma como criamos aplicações web. Ele permite construir interfaces modernas, rápidas e interativas sem a necessidade de escrever grandes quantidades de JavaScript ou usar frameworks como React, Vue ou Angular.
A ideia principal do Hotwire é enviar HTML diretamente do servidor para a interface do usuário, evitando processamento desnecessário no navegador. Isso é feito com suas duas principais bibliotecas:
1 Turbo:
O Turbo é o coração do Hotwire. Ele é responsável por otimizar a experiência do usuário, carregando páginas mais rapidamente e atualizando partes da interface de forma eficiente. O Turbo é dividido em três partes principais:
Turbo Drive: Facilita a navegação sem recarregar a página inteira. Funciona interceptando links e formulários e carregando o HTML no background, atualizando apenas o que é necessário.
Turbo Frames: Permite atualizar apenas partes específicas da página, sem precisar recarregar o layout inteiro. Funciona como “janelas” na interface, que recebem HTML fragmentado do servidor.
Turbo Streams: Atualiza a interface em tempo real, com WebSockets ou requisições HTTP. Turbo Streams são perfeitos para adicionar, remover ou atualizar elementos da página dinamicamente.Com o Turbo, a experiência é muito mais rápida e fluida, enquanto o backend continua sendo responsável por gerar o HTML.
2 Stimulus:
Um framework JavaScript leve que permite adicionar comportamentos interativos de forma simples e organizada. Ele não compete com Turbo, mas o complementa, permitindo que você adicione "camadas" de interatividade onde necessário.
Hotwire Native: levando o Hotwire para apps nativas
O Hotwire Native é a extensão do Hotwire para aplicativos móveis, permitindo que você integre uma aplicação Rails com aplicações nativas (iOS e Android).
Ao invés de reconstruir toda a lógica de uma aplicação nativa, o Hotwire Native aproveita o Turbo para entregar HTML diretamente ao app, utilizando WebViews (ou seja, um navegador embutido no app). Isso permite que o Rails continue sendo o coração da aplicação, enquanto o app móvel apenas renderiza e complementa com funcionalidades nativas.
Como funciona o Hotwire Native?
O fluxo é simples:
O Rails continua processando requisições e enviando HTML, assim como em aplicações web.
O app móvel (iOS ou Android) utiliza o Turbo Native, que exibe o HTML enviado dentro de um WebView.
Funcionalidades nativas (como modais, botões ou animações) são implementadas diretamente no app nativo e podem ser ativadas conforme necessário.
Por que usar o Hotwire Native?
Reaproveitamento do Rails: Você mantém toda a lógica do servidor no Rails, evitando duplicação de código.
Menos complexidade: Não precisa construir um backend separado ou lidar com APIs REST/GraphQL complicadas.
Boa experiência híbrida: O Hotwire Native entrega apps que parecem nativos, com uma boa performance para grande parte dos casos.
Desenvolvimento mais rápido: Uma base de código Rails pode atender tanto a web quanto o app móvel.
Resumindo
Hotwire é uma abordagem que usa HTML no lugar de JavaScript/JSON, com o intuito de acelerar aplicações web.
Turbo (parte do Hotwire) entrega HTML fragmentado do servidor para a interface.
Hotwire Native é a ponte que leva o Hotwire para apps móveis, utilizando WebViews e funcionalidades nativas para oferecer uma experiência híbrida poderosa.