Skip to content

whoami-shubham/obfuscator-io-metro-plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Obfuscator.io Metro Plugin

npm version npm PRs welcome!

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

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