Cómo configurar un entorno React Native en macOS de forma correcta usando rbenv, Bundler y CocoaPods (compatible con React Native 0.79.7)

Cómo configurar un entorno React Native en macOS de forma correcta usando rbenv, Bundler y CocoaPods (compatible con React Native 0.79.7)

Establecer un entorno de desarrollo para React Native en macOS, especialmente cuando se desarrolla para iOS, puede presentar diversos retos. El uso de múltiples versiones de Ruby, diferencias de arquitectura en procesadores Apple Silicon (como M1, M2 o M3) y las dependencias específicas que exige React Native pueden generar errores difíciles de depurar si no se cuenta con una configuración clara y aislada.

En este artículo intentare explicar paso a paso cómo configurar un entorno funcional, reproducible y compatible con React Native 0.79.7, a partir de una experiencia real enfrentando y resolviendo problemas relacionados con Ruby, CocoaPods y Bundler.

¿Qué suele fallar?

En entornos no controlados, es común encontrarse con problemas como:

  • Conflictos entre versiones del sistema y versiones instaladas por el usuario (Ruby, CocoaPods)
  • Uso simultáneo de herramientas como RVM y rbenv
  • bundle exec pod install que no reconoce la versión de CocoaPods necesaria
  • Diferencias entre gems instaladas globalmente y localmente
  • Incompatibilidades derivadas de la arquitectura del procesador (arm64 vs. x86_64)

Estos conflictos no siempre se detectan fácilmente, y pueden provocar que comandos como yarn ios fallen sin una razón clara.

Objetivo de esta configuración

La meta es lograr un entorno que:

  • Utilice una versión de Ruby aislada y controlada por el proyecto
  • Gestione las dependencias Ruby (como cocoapods) de forma local mediante Bundler
  • Sea compatible con React Native 0.79.7
  • Funcione correctamente en macOS con chip Apple Silicon, sin necesidad de ajustes arquitectónicos como arch -x86_64

Paso 1: Instalar rbenv y configurar Ruby

Primero, se recomienda instalar rbenv junto con ruby-build utilizando Homebrew:

brew install rbenv ruby-build

Luego, se debe agregar la configuración de rbenv al archivo de inicio de la terminal. Aquí es importante considerar que no todos los usuarios utilizan ~/.zshrc (yo lo uso) . En sistemas con Zsh (la shell por defecto en macOS), puede ser necesario editar también:

  • ~/.zprofile
  • ~/.bash_profile
  • ~/.profile

Se puede agregar lo siguiente en el archivo correspondiente:

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

Una vez hecho esto, se sugiere cerrar completamente la terminal y volver a abrirla. Luego, se puede verificar que rbenv esté funcionando correctamente con:

ruby -v
which ruby

La salida esperada debe mostrar algo como:

ruby 3.1.2p20 (...)
/Users/usuario/.rbenv/shims/ruby

Paso 2: Eliminar configuraciones conflictivas y versiones globales de Ruby

Si después de los pasos anteriores, aún se muestra la ruta del sistema (/usr/bin/ruby) o una versión controlada por RVM, es probable que otra configuración esté interfiriendo.

En algunos casos, puede ser necesario revisar y eliminar líneas relacionadas con RVM en los archivos mencionados antes. Y si se instaló Ruby globalmente con Homebrew u otro método, podría ser útil desinstalarlo completamente:

brew uninstall ruby

Esto permitirá que rbenv sea quien controle completamente el entorno Ruby.

Paso 3: Crear un Gemfile en el directorio iOS del proyecto

Dentro del proyecto React Native, se recomienda crear un archivo Gemfile en la carpeta ios, con el siguiente contenido:

source 'https://rubygems.org'

gem 'cocoapods', '1.14.3'

La versión 1.14.3 de CocoaPods es una de las más estables actualmente y es totalmente compatible con React Native 0.79.7. Otras versiones como 1.15.0, 1.15.1 o incluso 1.16.x han presentado incompatibilidades.

Paso 4: Instalar Bundler y las dependencias del proyecto

Luego, desde la carpeta ios, se pueden instalar las gems del entorno local con:

gem install bundler
bundle install

Este paso es fundamental, ya que asegura que CocoaPods se instale de forma local dentro del proyecto, y no como una dependencia global que podría cambiar en otros entornos.

Verificación:

bundle exec pod --version
# Debe mostrar: 1.14.3

Paso 5: Instalar dependencias con CocoaPods

Una vez que el entorno está listo, se puede ejecutar:

bundle exec pod install --repo-update

Este comando ejecutará CocoaPods utilizando la versión definida en el Gemfile, sin necesidad de forzar arquitectura o ejecutar arch -x86_64.

Paso 6: Ejecutar la aplicación en iOS

Finalmente, desde la raíz del proyecto, se puede correr:

yarn ios

El entorno debería compilar y ejecutar correctamente en el simulador de iOS, sin errores relacionados con CocoaPods, Ruby o Bundler.

Buenas prácticas a tener en cuenta

Componente Recomendación
Ruby Usar rbenv, no RVM ni Ruby del sistema
Versión de Ruby Fijar con rbenv global 3.1.2
CocoaPods Instalar con Bundler dentro del proyecto
Gemfile Usar siempre, con versión fija de cocoapods
Arquitectura No es necesario forzar x86_64 si el entorno está bien configurado
Instalación de pods Ejecutar bundle exec pod install --repo-update
React Native Confirmado compatible con 0.79.7

Sugerencia: Automatizar comandos comunes

Se puede simplificar el proceso mediante un Makefile en la raíz del proyecto:

ios-setup:
    cd ios && bundle exec pod install --repo-update && cd ..

ios-run:
    yarn ios

Luego se ejecutan así:

make ios-setup
make ios-run

Conclusión

Ahora sabes que contar con un entorno Ruby controlado y reproducible es esencial para trabajar con React Native, así puedes evitar errores que no siempre tienen una causa evidente. Esta configuración es la que actualmente me ha funcionado con React Native 0.79.7, sin necesidad de hacks ni ajustes arquitectónicos adicionales.

Happy coding :)


Photo by Hush Naidoo Jade Photography on Unsplash

Written with StackEdit.

Jack Fiallos

Jack Fiallos

Te gustó este artículo?