Natively Pronounced Mandarin

    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.


    npm i realms-shim

    DownloadsWeekly Downloads






    Unpacked Size

    642 kB

    Total Files


    Last publish


    • erights
    • katesills
    • kriskowal
    • michaelfig
    • warner