{"_id":"@andreywtf/react-native-link-presentation","_rev":"2-f4296733f37e852fc3591e5110679857","name":"@andreywtf/react-native-link-presentation","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@andreywtf/react-native-link-presentation","version":"0.1.0","author":{"name":"Andrey Artamonychev","email":"me@andrey.wtf"},"license":"MIT","_id":"@andreywtf/react-native-link-presentation@0.1.0","maintainers":[{"name":"qweritos","email":"me@andrey.wtf"}],"homepage":"https://github.com/qweritos/react-native-link-presentation","bugs":{"url":"https://github.com/qweritos/react-native-link-presentation/issues"},"dist":{"shasum":"dc665860117372ecc99f444ca4513a6c52315bda","tarball":"https://registry.npmjs.org/@andreywtf/react-native-link-presentation/-/react-native-link-presentation-0.1.0.tgz","fileCount":57,"integrity":"sha512-bHpI7+9N5CtqoVzICAnZidOisAlYpOhP9pmbQnk1GKuf+vS4tZZDLCMFT7mSwFjIuBj9ZuQop5cew7GyqY8row==","signatures":[{"sig":"MEUCICNHjJ/dtEARZZnSv4HMQUiJ1Pupr0aMyVkWbQDuBQZUAiEAqMehOcy+s5guAmSF8Gux0yqKP5wpfUymRrn1YapXR14=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3986587},"jest":{"preset":"@react-native/jest-preset","testPathIgnorePatterns":["/node_modules/","/example/","/lib/"]},"main":"lib/commonjs/index.js","types":"lib/typescript/index.d.ts","module":"lib/module/index.js","source":"src/index.tsx","engines":{"node":">=20"},"gitHead":"d508d4b3a0edaa1566d12ae69bc1326acd23760d","scripts":{"lint":"eslint . --ext .js,.jsx,.ts,.tsx","test":"jest","build":"bob build","clean":"bob clean","prepare":"bob build","pod:lint":"pod lib lint react-native-link-presentation.podspec --quick --platforms=ios","typecheck":"tsc --noEmit","format:check":"prettier --check \"src/**/*.{ts,tsx}\" \"__tests__/**/*.{ts,tsx}\" \"*.{js,json,md}\" \".github/**/*.yml\" \"example/App.tsx\""},"_npmUser":{"name":"qweritos","email":"me@andrey.wtf"},"repository":{"url":"git+https://github.com/qweritos/react-native-link-presentation.git","type":"git"},"_npmVersion":"11.17.0","description":"React Native bindings for Apple's LinkPresentation framework","directories":{},"_nodeVersion":"26.5.0","react-native":"src/index.tsx","codegenConfig":{"ios":{"modulesProvider":{"RNLinkPresentation":"RNLinkPresentation"},"componentProvider":{"RNLPLinkView":"RNLPLinkViewComponentView"}},"name":"RNLinkPresentationSpec","type":"all","jsSrcsDir":"src"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","react":"^19.2.0","eslint":"^8.57.1","prettier":"^3.5.3","typescript":"^5.8.3","@types/jest":"^29.5.14","@types/react":"^19.1.0","react-native":"^0.86.0","react-native-builder-bob":"^0.43.0","@react-native/jest-preset":"^0.86.0","@react-native/babel-preset":"^0.86.0","@react-native/metro-config":"^0.86.0","@react-native-community/cli":"^20.0.0","@react-native/eslint-config":"^0.86.0","@react-native/typescript-config":"^0.86.0"},"peerDependencies":{"react":">=18","react-native":">=0.76"},"_npmOperationalInternal":{"tmp":"tmp/react-native-link-presentation_0.1.0_1783948441071_0.8807833699025991","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["commonjs",{"esm":true}],"module",["typescript",{"project":"tsconfig.build.json"}]]}},"0.1.1":{"name":"@andreywtf/react-native-link-presentation","version":"0.1.1","description":"React Native bindings for Apple's LinkPresentation framework","author":{"name":"Andrey Artamonychev","email":"me@andrey.wtf"},"homepage":"https://github.com/qweritos/react-native-link-presentation","repository":{"type":"git","url":"git+https://github.com/qweritos/react-native-link-presentation.git"},"main":"lib/commonjs/index.js","module":"lib/module/index.js","types":"lib/typescript/index.d.ts","react-native":"src/index.tsx","source":"src/index.tsx","scripts":{"build":"bob build","clean":"bob clean","lint":"eslint . --ext .js,.jsx,.ts,.tsx","typecheck":"tsc --noEmit","test":"jest","pod:lint":"pod lib lint react-native-link-presentation.podspec --quick --platforms=ios","format:check":"prettier --check \"src/**/*.{ts,tsx}\" \"__tests__/**/*.{ts,tsx}\" \"*.{js,json,md}\" \".github/**/*.yml\" \"example/App.tsx\"","prepare":"bob build"},"peerDependencies":{"react":">=18","react-native":">=0.76"},"devDependencies":{"@react-native-community/cli":"^20.0.0","@react-native/babel-preset":"^0.86.0","@react-native/eslint-config":"^0.86.0","@react-native/jest-preset":"^0.86.0","@react-native/metro-config":"^0.86.0","@react-native/typescript-config":"^0.86.0","@types/jest":"^29.5.14","@types/react":"^19.1.0","eslint":"^8.57.1","jest":"^29.7.0","prettier":"^3.5.3","react":"^19.2.0","react-native":"^0.86.0","react-native-builder-bob":"^0.43.0","typescript":"^5.8.3"},"codegenConfig":{"name":"RNLinkPresentationSpec","type":"all","jsSrcsDir":"src","ios":{"modulesProvider":{"RNLinkPresentation":"RNLinkPresentation"},"componentProvider":{"RNLPLinkView":"RNLPLinkViewComponentView"}}},"react-native-builder-bob":{"source":"src","output":"lib","targets":[["commonjs",{"esm":true}],"module",["typescript",{"project":"tsconfig.build.json"}]]},"jest":{"preset":"@react-native/jest-preset","testPathIgnorePatterns":["/node_modules/","/example/","/lib/"]},"engines":{"node":">=20"},"license":"MIT","publishConfig":{"access":"public"},"_id":"@andreywtf/react-native-link-presentation@0.1.1","gitHead":"99c293cde4695fb16590249a362d12b779c9521f","bugs":{"url":"https://github.com/qweritos/react-native-link-presentation/issues"},"_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-rDxsmdw4/gljsNlnDKiS44Zx5Ogx7rfo5nRtn45YTm8q0iY8wSjBVksTq93MyFzOUMbR1+Agibd/O0IUEfWUxw==","shasum":"c4770bf75e1a6120bb4b5032926927539fd21f10","tarball":"https://registry.npmjs.org/@andreywtf/react-native-link-presentation/-/react-native-link-presentation-0.1.1.tgz","fileCount":57,"unpackedSize":3986588,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@andreywtf%2freact-native-link-presentation@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICTKpVXprNXESkzYjXd5LWHN1nvI/9zyTwTVYUCBrTMDAiA/dR6TeTPYzr8gOf9lALUxlYC3WOT0WdSg4QUK4wt+Tg=="}]},"_npmUser":{"name":"qweritos","email":"me@andrey.wtf"},"directories":{},"maintainers":[{"name":"qweritos","email":"me@andrey.wtf"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-native-link-presentation_0.1.1_1783951007989_0.9186481330523855"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-13T13:14:00.918Z","modified":"2026-07-13T13:56:48.586Z","0.1.0":"2026-07-13T13:14:01.312Z","0.1.1":"2026-07-13T13:56:48.261Z"},"bugs":{"url":"https://github.com/qweritos/react-native-link-presentation/issues"},"author":{"name":"Andrey Artamonychev","email":"me@andrey.wtf"},"license":"MIT","homepage":"https://github.com/qweritos/react-native-link-presentation","repository":{"type":"git","url":"git+https://github.com/qweritos/react-native-link-presentation.git"},"description":"React Native bindings for Apple's LinkPresentation framework","maintainers":[{"name":"qweritos","email":"me@andrey.wtf"}],"readme":"<h1 align=\"center\">\n  <img src=\"docs/react-native.svg\" alt=\"React Native\" width=\"52\" height=\"52\" align=\"absmiddle\" />\n  React Native LinkPresentation\n</h1>\n\n<p align=\"center\">\n  React Native binding to Apple's <a href=\"https://developer.apple.com/documentation/linkpresentation\">LinkPresentation</a> framework\n</p>\n\n<p align=\"center\">\n  <img src=\"docs/screenshots/link-view.png\" alt=\"Native LPLinkView rendering fetched Apple link metadata\" width=\"740\" />\n</p>\n\niOS performs every fetch, redirect, metadata extraction, and item-provider load. The package performs no JavaScript networking or metadata parsing.\n\nRequires iOS 15.1+ and React Native 0.76+. Both the legacy and new React Native architectures are supported.\n\n## Demo\n\n<table>\n  <tr>\n    <td><img src=\"docs/screenshots/apple.png\" alt=\"Apple link metadata preview\" /></td>\n    <td><img src=\"docs/screenshots/tiktok.png\" alt=\"TikTok link metadata preview\" /></td>\n    <td><img src=\"docs/screenshots/youtube.png\" alt=\"YouTube link metadata preview\" /></td>\n    <td><img src=\"docs/screenshots/tiktok-long-press.png\" alt=\"TikTok native long-press preview\" /></td>\n  </tr>\n  <tr>\n    <td align=\"center\">Apple</td>\n    <td align=\"center\">TikTok</td>\n    <td align=\"center\">YouTube</td>\n    <td align=\"center\">TikTok long press</td>\n  </tr>\n</table>\n\n## Installation\n\n```sh\nnpm install @andreywtf/react-native-link-presentation\ncd ios && pod install\n```\n\nThe package is iOS-only. It can be imported on other platforms, but functions reject with `E_UNSUPPORTED_PLATFORM` and `LPLinkView` renders nothing.\n\n## Quick start\n\n```tsx\nimport {\n  getLinkMetadata,\n  LPLinkView,\n} from '@andreywtf/react-native-link-presentation';\n\nconst metadata = await getLinkMetadata('https://www.apple.com/iphone/');\n\n<LPLinkView metadata={metadata} style={{ height: 180 }} />;\n```\n\n## Documentation\n\n- [JavaScript API reference](docs/api.md)\n- [Usage examples](docs/examples.md)\n\n## Development\n\nThe LinkPresentation implementation and native view are written in Swift. Small Objective-C++ adapters remain where React Native's generated TurboModule and Fabric interfaces require C++/Objective-C++ entry points.\n\n```sh\nnpm install\nnpm run lint\nnpm run typecheck\nnpm test\nnpm run build\n\ncd example\nnpm install\ncd ios && pod install\nopen LinkPresentationExample.xcworkspace\n```\n\nThe example demonstrates native fetching, cancellation, custom metadata, placeholders, rich views, and lazy item-provider materialization.\n","readmeFilename":"README.md"}