← Volver al listado de tecnologías
Capítulo 10: Proyecto Final
Proyecto Final: Debug Dashboard
Aplicarás todo lo aprendido configurando debugging completo para una app.
Estructura del Proyecto
src/
├── config/
│ └── ReactotronConfig.ts
├── store/
│ ├── index.ts
│ └── slices/
├── services/
│ └── api.ts
├── screens/
│ └── ...
└── App.tsx
Configuración Completa
// config/ReactotronConfig.ts
import Reactotron from 'reactotron-react-native';
import { reactotronRedux } from 'reactotron-redux';
import AsyncStorage from '@react-native-async-storage/async-storage';
import { navigationRef } from '../navigation';
import { store } from '../store';
const reactotron = Reactotron
.setAsyncStorageHandler(AsyncStorage)
.configure({
name: 'E-Commerce App',
})
.useReactNative({
asyncStorage: true,
networking: {
ignoreUrls: /analytics|logs/,
},
editor: true,
errors: true,
})
.use(reactotronRedux())
.connect();
// Custom Commands
reactotron.onCustomCommand({
command: 'resetApp',
title: 'Reset App',
handler: async () => {
await AsyncStorage.clear();
store.dispatch({ type: 'RESET' });
reactotron.log('App reseteada');
},
});
reactotron.onCustomCommand({
command: 'mockUser',
title: 'Mock User Login',
args: [{ name: 'role', type: 'string' }],
handler: ({ role }) => {
store.dispatch(setUser({
email: `${role}@test.com`,
role,
}));
},
});
reactotron.onCustomCommand({
command: 'navigate',
title: 'Navigate',
args: [{ name: 'screen', type: 'string' }],
handler: ({ screen }) => {
navigationRef.navigate(screen);
},
});
export default reactotron;
API con Logging
// services/api.ts
import Reactotron from '../config/ReactotronConfig';
export async function apiRequest(endpoint, options = {}) {
const bench = Reactotron.benchmark(`API: ${endpoint}`);
try {
const response = await fetch(endpoint, options);
const data = await response.json();
Reactotron.display({
name: 'API',
value: { endpoint, status: response.status, data },
preview: `${response.status} ${endpoint}`,
});
bench.stop();
return data;
} catch (error) {
Reactotron.error('API Error', { endpoint, error });
throw error;
}
}
Ejercicio Final
Objetivo
Configurar debugging completo para una app de e-commerce.
Requisitos
- Reactotron configurado con todos los plugins
- Redux integrado con visualización de acciones
- Network tracking para todas las APIs
- AsyncStorage para carrito y preferencias
- Custom commands para:
- Reset app
- Mock login (admin/user)
- Agregar producto al carrito
- Navegar a pantalla
Criterios de Evaluación
- Configuración completa de Reactotron
- Redux visible en timeline
- Peticiones HTTP capturadas
- AsyncStorage inspeccionable
- 4+ custom commands funcionales
Siguientes Pasos
Recursos Adicionales
Temas Avanzados
- Plugin para React Query/TanStack Query
- Integración con Sentry para error tracking
- Performance profiling avanzado
Proyectos Sugeridos
- Plugin de Analytics: Visualiza eventos de analytics
- Plugin de Feature Flags: Toggle features remotamente
- Plugin de i18n: Cambia idioma desde Reactotron