Skip to main content

Tools

Operating System

All Bitwarden developers are issued with a MacBook. The tooling recommendations and instructions in this documentation assume that you’re using MacOS. 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

Local environment

  • Homebrew - package manager for macOS
  • Iterm2 (available via Homebrew) - a better terminal emulator
  • Various browsers - It’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.
  • Docker - required for server development only
  • PowerShell (available via Homebrew: brew install powershell)
  • NodeJS v16 (preferably using a node version manager
  • NPM v8 (included with Node)
  • Rust - Used for native desktop components
  • Git
    • Commit signing is required for all Bitwarden contributors and is strongly encouraged for community contributors.

Mobile

  • Android Studio - Nice for setting up and running Android Simulators
  • abd - for interacting with Android sims

Databases

Visual Studio Code Extensions

Visual Studio Code Extensions

There are some vs code extensions that are life-savers in our line of work. A list of highly recommended ones include the following:

Optional tools

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

  • JetBrains Rider ($) - an alternative to Visual Studio and/or Visual Studio Code for MacOS

  • Microsoft Azure Storage Explorer - for connecting to or working with local Azure table storage and queues

  • Parallels - For running Windows VMs

  • Sourcetree - Git GUI.

    Note: For the git hooks to behave correctly on macOS when using nvm, please create the following file.

    # ~/.huskyrc
    # This loads nvm.sh and sets the correct PATH before running hook
    export NVM_DIR="$HOME/.nvm"

    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"