{"_id":"@apex-inc/react-native","_rev":"3-1c93a05107fc2965128577f0b4f8d0cf","name":"@apex-inc/react-native","dist-tags":{"latest":"0.3.0"},"versions":{"0.2.0":{"name":"@apex-inc/react-native","version":"0.2.0","keywords":["apex","react-native","analytics","attribution","mobile-measurement"],"license":"UNLICENSED","_id":"@apex-inc/react-native@0.2.0","maintainers":[{"name":"apex.inc","email":"chris@apex.inc"}],"dist":{"shasum":"a307aa87901c5066f016f7b9c66d21f24f3ee353","tarball":"https://registry.npmjs.org/@apex-inc/react-native/-/react-native-0.2.0.tgz","fileCount":22,"integrity":"sha512-sFCXvAr2ZuM8KoYAhSEwIqmCZz/MY2ht+h4Mqi2tp0SPu0vaev75ow5HBXH+bNbvNvPv4Rct03XAjOq7RMmxmQ==","signatures":[{"sig":"MEUCIAQ6Y8GJaILt9VL/0WUxUa5Pb+X7LEIxPrqTYGXH4iKUAiEA5MSXhJEP7kOeDhlBYroGIZ0kh66+I4P8B9+TTsPXxY4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35961},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/esm/index.js","gitHead":"e690a3a19e20132251d7a5b3c896bbf660f1a4ed","scripts":{"test":"vitest run","build":"npm run clean && tsc && tsc -p tsconfig.esm.json","clean":"rimraf ./dist","watch":"tsc --watch","verify":"npm run verify:typecheck && npm run test && npm run build","test:watch":"vitest","verify:typecheck":"tsc --noEmit"},"_npmUser":{"name":"apex.inc","email":"chris@apex.inc"},"_npmVersion":"10.9.2","description":"Apex measurement SDK for React Native — events, identify, screen, and offline-queued delivery over the Apex ingest API.","directories":{},"_nodeVersion":"23.11.0","publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"peerDependencies":{"react-native":">=0.71.0"},"peerDependenciesMeta":{"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-native_0.2.0_1781217982323_0.6634260188503842","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@apex-inc/react-native","version":"0.2.1","keywords":["apex","react-native","analytics","attribution","mobile-measurement"],"license":"UNLICENSED","_id":"@apex-inc/react-native@0.2.1","maintainers":[{"name":"apex.inc","email":"chris@apex.inc"}],"dist":{"shasum":"fb3f8fedb6a9db16f468343d1845cf05850f6e77","tarball":"https://registry.npmjs.org/@apex-inc/react-native/-/react-native-0.2.1.tgz","fileCount":22,"integrity":"sha512-wAgazo0k3BGI6cRC62MvDcIW1pQqZsF5xDTxeKUzvFmwvxrqNbyBiCEi9YdPcY473HWr9en7PVPYZw7I8uSb6A==","signatures":[{"sig":"MEQCIGC/YVCPBqckQrju3EcAdqnB0jAlyQfMD9HbV0134l3FAiANOqPM8VbrwkFTYgZnbNcNgLh8D8MzuGqh/B8JvYvzzQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43447},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/esm/index.js","gitHead":"97daba3cbaa402418917963b54cb59ca12de9699","scripts":{"test":"vitest run","build":"npm run clean && tsc && tsc -p tsconfig.esm.json","clean":"rimraf ./dist","watch":"tsc --watch","verify":"npm run verify:typecheck && npm run test && npm run build","test:watch":"vitest","verify:typecheck":"tsc --noEmit"},"_npmUser":{"name":"apex.inc","email":"chris@apex.inc"},"_npmVersion":"10.9.2","description":"Apex measurement SDK for React Native — events, identify, screen, and offline-queued delivery over the Apex ingest API.","directories":{},"_nodeVersion":"23.11.0","publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"peerDependencies":{"react-native":">=0.71.0"},"peerDependenciesMeta":{"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-native_0.2.1_1781642321793_0.6969705388676033","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@apex-inc/react-native","version":"0.3.0","description":"Apex measurement SDK for React Native — events, identify, screen, and offline-queued delivery over the Apex ingest API.","main":"dist/index.js","module":"dist/esm/index.js","types":"dist/index.d.ts","scripts":{"verify":"npm run verify:typecheck && npm run test && npm run build","verify:typecheck":"tsc --noEmit","build":"npm run clean && tsc && tsc -p tsconfig.esm.json","clean":"rimraf ./dist","watch":"tsc --watch","test":"vitest run","test:watch":"vitest"},"keywords":["apex","react-native","analytics","attribution","mobile-measurement"],"peerDependencies":{"react-native":">=0.71.0"},"peerDependenciesMeta":{"react-native":{"optional":true}},"devDependencies":{"@types/node":"^20.0.0","rimraf":"^5.0.0","typescript":"^5.4.0","vitest":"^3.0.0"},"license":"UNLICENSED","publishConfig":{"access":"public"},"_id":"@apex-inc/react-native@0.3.0","gitHead":"74c2d7080c18d50fa9e4ef8829b7f43be8264e05","_nodeVersion":"23.11.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-i1Stj+9HcsgA72X9Z1DW40Lx1L7m05wgBwxQ1IEahqwcWz+qmxormSXjqD+Kfc/SpDmwYsC6b2QVzCPx0VnXJg==","shasum":"ed72e23f1defd78844d1fcb02d7279932b7e6d38","tarball":"https://registry.npmjs.org/@apex-inc/react-native/-/react-native-0.3.0.tgz","fileCount":22,"unpackedSize":48357,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFUh4noj88zFtZ1tlpoBeITkUHbNYYPZPmM+wu9QTZG7AiEA9HsWfLYrQghJEduCZnCORoms7GwdID6ZZlY3qyFu1kE="}]},"_npmUser":{"name":"apex.inc","email":"chris@apex.inc"},"directories":{},"maintainers":[{"name":"apex.inc","email":"chris@apex.inc"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-native_0.3.0_1781648325727_0.17102009793638828"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-11T22:46:22.128Z","modified":"2026-06-16T22:18:46.061Z","0.2.0":"2026-06-11T22:46:22.463Z","0.2.1":"2026-06-16T20:38:41.934Z","0.3.0":"2026-06-16T22:18:45.902Z"},"license":"UNLICENSED","keywords":["apex","react-native","analytics","attribution","mobile-measurement"],"description":"Apex measurement SDK for React Native — events, identify, screen, and offline-queued delivery over the Apex ingest API.","maintainers":[{"name":"apex.inc","email":"chris@apex.inc"}],"readme":"# @apex-inc/react-native\n\nApex measurement SDK for React Native — events, identify, screen, and\noffline-queued delivery over the Apex ingest API. Pure TypeScript; no\nnative modules required for core event tracking.\n\n## Install\n\n```sh\nnpm install @apex-inc/react-native\n# optional but recommended for persistence across cold starts:\nnpm install @react-native-async-storage/async-storage\n```\n\n## Usage\n\n```ts\nimport { Apex } from \"@apex-inc/react-native\";\nimport AsyncStorage from \"@react-native-async-storage/async-storage\";\n\nawait Apex.initialize({\n  workspaceKey: \"prj_…\",\n  platform: \"ios\",            // or \"android\"\n  storage: AsyncStorage,      // omit to use in-memory (session-only)\n  apiKey: \"apex_uk_…\",        // optional: enables identity auto-stitch\n});\n\nawait Apex.track(\"app_open\");\nawait Apex.track(\"purchase\", { value: 9.99, currency: \"USD\" });\nawait Apex.identify(\"user_123\", { plan: \"pro\" });\nawait Apex.screen(\"Home\");\nawait Apex.flush();           // force-send (also auto-flushes at `flushAt`)\nawait Apex.reset();           // on logout\n```\n\n## Behavior\n\n- **Stable visitor id** persisted via the injected storage (survives cold\n  starts when AsyncStorage is provided).\n- **Offline queue** persisted between launches; flushed in batches to\n  `POST /api/events`.\n- **Delivery semantics:** 2xx clears the batch; 4xx stops flushing\n  (events retained); 5xx / network errors retry with exponential backoff\n  (1s, 2s, 4s) then retain for the next flush.\n- **Sessions** rotate after 30 minutes of inactivity.\n\n## Deferred / not yet included\n\n- Native modules for IDFA/GAID + deferred deep-link resolution (these\n  pair with the Tier 1.1 ingest wiring and require native code).\n- Publishing: this package is built and tested but not yet published to\n  the `@apex-inc` npm org (pending org access).\n\n## Development\n\n```sh\nnpm install\nnpm test          # vitest\nnpm run verify    # typecheck + test + build\n```\n","readmeFilename":"README.md"}