Tenho dois f ilhos. Miguel com 6 anos e Victoria com 4 meses. • Sou fullstack engineer na Give Lively há dois anos; • Trabalho com Ruby e Rails desde 2006, mas fui pra gestão entre 2014 e 2021.
as coisas um pouco mais complicadas • Chamadas de API dentro da mesma aplicação • Dois sistemas de rotas (react-routes e Rails Routes) • Renderização de serializers no backend e renderização no frontend com javascript
nosso frontend • Aproveitar que já estávamos fazendo upgrade do app Rails (6 para 7) e do Ruby ( 2 para 3) ao mesmo tempo; • Enxugar o codebase era fundamental, uma vez que temos um monte de código legado (rails, haml com erb, react e até jquery) • Os componentes react estavam f icando tão complexos que era impossível escalar a aplicação no frontend • Suportar browsers antigos em sistemas antigos
f icando muito complexo ter os componentes passando dados de um componente para outro. Tínhamos um useE ff ectHell na aplicação com chamadas externas, props de um lado pro outro sem necessidade • Começamos a usar algumas views do rails para simpli f icar ao menos as chamadas de renderizações do react
era chamado, trazendo diversas props foram migrados para partials rails simples, sem a necessidade de usar nenhuma tecnologia diferente de HTML e CSS (usamos o bootstrap como base) • Passamos a utilizar alguns controllers stimulus para manipular DOM (como validações mais complexas em formulários ou mudança no comportamento de algum bloco)
(navigation stack) • Possibilitar que páginas fossem carregadas sem que houvesse um reload da página • En f im, transformar em um SPA básico. • Todas as requisições assíncronas ainda permaneceram no React.
sem reload (em boa parte delas), precisávamos componentizar novamente nossas páginas, fazendo requisições assíncronas e carregando informações dinamicamente • Após criar mais "componentes" em (ainda mais) shared partials, onde poderíamos utilizar as mesmas tabelas, listagens e diferentes tipos de componentes reutilizáveis. • Não, não tentamos o Phlex
importmaps? Encontramos diversos problemas com navegadores antigos. Por isso, compilar assets ainda é nossa sina. • Consistencia dos testes. Testes em Jest precisaram migrar para testes de views, o que não agradou muito o time. • Em alguns controllers, precisavamos continuar respondendo usando os serializers, o que não melhorou em nada a performance das chamadas • Migrar é caro!
foi pro alto, uma vez que o trabalho de full-stack é quase 100% ruby, com exceção dos pontos em usamos stimulusJS • Boa parte das validações agora são mais simples, sem bibliotecas elaboradas (yup e react-validations) que derrubavam a performance principalmente em mobile • O sistema de componentização não precisa mais ser top-down como no react. • Desenvolvimento de f initivamente mais rápido!