Executando verificação de segurança...
17

Google Translate: O inimigo oculto da minha aplicação

Recentemente, enfrentei um desafio interessante com um produto que desenvolvi utilizando ReactJS e TypeScript. A aplicação é focada na criação de provas e processos avaliativos. O componente principal realiza duas requisições: uma para obter todas as questões de uma avaliação e outra para retornar as alternativas de cada questão. Com uma média de cinco alternativas por questão, essas requisições montam a avaliação completa.

Componente de Questão

No entanto, comecei a lidar com um erro persistente de DOM que estava afetando a funcionalidade da aplicação:

DOMException: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.

Após muita pesquisa, descobri que esse erro ocorria principalmente ao acessar a aplicação via Google Chrome, especialmente quando o Google Tradutor estava habilitado. O Google Tradutor injetava seu plugin na página, alterando a DOM e causando memory leaks.

Esse memory leak acontecia porque o Google Tradutor percorria todas as 40 questões da prova e suas 200 alternativas, traduzindo cada uma delas. Isso sobrecarregava a DOM, resultando no erro.

O impacto desse problema foi considerável, afetando mais de cem provas em um processo seletivo que utilizava meu produto. A solução, felizmente, foi simples. Mudamos o navegador padrão de Google Chrome para Firefox e adicionei a seguinte meta tag no index.html da aplicação para impedir a ativação do Google Tradutor:

<meta name="google" content="notranslate" />

Com essa alteração, consegui eliminar o problema de memory leak e garantir a estabilidade da aplicação.

Este episódio foi uma valiosa lição sobre a importância de considerar todos os fatores externos que podem interferir na funcionalidade de uma aplicação web, especialmente em dispositivos mais fracos. Otimizar a aplicação para garantir que ela funcione perfeitamente em diversos hardwares é crucial para proporcionar uma experiência de usuário consistente e eficiente.

Para aqueles que enfrentam problemas semelhantes, recomendo verificar se plugins ou extensões do navegador estão influenciando a DOM e considerar soluções como a utilização de meta tags para controlar o comportamento de tais plugins. Manter a performance otimizada para dispositivos "mais fracos" é essencial para alcançar um público mais amplo e garantir que todos os usuários tenham uma experiência satisfatória.

Mas e aí, você já enfrentou algo parecido? Vamos trocar essa ideia.


Referências


Social

LinkedIn | GitHub


Outros artigos:

Por que você desenvolvedor deveria aprender a utilizar o Figma

Carregando publicação patrocinada...
1
2