Mutabilidad vs. Inmutabilidad: El Arte de Proteger el Estado de tu Aplicación

Publicado el 28/07/2026 (Act. 29/09/2026) 3 min lectura Dificultad: Intermedio

El control del estado

En el desarrollo de software, el "estado" es el conjunto de datos que la aplicación maneja en un momento específico: la información del usuario logueado, los ítems en un carrito de compras o la configuración de la interfaz.

A medida que una aplicación crece, gestionar cómo y cuándo cambian estos datos se vuelve uno de los desafíos arquitectónicos más grandes. Para resolverlo, existen dos enfoques fundamentales: la mutabilidad y la inmutabilidad.

El personaje sosteniendo con orgullo una nueva poción brillante, manteniendo la versión original a salvo en el fondo. Simboliza el resultado seguro de aplicar inmutabilidad en los datos La inmutabilidad asegura que, en lugar de alterar un objeto existente, creemos una copia nueva con las modificaciones deseadas.

El peligro de la mutabilidad

Un dato es mutable cuando su valor puede ser alterado después de haber sido creado, manteniendo la misma referencia en la memoria RAM. En lenguajes como JavaScript, los objetos y los arreglos (arrays) son mutables por defecto.

Si tenemos un objeto usuario y modificamos directamente su propiedad usuario.nombre = "Juan", estamos mutando el dato original. Aunque parece la forma más rápida de programar, es una fuente común de efectos secundarios (side effects).

Si pasamos ese objeto mutable a tres funciones distintas, cualquiera de ellas puede alterar sus propiedades. Cuando ocurre un error, rastrear qué parte del código modificó el dato original se vuelve muy complejo.

El poder de la inmutabilidad

La inmutabilidad propone una regla clara: considerar que un dato, una vez creado, es de solo lectura.

Si necesitamos actualizar el nombre del usuario, no alteramos el objeto original. En su lugar, creamos una copia del objeto (usando el operador spread o librerías como Immer), le asignamos el nuevo nombre a esa copia y la almacenamos en una nueva referencia de memoria. El objeto original permanece intacto.

Este enfoque ayuda a que los datos sean predecibles. Al pasar un objeto tratado de forma inmutable a una función, reducimos significativamente el riesgo de que la información original se altere accidentalmente.

Por qué los frameworks modernos la aprovechan

La inmutabilidad no es solo una cuestión de orden, es una ventaja de rendimiento para frameworks modernos como Angular o React.

Para saber si la interfaz gráfica debe actualizarse, el framework necesita detectar si los datos cambiaron. Si mutamos un objeto gigante, el framework tendría que recorrer cada una de sus propiedades para detectar modificaciones.

En cambio, al usar inmutabilidad, el framework puede simplemente comparar la referencia en memoria (objetoViejo === objetoNuevo). Si la referencia es distinta, sabe instantáneamente que hay datos nuevos y actualiza la pantalla. Es una operación extremadamente eficiente.

Adoptar la inmutabilidad puede implicar un ligero aumento en el uso de memoria a corto plazo y la creación de copias. Sin embargo, en la arquitectura de software moderna, ese costo suele compensarse ampliamente por el beneficio de tener un flujo de datos predecible y libre de efectos secundarios indeseados.


¿Te resultó útil? Compartilo