{"_id":"@aetherpush/expo-code-push-plugin","_rev":"2-f39c764c08a93d60c3bc4b79eeaf350f","name":"@aetherpush/expo-code-push-plugin","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@aetherpush/expo-code-push-plugin","version":"1.0.0","keywords":["expo","config-plugin","code-push","codepush","ota","aetherpush","react-native"],"author":{"name":"Adrian Moreno"},"license":"MIT","_id":"@aetherpush/expo-code-push-plugin@1.0.0","maintainers":[{"name":"monoradioactivo","email":"adrian@aetherpush.com"}],"homepage":"https://github.com/Monoradioactivo/aether-expo-plugin#readme","bugs":{"url":"https://github.com/Monoradioactivo/aether-expo-plugin/issues"},"dist":{"shasum":"2693ac130e9d5c05cb1733cd99d53803df12da61","tarball":"https://registry.npmjs.org/@aetherpush/expo-code-push-plugin/-/expo-code-push-plugin-1.0.0.tgz","fileCount":18,"integrity":"sha512-fIsf31Pu5qdWwcVJYE/kL194lbWyAOxazNeRM+h9ruf5sUEG/obaHAGMb7GjsX1QXKUtO6XLmRW5plwA02SAfQ==","signatures":[{"sig":"MEUCICnWNM38B3v8jIwLdnOYu4BeW++s9kE5F0ZDGQs7svh7AiEAjsuY49OdcdbQ5PYFmBegTxfSwhrSzsPMncJLoMLDyDA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18995},"main":"build/index.js","types":"build/index.d.ts","gitHead":"d2e475d7e28d6b629dfcf5fd54f2d451e4d049b8","scripts":{"test":"jest","build":"tsc","prepack":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"monoradioactivo","email":"adrian@aetherpush.com"},"repository":{"url":"git+https://github.com/Monoradioactivo/aether-expo-plugin.git","type":"git"},"_npmVersion":"11.14.1","description":"Expo config plugin that wires @aetherpush/react-native-code-push into an Expo app at prebuild time","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"expo":"~57.0.0","jest":"^29.7.0","ts-jest":"^29.2.5","typescript":"^5.6.0","@types/jest":"^29.5.14","@types/node":"^22.10.0"},"peerDependencies":{"expo":">=53.0.0","@aetherpush/react-native-code-push":">=1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/expo-code-push-plugin_1.0.0_1784502629401_0.0281101200612639","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aetherpush/expo-code-push-plugin","version":"1.0.1","description":"Expo config plugin that wires @aetherpush/react-native-code-push into an Expo app at prebuild time","main":"build/index.js","types":"build/index.d.ts","scripts":{"build":"tsc","typecheck":"tsc --noEmit","test":"jest","prepack":"npm run build"},"keywords":["expo","config-plugin","code-push","codepush","ota","aetherpush","react-native"],"repository":{"type":"git","url":"git+https://github.com/Monoradioactivo/aether-expo-plugin.git"},"author":{"name":"Adrian Moreno"},"license":"MIT","peerDependencies":{"@aetherpush/react-native-code-push":">=1.2.1","expo":">=53.0.0"},"devDependencies":{"@types/jest":"^29.5.14","@types/node":"^22.10.0","expo":"~57.0.0","jest":"^29.7.0","js-yaml":"^4.3.2","ts-jest":"^29.2.5","typescript":"^5.6.0"},"publishConfig":{"access":"public"},"gitHead":"72066bbc7cc37cce751aba9f5997b73c732bf246","_id":"@aetherpush/expo-code-push-plugin@1.0.1","bugs":{"url":"https://github.com/Monoradioactivo/aether-expo-plugin/issues"},"homepage":"https://github.com/Monoradioactivo/aether-expo-plugin#readme","_nodeVersion":"22.23.2","_npmVersion":"12.0.2","dist":{"integrity":"sha512-J8LY+7PAaptlW1Gs8uZws0xZbHkMrPTkhJDMIXszNrKcbx9xNNxuzg+WrK5uO501oJm6+EzTDI8zYnHwDOCD8w==","shasum":"32f94138530bf053f7513673f2e352d2781044f6","tarball":"https://registry.npmjs.org/@aetherpush/expo-code-push-plugin/-/expo-code-push-plugin-1.0.1.tgz","fileCount":18,"unpackedSize":19117,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aetherpush%2fexpo-code-push-plugin@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBtovTOxNwCkPrq/FRj4DK86O1Z9aUaU5D1DaRceuUpGAiAfCNuwn2e6l3Tu+EQoPwoRHKxGGgfwC4IoMQ2jKOa6TQ=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:268d7509-7350-41c4-bc55-12eeef5f8d93"}},"directories":{},"maintainers":[{"name":"monoradioactivo","email":"adrian@aetherpush.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/expo-code-push-plugin_1.0.1_1789218044591_0.2967126963676543"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-19T23:10:29.226Z","modified":"2026-09-12T13:00:45.008Z","1.0.0":"2026-07-19T23:10:29.548Z","1.0.1":"2026-09-12T13:00:44.730Z"},"bugs":{"url":"https://github.com/Monoradioactivo/aether-expo-plugin/issues"},"author":{"name":"Adrian Moreno"},"license":"MIT","homepage":"https://github.com/Monoradioactivo/aether-expo-plugin#readme","keywords":["expo","config-plugin","code-push","codepush","ota","aetherpush","react-native"],"repository":{"type":"git","url":"git+https://github.com/Monoradioactivo/aether-expo-plugin.git"},"description":"Expo config plugin that wires @aetherpush/react-native-code-push into an Expo app at prebuild time","maintainers":[{"name":"monoradioactivo","email":"adrian@aetherpush.com"}],"readme":"# @aetherpush/expo-code-push-plugin\n\nExpo config plugin for [@aetherpush/react-native-code-push](https://www.npmjs.com/package/@aetherpush/react-native-code-push). It configures the native side of an Expo app during `expo prebuild`, so you can ship over-the-air updates with Aether without editing native code by hand.\n\n## Requirements\n\n- `@aetherpush/react-native-code-push` 1.2.1 or newer. Older versions send a broken header through the strict fetch that Expo ships, so update checks fail.\n- Expo SDK 53 or newer. The native SDK itself supports React Native 0.76 and newer, but this plugin needs the Swift AppDelegate template that Expo introduced in SDK 53. On older projects, follow the manual setup in the [@aetherpush/react-native-code-push](https://www.npmjs.com/package/@aetherpush/react-native-code-push) README instead.\n- A development build or a prebuild workflow. The plugin changes native files, so it does not work in Expo Go.\n- expo-updates must not be active. Aether and expo-updates both want to control which JS bundle the app loads, and they cannot do that at the same time. Uninstall expo-updates, or set `updates.enabled` to `false` in your app config. Prebuild fails with a clear error if an active expo-updates install is found.\n\n## Install\n\n```sh\nnpx expo install @aetherpush/expo-code-push-plugin @aetherpush/react-native-code-push\n```\n\n## Use\n\nAdd the plugin to your app config and pass your deployment keys:\n\n```json\n{\n  \"expo\": {\n    \"plugins\": [\n      [\n        \"@aetherpush/expo-code-push-plugin\",\n        {\n          \"iosDeploymentKey\": \"your-ios-deployment-key\",\n          \"androidDeploymentKey\": \"your-android-deployment-key\"\n        }\n      ]\n    ]\n  }\n}\n```\n\nThen run prebuild and build a development client:\n\n```sh\nnpx expo prebuild\nnpx expo run:ios\nnpx expo run:android\n```\n\nTo ship an over-the-air update to a built app, follow [docs/RELEASING.md](./docs/RELEASING.md).\n\n## Props\n\n| Prop | Type | Required | Description |\n| --- | --- | --- | --- |\n| `iosDeploymentKey` | `string` | yes | Deployment key for the iOS app. |\n| `androidDeploymentKey` | `string` | yes | Deployment key for the Android app. |\n| `serverUrl` | `string` | no | Aether server URL. When omitted, the SDK uses `https://api.aetherpush.com/`. |\n| `publicKey` | `string` | no | PEM public key for code signing. When set, the SDK only installs updates whose bundle carries a valid signature, so release with the matching `--privateKeyPath`. |\n\n### Where is serverPathMode?\n\n`serverPathMode` is a JavaScript option, not native configuration, so this plugin cannot set it. Pass it to the SDK in your code:\n\n```js\ncodePush({ serverPathMode: 'aether' })(App);\n```\n\nThe default is `'aether'`. Use `'codepush-legacy'` only if your server needs the old CodePush paths.\n\n## What the plugin changes\n\nOn iOS:\n\n- Writes `CodePushDeploymentKey` (plus `CodePushServerURL` and `CodePushPublicKey` when you set them) to `Info.plist`.\n- Adds `import CodePush` to `AppDelegate.swift` and makes `bundleURL()` return `CodePush.bundleURL()` in release builds. Debug builds keep loading from Metro.\n\nOn Android:\n\n- Writes `CodePushDeploymentKey` (plus `CodePushServerUrl` and `CodePushPublicKey` when you set them) to `res/values/strings.xml`.\n- Adds the CodePush import to `MainApplication.kt` and wires `CodePush.getJSBundleFile()` into bundle resolution. On SDK 55 and newer it passes `jsBundleFilePath` to `getDefaultReactHost`. On SDK 53 and 54 it adds a `getJSBundleFile()` override to the `DefaultReactNativeHost`.\n- Applies the SDK's `codepush.gradle` at the end of `app/build.gradle`, which records the binary build time the SDK needs to detect new app builds.\n\nThe plugin edits the files that `expo prebuild` generates from the Expo template. If your project has a custom AppDelegate or MainApplication that no longer matches the template, the plugin stops with an error that tells you what to wire manually.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}