El componente Script te permite cargar scripts externos o locales de manera optimizada, controlando cuándo y cómo se ejecutan.
Esto ayuda a mejorar el rendimiento y evitar bloqueos en el renderizado inicial.
A continuación, un ejemplo básico de cómo usar el componente Script para cargar un script externo de Google Analytics.
import Script from 'next/script' // Importamos el componente Script de Next.js
export default function Page() {
return (
<>
<h1>Mi página con Script</h1>
{/* Carga el script de Google Analytics después de que la página sea interactiva */}
<Script
src="https://www.googletagmanager.com/gtag/js?id=GA_TRACKING_ID"
strategy="afterInteractive"
/>
{/* Inicialización inline del script,
sirve para inyectar código JavaScript directamente dentro del HTML, justo después de que la página se haya vuelto interactiva
*/}
<Script id="ga-init" strategy="afterInteractive">
{
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'GA_TRACKING_ID');
}
</Script>
</>
)
} Estrategia usada:
afterInteractive → el script se ejecuta después de que la página esté lista para interactuar.
Ideal para herramientas como Google Analytics, Chatbots, etc.
Aquí tienes un ejemplo de cómo cargar un script local desde /public/scripts/widget.js,
el cual inicializa un widget personalizado en la página.
import Script from 'next/script'
export default function CustomWidget() {
return (
<>
{/* Carga un script local desde /public/scripts/widget.js */}
<Script src="/scripts/widget.js" strategy="lazyOnload" />
<div id="widget-container"></div>
</>
)
} 💡 lazyOnload carga el script solo cuando el navegador está libre, sin afectar el renderizado inicial.
Perfecto para scripts secundarios o widgets personalizados.
<Script>También puedes usar el componente Script para integrar librerías como Bootstrap, asegurando que sus scripts JavaScript se ejecuten de forma optimizada y sin bloquear el renderizado inicial.
import 'bootstrap/dist/css/bootstrap.min.css' // Importamos los estilos globales
import Script from 'next/script'
export const metadata = {
title: 'Mi App con Bootstrap',
description: 'Ejemplo integrando Bootstrap con Next.js',
}
export default function RootLayout({ children }) {
return (
<html lang="es">
<body>
{children}
{/* Cargamos el script de Bootstrap después de que la página sea interactiva */}
<Script
src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"
strategy="afterInteractive"
/>
</body>
</html>
)
} layout.js, aplicándose a toda la app.strategy="afterInteractive").Si usas componentes interactivos de Bootstrap (como modales, dropdowns o tooltips), asegúrate de cargar
bootstrap.bundle.min.js, ya que incluye Popper.js de forma integrada.
Así evitas dependencias adicionales o errores de inicialización.
<script> nativa, ya que <Script> optimiza la carga automáticamente.