Package Exports
- obfuscator-io-metro-plugin
- 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 (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
for iOS if you’re facing any issue check this comment by @andresarezo
Installation
npm i -D 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