{"_id":"@boostbossai/lumi-mobile","_rev":"3-8247ceaef6d5a32d365a22a093782175","name":"@boostbossai/lumi-mobile","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@boostbossai/lumi-mobile","version":"0.1.0","keywords":["boostboss","lumi","react-native","expo","mobile","ios","android","ads","monetization"],"author":{"name":"Boost Boss"},"license":"MIT","_id":"@boostbossai/lumi-mobile@0.1.0","maintainers":[{"name":"boostboss","email":"admin@boostboss.ai"}],"homepage":"https://boostboss.ai/publish/mobile","bugs":{"url":"https://github.com/boostbossai/boostboss/issues"},"dist":{"shasum":"8f6492fb803dd6b33dca8462be7775061b2e6c2e","tarball":"https://registry.npmjs.org/@boostbossai/lumi-mobile/-/lumi-mobile-0.1.0.tgz","fileCount":16,"integrity":"sha512-lAlGJi0vFCuKONFSheEbLIN7xeq8x6FRn/KKAWdXgZJ8s5KavIGkS2jHfx9BtntZv1XulzLG5Sk2ABrgEU42/A==","signatures":[{"sig":"MEYCIQDcVmJvV+EByzA0uzWfueXrQvtFEq8kLQYTtQKHvyTswgIhAOIpMt5Y/Vo8jY6lyDFARRYZPDBPLxkP/ZN3PG7fvR8Z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62672},"main":"./src/index.tsx","types":"./src/index.tsx","source":"./src/index.tsx","exports":{".":{"types":"./src/index.tsx","default":"./src/index.tsx","react-native":"./src/index.tsx"},"./components/BottomBanner":"./src/components/BottomBanner.tsx","./components/RewardedVideo":"./src/components/RewardedVideo.tsx","./components/InlineNativeBanner":"./src/components/InlineNativeBanner.tsx","./components/FullScreenInterstitial":"./src/components/FullScreenInterstitial.tsx"},"gitHead":"87b7456aa540943beb5b7284e7b68c30cda6d92a","_npmUser":{"name":"boostboss","email":"admin@boostboss.ai"},"repository":{"url":"git+https://github.com/boostbossai/boostboss.git","type":"git","directory":"packages/lumi-mobile"},"_npmVersion":"11.9.0","description":"Lumi for Mobile App runtime SDK — Boost Boss's ad placements for React Native (Expo + bare).","directories":{},"_nodeVersion":"24.14.0","react-native":"./src/index.tsx","_hasShrinkwrap":false,"peerDependencies":{"react":">=18.0.0","react-native":">=0.74.0"},"_npmOperationalInternal":{"tmp":"tmp/lumi-mobile_0.1.0_1782011565355_0.37241340018073243","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@boostbossai/lumi-mobile","version":"0.2.0","keywords":["boostboss","lumi","react-native","expo","mobile","ios","android","ads","monetization"],"author":{"name":"Boost Boss"},"license":"MIT","_id":"@boostbossai/lumi-mobile@0.2.0","maintainers":[{"name":"boostboss","email":"admin@boostboss.ai"}],"homepage":"https://boostboss.ai/publish/mobile","bugs":{"url":"https://github.com/boostbossai/boostboss/issues"},"dist":{"shasum":"a38a17c5ba592facba4ac86fb8c8fa4b68290196","tarball":"https://registry.npmjs.org/@boostbossai/lumi-mobile/-/lumi-mobile-0.2.0.tgz","fileCount":16,"integrity":"sha512-WhMu0l9alyrlH/xHhC+EmmXGJWgvAIRyVZyAN3jFIDPopm9JOwCITlmv6gPjgvqECDcaNkeLBtCSZWk9RB1txg==","signatures":[{"sig":"MEUCIQCmfJ+bmQEiNiN7JdHpkhuqIH6XCHDrGJl4+4E6Ryk/mQIgD8W4UNGHzHDUoqKFwGU1rPi9WGf26afIjzpMWqyDbao=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63799},"main":"./src/index.tsx","types":"./src/index.tsx","source":"./src/index.tsx","exports":{".":{"types":"./src/index.tsx","default":"./src/index.tsx","react-native":"./src/index.tsx"},"./components/BottomBanner":"./src/components/BottomBanner.tsx","./components/RewardedVideo":"./src/components/RewardedVideo.tsx","./components/InlineNativeBanner":"./src/components/InlineNativeBanner.tsx","./components/FullScreenInterstitial":"./src/components/FullScreenInterstitial.tsx"},"gitHead":"0f1704a90e30edc84c419e70db86ae09f2831354","_npmUser":{"name":"boostboss","email":"admin@boostboss.ai"},"repository":{"url":"git+https://github.com/boostbossai/boostboss.git","type":"git","directory":"packages/lumi-mobile"},"_npmVersion":"11.9.0","description":"Lumi for Mobile App runtime SDK — Boost Boss's ad placements for React Native (Expo + bare).","directories":{},"_nodeVersion":"24.14.0","react-native":"./src/index.tsx","_hasShrinkwrap":false,"peerDependencies":{"react":">=18.0.0","react-native":">=0.74.0"},"_npmOperationalInternal":{"tmp":"tmp/lumi-mobile_0.2.0_1782013267828_0.7453846419714638","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@boostbossai/lumi-mobile","version":"0.3.0","description":"Lumi for Mobile App runtime SDK — Boost Boss's ad placements for React Native (Expo + bare).","main":"./src/index.tsx","types":"./src/index.tsx","react-native":"./src/index.tsx","source":"./src/index.tsx","exports":{".":{"react-native":"./src/index.tsx","types":"./src/index.tsx","default":"./src/index.tsx"},"./components/BottomBanner":"./src/components/BottomBanner.tsx","./components/RewardedVideo":"./src/components/RewardedVideo.tsx","./components/InlineNativeBanner":"./src/components/InlineNativeBanner.tsx","./components/FullScreenInterstitial":"./src/components/FullScreenInterstitial.tsx"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.74.0"},"keywords":["boostboss","lumi","react-native","expo","mobile","ios","android","ads","monetization"],"homepage":"https://boostboss.ai/publish/mobile","repository":{"type":"git","url":"git+https://github.com/boostbossai/boostboss.git","directory":"packages/lumi-mobile"},"license":"MIT","author":{"name":"Boost Boss"},"gitHead":"2755b9b30c35aa98f4834f54f9e9b8498e203cea","_id":"@boostbossai/lumi-mobile@0.3.0","bugs":{"url":"https://github.com/boostbossai/boostboss/issues"},"_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-6LkT2LjWIfRBrZBjXoBFcafvqKMb1IF967R8mPHgLKKdg3pEofwWgpVeTPXWaEjFGMjy4guVb2UnkhzR5uT3/Q==","shasum":"9fbd57e8de66bb07dcd8fabe598c4279e50c0519","tarball":"https://registry.npmjs.org/@boostbossai/lumi-mobile/-/lumi-mobile-0.3.0.tgz","fileCount":17,"unpackedSize":68560,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFgYof+xAbbll2AwT+LKOd//bIGfiRACg6BHM4JWH2fEAiAKIQGft3lv29jHdAI+a8Izqan2UTgbS1wyM+XkEOIuPw=="}]},"_npmUser":{"name":"boostboss","email":"admin@boostboss.ai"},"directories":{},"maintainers":[{"name":"boostboss","email":"admin@boostboss.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lumi-mobile_0.3.0_1782377417214_0.913602322620531"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-21T03:12:45.113Z","modified":"2026-06-25T08:50:17.510Z","0.1.0":"2026-06-21T03:12:45.501Z","0.2.0":"2026-06-21T03:41:07.979Z","0.3.0":"2026-06-25T08:50:17.387Z"},"bugs":{"url":"https://github.com/boostbossai/boostboss/issues"},"author":{"name":"Boost Boss"},"license":"MIT","homepage":"https://boostboss.ai/publish/mobile","keywords":["boostboss","lumi","react-native","expo","mobile","ios","android","ads","monetization"],"repository":{"type":"git","url":"git+https://github.com/boostbossai/boostboss.git","directory":"packages/lumi-mobile"},"description":"Lumi for Mobile App runtime SDK — Boost Boss's ad placements for React Native (Expo + bare).","maintainers":[{"name":"boostboss","email":"admin@boostboss.ai"}],"readme":"# @boostbossai/lumi-mobile\n\n**Lumi for Mobile App** runtime SDK — Boost Boss's ad placements for React\nNative (Expo + bare).\n\n> Most publishers install this through the CLI rather than by hand:\n>\n> ```bash\n> npx @boostbossai/install-mobile pub_xxx\n> ```\n>\n> Keep reading if you want to wire it manually.\n\n## Install\n\n```bash\nnpm install @boostbossai/lumi-mobile\n# Expo iOS: prebuild then run normally.\n# Bare RN iOS: cd ios && pod install\n```\n\nPeer deps: `react >=18`, `react-native >=0.74`.\n\n## Manual wire-up\n\n```tsx\nimport { LumiProvider } from '@boostbossai/lumi-mobile';\n\nexport default function App() {\n  return (\n    <LumiProvider publisherId=\"pub_a8x2k9f9\">\n      {/* your app */}\n    </LumiProvider>\n  );\n}\n```\n\nThat's it. `<BottomBanner />` auto-mounts at the screen bottom and starts\nfetching ads on first render. `<SplashSponsor />` auto-mounts on cold\nstart (once per app launch, module-level flag prevents re-show across\nre-mounts). Both follow the [Publisher Agreement §4.1](https://boostboss.ai/publisher-agreement#section-4)\nauto-placement default; opt out with `disableBottomBanner` /\n`disableSplashSponsor` props on `<LumiProvider>`.\n\n## Opt-in placements\n\nThe placements below render only when you mount them — they need a\npublisher trigger point (a screen, a button tap, a level-end). Auto-mount\ndoesn't apply because there's no reliable global signal for \"now is the\nmoment to show a rewarded video.\"\n\n```tsx\nimport {\n  RewardedVideo,\n  InlineNativeBanner,\n  FullScreenInterstitial,\n} from '@boostbossai/lumi-mobile';\n\n// Rewarded — real full-screen video player. Install expo-av for native\n// playback; without it, falls back to a sponsored card + wall-clock timer.\n<RewardedVideo\n  rewardAmount={10}\n  rewardUnit=\"credits\"\n  onReward={({ amount, unit }) => giveUserCredits(amount)}\n  onSkip={() => {/* user dismissed early — no reward */}}\n/>\n\n// Inline — drop into a feed.\n<InlineNativeBanner />\n\n// Full-screen — show on level-end, etc.\n<FullScreenInterstitial\n  visible={showInterstitial}\n  onClose={() => setShowInterstitial(false)}\n/>\n```\n\n## Placements & RPM\n\n| Placement                | RPM         |\n| ------------------------ | ----------- |\n| Sponsored citation       | ~$4.50      |\n| Suggested chip           | ~$4.50      |\n| Inline sponsored card    | ~$6.50      |\n| Loading-state ad         | ~$7.00      |\n| Pre-roll video           | ~$11.00     |\n| Rewarded video           | **~$35.00** |\n| Bottom banner            | ~$6.50      |\n| Inline native banner     | ~$7.50      |\n| Full-screen interstitial | ~$18.00     |\n| Splash sponsor           | ~$15.00     |\n\n## v0 caveats\n\n- Session UUID uses `Math.random()`. Upgrade to `expo-crypto` (Expo) or\n  `react-native-get-random-values` (bare) when stricter uniqueness matters.\n- `<RewardedVideo>` and `<PreRollVideo>` use `expo-av` for real native\n  video playback when installed (`expo install expo-av`). It is an\n  optional peer dep — without it, both placements render a sponsored-card\n  fallback. The fallback still fires impressions and resolves\n  `onReward` / `onComplete`, just without a real video frame.\n- TSX ships as-is; your bundler (Metro / Babel) handles transpilation.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}