Volver al inicio

10 APIs web nativas en lugar de librerías JS

El artículo describe 10 APIs web nativas que reemplazan librerías JS populares. Ejemplos de código para Fetch, FormData, URL, Popover API con soporte del navegador y casos de uso de librerías.

APIs nativas: olvídate de paquetes npm extra
Advertisement 728x90

APIs nativas de web: 10 alternativas a librerías populares de JS

Fetch reemplaza a Axios, jQuery.ajax y otras librerías similares. Disponible desde 2017 en todos los navegadores modernos, soporta promesas, streaming y todos los métodos HTTP.

Ejemplo con Axios:

import axios from 'axios';

const api = axios.create({
  baseURL: 'https://api.example.com',
  timeout: 5000,
  headers: { 'Content-Type': 'application/json' }
});

const { data: users } = await api.get('/users');

Alternativa nativa:

Google AdInline article slot
const BASE_URL = 'https://api.example.com';

const res = await fetch(`${BASE_URL}/users`);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const users = await res.json();

const res2 = await fetch(`${BASE_URL}/users`, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ name: 'Marvel', role: 'developer' })
});
const newUser = await res2.json();

Para cancelar solicitudes, usa AbortController:

const controller = new AbortController();
fetch('/api/data', { signal: controller.signal });
controller.abort();

Cuándo usar librerías: en proyectos grandes que requieren interceptores, lógica de reintento o autenticación centralizada.

FormData para serialización de formularios

FormData automatiza la recopilación de datos de formularios, incluyendo archivos, sin necesidad de análisis manual. Disponible desde 2015.

Google AdInline article slot

En lugar de manejar manualmente:

const formData = new FormData(form);

form.addEventListener('submit', async (e) => {
  e.preventDefault();
  await fetch('/api/upload', {
    method: 'POST',
    body: formData
  });
});

Creación programática:

const formData = new FormData();
formData.append('name', 'Marvel');
formData.append('avatar', fileInput.files[0]);

El navegador establece automáticamente multipart/form-data con un límite.

Google AdInline article slot

Limitaciones: no incluye validación integrada ni gestión de estado de formularios multietapa — aquí es mejor usar React Hook Form o Formik.

URL y URLSearchParams para análisis de enlaces

Las clases nativas URL y URLSearchParams reemplazan expresiones regulares y librerías como URL.js. Soporte completo desde 2018.

const url = new URL('https://example.com/search?q=web+apis&page=2&sort=recent#results');

url.hostname; // 'example.com'
url.searchParams.get('q'); // 'web apis'

url.searchParams.set('page', '3');
url.searchParams.append('filter', 'new');
console.log(url.toString());

Creación de cadenas de consulta:

const params = new URLSearchParams({ q: 'hello world', page: '1' });
params.toString(); // 'q=hello+world&page=1'

Codificación y decodificación automáticas evitan errores de análisis.

API de Popover para elementos flotantes

Desde enero de 2025 (Chrome 114+, Firefox 125+, Safari 17+), la API de Popover permite tooltips, menús desplegables y popovers sin necesidad de Floating UI o Tippy.js.

Marcado HTML:

<button popovertarget="my-popover">Mostrar popover</button>
<div id="my-popover" popover>Contenido del popover</div>

Control programático:

const popover = document.querySelector('#my-popover');
popover.showPopover();
popover.hidePopover();

Estilo:

#my-popover:popover-open {
  animation: fadeIn 0.2s ease-out;
}
#my-popover::backdrop {
  background: rgba(0, 0, 0, 0.15);
}

Soporte integrado para capa superior, cierre ligero (Esc/clic fuera), trampa de foco y navegación por teclado.

popover="auto" — cierre automático, popover="manual" — cierre explícito.

Cuándo son mejores las librerías: cuando se necesita posicionamiento preciso con middleware (flip, shift).

Beneficios de las APIs nativas

Cambiar a interfaces integradas ofrece:

  • Tamaño de paquete cero — las APIs forman parte del motor del navegador
  • Rendimiento — ejecución fuera del hilo principal cuando es posible
  • Mantenimiento — actualizaciones directas de los fabricantes del navegador
  • Compatibilidad — funciona en Node.js (donde está disponible)
  • Menos vulnerabilidades — sin código de terceros

Lo que realmente importa

  • Las APIs nativas cubren entre el 80% y el 90% de tareas comunes, reduciendo dependencias
  • Fetch + AbortController reemplazan completamente clientes HTTP básicos
  • FormData maneja el 95% de escenarios de carga de formularios sin librerías
  • URLSearchParams elimina errores de análisis relacionados con expresiones regulares
  • La API de Popover estandariza componentes de interfaz accesibles

Estas interfaces permiten optimizar proyectos intermedios a avanzados sin sacrificar funcionalidad.

— Editorial Team

Advertisement 728x90

Leer después