React Native 0.83 Migration: Library Developer Guidance
This page applies if you are developing a library (system library or shared package) rather than an app. For app migration, see Migrate Apps to React Native 0.83.
Peer dependency configuration
Libraries must use peerDependencies (not dependencies) for the Vega runtime. If you add the runtime in dependencies, it causes module ID conflicts at runtime when apps and libraries use different RN versions.
{
"peerDependencies": {
"@amazon-devices/react-native-kepler": ">=4.0.0 <5.0.0"
},
"devDependencies": {
"@amazon-devices/react-native-kepler": "^4.0.0"
}
}
Version range guidelines
| Scenario | peerDependencies range |
|---|---|
| No source code changes + uses RN APIs | ">=2.0.0" (open range) |
| No source code changes + no RN usage | Remove entirely |
| Source code changes between versions | "~4.0.0" or "^4.0.0" (restrictive) |
Library detection indicators
Your package is a system library if it has any of the following:
SystemModules/directory in project rootkepler-system-conf.tomlfilekepler-compatibility.jsonfile
Additional considerations
- Changes to library APIs affect all consumers. Test with at least one consumer app before publishing.
- Update library version and changelog appropriately.
- Consider backward compatibility for existing consumers.
- Ensure
isolatedModulestype exports useexport typesyntax.
Related topics
- Migrate Apps to React Native 0.83
- Supported Libraries and Services
- Troubleshoot React Native 0.83 Migration Issues
Last updated: Jul 09, 2026

