An elegant Android modification framework for React Native apps.
Note
Covalent currently targets React Native 0.81.6, with Hermes V0 (VM-only) and New Architecture enabled.
If you are looking to bump supported targets, please search for @Target comments.
They indicate areas of the code that are likely to be affected by changes in React Native.
Implemented
- Running custom Hermes bytecode: Runs before the app's own bytecode runs
- Bidirectional communication: Allows custom JS to communicate with native and vice versa, without using fragile C++ hooks. More details here.
- React Native DevSupport forced on: LogBox on uncaught errors, ability to reload with double-R, packager connection open
- Native hooking with C++: JSI runtime is accessible, but is fragile and can break easily from app to app and time to time.
- React DevTools support
- Compile custom scripts: With Rolldown and Hermes Compiler (hermesc)
Planned
- Load custom scripts from the network
- Development server for quick reloading of scripts
- Settings page for enabling/disabling features and modifying settings
- Catalyst: JS utilities, Metro module discovery, hooking functions, modifying UI, etc.
Not Planned
- React Native DevTools support: Requires recompilation of Hermes libraries and swapping in order to expose the Chrome DevTools protocol. This is out of the scope for this project, but I'm interested in working on it.
- iOS support: While possible, I don't have the resources to develop and test on iOS. However, I will gladly accept contributions for iOS if someone is interested in developing it.
- Hermes V1 (Static Hermes) support: This is simply out of the scope for this project.
Documentation won't be written until the framework is more stable and has more features.
The project structure should be easy to understand if you have an Android development background. But regardless of your experience, feel free to ask if you're stuck.
Inspired by the works of Revenge and its predecessors, I wanted to create a simple but powerful framework for modifying any React Native apps.
But that is hard. React Native changes a lot, and every app is different. So I intend to make this framework a base for other developers to build upon, and to make it as flexible as possible.
Covalent will always be open source and free to use.
Since Covalent is based on the prior works of Revenge, it is also licensed under the GPL-3.0 License.
