jsdrop.
RUNNING IN THE BROWSER

Node.js, in your tab.

Run executes your drop with Node.js compiled to WebAssembly, inside your own browser. Nothing runs on a server until you deploy.

What happens when you press Run

  • A Node.js-compatible runtime, compiled to WebAssembly, starts in your tab on its own isolated origin, separate from the editor. Most packages work; ones that need native binaries may not.
  • npm packages from package.json install in the browser, straight from the registry.
  • Imports that package.json does not list yet are added automatically at their latest version.
  • index.ts runs as an ES module with TypeScript. console output appears in the console pane.

Servers get two addresses

When your program calls .listen(), the preview shows the server at a virtual localhost address. It also gets a public tunnel URL, like https://abc12.tabcontainer.com/, that anyone can open while your tab runs it. Use it to test a webhook, try an API from another device, or show someone your work.

Use PORT when it is set

Deployed drops receive a PORT environment variable. Listening on process.env.PORT with a fallback works both in the browser and when deployed.

const port = Number(process.env.PORT) || 3000
server.listen(port)

Scripts work too

A drop does not need a server. A script runs until it finishes, or keeps going with a timer, like the Scheduled task starter.

The tab is the server

The program lives as long as the tab runs it. Close the tab or run again, and it stops, along with its public URL. To keep a drop running around the clock, deploy it with Pro.

Browser requirements

Running needs a browser that supports cross-origin isolation. Select the status next to Console to see whether the page is isolated, the server port, and the public URL.

Made to be explored. Open the workspace and try it for yourself. Coming from Val Town, Replit, or Glitch? See how jsdrop compares.