Source: https://seerepo.com/r/signalapp/Signal-Desktop/built
Markdown source: https://seerepo.com/r/signalapp/Signal-Desktop/built.md
Description: Signal-Desktop is a TypeScript repo built with React, Vite, Electron, and micro. It stores its data in lru-cache.

# What is Signal-Desktop built with?

Signal-Desktop is a TypeScript repo built with React, Vite, Electron, and micro. It stores its data in lru-cache, makes its content with blueimp-load-image, linkify-it, blurhash, mediabunny, qrcode-generator, and 5 more, validates its data with Zod, is tested with Chai, Vitest, sinon, playwright, chai-as-promised, and 3 more, and deploys with pino. It has 625,962 written lines, with 145 test files.

Read on November 7, 2026, at commit 5d1bbb7.

Repository: https://github.com/signalapp/Signal-Desktop

## Frontend (/)

### The base

- **[React](https://seerepo.com/uses/react)**: 731 files · [in package.json](https://github.com/signalapp/Signal-Desktop/blob/5d1bbb7ee231b35cb9cc8cc449ffb819c528efc8/package.json)
- **[Vite](https://seerepo.com/uses/vite)**: 1 file · [in package.json](https://github.com/signalapp/Signal-Desktop/blob/5d1bbb7ee231b35cb9cc8cc449ffb819c528efc8/package.json)

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**
- **[classnames](https://seerepo.com/uses/classnames)**: 121 files
- **[postcss-selector-parser](https://seerepo.com/uses/postcss-selector-parser)**: 1 file
- **PurgeCSS**: 1 file

### Interface

- **react-aria**: 37 files
- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 32 files
- **react-aria-components**: 22 files
- **@react-spring/web**: 16 files
- **fabric**: 12 files
- **[motion](https://seerepo.com/uses/motion)**: 11 files
- **react-popper**: 8 files
- **[@popperjs/core](https://seerepo.com/uses/popperjs-core)**: 6 files
- **react-virtualized**: 6 files
- **[TanStack](https://seerepo.com/uses/tanstack)**: 4 files
- **react-blurhash**: 2 files
- **enquirer**: 1 file

## Backend (/)

### Data

- **[lru-cache](https://seerepo.com/uses/lru-cache)**: 10 files

## Support (/)

### The base

- **[Electron](https://seerepo.com/uses/electron)**: 91 files

### Content

- **blueimp-load-image**: 6 files
- **linkify-it**: 4 files
- **blurhash**: 3 files
- **[mediabunny](https://seerepo.com/uses/mediabunny)**: 2 files
- **qrcode-generator**: 2 files
- **heic-convert**: 1 file
- **[js-yaml](https://seerepo.com/uses/js-yaml)**: 1 file
- **mp4box**: 1 file
- **pixelmatch**: 1 file
- **[pngjs](https://seerepo.com/uses/pngjs)**: 1 file

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 67 files

### Testing

- **Chai**: 396 files
- **Vitest**: 109 files
- **sinon**: 76 files
- **playwright**: 28 files
- **chai-as-promised**: 3 files
- **vitest-browser-react**: 3 files
- **axe-core**: 1 file
- **Mocha**: 1 file

### Deploy

- **[pino](https://seerepo.com/uses/pino)**: 4 files

### Tools

- **type-fest**: 100 files
- **Babel**: 10 files
- **fast-glob**: 4 files
- **normalize-path**: 3 files
- **@electron/asar**: 1 file
- **log-symbols**: 1 file
- **read-last-lines**: 1 file
- **Storybook**: 1 file
- **tsx**: 1 file

### Other

- **Lodash**: 297 files
- **uuid**: 141 files
- **react-redux**: 120 files
- **debug**: 46 files
- **reselect**: 46 files
- **p-queue**: 37 files
- **fs-extra**: 30 files
- **moment**: 17 files
- **tinykeys**: 17 files
- **p-map**: 13 files
- **p-timeout**: 11 files
- **SemVer**: 10 files
- **memoizee**: 9 files
- **fuse.js**: 8 files
- **node-fetch**: 8 files
- **Redux**: 8 files
- **config**: 7 files
- **got**: 6 files
- **blob-util**: 5 files
- **dom-accessibility-api**: 5 files
- **@formatjs/intl-localematcher**: 4 files
- **redux-thunk**: 4 files
- **@internationalized/date**: 3 files
- **google-libphonenumber**: 3 files
- **form-data**: 2 files
- **react-intl**: 2 files
- **url**: 2 files
- **buffer**: 1 file
- **emoji-regex-xs**: 1 file
- **execa**: 1 file
- **filesize**: 1 file
- **https-proxy-agent**: 1 file
- **humanize-duration**: 1 file
- **micromatch**: 1 file
- **redux-logger**: 1 file
- **socks-proxy-agent**: 1 file
- **split2**: 1 file
- **write-file-atomic**: 1 file

## Support (packages/mock-server)

### The base

- **micro**: 4 files

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 4 files

### Tools

- **type-fest**: 4 files

### Other

- **debug**: 10 files
- **buffer**: 4 files
- **uuid**: 3 files
- **ws**: 3 files
- **url**: 2 files
- **@tus/server**: 1 file
- **is-plain-obj**: 1 file
- **url-pattern**: 1 file

## Support (packages/types)

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 70 files

### Tools

- **type-fest**: 69 files

### Other

- **buffer**: 1 file
- **SemVer**: 1 file
- **uuid**: 1 file

## Other repos with a similar stack

- [CherryHQ/cherry-studio](https://seerepo.com/r/CherryHQ/cherry-studio/built): React, Vite, lru-cache, Electron, Tailwind CSS, Radix UI, motion, TanStack, mediabunny, Zod · [Compare](https://seerepo.com/compare/CherryHQ/cherry-studio/vs/signalapp/Signal-Desktop)
- [NousResearch/hermes-agent](https://seerepo.com/r/NousResearch/hermes-agent/built): React, Vite, Electron, Tailwind CSS, Radix UI, motion, js-yaml, Zod · [Compare](https://seerepo.com/compare/NousResearch/hermes-agent/vs/signalapp/Signal-Desktop)
- [shadcn-ui/ui](https://seerepo.com/r/shadcn-ui/ui/built): React, Vite, lru-cache, Tailwind CSS, Radix UI, motion, TanStack, Zod · [Compare](https://seerepo.com/compare/shadcn-ui/ui/vs/signalapp/Signal-Desktop)
- [storybookjs/storybook](https://seerepo.com/r/storybookjs/storybook/built): React, Vite, react-aria, Radix UI, react-aria-components, TanStack, js-yaml, Zod · [Compare](https://seerepo.com/compare/signalapp/Signal-Desktop/vs/storybookjs/storybook)
- [unslothai/unsloth](https://seerepo.com/r/unslothai/unsloth/built): React, Vite, Tailwind CSS, postcss-selector-parser, Radix UI, motion, TanStack, js-yaml · [Compare](https://seerepo.com/compare/signalapp/Signal-Desktop/vs/unslothai/unsloth)
- [cline/cline](https://seerepo.com/r/cline/cline/built): React, Vite, Tailwind CSS, Radix UI, motion, js-yaml, Zod, pino · [Compare](https://seerepo.com/compare/cline/cline/vs/signalapp/Signal-Desktop)

## Frequently asked questions

### What language is Signal-Desktop written in?

Signal-Desktop is written in TypeScript, with 625,962 written lines.

### What framework does Signal-Desktop use?

Signal-Desktop is built with React, Vite, Electron, and micro.

The proof: [in package.json](https://github.com/signalapp/Signal-Desktop/blob/5d1bbb7ee231b35cb9cc8cc449ffb819c528efc8/package.json)

### What database does Signal-Desktop use?

Signal-Desktop stores its data in lru-cache.

### Does Signal-Desktop have tests?

Yes. Signal-Desktop has 145 test files and is tested with Chai, Vitest, sinon, playwright, chai-as-promised, vitest-browser-react, axe-core, and Mocha.

### Which repos have a stack like Signal-Desktop's?

The ones that share most of its stack: CherryHQ/cherry-studio, NousResearch/hermes-agent, and shadcn-ui/ui.

## What is your repo built with?

Any public repo, with no account: https://seerepo.com/r/owner/repo/built, with the owner and name it has on GitHub.
