Package Exports
- @shahil_m/obfuscator-io-metro-plugin
- @shahil_m/obfuscator-io-metro-plugin/lib/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@shahil_m/obfuscator-io-metro-plugin) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Obfuscator.io Metro Plugin
This metro plugin obfuscate your React Native bundle using javascript-obfuscator
It only obfuscates your code not the code of node_modules
, you can verify the obfuscated bundle by either extracting the index.android.bundle
from generated apk
or you can find the file at project_root\android\app\build\generated\assets\react\release
after assembleRelease
process
Changes
Latest Updates
- v3.0.0: Major release with React Native > 0.81 support and Node.js >= 22 requirement
- Added support for React Native versions greater than 0.81
- Updated minimum Node.js requirement to version 22 or higher
- Enhanced compatibility with latest Metro bundler versions
- Improved build pipeline and CI/CD workflows
Version History
- v3.0.0: React Native > 0.81 support, Node >= 22 requirement, enhanced Metro compatibility
- v2.0.0: Previous major version with Metro 0.76+ support
- v1.0.0: Initial release with basic obfuscation support
Installation
npm i -D @shahil_m/obfuscator-io-metro-plugin
Docs
Usage
Include the plugin in your metro.config.js
:
const jsoMetroPlugin = require("obfuscator-io-metro-plugin")(
{
// for these option look javascript-obfuscator library options from above url
compact: false,
sourceMap: false, // source Map generated after obfuscation is not useful right now so use default value i.e. false
controlFlowFlattening: true,
controlFlowFlatteningThreshold: 1,
numbersToExpressions: true,
simplify: true,
stringArrayShuffle: true,
splitStrings: true,
stringArrayThreshold: 1,
},
{
runInDev: false /* optional */,
logObfuscatedFiles: true /* optional generated files will be located at ./.jso */,
}
);
module.exports = {
transformer: {
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: false,
inlineRequires: false,
},
}),
},
...jsoMetroPlugin,
};
For obfuscation options configuration docs see: https://github.com/javascript-obfuscator/javascript-obfuscator