Skip to main content

Tools

Operating system

All Bitwarden developers are issued with a MacBook or Windows laptop. The tooling recommendations and instructions in this documentation assume that you’re using one of these operating systems, noting where a tool may apply to only one of them.

This may require some adaptation if you’re using a different operating system.

The following tools are strongly recommended as part of the "standard" developer setup. We recommend that any new Bitwarden developer install all of them as part of setting up their local development environment.

IDEs

ToolHow we use it
JetBrains RiderFully featured IDE for C#, .NET & more. Bitwarden developers should contact IT for a license.
Visual StudioUsed for C# development on Windows.
Visual Studio CodeUsed for all Typescript projects. Suboptimal for C#. Be sure to install extensions.
XcodeRequired for iOS Mobile development and Safari web extension.

Local environment

ToolHow we use it
.NET SDKRequired for server and other back-end development environments.
DockerRequired for server development only. Bitwarden developers should contact IT for a license for Docker Desktop.
GitCommit signing is strongly recommended.
HomebrewPackage manager for macOS.
Iterm2A better terminal emulator (available via Homebrew).
NodeJSCheck the engines in package.json for the current version. We recommend using a node version manager.
npmCheck the engines in package.json for the current version. It is included with NodeJS.
PowerShellAvailable via Homebrew on macOS: brew install powershell.
RustWe stay on the latest stable version - preferably installed via rustup.
Various browsersIt's nice to have a slew of browsers ready to test the extension in a host of scenarios. You can also use multiple browsers to have different browser extension version installed to compare them.

Mobile-specific tooling

ToolHow we use it
adbFor interacting with Android sims.
Android StudioNice for setting up and running Android Simulators.
Apple Icons Generator GistScript to generate Apple icons from an image.

Databases

ToolHow we use it
Microsoft Azure Storage ExplorerFor connecting to or working with local Azure table storage and queues.
MSSQL VSCode ExtensionFor working with your local SQL Server.
MySQLWorkbenchUseful for fiddling with MySQL db.
PgAdmin4Useful for fiddling with PostgreSQL db.
SQLiteStudioUseful for fiddling with SQLite db.

Visual Studio Code extensions

There are some VS Code extensions that are very helpful in our codebase. A list of highly recommended ones include the following:

TypeExtensionNotes
C#.NET Core Test ExplorerTest explorer for .NET tests.
C#.NET Core User SecretsEdit secrets files by right clicking on a .proj and selecting "Manage User Secrets".
C#C#Omnisharp integrations.
DatabasesMySQL SyntaxSyntax highlighting for MySQL.
DatabasesPostgreSQLSyntax highlighting for PostgreSQL.
GeneralBack & ForthAdds forward and back buttons to top right of your editor. Simple, but incredibly useful.
GeneralCode Spell CheckerCan be annoying, but has saved lots of tmes form writting oragnizations.
GeneralLiveShareFor pair programming.
GitGit GraphFantastic git visualization tool.
GitGit HistoryMore Git history.
GitGit LensEven more Git options.
RustCodeLLDBFor Rust debugging.
RustEven Better TOMLFor handling TOML (cargo config).
Rustrust-analyzerGreat Rust language server.
Typescript / AngularAngular Language ServiceUnderstands Angular templates.
Typescript / AngularESLintIntegrations for ESLint.
Typescript / AngularJestJest test runner.
Typescript / AngularPrettierIntegrate with prettier code formatting.

Optional tools

The following tools may be useful depending on your preferences or what you're developing.

ToolHow we use it
ParallelsFor running Windows or Linux VMs on macOS machines.
SourcetreeGit GUI. For the Git hooks to behave correctly on macOS when using nvm, please follow these instructions.