Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

444
Visualizações
Problemas generales con Google Optimize en React/Next.js

El título puede parecer un poco vago, pero eso se debe a que actualmente tengo varios problemas para integrar Google Optimize en nuestro proyecto React/Next.js. Voy a tratar de explicar mis problemas y acciones lo más detalladamente posible. Sin embargo, avísame si algo no está claro.

Los problemas:

  1. Aunque Google Optimize se agrega en la parte superior de la cabeza, siempre experimentamos un flash de página. Lo que significa que los usuarios primero ven nuestra página, luego nada (se activa la función de ocultación asíncrona), luego la página nuevamente con cambios.
  2. Creé un experimento que reordena los enlaces de navegación, elimina un enlace de navegación y cambia nuestro texto de CTA. Configuré la variante al 100% con fines de prueba. Lo que sucede (relacionado con el problema 1) es que primero vemos nuestra página web original, luego los cambios y luego nuevamente nuestra página web original con un enlace de navegación eliminado. Lo que significa que agregó la variante, pero eliminó algunos cambios.
  3. Al agregar un experimento en una página dinámica, los cambios no se pueden aplicar. Cuando ejecuto el experimento, nada cambia, y cuando vuelvo a abrir el editor visual, dice que hay problemas con los cambios. Incluso si el cambio es solo un simple cambio de texto.

Lo que he probado:

  1. Agregando el className "async-hide" por defecto en html. Esto establece la página web por defecto oculta. Si uso Google Optimize sincrónico, esto funciona bien. Sin embargo, si lo configuro en asíncrono, tarda de 1 a 2 segundos antes de mostrar la página, lo que no es un buen rendimiento.
  2. Agregué Google Optimize en Google Tag Manager siguiendo los pasos exactos mencionados por Google aquí . Sí, cambié la ID del contenedor de Google Optimize en mi función de ocultación asíncrona a la ID del contenedor GTM.
  3. Deshice la parte 2 anterior y agregué Google Optimize manualmente de esta manera.
 <Html lang="en" className="async-hide"> <Head> {/* Google Optimize Ant-Flicker Snippet https://support.google.com/optimize/answer/9692472?ref_topic=6197443 */} <style dangerouslySetInnerHTML={{ __html: `.async-hide { opacity: 0 !important}`, }} /> <script dangerouslySetInnerHTML={{ __html: ` (function(a,s,y,n,c,h,i,d,e){s.className+=' '+y;h.start=1*new Date; h.end=i=function(){s.className=s.className.replace(RegExp(' ?'+y),'')}; (a[n]=a[n]||[]).hide=h;setTimeout(function(){i();h.end=null},c);h.timeout=c; })(window,document.documentElement,'async-hide','dataLayer',4000, {'OPT-OPTIMIZE_ID':true}); `, }} /> <script src="https://www.googleoptimize.com/optimize.js?id=OPT-OPTIMIZE_ID"></script> {/* Google Tag Manager */} <script async src="https://www.googletagmanager.com/gtm.js?id=GTM-TAGMANAGER_ID"></script> <script dangerouslySetInnerHTML={{ __html: ` (function(w,l){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'}); })(window,'dataLayer'); `, }} ></script> ... [rest of code]

preguntas que tengo

  1. ¿Este problema está relacionado con Next.js? El hecho de que trabajemos con multipáginas estáticas en una aplicación de reacción en lugar de una sola página
  2. Cuál es el mejor método para implementar Google Optimize en un proyecto React / Next.js: a través de Google Tag Manager o Google Optimize
  3. ¿Cuál es el mejor método de carga para Google Optimize en un proyecto React/Next.js: asíncrono o sincronizado?
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Es un problema bastante común que está experimentando aquí. Google Optimize y otras soluciones de prueba A/B que cambian el contenido del sitio web a través de Javascript en el cliente crean un efecto de parpadeo, ya que los scripts deben descargarse antes de que pueda cambiar algo.

Para responder tu pregunta:

  1. A medida que trabaja con next.js, surgen algunos problemas especiales. Next.js usa un servidor (o una fase de representación estática) en el servidor, así como una fase de hidratación en el lado del cliente. Cuando coloca Google Optimize (y se carga) antes de que comience la hidratación, generará el experimento correcto, pero se sobrescribirá tan pronto como se active la hidratación.

  2. ¿Cómo podría integrarlo correctamente con Tagmanger? En el componente más externo, por ejemplo, <App/> , podría usar un gancho useEffect() que lanza un evento de tagmanager para activar la inserción del experimento de optimización.

    !¡Por favor tenga cuidado! a través de esto, obtendrá un efecto de parpadeo o ralentizará su sitio, ya que debe esperar hasta que todo esté hidratado, lo que puede demorar algunos segundos en dispositivos lentos y luego volverá a procesar su contenido.

    Este es un problema común con Jamstack Pages, que se puede resolver mediante la integración de la API de experimentación directamente en el código, que sin duda es más complejo.

  3. La carga sincronizada ralentizará su sitio ya que bloquea la representación hasta que se cargue el JS y el contenido, la carga asíncrona hará que el sitio parpadee. Esas son las dos opciones cuando se trabaja con pruebas A/B basadas en etiquetas: debe elegir el mal menor.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda