Core Web Vitals · Publicado en marzo de 2026

Corregir INP alto en Shopify: 7 soluciones comprobadas para bajar de 200 ms (2026)

Interacción con la siguiente pintura (INP) mide la rapidez con la que responde su tienda cuando los visitantes hacen clic, tocan o escriben. Google reemplazó FID con INP en marzo de 2024, y es más difícil de aprobar. Aquí te mostramos cómo arreglar el INP en tu tienda Shopify y llegar por debajo del umbral de 200 ms.

~15 minutos de lectura · 3200 palabras · Ejemplos de código incluidos

¿Qué es INP y por qué reemplazó a FID?

La interacción con Next Paint (INP) es una de las tres de Google Core Web Vitals : las métricas que influyen directamente en su clasificación de búsqueda y miden la experiencia real del usuario. Medidas del INP qué tan rápido responde su página a las interacciones del usuario : cada clic, toque y pulsación de tecla durante toda la visita a la página.

En marzo de 2024, el INP oficialmente reemplazó el retardo de la primera entrada (FID) como Core Web Vital. ¿Por qué? FID solo midió el retraso antes del navegador comenzó procesando la primera interacción. Omitió dos problemas críticos: tiempo de procesamiento lento (el trabajo real que realiza el navegador) y retraso en la presentación (tiempo para pintar el resultado). También ignoró cada interacción después de la primera.

INP soluciona todo eso. rastrea cada interacción and measures the full round trip — from the moment a user clicks to the moment the screen updates. Each interaction has three phases:

Fase 1

Retardo de entrada

Tiempo entre el clic/toque del usuario y el momento en que el navegador comienza a ejecutar controladores de eventos. Causado por otro JavaScript que bloquea el hilo principal.

Fase 2

Tiempo de procesamiento

Tiempo dedicado a ejecutar el código del controlador de eventos. La manipulación intensa de DOM, las operaciones sincrónicas y los cálculos complejos ralentizan esta fase.

Fase 3

Retraso en la presentación

Es hora de que el navegador vuelva a calcular los estilos, realice el diseño y pinte la actualización visual. Los DOM grandes y los cambios de diseño ralentizan esta fase.

INP informa el peor interacción (técnicamente el percentil 98) en toda la visita a la página. Esto significa que incluso una interacción lenta, como un botón lento "Agregar al carrito" o un menú desplegable de filtro lento, puede fallar su puntaje INP.

< 200 ms

Bueno

200–500 ms

Necesita mejorar

> 500ms

Pobre

Por qué INP es importante para tu tienda Shopify: Una tienda que responde lentamente se siente rota. Cuando un cliente toca "Agregar al carrito" y no sucede nada durante 400 ms, vuelve a tocar y, a veces, termina con dos artículos o se aleja por completo. Un INP deficiente perjudica tanto su clasificación SEO como su tasa de conversión. ¿Quieres ver dónde se encuentra tu tienda? Realiza una prueba de velocidad gratuita.

La solución fácil: optimización automática de INP

Antes de sumergirse en la optimización manual de JavaScript, existe un enfoque más rápido. Thunder Page Speed Optimizer aborda automáticamente varias de las causas más comunes de INP alto en las tiendas Shopify.

Cómo Thunder reduce el INP:

Aplazamiento de secuencia de comandos inteligente

Pospone JavaScript no crítico para que no bloquee el hilo principal durante las interacciones del usuario

Carga consciente de la dependencia

Carga scripts en el orden correcto sin crear contención en el hilo principal que retrase las interacciones

Gestión de scripts de terceros

Prevents app scripts from running heavy code during critical interaction windows

Protección del hilo principal

Reduce el tiempo total de bloqueo (TBT), que se correlaciona directamente con mejores puntuaciones de INP

Mejora media: +27 puntos PageSpeed

Thunder aborda INP junto con LCP y CLS: la mayoría de las tiendas ven que los tres Core Web Vitals mejoran a los pocos minutos de habilitar las optimizaciones.

Corrige tu puntuación INP ahora →

Plan gratuito disponible · No se requiere tarjeta de crédito · Configuración de 30 segundos · Funciona con todos los temas

¿Prefieres hacerlo tú mismo? Sigue leyendo ↓

Cómo medir el INP en tu tienda Shopify

Antes de corregir INP, es necesario identificar qué interacciones son lentas y por qué. Aquí están las mejores herramientas:

PageSpeed Insights (comience aquí)

Ir a pagespeed.web.dev o utilice nuestro prueba de velocidad gratuita de Shopify. Consulta ambas secciones:

  • Datos de campo — Real user INP from Chrome users over 28 days. This is what Google uses for rankings.
  • Datos de laboratorio : muestra el tiempo total de bloqueo (TBT), que se correlaciona con el INP. Las pruebas de laboratorio no pueden medir el INP directamente porque no simulan interacciones reales del usuario.

Busque diagnósticos como "Minimizar el trabajo del hilo principal" y "Reducir el tiempo de ejecución de JavaScript" : se relacionan directamente con el INP.

Panel de rendimiento de Chrome DevTools (mejor para depurar)

Abra DevTools (F12), vaya a la pestaña Rendimiento, marque "Web Vitals" y grabe mientras interactúa con la página. el Pista de interacciones muestra cada interacción con codificación de colores:

  • Verde — Bueno (menos de 200 ms)
  • Amarillo : Necesita mejorar (200–500 ms)
  • Rojo — Deficiente (más de 500 ms)

Haga clic en cualquier interacción para ver las tres fases (retraso de entrada, tiempo de procesamiento, retraso de presentación) desglosadas individualmente. Esto le indica exactamente dónde está el cuello de botella.

Google Search Console

Under Experience → Core Web Vitals, you'll see INP performance across your entire site. Since INP replaced FID in March 2024, this report now shows INP data from real users. Pages are grouped by status (Good / Needs Improvement / Poor). Note: Search Console uses a 28-day rolling average, so improvements take about a month to fully reflect.

Extensión Web Vitals (verificación rápida)

Instale el Extensión Web Vitals para Chrome para una superposición de INP en tiempo real mientras navegas por tu tienda. Muestra que su puntuación INP se actualiza con cada interacción, lo que es excelente para identificar rápidamente qué botones, enlaces o elementos de formulario son lentos.

Observador de rendimiento de JavaScript (avanzado)

Pega esto en la consola de tu navegador mientras interactúas con tu tienda para registrar la duración de cada interacción:

new PerformanceObserver((list) => {
  for (const entry of list.getEntries()) {
    const duration = entry.duration;
    const status = duration < 200 ? '🟢' : duration < 500 ? '🟡' : '🔴';
    console.log(
      `${status} INP candidate: ${duration.toFixed(0)}ms`,
      `| Input delay: ${entry.inputDelay?.toFixed(0) ?? '?'}ms`,
      `| Processing: ${entry.processingDuration?.toFixed(0) ?? '?'}ms`,
      `| Presentation: ${(duration - (entry.inputDelay ?? 0) - (entry.processingDuration ?? 0)).toFixed(0)}ms`,
      `| Target: ${entry.target?.tagName ?? 'unknown'}`
    );
  }
}).observe({ type: 'event', buffered: true, durationThreshold: 16 });

Esto registra las tres fases de cada interacción para que pueda identificar si el problema es el retraso de entrada (hilo principal bloqueado), el tiempo de procesamiento (manejador de eventos lento) o el retraso de presentación (renderizado costoso).

Causas comunes de INP alto en Shopify

Antes de comenzar a solucionar problemas, comprenda qué está causando un INP alto en su tienda. Estos son los culpables más comunes, clasificados según la frecuencia con la que afectan a las tiendas Shopify:

🔴 Controladores de eventos de JavaScript pesados

Controladores de clic que realizan manipulación DOM, llamadas API o cálculos complejos de forma sincrónica. Común en cajones de carritos, modales de vista rápida y selectores de variantes de productos.

🔴 Secuencias de comandos de aplicaciones de terceros

Aplicaciones que agregan detectores de eventos a interacciones comunes: seguimiento de análisis en cada clic, widgets de revisión que procesan al desplazarse, widgets de chat que interceptan clics. estos corren además de los controladores de tu tema.

🟠 Tamaño DOM grande

Las tiendas Shopify con más de 1500 elementos DOM (comunes con mega menús, cuadrículas de productos y listas de enlaces de pie de página) hacen que cada recálculo de diseño sea más lento. La fase de retraso de la presentación crece con la complejidad del DOM.

🟠 Golpe de diseño

JavaScript que lee las propiedades de diseño (offsetHeight, getBoundingClientRect) y luego escribe en el DOM en un bucle. Cada lectura obliga al navegador a recalcular el diseño de forma sincrónica, bloqueando el hilo principal.

🟡 Operaciones DOM sincrónicas

Controladores de eventos que actualizan muchos elementos DOM a la vez (actualizando precios en una página, volviendo a representar una cuadrícula de productos después del filtrado). Sin ceder, estos bloquean el hilo principal hasta completarlo.

La mayoría de las tiendas Shopify tienen una combinación de estos problemas. La buena noticia: incluso solucionar una o dos de las causas principales puede mejorar drásticamente su puntuación INP. Repasemos las soluciones. Para obtener más información sobre cómo se relacionan estos problemas con la velocidad general de la tienda, consulte nuestra guía completa de optimización de velocidad de Shopify.

Solución n.º 1: dividir tareas largas de JavaScript

El hilo principal del navegador es de un solo hilo: solo puede hacer una cosa a la vez. Cuando JavaScript se ejecuta durante más de 50 ms sin ceder, se convierte en un "tarea larga" que bloquea las interacciones del usuario. Si un usuario hace clic mientras se ejecuta una tarea larga, el navegador no puede responder hasta que finalice la tarea, lo que aumenta directamente el retraso de entrada.

Utilice Scheduler.yield() (Recomendado)

La forma moderna de dividir tareas largas es programador.rendimiento(). Pausa su código, permite que el navegador maneje las interacciones pendientes y la representación, luego reanuda:

// Before: One long task blocking the main thread
async function processProducts(products) {
  for (const product of products) {
    updateProductCard(product);  // DOM updates
    calculatePricing(product);   // Heavy computation
    renderReviews(product);      // More DOM work
  }
}

// After: Yields between iterations so browser stays responsive
async function processProducts(products) {
  for (const product of products) {
    updateProductCard(product);
    calculatePricing(product);
    renderReviews(product);

    // Yield to the browser between each product
    if ('scheduler' in window && 'yield' in scheduler) {
      await scheduler.yield();
    }
  }
}

Alternativa: patrón setTimeout

Para navegadores que no son compatibles programador.rendimiento() todavía, usa el establecerTiempo de espera(0) Patrón :

function yieldToMain() {
  return new Promise(resolve => setTimeout(resolve, 0));
}

async function processProducts(products) {
  for (let i = 0; i < products.length; i++) {
    updateProductCard(products[i]);

    // Yield every 5 iterations to balance throughput and responsiveness
    if (i % 5 === 0) {
      await yieldToMain();
    }
  }
}

Utilice requestAnimationFrame para actualizaciones visuales

Cuando su controlador de eventos necesite actualizar la interfaz de usuario, incluya los cambios visuales en solicitarAnimationFrame para agruparlos con el ciclo de renderizado del navegador:

// Bad: DOM updates interleaved with logic
button.addEventListener('click', () => {
  const data = computeExpensiveData();
  element.style.height = data.height + 'px';  // Forces layout
  element.textContent = data.label;
  element.classList.add('active');
});

// Good: Separate computation from rendering
button.addEventListener('click', () => {
  const data = computeExpensiveData();
  requestAnimationFrame(() => {
    element.style.height = data.height + 'px';
    element.textContent = data.label;
    element.classList.add('active');
  });
});

Solución n.º 2: optimizar los controladores de eventos

Cada controlador de eventos que se ejecuta durante la interacción del usuario se suma a la fase de tiempo de procesamiento de INP. El objetivo: hacer que sus manejadores sean lo más rápidos posible y posponer cualquier cosa que no sea inmediatamente visible.

Eventos de disparo rápido antirrebote

Eventos como desplazamiento, cambio de tamaño y entrada se activan muchas veces por segundo. Sin rebote, cada evento ejecuta su controlador, creando una acumulación de tareas largas:

// Bad: Fires on every keystroke in search
searchInput.addEventListener('input', (e) => {
  fetchSearchResults(e.target.value);  // API call on every keypress!
  renderSuggestions();
});

// Good: Debounce to max once per 300ms
let debounceTimer;
searchInput.addEventListener('input', (e) => {
  clearTimeout(debounceTimer);
  debounceTimer = setTimeout(() => {
    fetchSearchResults(e.target.value);
    renderSuggestions();
  }, 300);
});

Aplazar el trabajo no visual

Cuando un usuario hace clic en "Agregar al carrito", debe ver comentarios de inmediato, pero el seguimiento analítico, las comprobaciones de inventario y las actualizaciones de recomendaciones pueden ocurrir después de la actualización visual:

addToCartButton.addEventListener('click', async () => {
  // 1. Visual feedback FIRST (what the user needs to see)
  showCartAnimation();
  updateCartCount();

  // 2. Defer non-visual work
  requestIdleCallback(() => {
    trackAnalyticsEvent('add_to_cart');
    updateRecommendations();
    syncInventory();
  });
});

Usar delegación de eventos

En lugar de adjuntar controladores de clics individuales a docenas de tarjetas de productos, utilice la delegación de eventos con un único controlador en el contenedor principal:

// Bad: 50 individual handlers on a collection page
document.querySelectorAll('.product-card').forEach(card => {
  card.addEventListener('click', handleProductClick);
});

// Good: One handler via event delegation
document.querySelector('.product-grid').addEventListener('click', (e) => {
  const card = e.target.closest('.product-card');
  if (card) handleProductClick(card);
});

Solución n.º 3: reducir el tamaño del DOM

Cada elemento en su DOM hace que los recálculos del diseño sean más lentos. Cuando el navegador necesita actualizar la pantalla después de una interacción (la fase de retraso de la presentación), debe recalcular los estilos y el diseño de potencialmente miles de elementos. Google recomienda mantener su DOM bajo 1.400 elementos : muchas tiendas Shopify tienen más de 3000.

Audite su tamaño DOM

Verifique su tamaño DOM actual en la consola Chrome DevTools:

console.log('DOM elements:', document.querySelectorAll('*').length);
console.log('Max depth:', document.querySelector('[data-max-depth]')?.dataset.maxDepth);

// Find the heaviest sections
document.querySelectorAll('section, div[class]').forEach(el => {
  const count = el.querySelectorAll('*').length;
  if (count > 100) console.log(count, el.className || el.tagName);
});

Fuentes comunes de hinchazón de DOM en Shopify

  • Mega menús : a menudo muestra todo el contenido desplegable incluso cuando está oculto. Utilice renderizado diferido o visibilidad del contenido: automático para secciones fuera de pantalla.
  • Selectores de variantes de producto : las tiendas con más de 50 variantes pueden mostrar elementos de opciones ocultos para cada una. Cargue variantes bajo demanda.
  • Listas de enlaces de pie de página : los megaenlaces de pie de página con docenas de columnas agregan cientos de elementos DOM debajo de la página.
  • Duplicados ocultos en dispositivos móviles/escritorios : los temas que representan la navegación móvil y de escritorio (ocultando uno con CSS) duplican los elementos DOM.

Usar visibilidad de contenido para contenido fuera de la pantalla

/* Skip rendering for sections below the fold */
.product-recommendations,
.footer-mega-links,
.recently-viewed {
  content-visibility: auto;
  contain-intrinsic-size: 0 500px; /* Estimated height */
}

Esta propiedad CSS le indica al navegador que omita el trabajo de renderizado de elementos fuera de la pantalla. Cuando el usuario se desplaza cerca de ellos, el navegador los muestra justo a tiempo. Esto mejora directamente la fase de retraso de presentación de INP porque hay menos elementos para recalcular durante las interacciones. Para más información sobre la reducción problemas relacionados con el diseño, consulta nuestra guía CLS.

Solución n.º 4: eliminar la destrucción del diseño

La alteración del diseño ocurre cuando JavaScript alterna entre leer y escribir propiedades de diseño DOM en un bucle. Cada lectura obliga al navegador a recalcular el diseño de forma sincrónica y, si escribe inmediatamente después, la siguiente lectura fuerza otro recálculo.

// Bad: Layout thrashing — forces layout recalc on EVERY iteration
function resizeCards() {
  const cards = document.querySelectorAll('.product-card');
  cards.forEach(card => {
    const height = card.offsetHeight;      // READ (forces layout)
    card.style.minHeight = height + 'px';  // WRITE (invalidates layout)
    // Next iteration's read forces ANOTHER layout recalculation
  });
}

// Good: Batch reads, then batch writes
function resizeCards() {
  const cards = document.querySelectorAll('.product-card');

  // Phase 1: Read all values
  const heights = Array.from(cards).map(card => card.offsetHeight);

  // Phase 2: Write all values (only one layout recalc)
  cards.forEach((card, i) => {
    card.style.minHeight = heights[i] + 'px';
  });
}

Propiedades que activan el diseño forzado: altura de compensación, ancho de desplazamiento, getBoundingClientRect(), desplazarsearriba, altura del cliente, y obtenerEstiloComputado(). Cuando cualquiera de estos se lee después de una escritura DOM, el navegador debe volver a calcular el diseño de forma sincrónica.

Audite el JavaScript de su tema para detectar estos patrones; son especialmente comunes en diseños de cuadrícula de productos, encabezados fijos e implementaciones de desplazamiento infinito.

Solución n.º 5: domesticar scripts de terceros

Los scripts de terceros son los asesinos silenciosos de INP en las tiendas Shopify. Cada aplicación que instale puede agregar JavaScript que se ejecuta en cada carga de página y, lo que es más importante, en cada interacción del usuario. Los scripts de análisis que rastrean los clics, los widgets de revisión que se procesan al pasar el mouse y los widgets de chat que interceptan eventos compiten por el hilo principal.

Audite el impacto de su script de terceros

In Chrome DevTools, record a Performance trace while interacting with your page. In the Main thread flame chart, look for long tasks from third-party domains. You can also use the Panel de red → filtrar por "JS" → ordenar por tamaño para ver qué scripts se están cargando:

  • Análisis : Google Analytics, Meta Pixel y TikTok Pixel suelen añadir oyentes de eventos
  • Reseñas — Yotpo, Judge.me y Loox pueden procesar eventos de desplazamiento y clic
  • Charla : Tidio, Zendesk y Gorgias interceptan eventos de clic en toda la página
  • Upsell/Cross-sell — Las aplicaciones ReConvert, Bold a menudo agregan controladores a las interacciones del carrito

Enfoque manual: Aplazar con activación de interacción

Cargue scripts de terceros no críticos solo después de la primera interacción del usuario, cuando la página ya responde:

<script>
  // Load non-critical scripts after first user interaction
  const loadDeferredScripts = () => {
    // Analytics
    const ga = document.createElement('script');
    ga.src = 'https://www.googletagmanager.com/gtag/js?id=G-XXXXX';
    ga.async = true;
    document.head.appendChild(ga);

    // Chat widget
    const chat = document.createElement('script');
    chat.src = 'https://cdn.chatwidget.com/widget.js';
    chat.async = true;
    document.head.appendChild(chat);

    // Remove listeners after loading
    ['click', 'scroll', 'keydown', 'touchstart'].forEach(event =>
      document.removeEventListener(event, loadDeferredScripts)
    );
  };

  ['click', 'scroll', 'keydown', 'touchstart'].forEach(event =>
    document.addEventListener(event, loadDeferredScripts, { once: false, passive: true })
  );
</script>

Este patrón funciona pero es frágil: debe mantener la lista de scripts manualmente, manejar las dependencias entre scripts y asegurarse de que nada se rompa cuando los scripts se cargan fuera de orden. Esto es exactamente lo que Thunder automatiza: identifica qué scripts es seguro posponer, administra sus dependencias y los carga en el orden óptimo. Leer más sobre administrar scripts de terceros en Shopify.

Avanzado: trabajadores web y división de código

Para tiendas con funcionalidades personalizadas complejas (configuradores de productos avanzados, cálculos de precios en tiempo real o búsqueda del lado del cliente), estas técnicas avanzadas pueden reducir drásticamente el tiempo de procesamiento.

