{"_id":"@elmony/expo-metro-tagger","_rev":"6-538943a93ff2ee370fbfba8c893f3f38","name":"@elmony/expo-metro-tagger","dist-tags":{"latest":"0.1.5"},"versions":{"0.1.0":{"name":"@elmony/expo-metro-tagger","version":"0.1.0","keywords":["expo","metro","react-native","babel-plugin","elmony"],"author":{"name":"Elmony"},"license":"Apache-2.0","_id":"@elmony/expo-metro-tagger@0.1.0","maintainers":[{"name":"elmony","email":"info@elmony.com"}],"dist":{"shasum":"a4a47f9f58331aa5fa2b45b9e7330604068abdb6","tarball":"https://registry.npmjs.org/@elmony/expo-metro-tagger/-/expo-metro-tagger-0.1.0.tgz","fileCount":8,"integrity":"sha512-JosThxLjfm8EXwcW+elLLeRm+RxjPwvdGsOum5GvdW/4vhmkmqQQU/oCgJ7exHn3rqrEmeg12UVO47jJDwPskA==","signatures":[{"sig":"MEUCIQDL1qygOqdcI6NnLaliTd/v5Bnvp+m0AmMs0pvTba1stQIgOQxTTv6H/vvVNdFxVA+JG/Ng//8obdDIiMnsPMzcP2E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26103},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./babel-plugin":{"types":"./dist/babel-plugin.d.ts","require":"./dist/babel-plugin.cjs"}},"gitHead":"27cfbb2e30e958fb495b59b8528c2b67b4b59f0d","scripts":{"dev":"tsup --watch","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"elmony","email":"info@elmony.com"},"_npmVersion":"11.12.1","description":"Metro Babel plugin + runtime that enables component inspection for Expo apps in Elmony.","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.2.2","@babel/core":"^7.23.0","@types/react":"^19.0.0","@types/babel__core":"^7.20.0","@types/react-native":"^0.73.0","@babel/plugin-syntax-jsx":"^7.28.6","@babel/plugin-syntax-typescript":"^7.28.6"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.70.0"},"_npmOperationalInternal":{"tmp":"tmp/expo-metro-tagger_0.1.0_1779623763315_0.6514558041399168","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@elmony/expo-metro-tagger","version":"0.1.1","keywords":["expo","metro","react-native","babel-plugin","elmony"],"author":{"name":"Elmony"},"license":"Apache-2.0","_id":"@elmony/expo-metro-tagger@0.1.1","maintainers":[{"name":"elmony","email":"info@elmony.com"}],"dist":{"shasum":"5f1c5762503c1863e395de3e227c1b4502f97799","tarball":"https://registry.npmjs.org/@elmony/expo-metro-tagger/-/expo-metro-tagger-0.1.1.tgz","fileCount":8,"integrity":"sha512-CbWbTriw4r0E5gBGXT8RXcsID6deJi7gyajSW7i5pDEXhxQHHJFZaBKxVJYPpXLGa6yVdXm7XT/H5UpjrF6O9w==","signatures":[{"sig":"MEYCIQDMnhwoWRXtiBmobcTH7q2y6AHQiH3nvVsyxUBZt+9inwIhAOXRC1u7TEFqyh2QgTh0oC2MCZ9s1wvswIvOrhRWRJTn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26986},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./babel-plugin":{"types":"./dist/babel-plugin.d.ts","require":"./dist/babel-plugin.cjs"}},"gitHead":"27cfbb2e30e958fb495b59b8528c2b67b4b59f0d","scripts":{"dev":"tsup --watch","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"elmony","email":"info@elmony.com"},"_npmVersion":"11.12.1","description":"Metro Babel plugin + runtime that enables component inspection for Expo apps in Elmony.","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.2.2","@babel/core":"^7.23.0","@types/react":"^19.0.0","@types/babel__core":"^7.20.0","@types/react-native":"^0.73.0","@babel/plugin-syntax-jsx":"^7.28.6","@babel/plugin-syntax-typescript":"^7.28.6"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.70.0"},"_npmOperationalInternal":{"tmp":"tmp/expo-metro-tagger_0.1.1_1779625223243_0.02437626574479901","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@elmony/expo-metro-tagger","version":"0.1.2","keywords":["expo","metro","react-native","babel-plugin","elmony"],"author":{"name":"Elmony"},"license":"Apache-2.0","_id":"@elmony/expo-metro-tagger@0.1.2","maintainers":[{"name":"elmony","email":"info@elmony.com"}],"dist":{"shasum":"e0c281896cd3d8f0cf3c3a6381e1a2a40b0046e4","tarball":"https://registry.npmjs.org/@elmony/expo-metro-tagger/-/expo-metro-tagger-0.1.2.tgz","fileCount":8,"integrity":"sha512-fjy6IgqvsVITGLxnIrKuXaqlJ02tzhF8W4v1TewnjPHyh34HFBlCo0UbDdgRETEG+VHvEOkUnpV6rwiytc1duA==","signatures":[{"sig":"MEYCIQCwrW6utVC07YowxOfy81Bhx6c3vNf2NRhLcmwLJkssQwIhAP3gWQ7JI40WqYsOgxIFfeugUD/OLbAvHhj2vRghC1mP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27846},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./babel-plugin":{"types":"./dist/babel-plugin.d.ts","require":"./dist/babel-plugin.cjs"}},"gitHead":"27cfbb2e30e958fb495b59b8528c2b67b4b59f0d","scripts":{"dev":"tsup --watch","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"elmony","email":"info@elmony.com"},"_npmVersion":"11.12.1","description":"Metro Babel plugin + runtime that enables component inspection for Expo apps in Elmony.","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.2.2","@babel/core":"^7.23.0","@types/react":"^19.0.0","@types/babel__core":"^7.20.0","@types/react-native":"^0.73.0","@babel/plugin-syntax-jsx":"^7.28.6","@babel/plugin-syntax-typescript":"^7.28.6"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.70.0"},"_npmOperationalInternal":{"tmp":"tmp/expo-metro-tagger_0.1.2_1779626725014_0.7235187168713717","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@elmony/expo-metro-tagger","version":"0.1.3","keywords":["expo","metro","react-native","babel-plugin","elmony"],"author":{"name":"Elmony"},"license":"Apache-2.0","_id":"@elmony/expo-metro-tagger@0.1.3","maintainers":[{"name":"elmony","email":"info@elmony.com"}],"dist":{"shasum":"e565fec34d622f19ba81888ce726423f21a345d7","tarball":"https://registry.npmjs.org/@elmony/expo-metro-tagger/-/expo-metro-tagger-0.1.3.tgz","fileCount":8,"integrity":"sha512-1n5OXjWIjOkZDRxrO/s76dTUEzw1ywnBaI7lCGz5n8qJAngbAZPFTjNzsVFzUKh11Fbme5jFABvU3DpUq9qiEA==","signatures":[{"sig":"MEUCIEsFaf1xygjYivInEBBkOrfG8rggxDlFljZutQ1Bv+nMAiEAmHZ+uKzoAF19lMxl4eWbwUX1vLV+Flz9VngcAO+TAmI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28070},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./babel-plugin":{"types":"./dist/babel-plugin.d.ts","require":"./dist/babel-plugin.cjs"}},"gitHead":"27cfbb2e30e958fb495b59b8528c2b67b4b59f0d","scripts":{"dev":"tsup --watch","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"elmony","email":"info@elmony.com"},"_npmVersion":"11.12.1","description":"Metro Babel plugin + runtime that enables component inspection for Expo apps in Elmony.","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.2.2","@babel/core":"^7.23.0","@types/react":"^19.0.0","@types/babel__core":"^7.20.0","@types/react-native":"^0.73.0","@babel/plugin-syntax-jsx":"^7.28.6","@babel/plugin-syntax-typescript":"^7.28.6"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.70.0"},"_npmOperationalInternal":{"tmp":"tmp/expo-metro-tagger_0.1.3_1779628817694_0.30088293985159686","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@elmony/expo-metro-tagger","version":"0.1.4","keywords":["expo","metro","react-native","babel-plugin","elmony"],"author":{"name":"Elmony"},"license":"Apache-2.0","_id":"@elmony/expo-metro-tagger@0.1.4","maintainers":[{"name":"elmony","email":"info@elmony.com"}],"dist":{"shasum":"57738307575174a7358c81f8844d5fe9fde03225","tarball":"https://registry.npmjs.org/@elmony/expo-metro-tagger/-/expo-metro-tagger-0.1.4.tgz","fileCount":8,"integrity":"sha512-ZgzJVnSYj06mKyaTblud13w9DA1nJpy2xv96aTdBEJwJDpPCHq3P4m3otbdZhMT3gmRw+PL/29+gqH6G5P12yg==","signatures":[{"sig":"MEQCIGFQwgWmRx+osrXQQg91ugDTKSZabAfhTUpaT3f/5UvIAiBsJCx8qpd1VmWSNs+lYYyJ9ROWQ2qtPqqJVK00+n1Vhg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28557},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./babel-plugin":{"types":"./dist/babel-plugin.d.ts","require":"./dist/babel-plugin.cjs"}},"gitHead":"27cfbb2e30e958fb495b59b8528c2b67b4b59f0d","scripts":{"dev":"tsup --watch","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"elmony","email":"info@elmony.com"},"_npmVersion":"11.12.1","description":"Metro Babel plugin + runtime that enables component inspection for Expo apps in Elmony.","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.2.2","@babel/core":"^7.23.0","@types/react":"^19.0.0","@types/babel__core":"^7.20.0","@types/react-native":"^0.73.0","@babel/plugin-syntax-jsx":"^7.28.6","@babel/plugin-syntax-typescript":"^7.28.6"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.70.0"},"_npmOperationalInternal":{"tmp":"tmp/expo-metro-tagger_0.1.4_1779629432978_0.5958251188298336","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@elmony/expo-metro-tagger","version":"0.1.5","description":"Metro Babel plugin + runtime that enables component inspection for Expo apps in Elmony.","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","react-native":"./dist/index.js","import":"./dist/index.mjs","require":"./dist/index.js"},"./babel-plugin":{"types":"./dist/babel-plugin.d.ts","require":"./dist/babel-plugin.cjs"}},"scripts":{"build":"tsup","dev":"tsup --watch","prepublishOnly":"npm run build"},"keywords":["expo","metro","react-native","babel-plugin","elmony"],"author":{"name":"Elmony"},"license":"Apache-2.0","peerDependencies":{"react":">=18.0.0","react-native":">=0.70.0"},"devDependencies":{"@babel/core":"^7.23.0","@babel/plugin-syntax-jsx":"^7.28.6","@babel/plugin-syntax-typescript":"^7.28.6","@types/babel__core":"^7.20.0","@types/react":"^19.0.0","@types/react-native":"^0.73.0","tsup":"^8.0.2","typescript":"^5.2.2"},"publishConfig":{"access":"public"},"gitHead":"27cfbb2e30e958fb495b59b8528c2b67b4b59f0d","_id":"@elmony/expo-metro-tagger@0.1.5","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-bMYDXcsLBs4GR3sYKAJa7U/d9bF9lSb6+kYTljrbF4LSngk+W+EnWEYkMkyn6tD0HIpbBDbUb4oe7dFc6/rxOg==","shasum":"2ed2bf7248c388f254d9b2f1de1c88fb44ec7591","tarball":"https://registry.npmjs.org/@elmony/expo-metro-tagger/-/expo-metro-tagger-0.1.5.tgz","fileCount":8,"unpackedSize":28598,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHBWrvy2yAHhxzPeaqlvGYYtjE0egpM9vv/0UOSWDCUTAiEAkRT5YtCXPQ9G0uGZA9tQ1cbjvKKC4278hI8+fsbY8C0="}]},"_npmUser":{"name":"elmony","email":"info@elmony.com"},"directories":{},"maintainers":[{"name":"elmony","email":"info@elmony.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/expo-metro-tagger_0.1.5_1779631483816_0.32624739608886344"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-24T11:56:03.128Z","modified":"2026-05-24T14:04:44.190Z","0.1.0":"2026-05-24T11:56:03.519Z","0.1.1":"2026-05-24T12:20:23.408Z","0.1.2":"2026-05-24T12:45:25.180Z","0.1.3":"2026-05-24T13:20:17.844Z","0.1.4":"2026-05-24T13:30:33.169Z","0.1.5":"2026-05-24T14:04:44.083Z"},"author":{"name":"Elmony"},"license":"Apache-2.0","keywords":["expo","metro","react-native","babel-plugin","elmony"],"description":"Metro Babel plugin + runtime that enables component inspection for Expo apps in Elmony.","maintainers":[{"name":"elmony","email":"info@elmony.com"}],"readme":"# @elmony/expo-metro-tagger\n\nMetro Babel plugin + runtime that enables component inspection for Expo apps running inside Elmony's preview.\n\nThe web equivalent is [`@elmony/react-vite-component-tagger`](../react-vite-component-tagger).\n\n---\n\n## How it works\n\n1. **Babel plugin** — runs during Metro bundling and wraps every uppercase JSX component with a thin `<ElmonyTag>` wrapper that carries the source file/line/column as props.\n\n2. **ElmonyTag** — a React Native `View` with `pointerEvents=\"box-none\"` that measures its screen bounds on layout and registers them in a global registry.\n\n3. **ElmonyInspector** — a floating 🔍 button that toggles an inspection overlay. When active, the next tap finds the smallest registered component whose bounds contain the tap point and sends a `postMessage` (Expo Web / iframe) or WebSocket message (native) to Elmony.\n\n---\n\n## Setup\n\n### 1. Add the Babel plugin to `babel.config.js`\n\n```js\nmodule.exports = {\n  presets: ['babel-preset-expo'],\n  plugins: [\n    // Only include in development — strip from production builds\n    ...(process.env.NODE_ENV !== 'production'\n      ? [['@elmony/expo-metro-tagger/babel-plugin']]\n      : []),\n  ],\n};\n```\n\n### 2. Wrap your app root with `ElmonyInspector`\n\n```tsx\n// app/_layout.tsx  (Expo Router)  or  App.tsx\nimport { ElmonyInspector } from '@elmony/expo-metro-tagger';\n\nexport default function RootLayout() {\n  return (\n    <ElmonyInspector>\n      {/* your existing providers / Stack / Tabs */}\n    </ElmonyInspector>\n  );\n}\n```\n\n`ElmonyInspector` is a no-op in production (`enabled` defaults to `__DEV__`).\n\n---\n\n## Notes\n\n- The `ElmonyTag` wrapper adds a `View` layer around each tagged component. This should be transparent for most layouts but may affect components that rely on precise flex sizing from their parent. It only runs in development.\n- `Fragment`, `Suspense`, `Provider`, `NavigationContainer`, and a few other structural-only components are never wrapped.\n- The `key` prop is automatically lifted from the child to the wrapper so React list reconciliation continues to work.\n- For Expo Web previewed in an iframe (the default Elmony preview mode), communication happens via `window.parent.postMessage`. For native, a WebSocket connects to the `wsUrl` you pass to `ElmonyInspector` (default: `ws://localhost:5173`).\n","readmeFilename":"README.md"}