{"_id":"expo-stallion-plugin","_rev":"5-52aea8acce14308d83032c53251e9668","name":"expo-stallion-plugin","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"expo-stallion-plugin","version":"1.0.0","keywords":["expo","expo-plugin","react-native","stallion","bundle","ota"],"author":"","license":"MIT","_id":"expo-stallion-plugin@1.0.0","maintainers":[{"name":"redhorse-tech","email":"admin@stalliontech.io"}],"homepage":"https://github.com/stallion-tech/expo-stallion-plugin#readme","bugs":{"url":"https://github.com/stallion-tech/expo-stallion-plugin/issues"},"dist":{"shasum":"4b596b6f6f82156c6d281e00ea09508f972c2a55","tarball":"https://registry.npmjs.org/expo-stallion-plugin/-/expo-stallion-plugin-1.0.0.tgz","fileCount":11,"integrity":"sha512-30GRCDXsSGoeSbjs5EosNhjIMlCqMjy53vCI84cMkhi9osL3uRg+C4spdOhi3q8qybOidceYThE1E1merN6NRA==","signatures":[{"sig":"MEUCICWjyJ3YGJkxTWUpxU3lV596XLpyblaEhaBn/BIHRg9KAiEArf9PkA19Q7bvfiB7w32LJcmh77Mq1a8eQNNm79ok7UQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35443},"main":"build/index.js","types":"build/index.d.ts","gitHead":"d746ec0aae03edfbf9f3babcb52d55724d9973e5","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"assets":["CHANGELOG.md","package.json"],"message":"chore(release): ${nextRelease.version}"}]],"branches":["main",{"name":"alpha","prerelease":true}]},"scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"redhorse-tech","email":"admin@stalliontech.io"},"repository":{"url":"git+https://github.com/stallion-tech/expo-stallion-plugin.git","type":"git"},"_npmVersion":"10.9.4","description":"Expo Config Plugin for react-native-stallion - automatically configures Stallion as the JS bundle provider","directories":{},"_nodeVersion":"22.21.1","dependencies":{"@expo/config-plugins":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","semantic-release":"19.0.3","@semantic-release/git":"^10.0.0","@semantic-release/changelog":"^6.0.0"},"peerDependencies":{"expo":">=47.0.0"},"_npmOperationalInternal":{"tmp":"tmp/expo-stallion-plugin_1.0.0_1768379628146_0.8203748348585012","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"expo-stallion-plugin","version":"1.0.1","keywords":["expo","expo-plugin","react-native","stallion","bundle","ota"],"author":"","license":"MIT","_id":"expo-stallion-plugin@1.0.1","maintainers":[{"name":"redhorse-tech","email":"admin@stalliontech.io"}],"homepage":"https://github.com/stallion-tech/expo-stallion-plugin#readme","bugs":{"url":"https://github.com/stallion-tech/expo-stallion-plugin/issues"},"dist":{"shasum":"6d94230f98bf40415c728de1adc0df1857ef61e4","tarball":"https://registry.npmjs.org/expo-stallion-plugin/-/expo-stallion-plugin-1.0.1.tgz","fileCount":11,"integrity":"sha512-R3kOqe2Zv4nsbj4kMQnmJuwGIT9pUCNNCk/qJzZtCRG8/9u8A5REuoN3zpYW8TpzNnsg9tNpL5gi0/E3GVtjHA==","signatures":[{"sig":"MEYCIQDn6LfLxWDI4HPHq7/Zw6uGoLqKgCawq0wg9iqtoZaorwIhANaN9wp8SRCLnsohw0UtBY3U2KI7Jzvi8g7loCZQw/7v","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36155},"main":"build/index.js","types":"build/index.d.ts","gitHead":"c6190598eb9954b413a05048cf30ff997462f257","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"assets":["CHANGELOG.md","package.json"],"message":"chore(release): ${nextRelease.version}"}]],"branches":["main",{"name":"alpha","prerelease":true}]},"scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"redhorse-tech","email":"admin@stalliontech.io"},"repository":{"url":"git+https://github.com/stallion-tech/expo-stallion-plugin.git","type":"git"},"_npmVersion":"10.9.4","description":"Expo Config Plugin for react-native-stallion - automatically configures Stallion as the JS bundle provider","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@expo/config-plugins":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","semantic-release":"19.0.3","@semantic-release/git":"^10.0.0","@semantic-release/changelog":"^6.0.0"},"peerDependencies":{"expo":">=47.0.0"},"_npmOperationalInternal":{"tmp":"tmp/expo-stallion-plugin_1.0.1_1771002614160_0.9746221247225089","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"expo-stallion-plugin","version":"1.0.2","keywords":["expo","expo-plugin","react-native","stallion","bundle","ota"],"author":"","license":"MIT","_id":"expo-stallion-plugin@1.0.2","maintainers":[{"name":"redhorse-tech","email":"admin@stalliontech.io"}],"homepage":"https://github.com/stallion-tech/expo-stallion-plugin#readme","bugs":{"url":"https://github.com/stallion-tech/expo-stallion-plugin/issues"},"dist":{"shasum":"3d51449c8006963d1edc09905cacc22728f00d48","tarball":"https://registry.npmjs.org/expo-stallion-plugin/-/expo-stallion-plugin-1.0.2.tgz","fileCount":11,"integrity":"sha512-I6aeOcR1xAoIonytz35UL+Mz5VeG6Nnw9vKawWWv63kFnUej0iOVZLxNxyvP2uHk7hoR/VILyp0NilDdgBn9xw==","signatures":[{"sig":"MEQCIGNh2IjMhGZExFBkDaB7a7gbutC1cFNd6JzjGhzBuXY9AiAMvpnxz/6sRGwyF72t3gm/AmsEUov9qVkNuTelLL9krg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36496},"main":"build/index.js","types":"build/index.d.ts","gitHead":"ba4fea67c7a0899b61c278b11d6fb998d7cc88e5","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"assets":["CHANGELOG.md","package.json"],"message":"chore(release): ${nextRelease.version}"}]],"branches":["main",{"name":"alpha","prerelease":true}]},"scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"redhorse-tech","email":"admin@stalliontech.io"},"repository":{"url":"git+https://github.com/stallion-tech/expo-stallion-plugin.git","type":"git"},"_npmVersion":"10.9.4","description":"Expo Config Plugin for react-native-stallion - automatically configures Stallion as the JS bundle provider","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@expo/config-plugins":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","semantic-release":"19.0.3","@semantic-release/git":"^10.0.0","@semantic-release/changelog":"^6.0.0"},"peerDependencies":{"expo":">=47.0.0"},"_npmOperationalInternal":{"tmp":"tmp/expo-stallion-plugin_1.0.2_1772481826050_0.49492939835883876","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"expo-stallion-plugin","version":"1.0.3","keywords":["expo","expo-plugin","react-native","stallion","bundle","ota"],"author":"","license":"MIT","_id":"expo-stallion-plugin@1.0.3","maintainers":[{"name":"redhorse-tech","email":"admin@stalliontech.io"}],"homepage":"https://github.com/stallion-tech/expo-stallion-plugin#readme","bugs":{"url":"https://github.com/stallion-tech/expo-stallion-plugin/issues"},"dist":{"shasum":"4539a53ce0856036a30b0118beceacab53d6f8d5","tarball":"https://registry.npmjs.org/expo-stallion-plugin/-/expo-stallion-plugin-1.0.3.tgz","fileCount":11,"integrity":"sha512-1uTkBjsToGeRr+JNM4/Ca70EwwFBa/opJlSjoofIkzsqfj8zIqQM8+GoIj4Rb/I37hF258mFRB6UCV9kmKHOlg==","signatures":[{"sig":"MEYCIQDBKXH/np3w0JCVIyFlURxBIPlm3oF1k/8gWoki45IJvgIhANJn2Mo9gigp4OToJOqLaSpzymNDfbns+ZHlBx4otSLu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36473},"main":"build/index.js","types":"build/index.d.ts","gitHead":"fc043d58b64ac9f3d8e9e67ea47d660e7402410e","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"assets":["CHANGELOG.md","package.json"],"message":"chore(release): ${nextRelease.version}"}]],"branches":["main",{"name":"alpha","prerelease":true}]},"scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"redhorse-tech","email":"admin@stalliontech.io"},"repository":{"url":"git+https://github.com/stallion-tech/expo-stallion-plugin.git","type":"git"},"_npmVersion":"10.9.7","description":"Expo Config Plugin for react-native-stallion - automatically configures Stallion as the JS bundle provider","directories":{},"_nodeVersion":"22.22.2","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","semantic-release":"19.0.3","@semantic-release/git":"^10.0.0","@semantic-release/changelog":"^6.0.0"},"peerDependencies":{"expo":">=47.0.0","@expo/config-plugins":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/expo-stallion-plugin_1.0.3_1778517009484_0.14725432160163776","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"expo-stallion-plugin","version":"1.0.4","description":"Expo Config Plugin for react-native-stallion - automatically configures Stallion as the JS bundle provider","main":"build/index.js","types":"build/index.d.ts","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"keywords":["expo","expo-plugin","react-native","stallion","bundle","ota"],"author":"","license":"MIT","repository":{"type":"git","url":"git+https://github.com/stallion-tech/expo-stallion-plugin.git"},"peerDependencies":{"expo":">=47.0.0","@expo/config-plugins":">=5.0.0"},"devDependencies":{"@types/node":"^20.0.0","typescript":"^5.0.0","@semantic-release/changelog":"^6.0.0","@semantic-release/git":"^10.0.0","semantic-release":"19.0.3"},"release":{"branches":["main",{"name":"alpha","prerelease":true}],"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{"assets":["CHANGELOG.md","package.json"],"message":"chore(release): ${nextRelease.version}"}]]},"gitHead":"fcb8ef0d24180165487d70bfe121473f7387d8fe","bugs":{"url":"https://github.com/stallion-tech/expo-stallion-plugin/issues"},"homepage":"https://github.com/stallion-tech/expo-stallion-plugin#readme","_id":"expo-stallion-plugin@1.0.4","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-pLQ7Z6tCkNtexAUhdpZBfVPh5raJVvx0Y4b712hp24DNFpagd6CaYwROJfm/uiAzBSZEp3jH4T5YOKqKVvigkw==","shasum":"6475beeb468d30cb0b6283b36960a6a9bff69cdb","tarball":"https://registry.npmjs.org/expo-stallion-plugin/-/expo-stallion-plugin-1.0.4.tgz","fileCount":11,"unpackedSize":37484,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCjHdWNonE6qQBcuifrPKExagU1r3Oa62WlPjt5tJyi2gIhAKiewhdjsrQySJLUnuymGFvKdhdUCAeUi3H7to2nOpzI"}]},"_npmUser":{"name":"redhorse-tech","email":"admin@stalliontech.io"},"directories":{},"maintainers":[{"name":"redhorse-tech","email":"admin@stalliontech.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/expo-stallion-plugin_1.0.4_1778845788649_0.5885442194633352"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-14T08:33:48.144Z","modified":"2026-05-15T11:49:48.886Z","1.0.0":"2026-01-14T08:33:48.275Z","1.0.1":"2026-02-13T17:10:14.317Z","1.0.2":"2026-03-02T20:03:46.201Z","1.0.3":"2026-05-11T16:30:09.638Z","1.0.4":"2026-05-15T11:49:48.782Z"},"bugs":{"url":"https://github.com/stallion-tech/expo-stallion-plugin/issues"},"license":"MIT","homepage":"https://github.com/stallion-tech/expo-stallion-plugin#readme","keywords":["expo","expo-plugin","react-native","stallion","bundle","ota"],"repository":{"type":"git","url":"git+https://github.com/stallion-tech/expo-stallion-plugin.git"},"description":"Expo Config Plugin for react-native-stallion - automatically configures Stallion as the JS bundle provider","maintainers":[{"name":"redhorse-tech","email":"admin@stalliontech.io"}],"readme":"# expo-stallion-plugin\n[![npm Version](https://img.shields.io/npm/v/expo-stallion-plugin.svg)](https://www.npmjs.com/package/expo-stallion-plugin)  \n[![License](https://img.shields.io/npm/l/expo-stallion-plugin.svg)](https://www.npmjs.com/package/expo-stallion-plugin)\n\nSeamlessly integrate over-the-air (OTA) updates into your Expo apps with [Stallion](https://stalliontech.io/). This config plugin automatically sets up Stallion as your JavaScript bundle provider, so you can push updates to your users without going through the app stores.\n\nPerfect for teams using **Expo EAS Build** who want a reliable OTA update solution that works alongside their existing workflow. No manual native code changes required—just install, configure, and start shipping updates.\n\n## Why Use OTA Updates with Expo?\n\nIf you're building with Expo and EAS, you know the pain of waiting for app store reviews just to fix a critical bug or push a small feature. Over-the-air updates let you:\n\n- **Ship fixes instantly** - Push bug fixes and patches directly to users\n- **A/B test features** - Roll out features gradually to specific user segments\n- **Reduce app store friction** - Update your JavaScript bundle without resubmitting\n- **Work with EAS Build** - Use alongside Expo's build service seamlessly\n\nStallion provides a production-ready OTA solution that integrates perfectly with Expo's managed and bare workflows.\n\n## Quick Start\n\nInstall the plugin and the Stallion SDK:\n\n```bash\nnpm install expo-stallion-plugin react-native-stallion\n```\n\nThen add it to your `app.json` or `app.config.js`:\n\n```json\n{\n  \"expo\": {\n    \"plugins\": [\n      [\n        \"expo-stallion-plugin\",\n        {\n          \"projectId\": \"your-project-id\",\n          \"appToken\": \"spb_your-app-token\"\n        }\n      ]\n    ]\n  }\n}\n```\n\nGet your credentials from your [Stallion console](https://console.stalliontech.io/). The `appToken` should start with `spb_`.\n\n## How It Works with Expo EAS\n\nThis plugin works seamlessly with **Expo Application Services (EAS)** and the Expo prebuild system. Here's what happens:\n\n1. **During prebuild** - The plugin automatically patches your native Android and iOS projects\n2. **With EAS Build** - Your builds include Stallion configuration automatically\n3. **In production** - Your app checks Stallion for OTA updates on launch\n\nThe plugin handles all the native integration steps that would normally require manual code changes. It detects your React Native version, project language (Java/Kotlin, Objective-C/Swift), and applies the correct patches.\n\n### What Gets Configured\n\n**Android:**\n\n- Injects Stallion as the JS bundle provider in your MainApplication\n- Adds your credentials to `strings.xml`\n- Supports React Native 0.71 through 0.82+ (including the new ReactHost architecture)\n\n**iOS:**\n\n- Configures AppDelegate to use Stallion's bundle URL\n- Adds credentials to `Info.plist`\n- Works with both Objective-C and Swift AppDelegates\n\n## Installation & Setup\n\n### Step 1: Install Dependencies\n\n```bash\nnpm install expo-stallion-plugin react-native-stallion\n# or\nyarn add expo-stallion-plugin react-native-stallion\n```\n\n### Step 2: Configure the Plugin\n\nAdd the plugin configuration to your Expo config file. You can use either `app.json` or `app.config.js`:\n\n**app.json:**\n\n```json\n{\n  \"expo\": {\n    \"plugins\": [\n      [\n        \"expo-stallion-plugin\",\n        {\n          \"projectId\": \"66ed03380eb95c9c316256d3\",\n          \"appToken\": \"spb_abc123...\"\n        }\n      ]\n    ]\n  }\n}\n```\n\n**app.config.js:**\n\n```javascript\nexport default {\n  expo: {\n    plugins: [\n      [\n        \"expo-stallion-plugin\",\n        {\n          projectId: \"66ed03380eb95c9c316256d3\",\n          appToken: \"spb_abc123...\",\n        },\n      ],\n    ],\n  },\n};\n```\n\n### Step 3: Prebuild Your Project\n\nIf you're using the managed workflow or EAS Build, run prebuild to generate native projects:\n\n```bash\nnpx expo prebuild\n```\n\nThis generates the Android and iOS folders with Stallion already configured.\n\n### Step 4: Build with EAS\n\nBuild your app using EAS Build:\n\n```bash\neas build --platform android\neas build --platform ios\n```\n\nOr build locally:\n\n```bash\nnpx expo run:android\nnpx expo run:ios\n```\n\nThat's it! Your app is now configured to receive OTA updates through Stallion.\n\n## Using with Expo EAS Build\n\nThis plugin is designed to work perfectly with **Expo EAS Build**. Here's the typical workflow:\n\n1. **Configure the plugin** in your `app.json` (as shown above)\n2. **Run EAS Build** - The plugin runs during the build process\n3. **Deploy updates** - Use [Stallion's console](https://console.stalliontech.io/) or API to push OTA updates\n4. **Users get updates** - Your app automatically fetches and applies updates\n\nThe plugin is idempotent, meaning it's safe to run multiple times. EAS Build will apply the configuration automatically on each build.\n\n## Requirements\n\n- **Expo SDK 47+** - Works with modern Expo versions\n- **React Native 0.71+** - Supports recent RN versions including 0.82+\n- **EAS Build compatible** - Works with both managed and bare workflows\n\nThe plugin automatically detects your React Native version and applies the correct native code patches. No need to worry about compatibility.\n\n## Features\n\n✅ **Zero Configuration** - No manual native code changes needed  \n✅ **EAS Build Ready** - Works seamlessly with Expo Application Services  \n✅ **OTA Updates** - Enable over-the-air updates for your Expo app  \n✅ **Multi-Platform** - Android and iOS support out of the box  \n✅ **Version Detection** - Automatically adapts to your RN version  \n✅ **Language Support** - Works with Java, Kotlin, Objective-C, and Swift  \n✅ **Idempotent** - Safe to run multiple times without issues  \n✅ **Production Ready** - Battle-tested for enterprise apps\n\n## How OTA Updates Work\n\nOnce configured, your Expo app will:\n\n1. **Check for updates** on app launch (configurable)\n2. **Download new bundles** from Stallion's CDN\n3. **Apply updates** seamlessly in the background\n4. **Rollback automatically** if an update fails\n\nYou control when and how updates are applied through Stallion's SDK and dashboard. Perfect for gradual rollouts, A/B testing, and emergency hotfixes.\n\n## Troubleshooting\n\n### Plugin not applying changes\n\nMake sure you run `npx expo prebuild` after adding the plugin configuration. The plugin only runs during the prebuild phase.\n\n### Build errors with EAS\n\nIf you see build errors, ensure `react-native-stallion` is installed:\n\n```bash\nnpm install react-native-stallion\n```\n\nThe plugin relies on React Native's autolinking to include the native module.\n\n### Credentials not working\n\nDouble-check your `projectId` and `appToken` in the plugin configuration. The `appToken` must start with `spb_`. You can find these in your [Stallion console](https://console.stalliontech.io/).\n\n### Updates not appearing\n\nMake sure you've:\n\n1. Built and deployed your app with the plugin configured\n2. Published an update through [Stallion's console](https://console.stalliontech.io/) or API\n3. Configured the Stallion SDK in your JavaScript code to check for updates\n\n## Integration with Expo Workflows\n\nThis plugin works with all Expo workflows:\n\n- **Managed Workflow** - Use with `expo prebuild` and EAS Build\n- **Bare Workflow** - Works with existing native projects\n- **EAS Build** - Fully compatible with Expo's build service\n- **Local Development** - Test updates in development builds\n\n## Learn More\n\n- [Stallion](https://stalliontech.io/) - Main website\n- [Stallion Documentation](https://learn.stalliontech.io/)\n- [Stallion Console](https://console.stalliontech.io/)\n- [Expo Config Plugins](https://docs.expo.dev/config-plugins/introduction/)\n- [EAS Build Documentation](https://docs.expo.dev/build/introduction/)\n- [React Native Stallion](https://github.com/stallion-tech/react-native-stallion)\n\n## License\n\nMIT\n\n## Contributing\n\nFound a bug or have a feature request? We'd love your help! Please open an issue or submit a pull request.\n","readmeFilename":"README.md"}