--- title: Bun Runtime description: Execute JavaScript/TypeScript files, package.json scripts, and executable packages with Bun's fast runtime. --- import Run from "/snippets/cli/run.mdx"; The Bun Runtime is designed to start fast and run fast. Under the hood, Bun uses the [JavaScriptCore engine](https://developer.apple.com/documentation/javascriptcore), which is developed by Apple for Safari. In most cases, the startup and running performance is faster than V8, the engine used by Node.js and Chromium-based browsers. Its transpiler and runtime are written in Zig, a modern, high-performance language. On Linux, this translates into startup times [4x faster](https://twitter.com/jarredsumner/status/1499225725492076544) than Node.js. | Command | Time | | --------------- | -------- | | `bun hello.js` | `5.2ms` | | `node hello.js` | `25.1ms` | This benchmark is based on running a simple Hello World script on Linux ## Run a file Use `bun run` to execute a source file. ```bash terminal icon="terminal" bun run index.js ``` Bun supports TypeScript and JSX out of the box. Every file is transpiled on the fly by Bun's fast native transpiler before being executed. ```bash terminal icon="terminal" bun run index.js bun run index.jsx bun run index.ts bun run index.tsx ``` Alternatively, you can omit the `run` keyword and use the "naked" command; it behaves identically. ```bash terminal icon="terminal" bun index.tsx bun index.js ``` ### `--watch` To run a file in watch mode, use the `--watch` flag. ```bash terminal icon="terminal" bun --watch run index.tsx ``` When using `bun run`, put Bun flags like `--watch` immediately after `bun`. ```bash bun --watch run dev # ✔️ do this bun run dev --watch # ❌ don't do this ``` Flags that occur at the end of the command will be ignored and passed through to the `"dev"` script itself. ## Run a `package.json` script Compare to `npm run