{"_id":"@callstack/react-native-sandbox","_rev":"18-491c717bfb2a6e91d97841d8d36ebf7e","name":"@callstack/react-native-sandbox","dist-tags":{"latest":"0.7.0"},"versions":{"0.1.0":{"name":"@callstack/react-native-sandbox","version":"0.1.0","keywords":["react-native","security","sandbox","isolation"],"author":{"name":"Aliaksandr Babrykovich","email":"aliaksandr.babrykovich@callstack.com"},"license":"MIT","_id":"@callstack/react-native-sandbox@0.1.0","maintainers":[{"name":"souhe","email":"jakub.klobus@outlook.com"},{"name":"thymikee","email":"thymikee@gmail.com"},{"name":"grabbou","email":"grabbou@gmail.com"},{"name":"satya164","email":"satyajit.happy@gmail.com"},{"name":"mdjastrzebski","email":"mdjastrzebski@gmail.com"},{"name":"jbinda","email":"jakub.binda@gmail.com"},{"name":"okwasniewski","email":"oskarkwasniewski@icloud.com"},{"name":"rafikitiki","email":"zakrzewski.rafal@gmail.com"},{"name":"admin-callstack","email":"it-admin@callstack.com"},{"name":"fabioh_ck","email":"fabio.henriques@callstack.com"},{"name":"jbroma","email":"j.romanczyk@gmail.com"},{"name":"robik","email":"dev@robertpasinski.pl"},{"name":"piotrski","email":"piotr@tomczewski.dev"},{"name":"trozee","email":"ptrocki@gmail.com"},{"name":"camobap","email":"abobrikovich@gmail.com"}],"homepage":"https://github.com/callstackincubator/react-native-sandbox#readme","bugs":{"url":"https://github.com/callstackincubator/react-native-sandbox/issues"},"dist":{"shasum":"287a7ca07243f861673c37571c724acd4ba64298","tarball":"https://registry.npmjs.org/@callstack/react-native-sandbox/-/react-native-sandbox-0.1.0.tgz","fileCount":11,"integrity":"sha512-OLPxno9NNRiXT63eJPMla4AkC5A3tcSxEdVJxxH20RO8y7fm9MYe7gKOXwxwHlhCvCqH+AzQRJzq1FoNRCCd1g==","signatures":[{"sig":"MEUCIQDBzUejYNzG+g9BSE2/llb3XA0GE5Ja6buyBm9bqzgRYgIgf8KxsrDBOoxv4bZrCyvGnp1c11Sjfyko3monlA5y+Yo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27173},"main":"src/index.tsx","gitHead":"91d756e93beb29c4e0ebc6f6a3a56afc3e752cbc","scripts":{"lint":"clang-format --dry-run --Werror ios/*.{h,mm}","format":"clang-format -i ios/*.{h,mm}"},"_npmUser":{"name":"camobap","email":"abobrikovich@gmail.com"},"repository":{"url":"git+https://github.com/callstackincubator/react-native-sandbox.git","type":"git"},"_npmVersion":"10.9.2","description":"A component to run multiple React Native instances side-by-side.","directories":{},"_nodeVersion":"23.9.0","codegenConfig":{"ios":{"componentProvider":{"SandboxReactNativeView":"SandboxReactNativeViewComponentView"}},"name":"RNSandboxSpec","type":"components","android":{"javaPackageName":"io.callstack.rnsandbox"},"jsSrcsDir":"specs"},"_hasShrinkwrap":false,"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-sandbox_0.1.0_1753958771534_0.08577504107944156","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@callstack/react-native-sandbox","version":"0.1.1","keywords":["react-native","security","sandbox","isolation"],"author":{"name":"Aliaksandr Babrykovich","email":"aliaksandr.babrykovich@callstack.com"},"license":"MIT","_id":"@callstack/react-native-sandbox@0.1.1","maintainers":[{"name":"souhe","email":"jakub.klobus@outlook.com"},{"name":"thymikee","email":"thymikee@gmail.com"},{"name":"grabbou","email":"grabbou@gmail.com"},{"name":"satya164","email":"satyajit.happy@gmail.com"},{"name":"mdjastrzebski","email":"mdjastrzebski@gmail.com"},{"name":"jbinda","email":"jakub.binda@gmail.com"},{"name":"okwasniewski","email":"oskarkwasniewski@icloud.com"},{"name":"rafikitiki","email":"zakrzewski.rafal@gmail.com"},{"name":"admin-callstack","email":"it-admin@callstack.com"},{"name":"fabioh_ck","email":"fabio.henriques@callstack.com"},{"name":"jbroma","email":"j.romanczyk@gmail.com"},{"name":"robik","email":"dev@robertpasinski.pl"},{"name":"piotrski","email":"piotr@tomczewski.dev"},{"name":"trozee","email":"ptrocki@gmail.com"},{"name":"camobap","email":"abobrikovich@gmail.com"}],"homepage":"https://github.com/callstackincubator/react-native-sandbox#readme","bugs":{"url":"https://github.com/callstackincubator/react-native-sandbox/issues"},"dist":{"shasum":"d70f364a33fa29fa79866c08b86a8d9ee5ab5cfc","tarball":"https://registry.npmjs.org/@callstack/react-native-sandbox/-/react-native-sandbox-0.1.1.tgz","fileCount":14,"integrity":"sha512-LWIYJ1VQjtTkpkfY1wCuN30VJpcN0SDCiGm4zWpVpodBOrqcDiv8HYTLAR6eIuNcNByD9ckpT5nLWkczwCZm1A==","signatures":[{"sig":"MEUCIDP9hQwjWudyuerO9k6Y+sFRa3ZhHVjBShYMDv92UzH+AiEAuSQ+bCAQsDNiBs62tpJXSrijmaTO2LJ+ICDQm+8wsDE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49477},"main":"lib/commonjs/index.js","types":"lib/typescript/src/index.d.ts","module":"lib/module/index.js","source":"src/index","gitHead":"bcb56231d9fd69b85db6c3b1b42f5d111b550fa2","scripts":{"lint":"clang-format --dry-run --Werror ios/*.{h,mm}","format":"clang-format -i ios/*.{h,mm}","prepare":"bob build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"camobap","email":"abobrikovich@gmail.com"},"repository":{"url":"git+https://github.com/callstackincubator/react-native-sandbox.git","type":"git"},"_npmVersion":"10.9.2","description":"A component to run multiple React Native instances side-by-side.","directories":{},"_nodeVersion":"23.9.0","react-native":"src/index","codegenConfig":{"ios":{"componentProvider":{"SandboxReactNativeView":"SandboxReactNativeViewComponentView"}},"name":"RNSandboxSpec","type":"components","android":{"javaPackageName":"io.callstack.rnsandbox"},"jsSrcsDir":"specs"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.1.0","react-native":"0.80.1"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-sandbox_0.1.1_1754040715701_0.42573427450198165","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module","typescript"]}},"0.2.0":{"name":"@callstack/react-native-sandbox","version":"0.2.0","keywords":["react-native","security","sandbox","isolation"],"author":{"name":"Aliaksandr Babrykovich","email":"aliaksandr.babrykovich@callstack.com"},"license":"MIT","_id":"@callstack/react-native-sandbox@0.2.0","maintainers":[{"name":"souhe","email":"jakub.klobus@outlook.com"},{"name":"thymikee","email":"thymikee@gmail.com"},{"name":"grabbou","email":"grabbou@gmail.com"},{"name":"satya164","email":"satyajit.happy@gmail.com"},{"name":"mdjastrzebski","email":"mdjastrzebski@gmail.com"},{"name":"jbinda","email":"jakub.binda@gmail.com"},{"name":"okwasniewski","email":"oskarkwasniewski@icloud.com"},{"name":"rafikitiki","email":"zakrzewski.rafal@gmail.com"},{"name":"admin-callstack","email":"it-admin@callstack.com"},{"name":"fabioh_ck","email":"fabio.henriques@callstack.com"},{"name":"jbroma","email":"j.romanczyk@gmail.com"},{"name":"robik","email":"dev@robertpasinski.pl"},{"name":"piotrski","email":"piotr@tomczewski.dev"},{"name":"trozee","email":"ptrocki@gmail.com"},{"name":"camobap","email":"abobrikovich@gmail.com"}],"homepage":"https://github.com/callstackincubator/react-native-sandbox#readme","bugs":{"url":"https://github.com/callstackincubator/react-native-sandbox/issues"},"dist":{"shasum":"ecdb9ee4ecfb36cc04055416b8a4636d96e3420f","tarball":"https://registry.npmjs.org/@callstack/react-native-sandbox/-/react-native-sandbox-0.2.0.tgz","fileCount":13,"integrity":"sha512-KWSlSWnyxDC4Te0JdezBX2lBVXTB0FxExZR5JQZ1au4pOiO9zXRdLUlbvyeI0r/6c2bejewt8X3rtKCxuh4SFA==","signatures":[{"sig":"MEUCIQCHz2u9urrAExkCeNxPh6CvXF66J6AdBVMjaCLSvqfBdgIgE8iL6KEimcPAUVxMj7C+emOUFbh20amG6vX3XAqv0QY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46954},"main":"lib/commonjs/index.js","types":"lib/typescript/src/index.d.ts","module":"lib/module/index.js","source":"src/index","gitHead":"1528fcdf75d5f89017eccbd71a9ddeb2c1f61841","scripts":{"lint":"clang-format --dry-run --Werror ios/*.{h,mm}","format":"clang-format -i ios/*.{h,mm}","prepare":"bob build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"camobap","email":"abobrikovich@gmail.com"},"repository":{"url":"git+https://github.com/callstackincubator/react-native-sandbox.git","type":"git"},"_npmVersion":"10.9.2","description":"A component to run multiple React Native instances side-by-side.","directories":{},"_nodeVersion":"23.9.0","react-native":"src/index","codegenConfig":{"ios":{"componentProvider":{"SandboxReactNativeView":"SandboxReactNativeViewComponentView"}},"name":"RNSandboxSpec","type":"components","android":{"javaPackageName":"io.callstack.rnsandbox"},"jsSrcsDir":"specs"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.1.0","react-native":"0.80.1"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-sandbox_0.2.0_1754061584045_0.8781429515121242","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module","typescript"]}},"0.3.0":{"name":"@callstack/react-native-sandbox","version":"0.3.0","keywords":["react-native","security","sandbox","isolation"],"author":{"name":"Aliaksandr Babrykovich","email":"aliaksandr.babrykovich@callstack.com"},"license":"MIT","_id":"@callstack/react-native-sandbox@0.3.0","maintainers":[{"name":"souhe","email":"jakub.klobus@outlook.com"},{"name":"thymikee","email":"thymikee@gmail.com"},{"name":"grabbou","email":"grabbou@gmail.com"},{"name":"satya164","email":"satyajit.happy@gmail.com"},{"name":"mdjastrzebski","email":"mdjastrzebski@gmail.com"},{"name":"jbinda","email":"jakub.binda@gmail.com"},{"name":"okwasniewski","email":"oskarkwasniewski@icloud.com"},{"name":"rafikitiki","email":"zakrzewski.rafal@gmail.com"},{"name":"admin-callstack","email":"it-admin@callstack.com"},{"name":"fabioh_ck","email":"fabio.henriques@callstack.com"},{"name":"jbroma","email":"j.romanczyk@gmail.com"},{"name":"robik","email":"dev@robertpasinski.pl"},{"name":"piotrski","email":"piotr@tomczewski.dev"},{"name":"trozee","email":"ptrocki@gmail.com"},{"name":"camobap","email":"abobrikovich@gmail.com"}],"homepage":"https://github.com/callstackincubator/react-native-sandbox#readme","bugs":{"url":"https://github.com/callstackincubator/react-native-sandbox/issues"},"dist":{"shasum":"a65a81f06c39ade0aa87d99e5d7c65241a11e4d2","tarball":"https://registry.npmjs.org/@callstack/react-native-sandbox/-/react-native-sandbox-0.3.0.tgz","fileCount":13,"integrity":"sha512-heU0ElWcQTXgXwStvol5I94Y1s3V/+Hs5v5Sy96uOcNTjFQKHqKK/dZvaTN55Zvy8/O167AZ1dPqMUcSwBVTeA==","signatures":[{"sig":"MEUCIQCyu3XqGbCSQuvadDDTG/40cp53KOgNy1hgIrlOOWowMAIgLDjdcO7gCmuI+kfvWh9DmxovnvXB/MveEdthKyMz/ak=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49733},"main":"lib/commonjs/index.js","types":"lib/typescript/src/index.d.ts","module":"lib/module/index.js","source":"src/index","gitHead":"13747e97ffbc0b62fac107d9680ba78933c9666f","scripts":{"lint":"clang-format --dry-run --Werror ios/*.{h,mm}","format":"clang-format -i ios/*.{h,mm}","prepare":"bob build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"camobap","email":"abobrikovich@gmail.com"},"repository":{"url":"git+https://github.com/callstackincubator/react-native-sandbox.git","type":"git"},"_npmVersion":"10.9.2","description":"A component to run multiple React Native instances side-by-side.","directories":{},"_nodeVersion":"23.9.0","react-native":"src/index","codegenConfig":{"ios":{"componentProvider":{"SandboxReactNativeView":"SandboxReactNativeViewComponentView"}},"name":"RNSandboxSpec","type":"components","android":{"javaPackageName":"io.callstack.rnsandbox"},"jsSrcsDir":"specs"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.1.0","react-native":"0.80.1"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-sandbox_0.3.0_1754130399237_0.8394086758805221","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module","typescript"]}},"0.4.0":{"name":"@callstack/react-native-sandbox","version":"0.4.0","keywords":["react-native","security","sandbox","isolation"],"author":{"name":"Aliaksandr Babrykovich","email":"aliaksandr.babrykovich@callstack.com"},"license":"MIT","_id":"@callstack/react-native-sandbox@0.4.0","maintainers":[{"name":"souhe","email":"jakub.klobus@outlook.com"},{"name":"thymikee","email":"thymikee@gmail.com"},{"name":"grabbou","email":"grabbou@gmail.com"},{"name":"satya164","email":"satyajit.happy@gmail.com"},{"name":"mdjastrzebski","email":"mdjastrzebski@gmail.com"},{"name":"jbinda","email":"jakub.binda@gmail.com"},{"name":"okwasniewski","email":"oskarkwasniewski@icloud.com"},{"name":"rafikitiki","email":"zakrzewski.rafal@gmail.com"},{"name":"admin-callstack","email":"it-admin@callstack.com"},{"name":"fabioh_ck","email":"fabio.henriques@callstack.com"},{"name":"jbroma","email":"j.romanczyk@gmail.com"},{"name":"robik","email":"dev@robertpasinski.pl"},{"name":"piotrski","email":"piotr@tomczewski.dev"},{"name":"trozee","email":"ptrocki@gmail.com"},{"name":"camobap","email":"abobrikovich@gmail.com"}],"homepage":"https://github.com/callstackincubator/react-native-sandbox#readme","bugs":{"url":"https://github.com/callstackincubator/react-native-sandbox/issues"},"dist":{"shasum":"10246ad93cf862e8bebba0007fcbfb5d65463149","tarball":"https://registry.npmjs.org/@callstack/react-native-sandbox/-/react-native-sandbox-0.4.0.tgz","fileCount":18,"integrity":"sha512-hXRDSxcVEv3htK41YRDHwC9YwXutAVIQUQx3ctAaPwQHQasY9UvyheJOqsstN+sjhaOPbDTQxtJFz1JwQmiTxA==","signatures":[{"sig":"MEUCIQCGJUCl/PE0OewgABDZBK3uTLedL4G+RQo1tTFCp91o5QIgA0CtR9FDA32KhZQnj79yHc2fUeGeF1163IIfmbMg6ls=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71040},"main":"lib/commonjs/index.js","types":"lib/typescript/src/index.d.ts","module":"lib/module/index.js","source":"src/index","gitHead":"9e2b34f8835286da33ee8880f75b6ce3d99ca6b2","scripts":{"lint":"clang-format --dry-run --Werror ios/*.{h,mm,cpp} tests/*.{h,cpp}","ctest":"cmake -S tests -B tests/build && cmake --build tests/build && ctest --test-dir tests/build --output-on-failure --verbose","format":"clang-format -i ios/*.{h,mm,cpp} tests/*.{h,cpp}","prepare":"bob build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"camobap","email":"abobrikovich@gmail.com"},"repository":{"url":"git+https://github.com/callstackincubator/react-native-sandbox.git","type":"git"},"_npmVersion":"10.9.2","description":"A component to run multiple React Native instances side-by-side.","directories":{},"_nodeVersion":"23.9.0","react-native":"src/index","codegenConfig":{"ios":{"componentProvider":{"SandboxReactNativeView":"SandboxReactNativeViewComponentView"}},"name":"RNSandboxSpec","type":"components","android":{"javaPackageName":"io.callstack.rnsandbox"},"jsSrcsDir":"specs"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.1.0","react-native":"0.80.1"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-sandbox_0.4.0_1754989931338_0.9542941303978734","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module","typescript"]}},"0.4.1":{"name":"@callstack/react-native-sandbox","version":"0.4.1","keywords":["react-native","security","sandbox","isolation"],"author":"Aliaksandr Babrykovich <aliaksandr.babrykovich@callstack.com>","license":"MIT","_id":"@callstack/react-native-sandbox@0.4.1","maintainers":[{"name":"souhe","email":"jakub.klobus@outlook.com"},{"name":"thymikee","email":"thymikee@gmail.com"},{"name":"grabbou","email":"grabbou@gmail.com"},{"name":"satya164","email":"satyajit.happy@gmail.com"},{"name":"mdjastrzebski","email":"mdjastrzebski@gmail.com"},{"name":"jbinda","email":"jakub.binda@gmail.com"},{"name":"artus9033","email":"artus9033@gmail.com"},{"name":"rafikitiki","email":"zakrzewski.rafal@gmail.com"},{"name":"admin-callstack","email":"it-admin@callstack.com"},{"name":"hur.ali.ck","email":"hur.ali@callstack.com"},{"name":"jbroma","email":"j.romanczyk@gmail.com"},{"name":"robik","email":"dev@robertpasinski.pl"},{"name":"piotrski","email":"piotr@tomczewski.dev"},{"name":"trozee","email":"ptrocki@gmail.com"},{"name":"camobap","email":"abobrikovich@gmail.com"}],"homepage":"https://github.com/callstackincubator/react-native-sandbox#readme","dist":{"shasum":"d6a540ca7e73d0e9894ef959b72e7cbdc99660a3","tarball":"https://registry.npmjs.org/@callstack/react-native-sandbox/-/react-native-sandbox-0.4.1.tgz","fileCount":17,"integrity":"sha512-goJeaBj/yqwm4S9v58SCkgYoePQ9nTyu9XFVaauUj/pH1mKlKXursDcqiVREbClLwiz5p6WzHivxdjMcO+qy1w==","signatures":[{"sig":"MEUCIQC46cyMhiaK+DmfgPDe2AfRLzpdRJChl4Qut/kuu8qp/wIgD1g+ZJU8px8VLNESKS+EjpIVXrw5FSgMMXdXvZ8vyes=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65697},"main":"lib/commonjs/index.js","types":"lib/typescript/src/index.d.ts","module":"lib/module/index.js","shasum":"d6a540ca7e73d0e9894ef959b72e7cbdc99660a3","source":"src/index","scripts":{"lint":"clang-format --dry-run --Werror ios/*.{h,mm,cpp} tests/*.{h,cpp}","ctest":"cmake -S tests -B tests/build && cmake --build tests/build && ctest --test-dir tests/build --output-on-failure --verbose","format":"clang-format -i ios/*.{h,mm,cpp} tests/*.{h,cpp}","prepare":"bunx bob build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"camobap","email":"abobrikovich@gmail.com"},"_integrity":"sha512-goJeaBj/yqwm4S9v58SCkgYoePQ9nTyu9XFVaauUj/pH1mKlKXursDcqiVREbClLwiz5p6WzHivxdjMcO+qy1w==","repository":{"url":"https://github.com/callstackincubator/react-native-sandbox","type":"git"},"_npmVersion":"10.8.3","description":"A component to run multiple React Native instances side-by-side.","directories":{},"_nodeVersion":"24.3.0","react-native":"src/index","codegenConfig":{"ios":{"componentProvider":{"SandboxReactNativeView":"SandboxReactNativeViewComponentView"}},"name":"RNSandboxSpec","type":"components","android":{"javaPackageName":"io.callstack.rnsandbox"},"jsSrcsDir":"specs"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.1.0","react-native":"0.80.1"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/react-native-sandbox_0.4.1_1772218618483_0.9433080864816639","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module","typescript"]}},"0.5.0":{"name":"@callstack/react-native-sandbox","version":"0.5.0","keywords":["react-native","security","sandbox","isolation"],"author":{"name":"Aliaksandr Babrykovich","email":"aliaksandr.babrykovich@callstack.com"},"license":"MIT","_id":"@callstack/react-native-sandbox@0.5.0","maintainers":[{"name":"souhe","email":"jakub.klobus@outlook.com"},{"name":"thymikee","email":"thymikee@gmail.com"},{"name":"grabbou","email":"grabbou@gmail.com"},{"name":"satya164","email":"satyajit.happy@gmail.com"},{"name":"mdjastrzebski","email":"mdjastrzebski@gmail.com"},{"name":"jbinda","email":"jakub.binda@gmail.com"},{"name":"artus9033","email":"artus9033@gmail.com"},{"name":"rafikitiki","email":"zakrzewski.rafal@gmail.com"},{"name":"admin-callstack","email":"it-admin@callstack.com"},{"name":"hur.ali.ck","email":"hur.ali@callstack.com"},{"name":"jbroma","email":"j.romanczyk@gmail.com"},{"name":"mateusz1913","email":"luigimario1913@gmail.com"},{"name":"robik","email":"dev@robertpasinski.pl"},{"name":"piotrski","email":"piotr@tomczewski.dev"},{"name":"trozee","email":"ptrocki@gmail.com"},{"name":"camobap","email":"abobrikovich@gmail.com"}],"homepage":"https://github.com/callstackincubator/react-native-sandbox#readme","bugs":{"url":"https://github.com/callstackincubator/react-native-sandbox/issues"},"dist":{"shasum":"5f1fb60efeddf16b4cbeba6d1319caabbcc8fa95","tarball":"https://registry.npmjs.org/@callstack/react-native-sandbox/-/react-native-sandbox-0.5.0.tgz","fileCount":31,"integrity":"sha512-+llbYrzWfj0iUdgsGFClXsCi13D5BTFMF7eq0g3RnpVDHEYbNZyIKsmG19/zqCC3GBKR5aa9N0QOcyNl1GvzBQ==","signatures":[{"sig":"MEYCIQC43RiCBRYRoYdATYHtY41CVmqMzrBFdXPi8waud4WOKgIhAO46aYNJqjvkei5fxPjGeLG/qOXQY4fhTsfZQk8HDWBA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121098},"main":"lib/commonjs/index.js","types":"lib/typescript/src/index.d.ts","module":"lib/module/index.js","source":"src/index","gitHead":"d303d86c6517a68d651d0058d0381bc099d81aee","scripts":{"lint":"npm run lint:clang && npm run lint:kotlin","ctest":"cmake -S tests -B tests/build && cmake --build tests/build && ctest --test-dir tests/build --output-on-failure --verbose","format":"npm run format:clang && npm run format:kotlin","prepare":"bob build","typecheck":"tsc --noEmit","lint:clang":"clang-format --dry-run --Werror ios/*.{h,mm} cxx/*.{h,cpp} android/src/main/jni/*.{h,cpp} tests/*.{h,cpp}","lint:kotlin":"ktlint 'android/src/main/java/**/*.kt'","format:clang":"clang-format -i ios/*.{h,mm} cxx/*.{h,cpp} android/src/main/jni/*.{h,cpp} tests/*.{h,cpp}","format:kotlin":"ktlint -F 'android/src/main/java/**/*.kt'"},"_npmUser":{"name":"camobap","email":"abobrikovich@gmail.com"},"repository":{"url":"git+https://github.com/callstackincubator/react-native-sandbox.git","type":"git"},"_npmVersion":"10.9.2","description":"A component to run multiple React Native instances side-by-side.","directories":{},"_nodeVersion":"23.9.0","react-native":"src/index","codegenConfig":{"ios":{"componentProvider":{"SandboxReactNativeView":"SandboxReactNativeViewComponentView"}},"name":"RNSandboxSpec","type":"components","android":{"javaPackageName":"io.callstack.rnsandbox"},"jsSrcsDir":"specs"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.1.0","react-native":"0.80.1"},"peerDependencies":{"react":">=19.0.0","react-native":">=0.78.0"},"_npmOperationalInternal":{"tmp":"tmp/react-native-sandbox_0.5.0_1773613634323_0.7024481285904784","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module","typescript"]}},"0.6.0":{"name":"@callstack/react-native-sandbox","version":"0.6.0","keywords":["react-native","security","sandbox","isolation"],"author":{"name":"Aliaksandr Babrykovich","email":"aliaksandr.babrykovich@callstack.com"},"license":"MIT","_id":"@callstack/react-native-sandbox@0.6.0","maintainers":[{"name":"souhe","email":"jakub.klobus@outlook.com"},{"name":"thymikee","email":"thymikee@gmail.com"},{"name":"grabbou","email":"grabbou@gmail.com"},{"name":"satya164","email":"satyajit.happy@gmail.com"},{"name":"mdjastrzebski","email":"mdjastrzebski@gmail.com"},{"name":"jbinda","email":"jakub.binda@gmail.com"},{"name":"artus9033","email":"artus9033@gmail.com"},{"name":"rafikitiki","email":"zakrzewski.rafal@gmail.com"},{"name":"admin-callstack","email":"it-admin@callstack.com"},{"name":"hur.ali.ck","email":"hur.ali@callstack.com"},{"name":"jbroma","email":"j.romanczyk@gmail.com"},{"name":"mateusz1913","email":"luigimario1913@gmail.com"},{"name":"robik","email":"dev@robertpasinski.pl"},{"name":"piotrski","email":"piotr@tomczewski.dev"},{"name":"trozee","email":"ptrocki@gmail.com"},{"name":"camobap","email":"abobrikovich@gmail.com"}],"homepage":"https://github.com/callstackincubator/react-native-sandbox#readme","bugs":{"url":"https://github.com/callstackincubator/react-native-sandbox/issues"},"dist":{"shasum":"1bf65d7d405e9a2e3e98d8536f7f0a3b96dce779","tarball":"https://registry.npmjs.org/@callstack/react-native-sandbox/-/react-native-sandbox-0.6.0.tgz","fileCount":34,"integrity":"sha512-kf2E70QFCVrMSQZEbb1bSDRXq0yvN2+tS1szjTJs656UiFm47hEjzWqjUU5gcQRB0HQBb4f1zq1FyrBNkSLHuw==","signatures":[{"sig":"MEUCIQC3b4XlyDwPHCtmSZ78lDsqz+VSXssb6QWbooSdRdlq2gIgZuAfKxAQQYmBt2T4hmDtFwdfE1Ss7S3yDC8V1+U4Xec=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145460},"main":"lib/commonjs/index.js","types":"lib/typescript/src/index.d.ts","module":"lib/module/index.js","source":"src/index","gitHead":"3e7317b17085da099ce9bdf454f9f7c4b9127301","scripts":{"lint":"npm run lint:clang && npm run lint:kotlin","ctest":"cmake -S tests -B tests/build && cmake --build tests/build && ctest --test-dir tests/build --output-on-failure --verbose","format":"npm run format:clang && npm run format:kotlin","prepare":"bob build","typecheck":"tsc --noEmit","lint:clang":"clang-format --dry-run --Werror ios/*.{h,mm} cxx/*.{h,cpp} android/src/main/jni/*.{h,cpp} tests/*.{h,cpp}","lint:kotlin":"ktlint 'android/src/main/java/**/*.kt'","format:clang":"clang-format -i ios/*.{h,mm} cxx/*.{h,cpp} android/src/main/jni/*.{h,cpp} tests/*.{h,cpp}","format:kotlin":"ktlint -F 'android/src/main/java/**/*.kt'"},"_npmUser":{"name":"camobap","email":"abobrikovich@gmail.com"},"repository":{"url":"git+https://github.com/callstackincubator/react-native-sandbox.git","type":"git"},"_npmVersion":"10.9.2","description":"A component to run multiple React Native instances side-by-side.","directories":{},"_nodeVersion":"23.9.0","react-native":"src/index","codegenConfig":{"ios":{"componentProvider":{"SandboxReactNativeView":"SandboxReactNativeViewComponentView"}},"name":"RNSandboxSpec","type":"components","android":{"javaPackageName":"io.callstack.rnsandbox"},"jsSrcsDir":"specs"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.1.0","react-native":"0.80.1"},"peerDependencies":{"react":">=19.0.0","react-native":">=0.78.0"},"_npmOperationalInternal":{"tmp":"tmp/react-native-sandbox_0.6.0_1775938423095_0.19855338476589335","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module","typescript"]}},"0.6.1":{"name":"@callstack/react-native-sandbox","version":"0.6.1","keywords":["react-native","security","sandbox","isolation"],"author":{"name":"Aliaksandr Babrykovich","email":"aliaksandr.babrykovich@callstack.com"},"license":"MIT","_id":"@callstack/react-native-sandbox@0.6.1","maintainers":[{"name":"souhe","email":"jakub.klobus@outlook.com"},{"name":"thymikee","email":"thymikee@gmail.com"},{"name":"grabbou","email":"grabbou@gmail.com"},{"name":"satya164","email":"satyajit.happy@gmail.com"},{"name":"mdjastrzebski","email":"mdjastrzebski@gmail.com"},{"name":"jbinda","email":"jakub.binda@gmail.com"},{"name":"artus9033","email":"artus9033@gmail.com"},{"name":"rafikitiki","email":"zakrzewski.rafal@gmail.com"},{"name":"admin-callstack","email":"it-admin@callstack.com"},{"name":"hur.ali.ck","email":"hur.ali@callstack.com"},{"name":"jbroma","email":"j.romanczyk@gmail.com"},{"name":"mateusz1913","email":"luigimario1913@gmail.com"},{"name":"robik","email":"dev@robertpasinski.pl"},{"name":"piotrski","email":"piotr@tomczewski.dev"},{"name":"trozee","email":"ptrocki@gmail.com"},{"name":"camobap","email":"abobrikovich@gmail.com"}],"homepage":"https://github.com/callstackincubator/react-native-sandbox#readme","bugs":{"url":"https://github.com/callstackincubator/react-native-sandbox/issues"},"dist":{"shasum":"fecec024e0f5e203c1c32297a14853d06198f0af","tarball":"https://registry.npmjs.org/@callstack/react-native-sandbox/-/react-native-sandbox-0.6.1.tgz","fileCount":35,"integrity":"sha512-2wm6xNtrscZ9Kqw4zibLobDZss85lZ7jLegmIzEMJ8AR/6bGuZL+ZHuQ0Kq3zCCT3hMKq36hh7+8biFxqPrp4Q==","signatures":[{"sig":"MEQCIATfbPlpE1JLNR0NBdZGGVCPkjm8uh7fBFc/s6yTejXDAiBEtWlpd5FG0WuqWGfeXRKBZ18TDDnmXRGA097VmFuZ8Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":148118},"main":"lib/commonjs/index.js","types":"lib/typescript/src/index.d.ts","module":"lib/module/index.js","source":"src/index","gitHead":"32abf95625f0b473208bfc0c126c0334529a41d0","scripts":{"lint":"npm run lint:clang && npm run lint:kotlin","ctest":"cmake -S tests -B tests/build && cmake --build tests/build && ctest --test-dir tests/build --output-on-failure --verbose","format":"npm run format:clang && npm run format:kotlin","prepare":"bob build","typecheck":"tsc --noEmit","lint:clang":"clang-format --dry-run --Werror ios/*.{h,mm} cxx/*.{h,cpp} android/src/main/jni/*.{h,cpp} tests/*.{h,cpp}","lint:kotlin":"ktlint 'android/src/main/java/**/*.kt'","format:clang":"clang-format -i ios/*.{h,mm} cxx/*.{h,cpp} android/src/main/jni/*.{h,cpp} tests/*.{h,cpp}","format:kotlin":"ktlint -F 'android/src/main/java/**/*.kt'"},"_npmUser":{"name":"camobap","email":"abobrikovich@gmail.com"},"repository":{"url":"git+https://github.com/callstackincubator/react-native-sandbox.git","type":"git"},"_npmVersion":"10.9.2","description":"A component to run multiple React Native instances side-by-side.","directories":{},"_nodeVersion":"23.9.0","react-native":"src/index","codegenConfig":{"ios":{"componentProvider":{"SandboxReactNativeView":"SandboxReactNativeViewComponentView"}},"name":"RNSandboxSpec","type":"components","android":{"javaPackageName":"io.callstack.rnsandbox"},"jsSrcsDir":"specs"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.1.0","react-native":"0.80.1"},"peerDependencies":{"react":">=19.0.0","react-native":">=0.78.0"},"_npmOperationalInternal":{"tmp":"tmp/react-native-sandbox_0.6.1_1777580975695_0.2782331483219469","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module","typescript"]}},"0.6.2":{"name":"@callstack/react-native-sandbox","version":"0.6.2","keywords":["react-native","security","sandbox","isolation"],"author":{"name":"Aliaksandr Babrykovich","email":"aliaksandr.babrykovich@callstack.com"},"license":"MIT","_id":"@callstack/react-native-sandbox@0.6.2","maintainers":[{"name":"souhe","email":"jakub.klobus@outlook.com"},{"name":"thymikee","email":"thymikee@gmail.com"},{"name":"grabbou","email":"grabbou@gmail.com"},{"name":"satya164","email":"satyajit.happy@gmail.com"},{"name":"mdjastrzebski","email":"mdjastrzebski@gmail.com"},{"name":"jbinda","email":"jakub.binda@gmail.com"},{"name":"artus9033","email":"artus9033@gmail.com"},{"name":"rafikitiki","email":"zakrzewski.rafal@gmail.com"},{"name":"admin-callstack","email":"it-admin@callstack.com"},{"name":"hur.ali.ck","email":"hur.ali@callstack.com"},{"name":"jbroma","email":"j.romanczyk@gmail.com"},{"name":"mateusz1913","email":"luigimario1913@gmail.com"},{"name":"robik","email":"dev@robertpasinski.pl"},{"name":"piotrski","email":"piotr@tomczewski.dev"},{"name":"trozee","email":"ptrocki@gmail.com"},{"name":"camobap","email":"abobrikovich@gmail.com"}],"homepage":"https://github.com/callstackincubator/react-native-sandbox#readme","bugs":{"url":"https://github.com/callstackincubator/react-native-sandbox/issues"},"dist":{"shasum":"1fec43fc4a45dfedc6bb30c76fb42c245ab09a84","tarball":"https://registry.npmjs.org/@callstack/react-native-sandbox/-/react-native-sandbox-0.6.2.tgz","fileCount":36,"integrity":"sha512-v/jPVivvChwS+KStFS4IA6N4WbDzCXXMUgZ2/DmJfB3olUk5Okm6ygAss+thCwiAel72ZoyvDswlL1vKI+6kmg==","signatures":[{"sig":"MEUCIQC6fPKLH55uizgaARglQIV9km99H+nHVO70qGn1Afx8tAIgV4cRaCTShkISBnv77MqHkCytaZ3NJE0XKifL2sDvtjc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":170856},"main":"lib/commonjs/index.js","types":"lib/typescript/src/index.d.ts","module":"lib/module/index.js","source":"src/index","gitHead":"3f6b2505322bc8f9b64df7785a5057b7d399b9c0","scripts":{"lint":"npm run lint:clang && npm run lint:kotlin","ctest":"cmake -S tests -B tests/build && cmake --build tests/build && ctest --test-dir tests/build --output-on-failure --verbose","format":"npm run format:clang && npm run format:kotlin","prepare":"bob build","typecheck":"tsc --noEmit","lint:clang":"clang-format --dry-run --Werror ios/*.{h,mm} cxx/*.{h,cpp} android/src/main/jni/*.{h,cpp} tests/*.{h,cpp}","lint:kotlin":"ktlint 'android/src/main/java/**/*.kt'","format:clang":"clang-format -i ios/*.{h,mm} cxx/*.{h,cpp} android/src/main/jni/*.{h,cpp} tests/*.{h,cpp}","format:kotlin":"ktlint -F 'android/src/main/java/**/*.kt'"},"_npmUser":{"name":"camobap","email":"abobrikovich@gmail.com"},"repository":{"url":"git+https://github.com/callstackincubator/react-native-sandbox.git","type":"git"},"_npmVersion":"10.9.2","description":"A component to run multiple React Native instances side-by-side.","directories":{},"_nodeVersion":"23.9.0","react-native":"src/index","codegenConfig":{"ios":{"componentProvider":{"SandboxReactNativeView":"SandboxReactNativeViewComponentView"}},"name":"RNSandboxSpec","type":"components","android":{"javaPackageName":"io.callstack.rnsandbox"},"jsSrcsDir":"specs"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.1.0","react-native":"0.80.1"},"peerDependencies":{"react":">=19.0.0","react-native":">=0.78.0"},"_npmOperationalInternal":{"tmp":"tmp/react-native-sandbox_0.6.2_1779054895975_0.769556987621359","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module","typescript"]}},"0.7.0":{"name":"@callstack/react-native-sandbox","version":"0.7.0","keywords":["react-native","security","sandbox","isolation"],"author":{"name":"Aliaksandr Babrykovich","email":"aliaksandr.babrykovich@callstack.com"},"license":"MIT","_id":"@callstack/react-native-sandbox@0.7.0","maintainers":[{"name":"souhe","email":"jakub.klobus@outlook.com"},{"name":"thymikee","email":"thymikee@gmail.com"},{"name":"grabbou","email":"grabbou@gmail.com"},{"name":"satya164","email":"satyajit.happy@gmail.com"},{"name":"mdjastrzebski","email":"mdjastrzebski@gmail.com"},{"name":"jbinda","email":"jakub.binda@gmail.com"},{"name":"artus9033","email":"artus9033@gmail.com"},{"name":"rafikitiki","email":"zakrzewski.rafal@gmail.com"},{"name":"admin-callstack","email":"it-admin@callstack.com"},{"name":"hur.ali.ck","email":"hur.ali@callstack.com"},{"name":"jbroma","email":"j.romanczyk@gmail.com"},{"name":"mateusz1913","email":"luigimario1913@gmail.com"},{"name":"robik","email":"dev@robertpasinski.pl"},{"name":"dannyhw","email":"dannyhyunsoowilliams@gmail.com"},{"name":"piotrski","email":"piotr@tomczewski.dev"},{"name":"trozee","email":"ptrocki@gmail.com"},{"name":"camobap","email":"abobrikovich@gmail.com"}],"homepage":"https://github.com/callstackincubator/react-native-sandbox#readme","bugs":{"url":"https://github.com/callstackincubator/react-native-sandbox/issues"},"dist":{"shasum":"6d89996c90ed6a1efb79dd5d0a65c939d3e1bd44","tarball":"https://registry.npmjs.org/@callstack/react-native-sandbox/-/react-native-sandbox-0.7.0.tgz","fileCount":37,"integrity":"sha512-cpktLqxjnpTiv4KGJAaNF12Rr+v1UMvprPtXCPkR0sp9dk7KTd37nKaHkEugWKnAdKEliQpi2m7ZLBT4BEEh5g==","signatures":[{"sig":"MEQCIAL8U5PwneyR0naLTnM5E//lA1XSsZ4b9IUNuQA2QHlqAiAhtOcvuC38j2CLisPYG9RgKHbe+Zo/oW0jnNjq+n0hew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":224304},"main":"lib/commonjs/index.js","types":"lib/typescript/src/index.d.ts","module":"lib/module/index.js","source":"src/index","gitHead":"c7cc802c002ed95ac4e5c688ab5ebe6a7a2e3711","scripts":{"lint":"npm run lint:clang && npm run lint:kotlin","ctest":"cmake -S tests -B tests/build && cmake --build tests/build && ctest --test-dir tests/build --output-on-failure --verbose","format":"npm run format:clang && npm run format:kotlin","prepare":"bob build","typecheck":"tsc --noEmit","lint:clang":"clang-format --dry-run --Werror ios/*.{h,mm} cxx/*.{h,cpp} android/src/main/jni/*.{h,cpp} tests/*.{h,cpp}","lint:kotlin":"ktlint 'android/src/main/java/**/*.kt'","format:clang":"clang-format -i ios/*.{h,mm} cxx/*.{h,cpp} android/src/main/jni/*.{h,cpp} tests/*.{h,cpp}","format:kotlin":"ktlint -F 'android/src/main/java/**/*.kt'"},"_npmUser":{"name":"camobap","email":"abobrikovich@gmail.com"},"repository":{"url":"git+https://github.com/callstackincubator/react-native-sandbox.git","type":"git"},"_npmVersion":"10.9.2","description":"A component to run multiple React Native instances side-by-side.","directories":{},"_nodeVersion":"23.9.0","react-native":"src/index","codegenConfig":{"ios":{"componentProvider":{"SandboxReactNativeView":"SandboxReactNativeViewComponentView"}},"name":"RNSandboxSpec","type":"components","android":{"javaPackageName":"io.callstack.rnsandbox"},"jsSrcsDir":"specs"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.1.0","react-native":"0.80.1"},"peerDependencies":{"react":">=19.0.0","react-native":">=0.78.0"},"_npmOperationalInternal":{"tmp":"tmp/react-native-sandbox_0.7.0_1782332740632_0.9294830059609067","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module","typescript"]}}},"time":{"created":"2025-07-31T10:46:11.372Z","modified":"2026-09-16T11:51:34.328Z","0.1.0":"2025-07-31T10:46:11.712Z","0.1.1":"2025-08-01T09:31:55.891Z","0.2.0":"2025-08-01T15:19:44.235Z","0.3.0":"2025-08-02T10:26:39.448Z","0.4.0":"2025-08-12T09:12:11.564Z","0.4.1":"2026-02-27T18:56:58.665Z","0.5.0":"2026-03-15T22:27:14.482Z","0.6.0":"2026-04-11T20:13:43.243Z","0.6.1":"2026-04-30T20:29:35.847Z","0.6.2":"2026-05-17T21:54:56.110Z","0.7.0":"2026-06-24T20:25:40.813Z"},"bugs":{"url":"https://github.com/callstackincubator/react-native-sandbox/issues"},"author":{"name":"Aliaksandr Babrykovich","email":"aliaksandr.babrykovich@callstack.com"},"license":"MIT","homepage":"https://github.com/callstackincubator/react-native-sandbox#readme","keywords":["react-native","security","sandbox","isolation"],"repository":{"url":"git+https://github.com/callstackincubator/react-native-sandbox.git","type":"git"},"description":"A component to run multiple React Native instances side-by-side.","maintainers":[{"email":"jakub.klobus@outlook.com","name":"souhe"},{"email":"thymikee@gmail.com","name":"thymikee"},{"email":"grabbou@gmail.com","name":"grabbou"},{"email":"satyajit.happy@gmail.com","name":"satya164"},{"email":"mdjastrzebski@gmail.com","name":"mdjastrzebski"},{"email":"jakub.binda@gmail.com","name":"jbinda"},{"email":"artus9033@gmail.com","name":"artus9033"},{"email":"zakrzewski.rafal@gmail.com","name":"rafikitiki"},{"email":"it-admin@callstack.com","name":"admin-callstack"},{"email":"hur.ali@callstack.com","name":"hur.ali.ck"},{"email":"j.romanczyk@gmail.com","name":"jbroma"},{"email":"luigimario1913@gmail.com","name":"mateusz1913"},{"email":"dev@robertpasinski.pl","name":"robik"},{"email":"dannyhyunsoowilliams@gmail.com","name":"dannyhw"},{"email":"piotr.milkowski@callstack.com","name":"xeonbloomfield"},{"email":"piotr@tomczewski.dev","name":"piotrski"},{"email":"ptrocki@gmail.com","name":"trozee"},{"email":"abobrikovich@gmail.com","name":"camobap"}],"readme":"# @callstack/react-native-sandbox\n\n[![npm version](https://badge.fury.io/js/@callstack%2Freact-native-sandbox.svg)](https://badge.fury.io/js/@callstack%2Freact-native-sandbox)\n[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/callstackincubator/react-native-sandbox/blob/main/LICENSE)\n\n> **Library Documentation** - For project overview, examples, and security considerations, see the [main repository README](https://github.com/callstackincubator/react-native-sandbox#readme).\n\nThis is the **developer documentation** for installing and using `@callstack/react-native-sandbox` in your React Native application.\n\n## Requirements\n\n- **React Native >= 0.78**\n- **New Architecture** (Fabric) enabled\n\nThis library uses `RCTReactNativeFactory`, C++ TurboModules, and Fabric component APIs that are only available starting from React Native 0.78. It does not include an Old Architecture / Bridge fallback.\n\n## 📦 Installation\n\n### npm/yarn\n\n```bash\nnpm install @callstack/react-native-sandbox\n# or\nyarn add @callstack/react-native-sandbox\n```\n\n### Setup\n\nThe package uses **autolinking** and supports the **React Native New Architecture** - no manual configuration required.\n\n## 🎯 Basic Usage\n\n> For complete examples with both host and sandbox code, see the [project examples](https://github.com/callstackincubator/react-native-sandbox#-api-example).\n\n```tsx\nimport SandboxReactNativeView from '@callstack/react-native-sandbox';\n\n<SandboxReactNativeView\n  componentName=\"YourSandboxComponent\" // Name of component registered in bundle provided with jsBundleSource\n  jsBundleSource=\"sandbox\" // bundle file name\n  onMessage={(data) => console.log('From sandbox:', data)}\n  onError={(error) => console.error('Sandbox error:', error)}\n/>\n```\n\n## 📚 API Reference\n\n### Component Props\n\n| Prop | Type | Required | Default | Description |\n|------|------|----------|---------|-------------|\n| `componentName` | `string` | :ballot_box_with_check: | - | Name of the component registered through `AppRegistry.registerComponent` call inside the bundle file specified in `jsBundleSource` |\n| `moduleName` | `string` | :white_large_square: | - | **⚠️ Deprecated**: Use `componentName` instead. Will be removed in a future version. |\n| `jsBundleSource` | `string` | :ballot_box_with_check: | - | Name on file storage or URL to the JavaScript bundle to load |\n| `origin` | `string` | :white_large_square: | React Native view ID | Unique origin identifier for the sandbox instance (web-compatible) |\n| `initialProperties` | `object` | :white_large_square: | `{}` | Initial props for the sandboxed app |\n| `launchOptions` | `object` | :white_large_square: | `{}` | Launch configuration options |\n| `allowedTurboModules` | `string[]` | :white_large_square: | [check here](https://github.com/callstackincubator/react-native-sandbox/blob/main/packages/react-native-sandbox/src/index.tsx#L18) | Additional TurboModules to allow |\n| `turboModuleSubstitutions` | `Record<string, string>` | :white_large_square: | `undefined` | Map of module name substitutions (requested → resolved). Substituted modules are implicitly allowed. |\n| `allowedOrigins` | `string[]` | :white_large_square: | `[]` | Origins allowed to send messages to this sandbox |\n| `idleTTL` | `number \\| () => number` | :white_large_square: | `0` | Milliseconds to keep a shared origin's ReactHost alive after the last surface unmounts. A new same-origin sandbox mounting within this window gets a warm start. Only effective with `origin`. Can be a number or function returning a number. |\n| `onMessage` | `function` | :white_large_square: | `undefined` | Callback for messages from sandbox |\n| `onError` | `function` | :white_large_square: | `undefined` | Callback for sandbox errors |\n| `style` | `ViewStyle` | :white_large_square: | `undefined` | Container styling |\n\n### Ref Methods\n\n```tsx\ninterface SandboxReactNativeViewRef {\n  postMessage: (message: unknown) => void;\n}\n```\n\n### Error Event Structure\n\n```tsx\ninterface ErrorEvent {\n  name: string;        // Error type (e.g., 'TypeError')\n  message: string;     // Error description\n  stack?: string;      // Stack trace\n  isFatal?: boolean;   // Whether error crashed the sandbox\n}\n```\n\n## 🔒 Security & TurboModules\n\n> For detailed security considerations, see the [Security section](https://github.com/callstackincubator/react-native-sandbox#-security-considerations) in the main README.\n\nThis package is built with **React Native New Architecture** using Fabric for optimal performance and type safety.\n\n### Security Controls\n\n#### TurboModule Filtering\n\nUse `allowedTurboModules` to control which native modules the sandbox can access:\n\n```tsx\n<SandboxReactNativeView\n  allowedTurboModules={['MyTrustedModule', 'AnotherSafeModule']}\n  // ... other props\n/>\n```\n\n**Default allowed modules** include essential React Native TurboModules like `EventDispatcher`, `AppState`, `Networking`, etc. See the [source code](https://github.com/callstackincubator/react-native-sandbox/blob/main/packages/react-native-sandbox/src/index.tsx) for the complete list.\n\n> Note: This filtering works with both legacy native modules and new TurboModules, ensuring compatibility across React Native versions.\n\n#### TurboModule Substitutions\n\nUse `turboModuleSubstitutions` to transparently replace a module with a sandbox-aware implementation. When sandbox JS requests a module by name, the substitution map redirects it to a different native module:\n\n```tsx\n<SandboxReactNativeView\n  allowedTurboModules={['RNFSManager', 'FileAccess', 'RNCAsyncStorage']}\n  turboModuleSubstitutions={{\n    RNFSManager: 'SandboxedRNFSManager',\n    FileAccess: 'SandboxedFileAccess',\n    RNCAsyncStorage: 'SandboxedAsyncStorage',\n  }}\n/>\n```\n\nSubstituted modules are **implicitly allowed** and don't need to be listed in `allowedTurboModules`. If the resolved module conforms to `RCTSandboxAwareModule` (ObjC) or `ISandboxAwareModule` (C++), it receives sandbox context (origin, requested name, resolved name) after instantiation — enabling per-origin data scoping.\n\nChanging `turboModuleSubstitutions` at runtime triggers a full re-instantiation of the sandbox's React Native runtime, ensuring TurboModules are re-resolved with the new configuration.\n\nSee the [`apps/fs-experiment`](https://github.com/callstackincubator/react-native-sandbox/tree/main/apps/fs-experiment) example for a working demonstration.\n\n#### Message Origin Control\n\nUse `allowedOrigins` to specify which sandbox origins are allowed to send messages to this sandbox:\n\n```tsx\n<SandboxReactNativeView\n  origin=\"my-sandbox\"\n  allowedOrigins={['sandbox1', 'sandbox2']}\n  // ... other props\n/>\n```\n - By default, no sandboxes are allowed to send messages to each other (only to host). The `allowedOrigins` list is unidirectional - if sandbox A allows messages from sandbox B, sandbox B still needs to explicitly allow messages from sandbox A to enable two-way communication.\n - The `allowedOrigins` can be changed at run-time.\n - When a sandbox attempts to send a message to another sandbox that hasn't allowed it, an `AccessDeniedError` will be triggered through the `onError` callback.\n\n## 💬 Communication Patterns\n\n### Message Types\n\n```tsx\n// Configuration updates\nsandboxRef.current?.postMessage({\n  type: 'config',\n  payload: { theme: 'dark', locale: 'en' }\n});\n\n// Action commands  \nsandboxRef.current?.postMessage({\n  type: 'action',\n  action: 'refresh'\n});\n\n// Data synchronization\nsandboxRef.current?.postMessage({\n  type: 'data',\n  data: { users: [], posts: [] }\n});\n```\n\n### Message Validation\n\n```tsx\nconst handleMessage = (data: unknown) => {\n  // Always validate messages from sandbox\n  if (!data || typeof data !== 'object') return;\n  \n  const message = data as { type?: string; payload?: unknown };\n  \n  switch (message.type) {\n    case 'ready':\n      console.log('Sandbox is ready');\n      break;\n    case 'request':\n      ref?.current.postMessage({requested: 'data'});\n      break;\n    default:\n      console.warn('Unknown message type:', message.type);\n  }\n};\n```\n\n## 🎨 Advanced Usage\n\n### Dynamic Bundle Loading\n\n```tsx\nconst [bundleUrl, setBundleUrl] = useState<string>();\n\n// Load bundle URL from your backend\nuseEffect(() => {\n  fetch('/api/sandbox-config')\n    .then(res => res.json())\n    .then(config => setBundleUrl(config.bundleUrl));\n}, []);\n\nreturn (\n  <SandboxReactNativeView\n    componentName=\"DynamicApp\" // Name of component registered in bundle provided with jsBundleSource\n    jsBundleSource={bundleUrl}\n    initialProperties={{ \n      userId: currentUser.id,\n      theme: userPreferences.theme \n    }}\n  />\n);\n```\n\n### Performance Monitoring\n\n```tsx\nconst handleMessage = (data: unknown) => {\n  // Monitor sandbox performance metrics\n  if (data?.type === 'performance') {\n    console.log('Sandbox metrics:', data.metrics);\n  }\n};\n```\n\n### Direct Communication Between Sandboxes\n\nEnable direct communication between two sandbox instances:\n\n```tsx\nimport SandboxReactNativeView from '@callstack/react-native-sandbox';\n\nexport default function App() {\n  return (\n    <View style={styles.flexRow}>\n      <View style={styles.flex10Margin}>\n        <SandboxReactNativeView\n          origin=\"A\"\n          jsBundleSource=\"sandbox\"\n          componentName=\"SandboxA\"\n          allowedOrigins={['B']}\n        />\n      </View>\n      <View style={styles.flex10Margin}>\n        <SandboxReactNativeView\n          origin=\"B\"\n          jsBundleSource=\"sandbox\"\n          componentName=\"SandboxB\"\n          allowedOrigins={['A']}\n        />\n      </View>\n    </View>\n  );\n}\n```\n\n**Sandbox.tsx:**\n```tsx\nimport { useCallback, useEffect, useState } from 'react';\nimport { Button, Text, View } from 'react-native';\n\nexport default function SandboxA() {\n  const [counter, setCounter] = useState(0);\n\n  const sendToB = () => {\n    globalThis.postMessage({ type: 'increment', value: 1 }, 'B');\n  };\n\n  const onMessage = useCallback((payload: any) => {\n    if (payload.type === 'increment') {\n      setCounter(prev => prev + payload.value);\n    }\n  }, []);\n\n  useEffect(() => {\n    globalThis.setOnMessage(onMessage);\n  }, [onMessage]);\n\n  return (\n    <View style={{ styles.padding20 }}>\n      <Text>Sandbox A</Text>\n      <Text>Counter: {counter}</Text>\n      <Button title=\"Send to B\" onPress={sendToB} />\n    </View>\n  );\n}\n```\n\nThe `SandboxB` component looks similar.\n\n### Origin Pooling with Idle TTL\n\nSandboxes sharing the same `origin` reuse a single ReactHost / Hermes VM. When the last surface for an origin unmounts, the ReactHost is kept alive for `idleTTL` milliseconds so that a re-mount within that window gets a warm start instead of a cold boot.\n\n```tsx\n// Static TTL\n<SandboxReactNativeView\n  origin=\"dashboard\"\n  idleTTL={2000}\n  componentName=\"DashboardWidget\"\n  jsBundleSource=\"sandbox\"\n/>\n\n// Dynamic TTL via function — evaluated at render time, not at unmount time\n<SandboxReactNativeView\n  origin=\"analytics\"\n  idleTTL={() => isLowMemory() ? 1000 : 5000}\n  componentName=\"AnalyticsWidget\"\n  jsBundleSource=\"sandbox\"\n/>\n```\n\n### Per-Surface Messaging (`useSurfaceMessaging`)\n\nWhen multiple sandboxes share the same `origin`, they share a single Hermes VM. Without per-surface routing, `globalThis.postMessage` and `globalThis.setOnMessage` would be last-writer-wins — only the most recently mounted sandbox's listener would be active.\n\nEach sandbox automatically receives a `__sandboxSurfaceId` prop that uniquely identifies its surface. Pass this to `useSurfaceMessaging` (or directly to the global APIs) to get correctly scoped messaging.\n\nSee the [`apps/origin-pooling`](https://github.com/callstackincubator/react-native-sandbox/tree/main/apps/origin-pooling) demo for both approaches in action.\n\n**Option A: `useSurfaceMessaging` hook (recommended)**\n\n```tsx\nimport {useSurfaceMessaging} from '@callstack/react-native-sandbox'\n\nfunction MyWidget({__sandboxSurfaceId}: {__sandboxSurfaceId?: string}) {\n  const {postMessage, setOnMessage} = useSurfaceMessaging(__sandboxSurfaceId)\n\n  useEffect(() => {\n    const unsubscribe = setOnMessage((msg) => {\n      console.log('received', msg)\n    })\n    return unsubscribe\n  }, [setOnMessage])\n\n  const sendToHost = () => postMessage({type: 'hello'})\n  const sendToOther = () => postMessage({type: 'ping'}, 'other-origin')\n\n  return <Button title=\"Send\" onPress={sendToHost} />\n}\n```\n\n**Option B: Convention-based (no library import)**\n\n```tsx\ndeclare const globalThis: {\n  postMessage: (msg: unknown, targetOrigin?: string) => void\n  setOnMessage: (cb: (msg: unknown) => void, surfaceId?: string) => void\n}\n\nfunction MyWidget({__sandboxSurfaceId}: {__sandboxSurfaceId?: string}) {\n  useEffect(() => {\n    globalThis.setOnMessage((msg) => {\n      console.log('received', msg)\n    }, __sandboxSurfaceId)\n    return () => globalThis.setOnMessage(() => {}, __sandboxSurfaceId)\n  }, [__sandboxSurfaceId])\n\n  const sendToHost = () => {\n    globalThis.postMessage({type: 'hello', __sandboxSurfaceId})\n  }\n}\n```\n\nIf `__sandboxSurfaceId` is `undefined` (e.g. the sandbox has its own origin), both approaches fall back to standard broadcast behavior — no changes needed in your code.\n\n## ⚡ Performance & Best Practices\n\n### Memory Management\n\n- Each sandbox creates a separate JavaScript context\n- Use `key` prop to force re-mount when needed\n- Monitor memory usage in production\n\n### Communication Efficiency\n\n```tsx\n// ✅ Good: Batch updates\nconst batchedData = { users, posts, notifications };\nsandboxRef.current?.postMessage({ type: 'batch_update', data: batchedData });\n\n// ❌ Avoid: Frequent individual messages\nusers.forEach(user => sandboxRef.current?.postMessage({ type: 'user', user }));\n```\n\n## 🔧 Troubleshooting\n\n### Common Issues\n\n**1. Bundle Loading Fails**\n```tsx\n// ❌ Invalid bundle source\njsBundleSource=\"/invalid/path.js\"\n\n// ✅ Correct bundle source\njsBundleSource=\"https://cdn.example.com/app.bundle.js\"\n// or\njsBundleSource=\"micro-app.jsbundle\"\n```\n\n**2. TurboModule Access Denied**\n```tsx\n// ❌ Module not in whitelist\n// Error: TurboModule 'MyModule' is not allowed\n\n// ✅ Add to allowed list\nallowedTurboModules={['MyModule']}\n```\n\n**3. Fatal Error Recovery**\n```tsx\n// ❌ Sandbox crashed and won't recover\n<SandboxReactNativeView\n  onError={(error) => {\n    console.log('Error:', error);\n    // Sandbox remains broken after fatal error\n  }}\n/>\n\n// ✅ Auto-recover from fatal errors by re-mounting\nconst [sandboxKey, setSandboxKey] = useState(0);\n\nconst handleError = (error: ErrorEvent) => {\n  if (error.isFatal) {\n    // Force re-mount to recover from fatal errors\n    setSandboxKey(prev => prev + 1);\n  }\n};\n\n<SandboxReactNativeView\n  key={sandboxKey} // Re-mount on fatal errors\n  componentName={\"SandboxedApp\"} // Name of component registered in bundle provided with jsBundleSource\n  jsBundleSource={\"sandbox\"}\n  onError={handleError}\n/>\n```\n\n**4. Bundle Size Performance Issues**\n```tsx\n// ❌ Avoid: Large monolithic bundles (slow loading)\njsBundleSource=\"entire-app-with-everything.bundle.js\"\n\n// ✅ Good: Small, focused bundles (fast loading)\njsBundleSource=\"micro-app-dashboard.bundle.js\"\n// or\njsBundleSource=\"https://cdn.example.com/lightweight-feature.bundle.js\"\n```\n\n## 📄 More Information\n\n- **📖 Project Overview & Examples**: [Main README](https://github.com/callstackincubator/react-native-sandbox#readme)\n- **🔒 Security Considerations**: [Security Documentation](https://github.com/callstackincubator/react-native-sandbox#-security-considerations)\n- **🎨 Roadmap**: [Development Plans](https://github.com/callstackincubator/react-native-sandbox#-roadmap)\n- **🐛 Issues**: [GitHub Issues](https://github.com/callstackincubator/react-native-sandbox/issues)","readmeFilename":"README.md"}