react-native-qalink 0.6.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +132 -0
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -351,6 +351,68 @@ QALink.init({
351
351
 
352
352
  ---
353
353
 
354
+ ## 📦 Event Packages (v0.6.0)
355
+
356
+ Los **Event Packages** agrupan **todos los eventos** de una pantalla en un solo payload que se envía cuando el usuario sale de ella. Incluyen métricas pre-calculadas y el historial completo de eventos.
357
+
358
+ ### Integración en 1 línea — `useTrackedScreen`
359
+
360
+ ```typescript
361
+ import { useTrackedScreen } from 'react-native-qalink';
362
+
363
+ function CheckoutScreen() {
364
+ useTrackedScreen('CheckoutScreen');
365
+ // ↑ inicia el package al montar, lo cierra y envía al desmontar
366
+ return <View>...</View>;
367
+ }
368
+ ```
369
+
370
+ Eso es todo. Todos los eventos generados mientras el usuario está en esa pantalla (API calls, logs, errores, breadcrumbs) se agrupan y se envían juntos al salir.
371
+
372
+ ### API manual — `startPackage` / `endPackage`
373
+
374
+ ```typescript
375
+ // En React Navigation (App.tsx)
376
+ <NavigationContainer
377
+ onStateChange={() => {
378
+ const screen = navigationRef.current?.getCurrentRoute()?.name ?? '';
379
+
380
+ QALink.endPackage(); // cierra el package de la pantalla anterior
381
+ QALink.startPackage(screen); // inicia uno nuevo para la pantalla actual
382
+ }}
383
+ >
384
+ ```
385
+
386
+ ### Payload que recibe el dashboard
387
+
388
+ ```json
389
+ {
390
+ "type": "event_package",
391
+ "packageId": "...",
392
+ "context": {
393
+ "screenName": "CheckoutScreen",
394
+ "sessionId": "...",
395
+ "startTime": 1710445670000,
396
+ "endTime": 1710445680000,
397
+ "durationMs": 10000
398
+ },
399
+ "events": [ ...todos los eventos capturados en esa pantalla... ],
400
+ "metrics": {
401
+ "totalApiCalls": 3,
402
+ "totalErrors": 1,
403
+ "totalLogs": 5,
404
+ "totalBreadcrumbs": 2,
405
+ "totalEvents": 11
406
+ }
407
+ }
408
+ ```
409
+
410
+ ### Backward compatibility
411
+
412
+ Si **no** llamas `startPackage` ni `useTrackedScreen`, cada evento se sigue enviando inmediatamente como antes. Sin cambios de comportamiento.
413
+
414
+ ---
415
+
354
416
  ## 📊 Tipos de eventos capturados
355
417
 
356
418
  El SDK captura automáticamente:
@@ -358,6 +420,7 @@ El SDK captura automáticamente:
358
420
  | Tipo | Descripción |
359
421
  |------|-------------|
360
422
  | `session_start` | Inicio de sesión |
423
+ | `event_package` | Batch de eventos de una pantalla (v0.6.0) |
361
424
  | `http_request` | Request HTTP (fetch/axios) |
362
425
  | `user_log` | Logs con debug/info/warn/error/critical |
363
426
  | `custom_event` | Eventos custom con logEvent() |
@@ -445,6 +508,75 @@ QALink.logEvent('experiment_viewed', {
445
508
  });
446
509
  ```
447
510
 
511
+ ### 4. Event Package con React Navigation
512
+
513
+ ```typescript
514
+ // App.tsx
515
+ import { useTrackedScreen } from 'react-native-qalink';
516
+
517
+ // En cada pantalla — 1 sola línea:
518
+ function PaymentScreen() {
519
+ useTrackedScreen('PaymentScreen');
520
+ // ...
521
+ }
522
+
523
+ function ProfileScreen() {
524
+ useTrackedScreen('ProfileScreen');
525
+ // ...
526
+ }
527
+ ```
528
+
529
+ O con `NavigationContainer` para cobertura automática de todas las pantallas:
530
+
531
+ ```typescript
532
+ // App.tsx
533
+ import { NavigationContainer } from '@react-navigation/native';
534
+ import { QALink } from 'react-native-qalink';
535
+
536
+ <NavigationContainer
537
+ onStateChange={() => {
538
+ const screen = navigationRef.current?.getCurrentRoute()?.name ?? 'unknown';
539
+ QALink.endPackage(); // cierra el package de la pantalla anterior
540
+ QALink.startPackage(screen); // inicia uno nuevo
541
+ }}
542
+ >
543
+ ```
544
+
545
+ ---
546
+
547
+ ## 📋 Referencia completa de la API
548
+
549
+ | Método | Descripción |
550
+ |--------|-------------|
551
+ | **`init(config)`** | Inicializa el SDK. Requerido antes de todo. |
552
+ | **`interceptAxios(instance)`** | Registra una instancia de Axios. |
553
+ | **`setUserContext(ctx)`** | Adjunta datos del usuario a todos los eventos. |
554
+ | **`setCustomContext(ctx)`** | Adjunta datos custom a todos los eventos. |
555
+ | **`clearContext()`** | Limpia usuario y contexto custom. |
556
+ | **`debug(...args)`** | Log nivel debug. |
557
+ | **`info(...args)`** | Log nivel info. |
558
+ | **`warn(...args)`** | Log nivel warn. |
559
+ | **`error(...args)`** | Log nivel error. |
560
+ | **`critical(...args)`** | Log nivel critical. |
561
+ | **`logEvent(name, data?)`** | Evento custom de negocio. |
562
+ | **`addBreadcrumb(action, data?)`** | Breadcrumb manual. |
563
+ | **`logRequest(options)`** | Registra request de red manualmente. |
564
+ | **`setScreen(name)`** | Cambia la pantalla actual (solo breadcrumb). |
565
+ | **`startPackage(screenName)`** | Inicia un Event Package para esa pantalla. |
566
+ | **`endPackage()`** | Cierra el package activo y lo envía. |
567
+ | **`captureScreen(label?)`** | Captura la pantalla completa. |
568
+ | **`captureRef(ref, label?)`** | Captura un componente específico. |
569
+ | **`configureHTTP(config)`** | Actualiza config HTTP en runtime. |
570
+ | **`getDeviceId()`** | Devuelve el deviceId de la sesión. |
571
+ | **`getStatus()`** | Estado de la conexión WebSocket. |
572
+ | **`destroy()`** | Limpia interceptores y desconecta. |
573
+
574
+ **Hook:**
575
+
576
+ | Hook | Descripción |
577
+ |------|-------------|
578
+ | **`useTrackedScreen(name)`** | 1 línea: inicia y cierra el package automáticamente al montar/desmontar la pantalla. |
579
+
448
580
  ---
449
581
 
450
582
  ## 🚨 Troubleshooting
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-qalink",
3
- "version": "0.6.0",
3
+ "version": "0.6.1",
4
4
  "description": "Real-time error capture SDK for React Native — helps QA teams identify if bugs are frontend or backend",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",