Trasladar la informática pesada a los trabajadores web

Web Workers ejecuta JavaScript en un hilo separado, completamente independiente del hilo principal. Esto significa que la computación intensa no bloqueará las interacciones del usuario:

// pricing-worker.js — runs on a separate thread
self.addEventListener('message', (e) => {
  const { products, discountRules } = e.data;
  const calculated = products.map(p => ({
    ...p,
    finalPrice: applyDiscountRules(p, discountRules),
    savings: calculateSavings(p, discountRules),
  }));
  self.postMessage(calculated);
});

// main.js — keeps the main thread free
const pricingWorker = new Worker('/pricing-worker.js');

variantSelector.addEventListener('change', () => {
  // Show loading state immediately (fast — on main thread)
  showPriceLoading();

  // Offload heavy calculation to worker (won't block interactions)
  pricingWorker.postMessage({
    products: getSelectedProducts(),
    discountRules: window.discountRules,
  });
});

pricingWorker.addEventListener('message', (e) => {
  // Update UI with results (fast — just DOM updates)
  updatePriceDisplay(e.data);
});

División de código para tema JavaScript

No cargue todo JavaScript por adelantado. Código dividido para que cada página solo cargue lo que necesita:

// Instead of loading everything in theme.js:
// import './product-zoom.js';
// import './cart-drawer.js';
// import './mega-menu.js';
// import './search-autocomplete.js';

// Load only when needed:
if (document.querySelector('.product-media')) {
  import('./product-zoom.js');
}
if (document.querySelector('.cart-drawer')) {
  import('./cart-drawer.js');
}

// Or load on first interaction:
document.querySelector('.search-input')?.addEventListener('focus', () => {
  import('./search-autocomplete.js').then(mod => mod.init());
}, { once: true });

Las importaciones dinámicas reducen la carga útil inicial de JavaScript, lo que significa menos bloqueo del hilo principal durante los primeros momentos críticos cuando es más probable que los usuarios interactúen. Esto también reduce el impacto de recursos de bloqueo de renderizado en tu tienda.

Correcciones manuales de INP frente a Thunder: comparación lado a lado

Así es como se compara el enfoque manual con permitir que Thunder maneje la optimización INP automáticamente:

Corrección INP Aproximación manual Aproximación del trueno
Aplazamiento del guión Escribir lógica de aplazamiento personalizada, gestionar dependencias de script manualmente Aplazamiento automático según dependencia con un solo clic
Scripts de terceros Audite el JS de cada aplicación y cree activadores de carga personalizados Identifica y difiere automáticamente los scripts de aplicaciones no críticas
Bloqueo del hilo principal Refactorizar controladores de eventos, agregar puntos de rendimiento, usar Web Workers Reduces blocking by deferring heavy scripts away from interaction windows
Tareas largas Perfilar, identificar y dividir cada tarea larga individualmente Previene la mayoría de las tareas largas controlando el tiempo de ejecución del script
Nivel de habilidad Se requieren habilidades avanzadas de optimización y creación de perfiles de JavaScript No se requiere codificación: instalación con un solo clic
Hora de implementar 4 a 16 horas dependiendo de la complejidad de la tienda 30 segundos
Mantenimiento Debe volver a auditarse después de agregar aplicaciones o actualizar temas Se adapta automáticamente a los cambios de la tienda

Las correcciones manuales le brindan un control granular, pero exigen una gran experiencia en JavaScript y un mantenimiento continuo. Thunder maneja las optimizaciones más impactantes, en particular el aplazamiento de secuencias de comandos y la administración de terceros, de forma automática. Muchos desarrolladores combinan ambos: instalan Thunder para el trabajo pesado y luego aplican correcciones manuales para los cuellos de botella del código personalizado. Ver planes de precios de Thunder.

Preguntas frecuentes

¿Cuál es una buena puntuación INP para las tiendas Shopify?

Google considera que el INP inferior a 200 ms es "bueno", entre 200 y 500 ms "necesita mejorar" y más de 500 ms es "deficiente". La mayoría de las tiendas Shopify bien optimizadas pueden alcanzar un INP inferior a 200 ms en computadoras de escritorio y menos de 300 ms en dispositivos móviles. INP reemplazó al First Input Delay (FID) como Core Web Vital en marzo de 2024, y es una medida más completa de interactividad porque rastrea todas las interacciones a lo largo del ciclo de vida de la página, no solo la primera.

