⚡ Expo SDK 52 → 55 📱 FitTrack Pro 📅 Semana 1 — 16 Jun 2026

Guía de Actualización Expo SDK

Bare workflow · iOS + Android · 12.000 usuarios activos · React Native 0.74 → 0.77
SDK 52 SDK 55 New Architecture · React Compiler · Hermes v1
Progreso total de migración 35%
3
4
5
6
7
8
6
Paquetes deprecados
4
Configs a limpiar
3
Mejoras de rendimiento
Paso a paso — Plan de migración
🩺
Paso 1 — Diagnóstico inicial
✓ COMPLETADO
# Ejecutar diagnóstico npx expo-doctor # Output detectado en FitTrack Pro: ✗ expo-av is deprecated ✗ expo-app-loading is deprecated ✗ @expo/vector-icons — use expo-symbols ✗ Old Architecture (bridge) detected ✗ autoprefixer in postcss not needed SDK 53+ ✗ unstable_enablePackageExports redundant
⬆️
Paso 2 — Actualizar Expo y dependencias
✓ COMPLETADO
# 1. Actualizar a SDK 55 npx expo install expo@latest # 2. Fijar versiones compatibles npx expo install --fix # Resultado en package.json: "expo": "^55.0.0" "react-native": "0.77.0" "react": "19.0.0"
🎬
Paso 3 — Migrar expo-av → expo-video + expo-audio
⏳ EN PROGRESO — Alta prioridad
⚠️
FitTrack Pro usa expo-av para: (1) reproducir vídeos de rutinas de entreno, (2) grabar voz para notas de workout. Ambos flujos requieren migración completa antes de SDK 55.
❌ ANTES (expo-av)
import { Video } from 'expo-av'; // WorkoutVideoPlayer.tsx <Video source={{ uri: videoUrl }} useNativeControls resizeMode="contain" isLooping />
✅ DESPUÉS (expo-video)
import { VideoView, useVideoPlayer } from 'expo-video'; // WorkoutVideoPlayer.tsx const player = useVideoPlayer(videoUrl, p => { p.loop = true; }); <VideoView player={player} nativeControls allowsFullscreen />
❌ ANTES — Grabar audio
import { Audio } from 'expo-av'; const rec = new Audio.Recording(); await rec.prepareToRecordAsync( Audio.RecordingOptionsPresets.HIGH_QUALITY ); await rec.startAsync();
✅ DESPUÉS — useAudioRecorder
import { useAudioRecorder, AudioQuality } from 'expo-audio'; const recorder = useAudioRecorder({ android: { quality: AudioQuality.HIGH }, ios: { quality: AudioQuality.High }, }); recorder.record();
Paquetes deprecados en FitTrack Pro
Paquete actual Reemplazar por Prioridad Estado Nota
expo-av expo-video + expo-audio Urgente ⏳ En progreso Vídeos entreno + grabación de notas
expo-app-loading expo-splash-screen Urgente ⬜ Pendiente Reemplazar SplashScreen.preventAutoHideAsync()
@expo/vector-icons expo-symbols Normal ⬜ Pendiente SF Symbols nativo en iOS — mejor rendimiento
AsyncStorage expo-sqlite/localStorage Baja ⬜ Pendiente Migrar preferencias usuario y caché local
expo-linear-gradient backgroundImage CSS en View Baja ⬜ Pendiente Gradientes header dashboard fitness
autoprefixer (PostCSS) Eliminar Baja ⬜ Pendiente No necesario en SDK 53+
🧹
Paso 4 — Limpiar configuración
Pendiente
  • Borrar sdkVersion de app.json — Expo lo gestiona automáticamente
  • Eliminar babel.config.js (solo contiene babel-preset-expo)
  • Quitar de metro.config.js: unstable_enablePackageExports (default SDK 53+)
  • Revisar exclusión de react-native-reanimated en expo.install.exclude — puede ser innecesaria
  • Añadir a package.json: react-native-worklets (requerido por reanimated SDK 54+)
# app.json — habilitar React Compiler "experiments": { "reactCompiler": true } # newArchEnabled ya NO hace falta // "newArchEnabled": true ← borrar
🔨
Paso 5 — Prebuild y limpieza de caché
Pendiente — Bare workflow (tiene /ios y /android)
ℹ️
FitTrack Pro tiene directorios /ios y /android — aplicar todos los pasos de bare workflow.
# Regenerar carpetas nativas npx expo prebuild --clean # Limpiar caché general rm -rf node_modules .expo watchman watch-del-all npx expo export -p ios --clear # iOS — renovar pods cd ios && pod install --repo-update npx expo run:ios --no-build-cache # Android — limpiar Gradle cd android && ./gradlew clean
🏗️
Paso 6 — New Architecture + Hermes v1
Pendiente — Boost de rendimiento
  • New Architecture activa por defecto en SDK 53+ — no requiere configuración extra
  • Habilitar Hermes v1 en expo-build-properties para mejor rendimiento runtime
  • Revisar módulos nativos custom de FitTrack Pro con Old Architecture API
# app.json — Hermes v1 (opt-in SDK 55) { "plugins": [ ["expo-build-properties", { "ios": { "useHermesV1": true }, "android": { "useHermesV1": true } }] ] }
🧪
Paso 7 — Testing pre-producción
Pendiente
  • Distribuir build iOS a QA via TestFlight
  • Subir APK/AAB a Play Console internal testing
  • Verificar reproductor de vídeos de rutinas (expo-video)
  • Testar grabación de notas de workout (expo-audio)
  • Comprobar splash screen y loading states
  • Validar OTA updates no rompen usuarios en SDK 52
  • Medir performance con New Architecture vs Old Architecture
Cronograma — 1 semana (2 devs)
Lunes — Día 1
Diagnóstico + Upgrade base
expo-doctor, npx expo install expo@latest --fix, primer commit de upgrade
3
Martes-Miércoles — Días 2-3
Migración expo-av → expo-video + expo-audio
WorkoutVideoPlayer.tsx, AudioNoteRecorder.tsx, tests unitarios de ambos flujos
4
Jueves — Día 4
Limpieza de configs + paquetes menores
expo-splash-screen, expo-symbols, AsyncStorage, metro config, babel.config.js, app.json
5
Viernes — Día 5
Prebuild + New Architecture + Hermes v1
npx expo prebuild --clean, pod install, gradlew clean, activar Hermes v1
6
Fin de semana — Días 6-7
QA en TestFlight + Play Console → Deploy
Testing completo, validación OTA, aprobación equipo, release a producción
Recursos de referencia: Changelog completo en https://expo.dev/changelog · Migración expo-av documentada en references/expo-av-to-video.md y references/expo-av-to-audio.md