{"_id":"@algosoftltd/algo-widget-react-native","_rev":"5-361bd084441e8e57e4830ebcafc2ecdb","name":"@algosoftltd/algo-widget-react-native","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@algosoftltd/algo-widget-react-native","version":"0.1.0","keywords":["react-native","bug-report","feedback","crash-reporting","algosoft"],"license":"Apache-2.0","_id":"@algosoftltd/algo-widget-react-native@0.1.0","maintainers":[{"name":"mubin986","email":"mubin986@gmail.com"}],"homepage":"https://github.com/algosoftbd/algo-widget-mobile#readme","bugs":{"url":"https://github.com/algosoftbd/algo-widget-mobile/issues"},"dist":{"shasum":"a3c4deb77d0d0105d7b4ed4dd919405a5cc4f2f6","tarball":"https://registry.npmjs.org/@algosoftltd/algo-widget-react-native/-/algo-widget-react-native-0.1.0.tgz","fileCount":40,"integrity":"sha512-10VjRDYWrS46gfE3ogA5NFz4mXa1sX09cQ7j+cK+kVkF0XbSZfbchB5QWSZClXZDflIRJ4+QOGyyqV5qrgdPzQ==","signatures":[{"sig":"MEUCIQDnfaLkuTXFbnwcEnguXcRmpON0z0t05Ic9vGqcGbSWYwIgMnTraQVRsqtniyIo68H4fB5YqcwXR5q4urtVfOB1DAk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@algosoftltd%2falgo-widget-react-native@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":232641},"main":"lib/index.js","types":"lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./panel":{"types":"./lib/panel.d.ts","default":"./lib/panel.js"}},"gitHead":"e02667341cbcb6dd46fd32c6d4fb6a8982378521","scripts":{"test":"node --test --experimental-strip-types test/*.test.ts","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"mubin986","email":"mubin986@gmail.com"},"repository":{"url":"git+https://github.com/algosoftbd/algo-widget-mobile.git","type":"git","directory":"packages/react-native"},"_npmVersion":"10.9.8","description":"Algo Widget for React Native — in-app bug reporting with screen, voice and a recorded interaction trace.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^18.3.0"},"peerDependencies":{"react":">=17","react-native":">=0.70","react-native-webview":">=13"},"peerDependenciesMeta":{"react-native-webview":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/algo-widget-react-native_0.1.0_1786279478572_0.7120768416578265","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@algosoftltd/algo-widget-react-native","version":"0.1.2","keywords":["react-native","bug-report","feedback","crash-reporting","algosoft"],"license":"Apache-2.0","_id":"@algosoftltd/algo-widget-react-native@0.1.2","maintainers":[{"name":"mubin986","email":"mubin986@gmail.com"}],"homepage":"https://github.com/algosoftbd/algo-widget-mobile#readme","bugs":{"url":"https://github.com/algosoftbd/algo-widget-mobile/issues"},"dist":{"shasum":"e967fb2a0dbe646fe73b310ff406be8d1caf66f4","tarball":"https://registry.npmjs.org/@algosoftltd/algo-widget-react-native/-/algo-widget-react-native-0.1.2.tgz","fileCount":40,"integrity":"sha512-6iO3NA5Qs8MHSlE5tfYboY1QLRpo8/o/WcG3BD2gJ34NthM96LQwDny073OFenzswxPjQRqgHaF+UFyZ1GEW3w==","signatures":[{"sig":"MEQCIAuHXimzaRwBNmZLZCtWNdv+dN5dfRptWSJvrLVMJUoyAiBqHZcr5wrM6OyeTr2jYybbsQ4rL0slEddD6bLqA3QjGg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@algosoftltd%2falgo-widget-react-native@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":239939},"main":"lib/index.js","types":"lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./panel":{"types":"./lib/panel.d.ts","default":"./lib/panel.js"}},"gitHead":"a2fbfea26d604fd13ee2a419ed9dd0e2498a77b0","scripts":{"test":"node --test --experimental-strip-types test/*.test.ts","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"mubin986","email":"mubin986@gmail.com"},"repository":{"url":"git+https://github.com/algosoftbd/algo-widget-mobile.git","type":"git","directory":"packages/react-native"},"_npmVersion":"10.9.8","description":"Algo Widget for React Native — in-app bug reporting with screen, voice and a recorded interaction trace.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^18.3.0"},"peerDependencies":{"react":">=17","react-native":">=0.70","react-native-webview":">=13"},"peerDependenciesMeta":{"react-native-webview":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/algo-widget-react-native_0.1.2_1786282450441_0.5120305828708005","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@algosoftltd/algo-widget-react-native","version":"0.1.3","keywords":["react-native","bug-report","feedback","crash-reporting","algosoft"],"license":"Apache-2.0","_id":"@algosoftltd/algo-widget-react-native@0.1.3","maintainers":[{"name":"mubin986","email":"mubin986@gmail.com"}],"homepage":"https://github.com/algosoftbd/algo-widget-mobile#readme","bugs":{"url":"https://github.com/algosoftbd/algo-widget-mobile/issues"},"dist":{"shasum":"8743ceed15ecb69f463f156e058f8728dd751a11","tarball":"https://registry.npmjs.org/@algosoftltd/algo-widget-react-native/-/algo-widget-react-native-0.1.3.tgz","fileCount":40,"integrity":"sha512-yJAKmCaIOrjxYxSOK3D0z/bGE0WkjGK3MS1br8O45sZSpP5huYm7hQ/d5Uv/a7/pWFwN9nIVNJDUw64IaNja8Q==","signatures":[{"sig":"MEYCIQDk76xeHstg3Nk2NTHGD0OPqMA7w+M95Kmxv+0NNQmfwQIhAOFMnRsUffc0TpdXMyth6xl+buPwF9lPJ9eY1HeWZ9+C","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@algosoftltd%2falgo-widget-react-native@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":252253},"main":"lib/index.js","types":"lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./panel":{"types":"./lib/panel.d.ts","default":"./lib/panel.js"}},"gitHead":"afa26909114b44074fbf415de562de9fbd0aff3e","scripts":{"test":"node --test --experimental-strip-types test/*.test.ts","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"mubin986","email":"mubin986@gmail.com"},"repository":{"url":"git+https://github.com/algosoftbd/algo-widget-mobile.git","type":"git","directory":"packages/react-native"},"_npmVersion":"10.9.8","description":"Algo Widget for React Native — in-app bug reporting with screen, voice and a recorded interaction trace.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^18.3.0"},"peerDependencies":{"react":">=17","react-native":">=0.70","react-native-webview":">=13"},"peerDependenciesMeta":{"react-native-webview":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/algo-widget-react-native_0.1.3_1786296908759_0.017506342799633368","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@algosoftltd/algo-widget-react-native","version":"0.1.4","keywords":["react-native","bug-report","feedback","crash-reporting","algosoft"],"license":"Apache-2.0","_id":"@algosoftltd/algo-widget-react-native@0.1.4","maintainers":[{"name":"mubin986","email":"mubin986@gmail.com"}],"homepage":"https://github.com/algosoftbd/algo-widget-mobile#readme","bugs":{"url":"https://github.com/algosoftbd/algo-widget-mobile/issues"},"dist":{"shasum":"e75c898ce0617d565937a2a414f4a25ab252b0bb","tarball":"https://registry.npmjs.org/@algosoftltd/algo-widget-react-native/-/algo-widget-react-native-0.1.4.tgz","fileCount":40,"integrity":"sha512-pK7Uu5xUHRAjJn+uJ9Xigqu76A4ST4arU9SC2uD01nrtaEP8v/D2fG1EFcE2WV07V0j7Q7OZir1cAh+rR0eKUA==","signatures":[{"sig":"MEQCIGF+4SFt8AjfqybwOyc4Kj7yHwOMoEWfsmaQFVrmdZV3AiBqb+VbYXtNwMXDb5hnvBfr9/DLz1SKa1X3Viru8RJRew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@algosoftltd%2falgo-widget-react-native@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":254329},"main":"lib/index.js","types":"lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./panel":{"types":"./lib/panel.d.ts","default":"./lib/panel.js"}},"gitHead":"34f5b550b9b1bdaba0eb1d7f6fd382732d8935b5","scripts":{"test":"node --test --experimental-strip-types test/*.test.ts","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"mubin986","email":"mubin986@gmail.com"},"repository":{"url":"git+https://github.com/algosoftbd/algo-widget-mobile.git","type":"git","directory":"packages/react-native"},"_npmVersion":"10.9.8","description":"Algo Widget for React Native — in-app bug reporting with screen, voice and a recorded interaction trace.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^18.3.0"},"peerDependencies":{"react":">=17","react-native":">=0.70","react-native-webview":">=13"},"peerDependenciesMeta":{"react-native-webview":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/algo-widget-react-native_0.1.4_1786298763958_0.40053423426685875","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@algosoftltd/algo-widget-react-native","version":"0.2.0","description":"Algo Widget for React Native — in-app bug reporting with screen, voice and a recorded interaction trace.","license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/algosoftbd/algo-widget-mobile.git","directory":"packages/react-native"},"homepage":"https://github.com/algosoftbd/algo-widget-mobile#readme","main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test":"node --test --experimental-strip-types test/*.test.ts","prepublishOnly":"npm run build"},"keywords":["react-native","bug-report","feedback","crash-reporting","algosoft"],"peerDependencies":{"react":">=17","react-native":">=0.70","react-native-webview":">=13"},"devDependencies":{"typescript":"^5.7.0","@types/node":"^22.0.0","@types/react":"^18.3.0"},"publishConfig":{"access":"public"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./panel":{"types":"./lib/panel.d.ts","default":"./lib/panel.js"}},"peerDependenciesMeta":{"react-native-webview":{"optional":true}},"_id":"@algosoftltd/algo-widget-react-native@0.2.0","gitHead":"899b52ad380963bef6e6263c6fc11144673949fb","bugs":{"url":"https://github.com/algosoftbd/algo-widget-mobile/issues"},"_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-FKh7oXsxN5PccLQeUHYh3wNpZKpTH6e2irX4g09WCM50LRT9CVdvCgUij/xGEH4cGIqEzMPWZGfEbVOob2jt/A==","shasum":"2f542346b01900f70a6caf8be8767910908194ff","tarball":"https://registry.npmjs.org/@algosoftltd/algo-widget-react-native/-/algo-widget-react-native-0.2.0.tgz","fileCount":40,"unpackedSize":256158,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@algosoftltd%2falgo-widget-react-native@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDAetTuRlQ3woj3rA7ihk/5dk3IDrCLx6/7+nIXxAbcwgIhAMMHtJu78xDLYKl3cDzOacHqYGU5ycoiW0GuVEoMw4O2"}]},"_npmUser":{"name":"mubin986","email":"mubin986@gmail.com"},"directories":{},"maintainers":[{"name":"mubin986","email":"mubin986@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/algo-widget-react-native_0.2.0_1786300904817_0.5241351151510467"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-09T12:44:38.390Z","modified":"2026-08-09T18:41:45.376Z","0.1.0":"2026-08-09T12:44:38.711Z","0.1.2":"2026-08-09T13:34:10.597Z","0.1.3":"2026-08-09T17:35:08.949Z","0.1.4":"2026-08-09T18:06:04.102Z","0.2.0":"2026-08-09T18:41:44.966Z"},"bugs":{"url":"https://github.com/algosoftbd/algo-widget-mobile/issues"},"license":"Apache-2.0","homepage":"https://github.com/algosoftbd/algo-widget-mobile#readme","keywords":["react-native","bug-report","feedback","crash-reporting","algosoft"],"repository":{"type":"git","url":"git+https://github.com/algosoftbd/algo-widget-mobile.git","directory":"packages/react-native"},"description":"Algo Widget for React Native — in-app bug reporting with screen, voice and a recorded interaction trace.","maintainers":[{"name":"mubin986","email":"mubin986@gmail.com"}],"readme":"# @algosoftltd/algo-widget-react-native\n\nIn-app bug reporting for React Native apps. A user reports a problem from inside\nyour app — text, screenshot, voice narration, screen recording, and a recorded\n**interaction trace** — and reports land in\n[AlgoSoft OS](https://github.com/algosoftbd) as first-class issues.\n\nPart of [algo-widget-mobile](https://github.com/algosoftbd/algo-widget-mobile).\nThe wire contract is in\n[PROTOCOL.md](https://github.com/algosoftbd/algo-widget-mobile/blob/main/docs/PROTOCOL.md).\n\n## `testID` is the whole trick\n\nThe **interaction trace** is the part a fix is derived from, and every event\nnames the element it touched through an identity ladder. React Native has the\nbest top rung of any platform, because `testID` is a literal string in your own\nsource:\n\n```tsx\n<Pressable testID=\"submit_order\" onPress={save}>\n  <Text>Save</Text>\n</Pressable>\n```\n\nThat string travels from the tap, through the trace, into the reproduction\nsteps, and ends up as something an agent greps for in your repository. If your\ncomponents already carry `testID`s, you are most of the way there.\n\n## Privacy\n\nNot negotiable, and checked in CI rather than promised in prose:\n\n- the trace records **that** a field was typed into, never what — there is no\n  code path that reads a value;\n- nothing is captured before Record is pressed. No always-on buffer, ever;\n- requests carry no headers, no bodies and no query strings;\n- `cancel()` discards everything on-device.\n\n## Usage\n\n```ts\nimport { AlgoWidgetClient, TraceRecorder } from '@algosoftltd/algo-widget-react-native';\n\nconst client = new AlgoWidgetClient({\n  host: 'https://os.example.com',\n  portalKey: 'pk_…',\n  platform: 'android',\n  appId: 'com.acme.orders',\n  app: { appVersion: '3.2.1', buildNumber: '451' },\n  attest: (challenge) => PlayIntegrity.token(challenge),\n});\n\n// null means the portal will not have us — hide the report button, never show\n// an error a reporter cannot act on.\nconst ticket = await client.session();\nif (!ticket) return;\n\nconst rec = new TraceRecorder({\n  platform: 'android',\n  framework: 'react_native',\n  maxSeconds: ticket.portal.recordingMaxSeconds,\n});\nrec.start('/orders/42');\nrec.tap({ testid: 'orders_refresh' });\nrec.request('POST', '/api/orders/42', 500, 240);\n\nconst trace = await client.stageTrace(rec.stop());\nawait client.report({\n  description: 'Saving an order shows a spinner forever.',\n  route: '/orders/42',\n  attachments: trace ? [trace] : [],\n});\n```\n\nRegister your app first in AlgoSoft OS — **Settings → Algo Widget → Mobile\napps** — with its package name / bundle id and, on Android, **both** signing\ncertificate fingerprints.\n\n## Licence\n\nApache-2.0.\n","readmeFilename":"README.md"}