--- 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. Bun uses the [JavaScriptCore engine](https://developer.apple.com/documentation/javascriptcore), developed by Apple for Safari. JavaScriptCore usually starts and runs faster than V8, the engine used by Node.js and Chromium-based browsers. Bun's transpiler and runtime are written in Rust. On Linux, Bun starts [4x faster](https://twitter.com/jarredsumner/status/1499225725492076544) than Node.js. | Command | Time | | --------------- | -------- | | `bun hello.js` | `5.2ms` | | `node hello.js` | `25.1ms` | The benchmark runs a 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 with no configuration. Bun transpiles every file on the fly with its native [transpiler](/runtime/transpiler) before running it. ```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 ``` `bun` ignores flags at the end of the command and passes them through to the `"dev"` script itself. ## Run a `package.json` script Compare to `npm run