react-native-netmera 2.1.0-alpha03 → 2.1.0-alpha05

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.
package/README.md CHANGED
@@ -547,4 +547,89 @@ startDataTransfer() method, the SDK will attempt to resend any requests that wer
547
547
  Netmera.startDataTransfer();
548
548
  ```
549
549
 
550
+ ---
551
+
552
+ ## Autotracking
553
+
554
+ Netmera Autotracking automatically captures screen transitions via **React Navigation** and tap interactions on **official React Native components** (`Pressable`, `TouchableOpacity`, `Switch`, etc.) without requiring manual instrumentation for each event.
555
+
556
+ ### NetmeraAnalyticProvider
557
+
558
+ Wrap your `NavigationContainer` (or your root component) with `NetmeraAnalyticProvider`. The provider handles both screen tracking and tap tracking based on the configuration received from the Netmera dashboard.
559
+
560
+ ```tsx
561
+ export default function App() {
562
+ return (
563
+ <NetmeraAnalyticProvider>
564
+ <NavigationContainer>
565
+ {/* your navigators */}
566
+ </NavigationContainer>
567
+ </NetmeraAnalyticProvider>
568
+ );
569
+ }
570
+ ```
571
+
572
+ ### React Navigation v6 and below
573
+
574
+ On **React Navigation v7+** the provider locates the navigation container automatically via the React fiber tree (no extra configuration needed).
575
+
576
+ On **React Navigation v6 and below** the fiber-based detection is not available. Pass an explicit `navigationRef` prop so the provider can subscribe to screen changes:
577
+
578
+ ```tsx
579
+ import { useNavigationContainerRef, NavigationContainer } from '@react-navigation/native';
580
+ import { NetmeraAnalyticProvider } from 'react-native-netmera';
581
+
582
+ export default function App() {
583
+ const navigationRef = useNavigationContainerRef();
584
+
585
+ return (
586
+ <NetmeraAnalyticProvider navigationRef={navigationRef}>
587
+ <NavigationContainer ref={navigationRef}>
588
+ {/* your navigators */}
589
+ </NavigationContainer>
590
+ </NetmeraAnalyticProvider>
591
+ );
592
+ }
593
+ ```
594
+
595
+ ### Manual action tracking with `Netmera.trackAction`
596
+
597
+ For components that do not fire standard `onPress` or `onValueChange` events (e.g. third-party dropdowns, custom pickers, gesture-only views), call `Netmera.trackAction` to record the interaction manually.
598
+
599
+ The method automatically prepends the current screen name to the provided path:
600
+
601
+ ```ts
602
+ import { Netmera } from 'react-native-netmera';
603
+
604
+ Netmera.trackAction('category-selector|Electronics');
605
+ // → records: "HomeScreen|category-selector|Electronics"
606
+ ```
607
+
608
+ Use the `|` separator to build structured paths (e.g. `component|value`, `list|item-name`).
609
+
610
+ ### Improving tap tracking with `accessibilityLabel` and `testID`
611
+
612
+ When a tap is detected, Netmera resolves an identifier for the tapped component using the following priority order:
613
+
614
+ 1. **`accessibilityLabel`** — the preferred identifier; human-readable and stable.
615
+ 2. **`testID`** — used when `accessibilityLabel` is absent.
616
+ 3. **`placeholder`** — for `TextInput` components with no label or testID.
617
+ 4. **Child text content** — the text of the first `<Text>` descendant, trimmed to 50 characters.
618
+
619
+ If none of the above resolves to a non-empty string the tap is not recorded.
620
+
621
+ Add `accessibilityLabel` to interactive components that would otherwise produce no identifier (icon buttons, image buttons, custom gesture views):
622
+
623
+ ```tsx
624
+ // Icon button — without accessibilityLabel it would produce no identifier
625
+ <Pressable
626
+ accessibilityLabel="add-to-cart"
627
+ onPress={handleAddToCart}
628
+ >
629
+ <CartIcon />
630
+ </Pressable>
631
+ ```
632
+
633
+ > **Recommendation:** Prefer `accessibilityLabel` over relying on child text content. Text content can change with copy updates or localisation, causing tracking paths to shift. An explicit label stays stable across UI changes.
634
+
550
635
  Please explore [our example project](https://github.com/Netmera/Netmera-React-Native-Typescript-Example) for detailed information.
@@ -11,16 +11,12 @@ import { useTapTracking } from "./autotracking/useTapTracking.js";
11
11
  import { jsx as _jsx } from "react/jsx-runtime";
12
12
  /**
13
13
  * Wraps your app to enable automatic screen tracking and tap tracking.
14
- *
15
- * <NetmeraAnalyticProvider>
16
- * <NavigationContainer>…</NavigationContainer>
17
- * </NetmeraAnalyticProvider>
14
+ * Place it outside your NavigationContainer (or Static Navigation component).
18
15
  */
19
16
  export function NetmeraAnalyticProvider({
20
17
  children,
21
18
  navigationRef
22
19
  }) {
23
- const viewRef = useRef(null);
24
20
  const [config, setConfig] = useState(null);
25
21
  const appliedConfigRef = useRef(null);
26
22
  const applyConfig = cfg => {
@@ -28,8 +24,8 @@ export function NetmeraAnalyticProvider({
28
24
  if (prev?.isScreenFlowEnabled === cfg.isScreenFlowEnabled && prev?.isInputActionEnabled === cfg.isInputActionEnabled && prev?.shouldCollectValues === cfg.shouldCollectValues) return;
29
25
  appliedConfigRef.current = cfg;
30
26
  setConfig(cfg);
31
- console.log('[NMAutotrack] screen tracking ', cfg.isScreenFlowEnabled ? 'enabled' : 'disabled');
32
- console.log('[NMAutotrack] input action tracking ', cfg.isInputActionEnabled ? 'enabled' : 'disabled');
27
+ console.log('[NMAutotrack] screen tracking', cfg.isScreenFlowEnabled ? 'enabled' : 'disabled');
28
+ console.log('[NMAutotrack] input action tracking', cfg.isInputActionEnabled ? 'enabled' : 'disabled');
33
29
  };
34
30
  useEffect(() => {
35
31
  NativeModules.RNNetmera?.getAutoTrackConfig?.()?.then(cfg => {
@@ -46,14 +42,15 @@ export function NetmeraAnalyticProvider({
46
42
  const screenFlowEnabled = config?.isScreenFlowEnabled ?? false;
47
43
  const inputActionEnabled = config?.isInputActionEnabled ?? false;
48
44
  const shouldCollectValues = config?.shouldCollectValues ?? false;
49
- const navigationEnabled = screenFlowEnabled || inputActionEnabled;
50
- useNavigationTracking(viewRef, navigationRef, navigationEnabled, screenFlowEnabled);
45
+
46
+ // Navigation tracking is needed whenever either flag is on: screen events
47
+ // need it for trackView, action events need it for the screen-name prefix.
48
+ useNavigationTracking(navigationRef, screenFlowEnabled || inputActionEnabled, screenFlowEnabled);
51
49
  const {
52
50
  onTouchStart,
53
51
  onTouchEnd
54
52
  } = useTapTracking(inputActionEnabled, shouldCollectValues);
55
53
  return /*#__PURE__*/_jsx(View, {
56
- ref: navigationEnabled ? viewRef : undefined,
57
54
  style: styles.container,
58
55
  onTouchStart: onTouchStart,
59
56
  onTouchEnd: onTouchEnd,
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useRef","useState","NativeEventEmitter","NativeModules","StyleSheet","View","useNavigationTracking","useTapTracking","jsx","_jsx","NetmeraAnalyticProvider","children","navigationRef","viewRef","config","setConfig","appliedConfigRef","applyConfig","cfg","prev","current","isScreenFlowEnabled","isInputActionEnabled","shouldCollectValues","console","log","RNNetmera","getAutoTrackConfig","then","catch","_err","emitter","RNNetmeraRCTEventEmitter","subscription","addListener","remove","screenFlowEnabled","inputActionEnabled","navigationEnabled","onTouchStart","onTouchEnd","ref","undefined","style","styles","container","create","flex"],"sourceRoot":"../../src","sources":["NetmeraAnalyticProvider.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useRef","useState","NativeEventEmitter","NativeModules","StyleSheet","View","useNavigationTracking","useTapTracking","jsx","_jsx","NetmeraAnalyticProvider","children","navigationRef","config","setConfig","appliedConfigRef","applyConfig","cfg","prev","current","isScreenFlowEnabled","isInputActionEnabled","shouldCollectValues","console","log","RNNetmera","getAutoTrackConfig","then","catch","_err","emitter","RNNetmeraRCTEventEmitter","subscription","addListener","remove","screenFlowEnabled","inputActionEnabled","onTouchStart","onTouchEnd","style","styles","container","create","flex"],"sourceRoot":"../../src","sources":["NetmeraAnalyticProvider.tsx"],"mappings":";;AAAA;AACA;AACA;;AAEA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAC1D,SACEC,kBAAkB,EAClBC,aAAa,EACbC,UAAU,EACVC,IAAI,QACC,cAAc;AACrB,SAASC,qBAAqB,QAAQ,yCAAsC;AAC5E,SAASC,cAAc,QAAQ,kCAA+B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAiC/D;AACA;AACA;AACA;AACA,OAAO,SAASC,uBAAuBA,CAAC;EACtCC,QAAQ;EACRC;AAC4B,CAAC,EAAE;EAC/B,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGb,QAAQ,CAAyB,IAAI,CAAC;EAClE,MAAMc,gBAAgB,GAAGf,MAAM,CAAyB,IAAI,CAAC;EAE7D,MAAMgB,WAAW,GAAIC,GAAoB,IAAK;IAC5C,MAAMC,IAAI,GAAGH,gBAAgB,CAACI,OAAO;IACrC,IACED,IAAI,EAAEE,mBAAmB,KAAKH,GAAG,CAACG,mBAAmB,IACrDF,IAAI,EAAEG,oBAAoB,KAAKJ,GAAG,CAACI,oBAAoB,IACvDH,IAAI,EAAEI,mBAAmB,KAAKL,GAAG,CAACK,mBAAmB,EAErD;IACFP,gBAAgB,CAACI,OAAO,GAAGF,GAAG;IAC9BH,SAAS,CAACG,GAAG,CAAC;IACdM,OAAO,CAACC,GAAG,CACT,+BAA+B,EAC/BP,GAAG,CAACG,mBAAmB,GAAG,SAAS,GAAG,UACxC,CAAC;IACDG,OAAO,CAACC,GAAG,CACT,qCAAqC,EACrCP,GAAG,CAACI,oBAAoB,GAAG,SAAS,GAAG,UACzC,CAAC;EACH,CAAC;EAEDtB,SAAS,CAAC,MAAM;IACdI,aAAa,CAACsB,SAAS,EAAEC,kBAAkB,GAAG,CAAC,EAC3CC,IAAI,CAAEV,GAA2B,IAAK;MACtC,IAAIA,GAAG,EAAED,WAAW,CAACC,GAAG,CAAC;IAC3B,CAAC,CAAC,EACAW,KAAK,CAAEC,IAAa,IAAK,CAAC,CAAC,CAAC;EAClC,CAAC,EAAE,EAAE,CAAC;EAEN9B,SAAS,CAAC,MAAM;IACd,MAAM+B,OAAO,GAAG,IAAI5B,kBAAkB,CACpCC,aAAa,CAAC4B,wBAChB,CAAC;IACD,MAAMC,YAAY,GAAGF,OAAO,CAACG,WAAW,CACtC,yBAAyB,EACxBhB,GAAoB,IAAK;MACxB,IAAIA,GAAG,EAAED,WAAW,CAACC,GAAG,CAAC;IAC3B,CACF,CAAC;IACD,OAAO,MAAMe,YAAY,CAACE,MAAM,CAAC,CAAC;EACpC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,iBAAiB,GAAGtB,MAAM,EAAEO,mBAAmB,IAAI,KAAK;EAC9D,MAAMgB,kBAAkB,GAAGvB,MAAM,EAAEQ,oBAAoB,IAAI,KAAK;EAChE,MAAMC,mBAAmB,GAAGT,MAAM,EAAES,mBAAmB,IAAI,KAAK;;EAEhE;EACA;EACAhB,qBAAqB,CACnBM,aAAa,EACbuB,iBAAiB,IAAIC,kBAAkB,EACvCD,iBACF,CAAC;EACD,MAAM;IAAEE,YAAY;IAAEC;EAAW,CAAC,GAAG/B,cAAc,CACjD6B,kBAAkB,EAClBd,mBACF,CAAC;EAED,oBACEb,IAAA,CAACJ,IAAI;IACHkC,KAAK,EAAEC,MAAM,CAACC,SAAU;IACxBJ,YAAY,EAAEA,YAAa;IAC3BC,UAAU,EAAEA,UAAW;IAAA3B,QAAA,EAEtBA;EAAQ,CACL,CAAC;AAEX;AAEA,MAAM6B,MAAM,GAAGpC,UAAU,CAACsC,MAAM,CAAC;EAC/BD,SAAS,EAAE;IAAEE,IAAI,EAAE;EAAE;AACvB,CAAC,CAAC","ignoreList":[]}
@@ -4,71 +4,34 @@
4
4
  * Copyright (c) 2026 Netmera Research.
5
5
  */
6
6
 
7
- import React, { useEffect, useRef } from 'react';
7
+ import { useEffect, useRef } from 'react';
8
8
  import { setCurrentScreen } from "./NetmeraNavigationState.js";
9
9
  import { RNNetmera } from "../utils/RNNetmera.js";
10
10
 
11
- // ContextProvider fiber tag stable React internal constant since React 16.
12
- const CONTEXT_PROVIDER_TAG = 10;
13
- const NAV_SEARCH_DEPTH = 25;
14
-
15
- // Duck-type check: React Navigation v5/v6/v7 all expose this surface on the container ref.
11
+ // Duck-type check: React Navigation v5/v6/v7 all expose this surface.
16
12
  function isNavContainerRef(value) {
17
13
  return value != null && typeof value.addListener === 'function' && typeof value.getCurrentRoute === 'function' && typeof value.isReady === 'function';
18
14
  }
19
15
 
20
- // DFS through child fibers to find NavigationContainerRefContext.Provider.
21
- // Siblings walk at the same depth — they sit at the same level in the tree.
22
- function findNavContainerRef(fiber, depth = 0) {
23
- if (!fiber || depth > NAV_SEARCH_DEPTH) return null;
24
- if (fiber.tag === CONTEXT_PROVIDER_TAG && isNavContainerRef(fiber.memoizedProps?.value)) {
25
- return fiber.memoizedProps.value;
26
- }
27
- return findNavContainerRef(fiber.child, depth + 1) ?? findNavContainerRef(fiber.sibling, depth);
28
- }
29
-
30
16
  /**
31
17
  * Subscribes to React Navigation screen changes and keeps NetmeraNavigationState
32
- * up to date. Resolves the navigation container ref via two paths:
18
+ * up to date.
33
19
  *
34
- * - New Arch (Fabric): auto-detected through the fiber tree via viewRef.
35
- * - Old Arch (Paper): caller passes navigationRef prop explicitly.
20
+ * Requires a valid navigation container ref — pass the same ref to both
21
+ * NetmeraAnalyticProvider and NavigationContainer (or the component created
22
+ * by createStaticNavigation).
36
23
  *
37
- * Silently no-ops if neither path yields a valid ref.
38
- * Respects the isScreenFlowEnabled flag — screen changes are ignored when disabled.
24
+ * Silently no-ops when navigationRef is absent or not yet populated.
25
+ * Respects the enabled flag — screen changes are ignored when disabled.
39
26
  */
40
- export function useNavigationTracking(viewRef, navigationRef, enabled, screenLogEnabled) {
41
- // React 18: capture own fiber during render via ReactCurrentOwner.
42
- // React 19 removed ReactCurrentOwner — this silently yields null, which is fine
43
- // because the Fabric path (viewRef.__internalInstanceHandle) covers React 19.
27
+ export function useNavigationTracking(navigationRef, enabled, screenLogEnabled) {
44
28
  const screenLogEnabledRef = useRef(screenLogEnabled);
45
29
  useEffect(() => {
46
30
  screenLogEnabledRef.current = screenLogEnabled;
47
31
  }, [screenLogEnabled]);
48
- const selfFiberRef = useRef(null);
49
- if (selfFiberRef.current === null) {
50
- try {
51
- const R = React;
52
- selfFiberRef.current = R.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED?.ReactCurrentOwner?.current ?? null;
53
- } catch (_) {}
54
- }
55
32
  useEffect(() => {
56
- if (!enabled) return;
57
- let navRef = null;
58
-
59
- // Path 1 — New Arch: ReactNativeElement exposes its fiber via __internalInstanceHandle.
60
- // Guard with 'child' in candidate to confirm it's a fiber, not another host object.
61
- const candidate = viewRef.current?.__internalInstanceHandle;
62
- const viewFiber = candidate != null && 'child' in candidate ? candidate : selfFiberRef.current?.child ?? null;
63
- if (viewFiber) {
64
- navRef = findNavContainerRef(viewFiber);
65
- }
66
-
67
- // Path 2 — Old Arch: use the ref passed explicitly via prop.
68
- if (!navRef && isNavContainerRef(navigationRef?.current)) {
69
- navRef = navigationRef.current;
70
- }
71
- if (!navRef) return;
33
+ if (!enabled || !isNavContainerRef(navigationRef?.current)) return;
34
+ const navRef = navigationRef.current;
72
35
  const handleChange = () => {
73
36
  try {
74
37
  const route = navRef.getCurrentRoute();
@@ -82,9 +45,8 @@ export function useNavigationTracking(viewRef, navigationRef, enabled, screenLog
82
45
  };
83
46
  const unsubState = navRef.addListener('state', handleChange);
84
47
 
85
- // NavigationContainer's effects run before ours (child-first), so 'ready' has
86
- // already fired. isReady() captures the initial screen synchronously; the 'ready'
87
- // listener is a safety net for async startup (deferred auth, deep links, etc.).
48
+ // NavigationContainer's effects (child) run before ours (parent), so the ref
49
+ // is already populated and isReady() reflects the real mount state.
88
50
  let unsubReady;
89
51
  if (navRef.isReady()) {
90
52
  handleChange();
@@ -99,6 +61,6 @@ export function useNavigationTracking(viewRef, navigationRef, enabled, screenLog
99
61
  unsubState?.();
100
62
  unsubReady?.();
101
63
  };
102
- }, [enabled]); // eslint-disable-line react-hooks/exhaustive-deps
64
+ }, [enabled, navigationRef]);
103
65
  }
104
66
  //# sourceMappingURL=useNavigationTracking.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useRef","setCurrentScreen","RNNetmera","CONTEXT_PROVIDER_TAG","NAV_SEARCH_DEPTH","isNavContainerRef","value","addListener","getCurrentRoute","isReady","findNavContainerRef","fiber","depth","tag","memoizedProps","child","sibling","useNavigationTracking","viewRef","navigationRef","enabled","screenLogEnabled","screenLogEnabledRef","current","selfFiberRef","R","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentOwner","_","navRef","candidate","__internalInstanceHandle","viewFiber","handleChange","route","name","trackView","unsubState","unsubReady","undefined"],"sourceRoot":"../../../src","sources":["autotracking/useNavigationTracking.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useRef","setCurrentScreen","RNNetmera","isNavContainerRef","value","addListener","getCurrentRoute","isReady","useNavigationTracking","navigationRef","enabled","screenLogEnabled","screenLogEnabledRef","current","navRef","handleChange","route","name","trackView","_","unsubState","unsubReady","undefined"],"sourceRoot":"../../../src","sources":["autotracking/useNavigationTracking.ts"],"mappings":";;AAAA;AACA;AACA;;AAEA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAEzC,SAASC,gBAAgB,QAAQ,6BAA0B;AAC3D,SAASC,SAAS,QAAQ,uBAAoB;;AAE9C;AACA,SAASC,iBAAiBA,CAACC,KAAU,EAAW;EAC9C,OACEA,KAAK,IAAI,IAAI,IACb,OAAOA,KAAK,CAACC,WAAW,KAAK,UAAU,IACvC,OAAOD,KAAK,CAACE,eAAe,KAAK,UAAU,IAC3C,OAAOF,KAAK,CAACG,OAAO,KAAK,UAAU;AAEvC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,qBAAqBA,CACnCC,aAA+C,EAC/CC,OAAgB,EAChBC,gBAAyB,EACnB;EACN,MAAMC,mBAAmB,GAAGZ,MAAM,CAACW,gBAAgB,CAAC;EAEpDZ,SAAS,CAAC,MAAM;IACda,mBAAmB,CAACC,OAAO,GAAGF,gBAAgB;EAChD,CAAC,EAAE,CAACA,gBAAgB,CAAC,CAAC;EAEtBZ,SAAS,CAAC,MAAM;IACd,IAAI,CAACW,OAAO,IAAI,CAACP,iBAAiB,CAACM,aAAa,EAAEI,OAAO,CAAC,EAAE;IAE5D,MAAMC,MAAM,GAAGL,aAAa,CAAEI,OAAO;IAErC,MAAME,YAAY,GAAGA,CAAA,KAAM;MACzB,IAAI;QACF,MAAMC,KAAK,GAAGF,MAAM,CAACR,eAAe,CAAC,CAAC;QACtC,IAAIU,KAAK,EAAEC,IAAI,EAAE;UACfhB,gBAAgB,CAACe,KAAK,CAACC,IAAI,CAAC;UAC5B,IAAIL,mBAAmB,CAACC,OAAO,EAAE;YAC/BX,SAAS,CAACgB,SAAS,CAACF,KAAK,CAACC,IAAI,CAAC;UACjC;QACF;MACF,CAAC,CAAC,OAAOE,CAAC,EAAE,CAAC;IACf,CAAC;IAED,MAAMC,UAAU,GAAGN,MAAM,CAACT,WAAW,CAAC,OAAO,EAAEU,YAAY,CAAC;;IAE5D;IACA;IACA,IAAIM,UAAoC;IACxC,IAAIP,MAAM,CAACP,OAAO,CAAC,CAAC,EAAE;MACpBQ,YAAY,CAAC,CAAC;IAChB,CAAC,MAAM;MACLM,UAAU,GAAGP,MAAM,CAACT,WAAW,CAAC,OAAO,EAAE,MAAM;QAC7CU,YAAY,CAAC,CAAC;QACdM,UAAU,GAAG,CAAC;QACdA,UAAU,GAAGC,SAAS;MACxB,CAAC,CAAC;IACJ;IAEA,OAAO,MAAM;MACXF,UAAU,GAAG,CAAC;MACdC,UAAU,GAAG,CAAC;IAChB,CAAC;EACH,CAAC,EAAE,CAACX,OAAO,EAAED,aAAa,CAAC,CAAC;AAC9B","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useRef","getCurrentScreen","RNNetmera","MAX_FIBER_DEPTH","MAX_TEXT_DEPTH","TAP_THRESHOLD","isInteractive","props","onPress","onClick","onValueChange","isSwitch","value","isInsideSelectionControl","fiber","node","return","d","memoizedProps","onSelect","textFromChildren","children","depth","undefined","t","trim","length","String","Array","isArray","child","resolveIdentifier","accessibilityLabel","testID","placeholder","resolveListIndex","startFiber","p","index","cellKey","onUnmount","flatIndex","stateNode","sections","up","i","upProps","endsWith","idx","si","count","data","type","sectionIndex","itemIndex","buildPath","screen","listType","identifier","indexSuffix","base","useTapTracking","enabled","shouldCollectValues","enabledRef","shouldCollectValuesRef","touchStartRef","lastScreenRef","switchLastLoggedRef","Map","current","clear","onTouchStart","e","switchValue","_targetInst","_","x","nativeEvent","pageX","y","pageY","onTouchEnd","start","dx","Math","abs","dy","interactiveNode","identifierNode","isSwitchNode","listIndex","lastLogged","get","newValue","preTapValue","set","switchPath","trackAction","tapPath"],"sourceRoot":"../../../src","sources":["autotracking/useTapTracking.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useEffect","useRef","getCurrentScreen","RNNetmera","MAX_FIBER_DEPTH","MAX_TEXT_DEPTH","TAP_THRESHOLD","isInteractive","props","onPress","onClick","onValueChange","isSwitch","value","isInsideSelectionControl","fiber","node","return","d","memoizedProps","onSelect","textFromChildren","children","depth","undefined","t","trim","length","String","Array","isArray","child","resolveIdentifier","accessibilityLabel","testID","placeholder","resolveListIndex","startFiber","p","index","cellKey","onUnmount","flatIndex","stateNode","sections","up","i","upProps","endsWith","idx","si","count","data","type","sectionIndex","itemIndex","buildPath","screen","listType","identifier","indexSuffix","base","useTapTracking","enabled","shouldCollectValues","enabledRef","shouldCollectValuesRef","touchStartRef","lastScreenRef","switchLastLoggedRef","Map","current","clear","onTouchStart","e","switchValue","_targetInst","_","x","nativeEvent","pageX","y","pageY","onTouchEnd","start","dx","Math","abs","dy","interactiveNode","identifierNode","isSwitchNode","listIndex","lastLogged","get","newValue","preTapValue","set","switchPath","trackAction","tapPath"],"sourceRoot":"../../../src","sources":["autotracking/useTapTracking.ts"],"mappings":"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","ignoreList":[]}
@@ -2,25 +2,30 @@ import React from 'react';
2
2
  export interface NetmeraAnalyticProviderProps {
3
3
  children: React.ReactNode;
4
4
  /**
5
- * Required on Old Architecture (newArchEnabled=false). Pass your NavigationContainer
6
- * ref so the provider can subscribe to screen changes.
5
+ * Pass the navigation container ref so the provider can subscribe to screen
6
+ * changes. Required for screen tracking and for correct action event prefixes.
7
7
  *
8
- * On New Architecture the provider detects the navigation context automatically
9
- * through the fiber tree — this prop is not needed.
8
+ * Use the same ref for both this prop and your NavigationContainer (or the
9
+ * component returned by createStaticNavigation).
10
10
  *
11
- * const navRef = useRef(null);
11
+ * React Navigation v7 Dynamic API:
12
+ * const navRef = useNavigationContainerRef();
12
13
  * <NetmeraAnalyticProvider navigationRef={navRef}>
13
14
  * <NavigationContainer ref={navRef}>…</NavigationContainer>
14
15
  * </NetmeraAnalyticProvider>
16
+ *
17
+ * React Navigation v7 Static API:
18
+ * const navRef = useNavigationContainerRef();
19
+ * const Navigation = createStaticNavigation(RootStack);
20
+ * <NetmeraAnalyticProvider navigationRef={navRef}>
21
+ * <Navigation ref={navRef} />
22
+ * </NetmeraAnalyticProvider>
15
23
  */
16
24
  navigationRef?: React.RefObject<any>;
17
25
  }
18
26
  /**
19
27
  * Wraps your app to enable automatic screen tracking and tap tracking.
20
- *
21
- * <NetmeraAnalyticProvider>
22
- * <NavigationContainer>…</NavigationContainer>
23
- * </NetmeraAnalyticProvider>
28
+ * Place it outside your NavigationContainer (or Static Navigation component).
24
29
  */
25
30
  export declare function NetmeraAnalyticProvider({ children, navigationRef, }: NetmeraAnalyticProviderProps): import("react/jsx-runtime").JSX.Element;
26
31
  //# sourceMappingURL=NetmeraAnalyticProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NetmeraAnalyticProvider.d.ts","sourceRoot":"","sources":["../../../src/NetmeraAnalyticProvider.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAU3D,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;CACtC;AAQD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,QAAQ,EACR,aAAa,GACd,EAAE,4BAA4B,2CAwE9B"}
1
+ {"version":3,"file":"NetmeraAnalyticProvider.d.ts","sourceRoot":"","sources":["../../../src/NetmeraAnalyticProvider.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAU3D,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;CACtC;AAQD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,QAAQ,EACR,aAAa,GACd,EAAE,4BAA4B,2CAsE9B"}
@@ -1,13 +1,14 @@
1
- import React from 'react';
1
+ import type React from 'react';
2
2
  /**
3
3
  * Subscribes to React Navigation screen changes and keeps NetmeraNavigationState
4
- * up to date. Resolves the navigation container ref via two paths:
4
+ * up to date.
5
5
  *
6
- * - New Arch (Fabric): auto-detected through the fiber tree via viewRef.
7
- * - Old Arch (Paper): caller passes navigationRef prop explicitly.
6
+ * Requires a valid navigation container ref — pass the same ref to both
7
+ * NetmeraAnalyticProvider and NavigationContainer (or the component created
8
+ * by createStaticNavigation).
8
9
  *
9
- * Silently no-ops if neither path yields a valid ref.
10
- * Respects the isScreenFlowEnabled flag — screen changes are ignored when disabled.
10
+ * Silently no-ops when navigationRef is absent or not yet populated.
11
+ * Respects the enabled flag — screen changes are ignored when disabled.
11
12
  */
12
- export declare function useNavigationTracking(viewRef: React.RefObject<any>, navigationRef: React.RefObject<any> | undefined, enabled: boolean, screenLogEnabled: boolean): void;
13
+ export declare function useNavigationTracking(navigationRef: React.RefObject<any> | undefined, enabled: boolean, screenLogEnabled: boolean): void;
13
14
  //# sourceMappingURL=useNavigationTracking.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useNavigationTracking.d.ts","sourceRoot":"","sources":["../../../../src/autotracking/useNavigationTracking.ts"],"names":[],"mappings":"AAIA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAkCjD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAC7B,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,EAC/C,OAAO,EAAE,OAAO,EAChB,gBAAgB,EAAE,OAAO,GACxB,IAAI,CA4EN"}
1
+ {"version":3,"file":"useNavigationTracking.d.ts","sourceRoot":"","sources":["../../../../src/autotracking/useNavigationTracking.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAc/B;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,EAC/C,OAAO,EAAE,OAAO,EAChB,gBAAgB,EAAE,OAAO,GACxB,IAAI,CA4CN"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTapTracking.d.ts","sourceRoot":"","sources":["../../../../src/autotracking/useTapTracking.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AA6J1D,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO;sBA6BtC,qBAAqB;oBAoBvB,qBAAqB;EAwFzD"}
1
+ {"version":3,"file":"useTapTracking.d.ts","sourceRoot":"","sources":["../../../../src/autotracking/useTapTracking.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AA6J1D,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO;sBA6BtC,qBAAqB;oBAoBvB,qBAAqB;EA8FzD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-netmera",
3
- "version": "2.1.0-alpha03",
3
+ "version": "2.1.0-alpha05",
4
4
  "description": "Netmera React Native SDK",
5
5
  "source": "./src/index.ts",
6
6
  "main": "./lib/module/index.js",
@@ -15,16 +15,24 @@ import { useTapTracking } from './autotracking/useTapTracking';
15
15
  export interface NetmeraAnalyticProviderProps {
16
16
  children: React.ReactNode;
17
17
  /**
18
- * Required on Old Architecture (newArchEnabled=false). Pass your NavigationContainer
19
- * ref so the provider can subscribe to screen changes.
18
+ * Pass the navigation container ref so the provider can subscribe to screen
19
+ * changes. Required for screen tracking and for correct action event prefixes.
20
20
  *
21
- * On New Architecture the provider detects the navigation context automatically
22
- * through the fiber tree — this prop is not needed.
21
+ * Use the same ref for both this prop and your NavigationContainer (or the
22
+ * component returned by createStaticNavigation).
23
23
  *
24
- * const navRef = useRef(null);
24
+ * React Navigation v7 Dynamic API:
25
+ * const navRef = useNavigationContainerRef();
25
26
  * <NetmeraAnalyticProvider navigationRef={navRef}>
26
27
  * <NavigationContainer ref={navRef}>…</NavigationContainer>
27
28
  * </NetmeraAnalyticProvider>
29
+ *
30
+ * React Navigation v7 Static API:
31
+ * const navRef = useNavigationContainerRef();
32
+ * const Navigation = createStaticNavigation(RootStack);
33
+ * <NetmeraAnalyticProvider navigationRef={navRef}>
34
+ * <Navigation ref={navRef} />
35
+ * </NetmeraAnalyticProvider>
28
36
  */
29
37
  navigationRef?: React.RefObject<any>;
30
38
  }
@@ -37,16 +45,12 @@ type AutoTrackConfig = {
37
45
 
38
46
  /**
39
47
  * Wraps your app to enable automatic screen tracking and tap tracking.
40
- *
41
- * <NetmeraAnalyticProvider>
42
- * <NavigationContainer>…</NavigationContainer>
43
- * </NetmeraAnalyticProvider>
48
+ * Place it outside your NavigationContainer (or Static Navigation component).
44
49
  */
45
50
  export function NetmeraAnalyticProvider({
46
51
  children,
47
52
  navigationRef,
48
53
  }: NetmeraAnalyticProviderProps) {
49
- const viewRef = useRef<any>(null);
50
54
  const [config, setConfig] = useState<AutoTrackConfig | null>(null);
51
55
  const appliedConfigRef = useRef<AutoTrackConfig | null>(null);
52
56
 
@@ -61,11 +65,11 @@ export function NetmeraAnalyticProvider({
61
65
  appliedConfigRef.current = cfg;
62
66
  setConfig(cfg);
63
67
  console.log(
64
- '[NMAutotrack] screen tracking ',
68
+ '[NMAutotrack] screen tracking',
65
69
  cfg.isScreenFlowEnabled ? 'enabled' : 'disabled'
66
70
  );
67
71
  console.log(
68
- '[NMAutotrack] input action tracking ',
72
+ '[NMAutotrack] input action tracking',
69
73
  cfg.isInputActionEnabled ? 'enabled' : 'disabled'
70
74
  );
71
75
  };
@@ -95,11 +99,11 @@ export function NetmeraAnalyticProvider({
95
99
  const inputActionEnabled = config?.isInputActionEnabled ?? false;
96
100
  const shouldCollectValues = config?.shouldCollectValues ?? false;
97
101
 
98
- const navigationEnabled = screenFlowEnabled || inputActionEnabled;
102
+ // Navigation tracking is needed whenever either flag is on: screen events
103
+ // need it for trackView, action events need it for the screen-name prefix.
99
104
  useNavigationTracking(
100
- viewRef,
101
105
  navigationRef,
102
- navigationEnabled,
106
+ screenFlowEnabled || inputActionEnabled,
103
107
  screenFlowEnabled
104
108
  );
105
109
  const { onTouchStart, onTouchEnd } = useTapTracking(
@@ -109,7 +113,6 @@ export function NetmeraAnalyticProvider({
109
113
 
110
114
  return (
111
115
  <View
112
- ref={navigationEnabled ? viewRef : undefined}
113
116
  style={styles.container}
114
117
  onTouchStart={onTouchStart}
115
118
  onTouchEnd={onTouchEnd}
@@ -2,15 +2,12 @@
2
2
  * Copyright (c) 2026 Netmera Research.
3
3
  */
4
4
 
5
- import React, { useEffect, useRef } from 'react';
5
+ import { useEffect, useRef } from 'react';
6
+ import type React from 'react';
6
7
  import { setCurrentScreen } from './NetmeraNavigationState';
7
8
  import { RNNetmera } from '../utils/RNNetmera';
8
9
 
9
- // ContextProvider fiber tag stable React internal constant since React 16.
10
- const CONTEXT_PROVIDER_TAG = 10;
11
- const NAV_SEARCH_DEPTH = 25;
12
-
13
- // Duck-type check: React Navigation v5/v6/v7 all expose this surface on the container ref.
10
+ // Duck-type check: React Navigation v5/v6/v7 all expose this surface.
14
11
  function isNavContainerRef(value: any): boolean {
15
12
  return (
16
13
  value != null &&
@@ -20,79 +17,32 @@ function isNavContainerRef(value: any): boolean {
20
17
  );
21
18
  }
22
19
 
23
- // DFS through child fibers to find NavigationContainerRefContext.Provider.
24
- // Siblings walk at the same depth — they sit at the same level in the tree.
25
- function findNavContainerRef(fiber: any, depth = 0): any {
26
- if (!fiber || depth > NAV_SEARCH_DEPTH) return null;
27
- if (
28
- fiber.tag === CONTEXT_PROVIDER_TAG &&
29
- isNavContainerRef(fiber.memoizedProps?.value)
30
- ) {
31
- return fiber.memoizedProps.value;
32
- }
33
- return (
34
- findNavContainerRef(fiber.child, depth + 1) ??
35
- findNavContainerRef(fiber.sibling, depth)
36
- );
37
- }
38
-
39
20
  /**
40
21
  * Subscribes to React Navigation screen changes and keeps NetmeraNavigationState
41
- * up to date. Resolves the navigation container ref via two paths:
22
+ * up to date.
42
23
  *
43
- * - New Arch (Fabric): auto-detected through the fiber tree via viewRef.
44
- * - Old Arch (Paper): caller passes navigationRef prop explicitly.
24
+ * Requires a valid navigation container ref — pass the same ref to both
25
+ * NetmeraAnalyticProvider and NavigationContainer (or the component created
26
+ * by createStaticNavigation).
45
27
  *
46
- * Silently no-ops if neither path yields a valid ref.
47
- * Respects the isScreenFlowEnabled flag — screen changes are ignored when disabled.
28
+ * Silently no-ops when navigationRef is absent or not yet populated.
29
+ * Respects the enabled flag — screen changes are ignored when disabled.
48
30
  */
49
31
  export function useNavigationTracking(
50
- viewRef: React.RefObject<any>,
51
32
  navigationRef: React.RefObject<any> | undefined,
52
33
  enabled: boolean,
53
34
  screenLogEnabled: boolean
54
35
  ): void {
55
- // React 18: capture own fiber during render via ReactCurrentOwner.
56
- // React 19 removed ReactCurrentOwner — this silently yields null, which is fine
57
- // because the Fabric path (viewRef.__internalInstanceHandle) covers React 19.
58
36
  const screenLogEnabledRef = useRef(screenLogEnabled);
59
37
 
60
38
  useEffect(() => {
61
39
  screenLogEnabledRef.current = screenLogEnabled;
62
40
  }, [screenLogEnabled]);
63
41
 
64
- const selfFiberRef = useRef<any>(null);
65
- if (selfFiberRef.current === null) {
66
- try {
67
- const R = React as any;
68
- selfFiberRef.current =
69
- R.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED?.ReactCurrentOwner
70
- ?.current ?? null;
71
- } catch (_) {}
72
- }
73
-
74
42
  useEffect(() => {
75
- if (!enabled) return;
76
- let navRef: any = null;
77
-
78
- // Path 1 — New Arch: ReactNativeElement exposes its fiber via __internalInstanceHandle.
79
- // Guard with 'child' in candidate to confirm it's a fiber, not another host object.
80
- const candidate = viewRef.current?.__internalInstanceHandle;
81
- const viewFiber: any =
82
- candidate != null && 'child' in candidate
83
- ? candidate
84
- : (selfFiberRef.current?.child ?? null);
85
-
86
- if (viewFiber) {
87
- navRef = findNavContainerRef(viewFiber);
88
- }
89
-
90
- // Path 2 — Old Arch: use the ref passed explicitly via prop.
91
- if (!navRef && isNavContainerRef(navigationRef?.current)) {
92
- navRef = navigationRef!.current;
93
- }
43
+ if (!enabled || !isNavContainerRef(navigationRef?.current)) return;
94
44
 
95
- if (!navRef) return;
45
+ const navRef = navigationRef!.current;
96
46
 
97
47
  const handleChange = () => {
98
48
  try {
@@ -108,9 +58,8 @@ export function useNavigationTracking(
108
58
 
109
59
  const unsubState = navRef.addListener('state', handleChange);
110
60
 
111
- // NavigationContainer's effects run before ours (child-first), so 'ready' has
112
- // already fired. isReady() captures the initial screen synchronously; the 'ready'
113
- // listener is a safety net for async startup (deferred auth, deep links, etc.).
61
+ // NavigationContainer's effects (child) run before ours (parent), so the ref
62
+ // is already populated and isReady() reflects the real mount state.
114
63
  let unsubReady: (() => void) | undefined;
115
64
  if (navRef.isReady()) {
116
65
  handleChange();
@@ -126,5 +75,5 @@ export function useNavigationTracking(
126
75
  unsubState?.();
127
76
  unsubReady?.();
128
77
  };
129
- }, [enabled]); // eslint-disable-line react-hooks/exhaustive-deps
78
+ }, [enabled, navigationRef]);
130
79
  }
@@ -285,7 +285,13 @@ export function useTapTracking(enabled: boolean, shouldCollectValues: boolean) {
285
285
  : !interactiveNode.memoizedProps.value;
286
286
  }
287
287
  switchLastLoggedRef.current.set(identifier, newValue);
288
- const switchPath = buildPath(screen, listType, identifier, indexSuffix, newValue);
288
+ const switchPath = buildPath(
289
+ screen,
290
+ listType,
291
+ identifier,
292
+ indexSuffix,
293
+ newValue
294
+ );
289
295
  RNNetmera.trackAction(switchPath);
290
296
  } else {
291
297
  const tapPath = buildPath(screen, listType, identifier, indexSuffix);