Codeship Status for albertyw/varsnap.js

Python Varsnap Client. For use in both browser and node.js


Install from NPM - npm install --save varsnap


The varsnap decorator needs to be configured with a config object with these variables:

  • varsnap - Should be either true or false. Varsnap will be disabled if the variable is anything other than true.
  • env - If set to development, the client will receive events from production. If set to production, the client will emit events.
  • producerToken - Only clients with this token may emit production snapshots. Copied from
  • consumerToken - Only clients with this token may emit development snapshots. Copied from

If you’re deploying varsnap to a browser, note that Varsnap needs unmangled code in production to work correctly.


Wrap your functions with the varsnap decorator for any function you’d like to make better:

// Node.js
var varsnap = require('varsnap');

// Browser
var varsnap = window.varsnap;

// Configuration
  varsnap: true,
  env: 'production',
  producerToken: 'producer-abcd'

// Integration
function example(x, y, z) {
  // ...
example = varsnap(example);

example(1, 2, 3);

See example/example.js for example usage.


If you are using typescript, make sure your tsconfig.json has a "target" to "es2015", "es6", or later. This is needed to persist function names after compiling to javascript. See for details.


Use the varsnap.runTests() function.

function test() {
  const status = varsnap.runTests().then(function(status) => {

If you are using mocha and chai, you can include this test script:

const expect = require('chai').expect;
const varsnap = require('varsnap');

// Load the modules where varsnap is being used

context('Varsnap', function() {
  this.timeout(30 * 1000);
  it('runs with production', function() {
    return varsnap.runTests().then(status => {

See example/test.js for example usage.


  1. Update Changelog with new version
  2. Update const version in varsnap/core.ts
  3. Update package.json version and run npm install
  4. Update .uglify.json and .uglify.min.json
  5. Run npm run package
  6. Git commit and tag
  7. npm publish
  8. Upload dist/* to