This package has been deprecated

Author message:

TC39 has taken Realms in a new direction (ShadowRealm) and the security properties of the realms-shim have not been maintained.


1.2.2 • Public • Published

Realm Shim

Build Status Coverage Status dependency status dev dependency status License

This folder contains a shim implementation of the Realm API Proposal.


The current implementation has 3 main limitations:

  • All code evaluated inside a Realm runs in strict mode.
  • Direct eval is not supported.
  • let, global function declarations and any other feature that relies on new bindings in global contour are not preserved between difference invocations of eval, instead we create a new contour everytime.

Building the Shim

git clone
cd realms-shim
npm install
npm run shim:build

This will install the necessary dependencies and build the shim locally.


To open the playground example in your default browser:

npm run shim:build
open examples/simple.html


To use the shim in a webpage, build the shim, then:

  <script src="../dist/realm-shim.min.js"></script> 
    const r = new Realm();

To use the shim with node:

  const Realm = require('./realm-shim.min.js');
  const r = new Realm();

You can also use the ES6 module version of the Realms shim in Node.js via the package esm. To do that, launch node with esm via the "require" option:

npm install esm
node -r esm main.js

And import the realm module in your code:

  import Realm from './src/realm';
  const r = new Realm();


Example 1: Root Realm

To create a root realm with a new global and a fresh set of intrinsics:

const r = new Realm(); // root realm === this; // false === JSON; // false

Example 2: Realm Compartment

To create a realm compartment with a new global and inherit the intrinsics from another realm:

const r1 = new Realm(); // root realm
const r2 = new{ intrinsics: 'inherit' }); // realm compartment ===; // false ===; // true

Example 3: Realm Compartment from current Realm

To create a realm compartment with a new global and inherit the intrinsics from the current execution context:

const r = new Realm({ intrinsics: 'inherit' }); // realm compartment === this; // false === JSON; // true

Bug Disclosure

Please help us practice coordinated security bug disclosure, by using the instructions in to report security-sensitive bugs privately.

For non-security bugs, please use the regular Issues page.

Package Sidebar


npm i realms-shim

Weekly Downloads






Unpacked Size

642 kB

Total Files


Last publish


  • erights
  • katesills
  • kriskowal
  • michaelfig
  • warner