Cosas que Debes Dejar de Hacer en JavaScript en 2025
JavaScript evoluciona rápidamente. Los patrones de código que parecían modernos hace tres años ahora envían bytes innecesarios, ignoran mejoras de la plataforma o dependen de APIs obsoletas. Si estás construyendo aplicaciones web de producción en 2025, aquí están los anti-patrones de JavaScript que debes evitar—y qué usar en su lugar.
Puntos Clave
- Las características obsoletas como las sentencias
with,__proto__yString.prototype.substrdeben reemplazarse con alternativas modernas. - Las bibliotecas heredadas como jQuery, Moment.js y Lodash a menudo pueden reemplazarse con APIs nativas del navegador y características de ES2023–ES2025.
- El CSS moderno ahora maneja muchas tareas que anteriormente requerían JavaScript, incluyendo container queries, el selector
:has()y animaciones vinculadas al scroll. - Los módulos ESM nativos y bundlers ligeros como Vite han vuelto obsoletos a CommonJS y RequireJS para nuevos proyectos frontend.
Deja de Usar Características Obsoletas del Lenguaje
Algunas características de JavaScript han sido obsoletas o reemplazadas durante años, pero persisten en las bases de código por copiar-pegar y costumbre.
Elimina estas de tu vocabulario:
- Sentencias
with— Prohibidas en modo estricto desde ES5. Crean un ámbito ambiguo y rompen optimizaciones. __proto__— UsaObject.getPrototypeOf()yObject.setPrototypeOf()en su lugar.String.prototype.substr— Obsoleto. Usaslice()osubstring().- Propiedades estáticas heredadas de RegExp como
RegExp.$1— Estas no son estándar y no son confiables entre diferentes motores.
Estos no son casos extremos. Los linters los marcan por buenas razones. Los patrones modernos de JavaScript asumen que ya has avanzado.
Deja de Recurrir a Bibliotecas Heredadas por Defecto
jQuery, Moment.js, Lodash y RequireJS resolvieron problemas reales—en 2015. Hoy, la plataforma cubre la mayoría de sus casos de uso de forma nativa.
Qué hacer en su lugar:
- Manipulación del DOM —
querySelector,querySelectorAlly las APIs modernas del DOM manejan lo que jQuery hacía antes. - Manejo de fechas — La API Temporal está en camino. Hasta que llegue el soporte completo, usa date-fns o el
Intl.DateTimeFormatnativo. - Funciones de utilidad — Las características de ES2023–ES2025 como
Object.groupBy(), nuevos métodos de Set (.union(),.intersection()) y helpers de iteradores (.map(),.filter()en iteradores) reemplazan la mayoría de las importaciones de Lodash. - Carga de módulos — Los módulos ESM nativos e
import()hacen obsoletos a RequireJS y AMD.
Enviar una biblioteca de 30KB para funcionalidad que el navegador proporciona gratis es un error de frontend que debes detener en 2025.
Deja de Ignorar las Características de ES2023–ES2025
El lenguaje ha evolucionado significativamente. Estas características son estables o casi estables:
Object.groupBy()yMap.groupBy()— Agrupa arrays sin bibliotecas externas.- Helpers de iteradores — Encadena
.map(),.filter(),.take()directamente en iteradores. - Nuevos métodos de Set —
.union(),.intersection(),.difference(),.isSubsetOf(). RegExp.escape()— Escapa cadenas de forma segura para patrones regex.- Atributos de importación y módulos JSON —
import data from './config.json' with { type: 'json' }. awaitde nivel superior — Úsalo en módulos sin envolver todo en IIFEs asíncronas.
Consulta caniuse.com y tus navegadores objetivo, pero no recurras por defecto a polyfills para características que se lanzaron hace dos años.
Discover how at OpenReplay.com.
Deja de Usar JavaScript para lo que CSS Ahora Maneja
El CSS moderno ha absorbido funcionalidad que antes requería JavaScript. Usar JS para estas tareas crea complejidad innecesaria y perjudica el rendimiento.
Deja que CSS maneje:
- Container queries — Componentes responsivos sin hacks de
ResizeObserver. - Selector
:has()— Selección de padres sin recorrido del DOM. - Animaciones vinculadas al scroll —
animation-timeline: scroll()reemplaza los event listeners de scroll. - View transitions — Efectos de transición de página nativos.
Cada listener de scroll que elimines es una victoria para el hilo principal.
Deja de Usar Mutation Events y Suposiciones sobre Cookies de Terceros
Los Mutation Events (DOMSubtreeModified, DOMNodeInserted) están obsoletos y tienen mal rendimiento. Usa MutationObserver en su lugar—ha sido estable por más de una década.
Las cookies de terceros están efectivamente muertas para rastreo y flujos de autenticación entre sitios. El cronograma de obsolescencia de Chrome ha cambiado, pero Safari y Firefox las bloquearon hace años. Construye flujos de autenticación con cookies de primera parte, tokens o identidad federada. No diseñes arquitecturas basadas en suposiciones que fallan en la mitad de los navegadores de tus usuarios.
Deja de Iniciar Nuevos Proyectos con CommonJS
Si estás escribiendo código para navegador en 2025 y recurres a require() o configuraciones pesadas de webpack, detente. Los módulos ESM nativos funcionan en todos los lugares que importan. Bundlers más ligeros como Vite y esbuild manejan los casos extremos restantes con configuración mínima.
CommonJS todavía tiene su lugar en bibliotecas de Node.js dirigidas a entornos más antiguos. Para código frontend nuevo, es equipaje heredado.
Conclusión
Las mejores prácticas de JavaScript en 2025 no se tratan de perseguir tendencias—se tratan de reconocer cuándo la plataforma ha alcanzado a tus dependencias. Cada característica obsoleta que elimines, cada biblioteca innecesaria que abandones y cada solución nativa de CSS que adoptes hace que tu código sea más pequeño, rápido y fácil de mantener.
Audita tus proyectos actuales. Revisa tus importaciones. Cuestiona si esa función de utilidad necesita una biblioteca o simplemente un método nativo que aún no has aprendido. Los patrones modernos de JavaScript ya están aquí—solo tienes que usarlos.
Preguntas Frecuentes
Sí, pero procede con cuidado. Los navegadores modernos soportan querySelector, fetch y otras APIs que reemplazan la funcionalidad central de jQuery. Para proyectos existentes, audita primero tu uso de jQuery y reemplaza las llamadas de forma incremental. Los proyectos nuevos deben evitar jQuery por completo ya que las alternativas nativas ahora están bien soportadas y son más eficientes.
La API Temporal está en la Etapa 3 del proceso TC39 y está disponible detrás de flags en algunos navegadores. Se espera soporte completo entre navegadores pronto, pero para código de producción hoy, usa date-fns o Intl.DateTimeFormat nativo. Monitorea caniuse.com para actualizaciones antes de adoptar Temporal sin polyfills.
Para la mayoría de los casos de uso, no. JavaScript nativo ahora incluye Object.groupBy, nuevos métodos de Set y helpers de iteradores que cubren funciones comunes de Lodash. Sin embargo, Lodash sigue siendo útil para clonación profunda, manipulación compleja de objetos o cuando se dirige a entornos más antiguos. Importa solo las funciones específicas que necesites en lugar de la biblioteca completa.
Comienza actualizando tu package.json con type establecido en module. Reemplaza las sentencias require con sintaxis import y module.exports con export. Actualiza las extensiones de archivo a .mjs si es necesario, o configura tu bundler en consecuencia. Herramientas como Vite y esbuild simplifican significativamente esta transición para proyectos frontend.
Complete picture for complete understanding
Capture every clue your frontend is leaving so you can instantly get to the root cause of any issue with OpenReplay — the open-source session replay tool for developers. Self-host it in minutes, and have complete control over your customer data.
Check our GitHub repo and join the thousands of developers in our community.