# Insomnia Development Dependencies: Complete Guide to package.json devDependencies

> Discover Insomnia development dependencies in package.json including ESLint, Prettier, TypeScript, and Vitest required for building and testing only. Learn how these devDependencies ensure code quality.

- Repository: [Kong/insomnia](https://github.com/Kong/insomnia)
- Tags: how-to-guide
- Published: 2026-06-27

---

**Insomnia's top-level [`package.json`](https://github.com/Kong/insomnia/blob/main/package.json) declares development-specific dependencies—including ESLint, Prettier, TypeScript, Vitest, and esbuild—that are only required for linting, type-checking, testing, and building the application, and are explicitly excluded from production Electron builds.**

The Kong/insomnia repository manages its development toolchain through a centralized `devDependencies` section in the root [`package.json`](https://github.com/Kong/insomnia/blob/main/package.json). These packages enable the code quality standards, static analysis, and build processes necessary for contributing to the API client, while remaining isolated from the runtime environment of the released application.

## Where Insomnia Declares Development Dependencies

### Top-Level package.json Configuration

The primary development dependencies are defined in the **`devDependencies`** section of [[`package.json`](https://github.com/Kong/insomnia/blob/main/package.json)](https://github.com/Kong/insomnia/blob/develop/package.json) at the repository root (lines 49–76). According to the source code, these packages are not bundled with the released Electron app and are omitted from production installs.

### Workspace-Specific package.json Files

Additional development dependencies are distributed across the monorepo workspaces:

- **[`packages/insomnia/package.json`](https://github.com/Kong/insomnia/blob/main/packages/insomnia/package.json)** – Contains Electron app-specific development tools
- **[`packages/insomnia-testing/package.json`](https://github.com/Kong/insomnia/blob/main/packages/insomnia-testing/package.json)** – Defines shared testing utilities configuration
- **[`packages/insomnia-smoke-test/package.json`](https://github.com/Kong/insomnia/blob/main/packages/insomnia-smoke-test/package.json)** – Houses the Playwright smoke-test setup that utilizes `eslint-plugin-playwright`

## Categories of Development Dependencies in Insomnia

### Linting and Code Formatting

Code style enforcement relies on the ESLint ecosystem and Prettier:

- **`@eslint/js`** – Core JavaScript linting support
- **`eslint`** – The primary linting engine
- **`eslint-config-prettier`** – Disables ESLint rules that conflict with Prettier
- **`eslint-plugin-react`** and **`eslint-plugin-react-hooks`** – React-specific linting rules
- **`eslint-plugin-simple-import-sort`** – Automated import organization
- **`eslint-plugin-unicorn`** – Additional code quality rules
- **`prettier`** – Code formatting engine
- **`prettier-plugin-tailwindcss`** – Tailwind CSS class sorting

### TypeScript Tooling

Static type checking is implemented through:

- **`typescript`** – The TypeScript compiler (`tsc`)
- **`@typescript-eslint/eslint-plugin`** and **`@typescript-eslint/parser`** – TypeScript integration with ESLint
- **`typescript-eslint`** – Modern TypeScript ESLint configuration
- **`@types/node`** – Type definitions for Node.js APIs used throughout the codebase
- **`tslib`** – TypeScript runtime helpers

### Testing Infrastructure

The testing stack includes:

- **`vitest`** – Unit test runner executed via `npm test`
- **`@types/chai`** and **`@types/mocha`** – Type definitions for assertion frameworks
- **`eslint-plugin-playwright`** – Linting rules for end-to-end test files

### Build Tools

Fast bundling for the Electron renderer and CLI is handled by:

- **`esbuild`** – High-performance JavaScript bundler
- **`esbuild-runner`** – Direct execution of TypeScript files via esbuild

### Utility Libraries and Type Definitions

Supporting development utilities include:

- **`@types/har-format`** – Type definitions for HTTP Archive format
- **`@types/chai`**, **`@types/mocha`** – Testing framework type definitions
- **`globals`** – Global variable definitions for ESLint configuration
- **`madge`** – Circular dependency detection tool
- **`patch-package`** – Node module patching utility
- **`type-fest`** – Useful TypeScript type utilities

## How Dev Dependencies Power the Development Workflow

These packages integrate directly with the npm scripts defined in the root [`package.json`](https://github.com/Kong/insomnia/blob/main/package.json):

```json
{
  "scripts": {
    "lint": "eslint . --ext .ts,.tsx",
    "type-check": "tsc --noEmit",
    "test": "vitest run",
    "format": "prettier --write \"**/*.{ts,tsx,js,jsx,json,css,md}\""
  }
}

```

**Linting** (`eslint`): The `eslint` command scans all TypeScript and TSX files using the configured plugins, including `@typescript-eslint/*` for type-aware rules and `eslint-plugin-react` for React components.

**Type Checking** (`tsc`): The `typescript` package provides the `tsc` compiler, which runs with `--noEmit` to validate types without generating output files.

**Testing** (`vitest`): The `vitest` package executes unit tests located alongside source files, while workspace-specific configurations in `packages/insomnia-smoke-test` handle Playwright integration for end-to-end testing.

**Formatting** (`prettier`): The `prettier` and `prettier-plugin-tailwindcss` packages format code according to the project's style guide, handling TypeScript, JSON, CSS, and Markdown files.

## Summary

- Insomnia's development dependencies are centralized in the root [`package.json`](https://github.com/Kong/insomnia/blob/main/package.json) **`devDependencies`** section (lines 49–76) and are excluded from production Electron builds.
- **Linting and formatting** rely on the ESLint ecosystem including `@typescript-eslint/*`, `eslint-plugin-react`, and `prettier`.
- **TypeScript tooling** includes the `typescript` compiler, parser plugins, and Node.js type definitions for static analysis.
- **Testing** uses `vitest` for unit tests and `eslint-plugin-playwright` for end-to-end smoke tests in the `insomnia-smoke-test` workspace.
- **Build tools** leverage `esbuild` and `esbuild-runner` for fast bundling of the renderer process and CLI.
- These dependencies support development scripts like `npm run lint`, `npm run type-check`, and `npm test` that maintain code quality across the monorepo.

## Frequently Asked Questions

### What is the difference between dependencies and devDependencies in Insomnia?

Dependencies are required at runtime for the Electron application to function, while devDependencies in Insomnia's [`package.json`](https://github.com/Kong/insomnia/blob/main/package.json) are only needed during development, building, testing, and linting. These development packages are not bundled with the released application and are omitted when installing for production environments.

### How do I install only the development dependencies for Insomnia?

Running `npm install` in a development environment automatically installs both dependencies and devDependencies. To install only production dependencies (excluding the development tools like ESLint and TypeScript), use `npm install --production` or set `NODE_ENV=production` before installing.

### Which testing tools are included in Insomnia's devDependencies?

Insomnia includes `vitest` for unit testing, `@types/chai` and `@types/mocha` for type definitions, and `eslint-plugin-playwright` for linting end-to-end tests. The actual Playwright configuration and smoke tests reside in [`packages/insomnia-smoke-test/package.json`](https://github.com/Kong/insomnia/blob/main/packages/insomnia-smoke-test/package.json).

### Are ESLint and Prettier required to build Insomnia from source?

While not required for the final Electron build, ESLint and Prettier are required for the standard development workflow and CI/CD pipeline. The `esbuild` and `typescript` packages are essential for building the application from source, as they bundle TypeScript files and perform type checking before packaging the Electron app.