Surgical Refactor: Por qué no deberías tirar tu base de código a la basura
Cuando un proyecto web empieza a presentar cuellos de botella de rendimiento, dependencias rotas, lentitud en los builds de CI/CD o una configuración de CMS que añade demasiada fricción para los desarrolladores, la reacción más común e instintiva de muchos equipos de ingeniería es: "Tiremos todo y empecemos de cero".
Esta decisión, aunque atractiva en teoría porque permite trabajar con un lienzo limpio, suele ser una trampa costosa. Re-escribir una plataforma desde cero consume tiempo valioso, introduce nuevos errores que ya habían sido corregidos en producción y pone en riesgo módulos críticos que ya funcionan correctamente (como pasarelas de pago o flujos de autenticación complejos).
En Tensor Studio adoptamos un enfoque diferente para modernizar nuestro propio sitio web: el Surgical Refactor (Refactorización Quirúrgica). En lugar de demoler, decidimos extirpar con precisión cirujana las dependencias externas problemáticas y conservar intacto el esqueleto estable del e-commerce y pagos.
---
1. El Diagnóstico del Sitio: Fricción Externa
Nuestra arquitectura original de Next.js App Router dependía en exceso de servicios de terceros para tareas que Next.js puede resolver de forma nativa o estática:
- Sanity CMS: Aunque es una herramienta excelente para contenido altamente colaborativo, para un portafolio técnico y notas editoriales de ingeniería como las nuestras, las llamadas a la API REST de Sanity y la compilación de imágenes remotas añadían segundos innecesarios a los tiempos de carga en el navegador (LCP) y dependencias pesadas al bundle de JavaScript.
- Web3Forms: Utilizado originalmente como puente para el formulario de contacto, introducía un punto de fallo externo y dependencias adicionales en formularios cliente.
Sin embargo, el sitio web integraba un módulo crítico que funcionaba de manera impecable: el flujo de checkout y webhook asíncrono de Stripe para la descarga del bundle digital Da-Key. Esta lógica requería preservarse al 100%.
---
2. La Operación Quirúrgica: Eliminación de Dependencias
Ejecutamos la refactorización siguiendo tres cortes técnicos precisos:
Paso 1: Migración Completa de CMS a MDX Local
Extirpamos todas las dependencias de Sanity (`next-sanity`, `@sanity/image-url`) y las reemplazamos por archivos `.mdx` locales organizados en subcarpetas dentro de `src/content/`.
Con el helper de NodeJS `gray-matter`, pasamos a compilar y estructurar los blogs y casos de estudio de manera 100% estática en tiempo de compilación. Esto redujo el bundle final de la app de forma masiva y garantizó un LCP instantáneo al servir contenido estático directamente desde la CDN de Vercel.
Paso 2: Transición a Server Actions Nativos con Resend
Eliminamos Web3Forms y creamos un Server Action seguro en Next.js (`src/app/actions/contact.ts`). Ahora, el formulario de contacto se conecta de forma directa al SDK de Resend mediante una llamada de servidor optimizada utilizando React 19 `useActionState`. Esto nos permitió, además, sanitizar las entradas de texto del cliente directamente en el servidor antes de generar el correo HTML, mitigando riesgos de inyección HTML.
Paso 3: Aislamiento y Conservación de Stripe
Toda la lógica de Stripe (`src/app/api/checkout/` y el webhook en `src/app/api/webhook/`) se dejó intacta estructuralmente. Al no alterar las rutas ni las firmas criptográficas de los webhooks de pago, pudimos garantizar que la capacidad del sitio web para generar ingresos y despachar el PDF de Da-Key no sufriera ni un solo segundo de inactividad durante la migración de contenidos.
---
Conclusión: El Valor del Rigor Técnico
El Surgical Refactor demuestra que modernizar una aplicación no requiere demolerla. Extirpar con precisión quirúrgica los elementos de fricción (CMS remotos, servicios de terceros para formularios simples) y reemplazarlos por soluciones nativas y estáticas de alto rendimiento (MDX local, Server Actions), mientras se respetan los módulos críticos de negocio, permite actualizar una plataforma de forma segura, rápida y con cero riesgos de inestabilidad operativa.