¿Qué reemplazó a FID como Core Web Vital?

La interacción con Next Paint (INP) reemplazó oficialmente al retardo de la primera entrada (FID) como elemento central de la web en marzo de 2024. Si bien FID solo midió el retraso antes de que el navegador comenzara a procesar la primera interacción, INP mide la capacidad de respuesta total de cada interacción (clics, toques, pulsaciones de teclas) durante toda la visita a la página. Esto hace que INP sea una medida mucho más precisa de qué tan receptiva se siente tu tienda Shopify ante los usuarios reales.

¿Por qué el INP de mi tienda Shopify es alto en dispositivos móviles pero está bien en computadoras de escritorio?

Los dispositivos móviles tienen una potencia de procesamiento significativamente menor que los ordenadores de sobremesa. Las pruebas de laboratorio de Google aceleran la CPU 4 veces para simular dispositivos móviles de rango medio, y los usuarios móviles reales a menudo tienen hardware aún menos capaz. JavaScript pesado que funciona bien en una computadora de escritorio puede bloquear el hilo principal durante cientos de milisegundos en un dispositivo móvil. Los scripts de aplicaciones de terceros, los controladores de eventos complejos y los tamaños DOM de gran tamaño afectan más a los dispositivos móviles. Concéntrese en reducir el tiempo de ejecución de JavaScript y dividir tareas largas.

¿Pueden las aplicaciones de Shopify de terceros causar un INP alto?

Sí, las aplicaciones de terceros son una de las principales causas de un INP alto en las tiendas Shopify. Las aplicaciones que agregan controladores de clics (modales de vista rápida, cajones de carrito, botones de lista de deseos), inyectan seguimiento analítico en cada interacción o ejecutan JavaScript pesado en eventos de usuario pueden retrasar significativamente la capacidad del navegador para pintar el siguiente cuadro. Thunder ayuda aplazando los scripts de aplicaciones no críticas y gestionando su secuencia de carga para que no bloqueen el hilo principal durante las interacciones.

¿Cómo mido el INP en mi tienda Shopify?

Utilice Google PageSpeed ​​Insights (pagespeed.web.dev) para datos INP tanto de laboratorio como de campo. Para la depuración en tiempo real, abra Chrome DevTools, vaya al panel Rendimiento, habilite 'Web Vitals' e interactúe con su página; el seguimiento de Interacciones muestra el tiempo de procesamiento de cada interacción. El informe Core Web Vitals de Google Search Console muestra el INP en todo su sitio utilizando datos reales del usuario. También puedes utilizar nuestra prueba de velocidad gratuita en thunderpagespeed.com/tools/speed-test/ para una comprobación rápida.

¿Qué es Scheduler.yield() y cómo ayuda al INP?

scheduler.yield() is a newer browser API that lets you break up long JavaScript tasks by yielding control back to the browser's main thread. When you call await scheduler.yield() inside a function, the browser can process pending user interactions and paint updates before your code continues. This prevents long tasks from blocking responsiveness. It's supported in Chrome 129+ and can be polyfilled for older browsers. It's the recommended replacement for older patterns like setTimeout(0).

¿Corregir INP mejora el ranking SEO de Shopify?

Sí. INP es uno de los tres Core Web Vitals de Google (junto con LCP y CLS) que sirven como señales de clasificación. Las páginas con puntuaciones INP "buenas" (menos de 200 ms) reciben una ventaja de clasificación en la Búsqueda de Google. Más allá del SEO, las interacciones receptivas impactan directamente las conversiones: los estudios muestran que cada 100 ms de retraso en la interacción puede reducir las tasas de conversión hasta en un 7%. Una tienda que responde rápidamente se siente más profesional y confiable para los compradores.

Do It Yourself

Free plan · 1-click install · Instant results

Install Thunder Free →

Done For You

Core Web Vitals guarantee · 2-week delivery · 6 months Thunder free

Get Expert Optimization →

Starting from €1,500