GERALDKJK
Overview
Setting Up macOS for Development: My 2026 Checklist

Setting Up macOS for Development: My 2026 Checklist

April 24, 2026
9 min read

Overview

This is my current macOS setup, documented mostly for future me whenever I get a new machine, and partly so that I have something to point friends to when they ask. It’s opinionated and personal, skews toward what I actually use daily, and skips anything I found myself not reaching for.


Package Managers & Languages

  • Homebrew, the unofficial package manager for macOS

    • With it, we can install:
      • CLI tools (git, nvm, wget) with brew install,
      • and GUI apps (Docker, VSCode) with brew install --cask,
    • and keep everything up-to-date with a single command: brew upgrade.
    • The Homebrew installer will also prompt you to install Xcode Command Line Tools, providing many essential utilities for software development on macOS that does not come pre-installed.
    Note (Installation steps)

    Install by copying and pasting the following command in your terminal:

    Terminal window
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

    Then, run the following to ensure you have the latest version and packages:

    Terminal window
    brew update
    brew upgrade
  • Node.js & NPM

    Note (Installation steps)

    Seems better to skip the direct installer to instead use nvm (Node Version Manager) so you can switch Node versions per project:

    Terminal window
    brew install nvm

    Then, create the directory for nvm:

    Terminal window
    mkdir ~/.nvm

    Edit your ~/.zshrc file with:

    Terminal window
    nano ~/.zshrc

    And add the following lines to the end of the file:

    Terminal window
    # For NVM
    export NVM_DIR=/opt/homebrew/opt/nvm
    [ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh" # This loads nvm
    [ -s "$NVM_DIR/bash_completion" ] && source "$NVM_DIR/bash_completion" # This loads nvm bash_completion

    Finally, restart your terminal or run:

    Terminal window
    source ~/.zshrc

    And verify your installation with:

    Terminal window
    nvm --version

    Install specific versions with:

    Terminal window
    nvm install 24
    nvm use 24
  • Python

    Note (Installation steps)

    Install via Homebrew:

    Terminal window
    brew install python

    Verify the installation with:

    Terminal window
    python3 --version
    pip3 --version

    Then, for any new Python project, create and activate a virtual environment so dependencies stay isolated per project:

    Terminal window
    python3 -m venv .venv
    source .venv/bin/activate

    Once activated, python and pip (without the 3 suffix) will point to the virtual environment’s versions. Install packages as usual:

    Terminal window
    pip install fastapi uvicorn

    And when you’re done, deactivate with:

    Terminal window
    deactivate

Software Development Tools

  • Git CLI for version control

    Note (Installation steps)

    Install via Homebrew:

    Terminal window
    brew install git

    Then, run the basic setup with:

    Terminal window
    git config --global user.name "Your Name"
    git config --global user.email "your@email.com"
    git config --global init.defaultBranch main
    Tip (Set up SSH for GitHub)

    Authenticating with GitHub over HTTPS means rotating a Personal Access Token every time it expires, even with credential caching enabled. On the other hand, SSH is set-once-and-forget. We only need to generate a key, add it to GitHub, and we’re done.

    Generate a new SSH key:

    Terminal window
    ssh-keygen -t ed25519 -C "your@email.com"

    Accept the default file location and set a passphrase if you’d like. Then, copy your public key to the clipboard:

    Terminal window
    pbcopy < ~/.ssh/id_ed25519.pub

    Finally, add the key to your GitHub account at github.com/settings/ssh/new, then test the connection:

    Terminal window
    ssh -T git@github.com

    You should see a message like Hi <username>! You've successfully authenticated....

  • Docker for containerised development

    Note (Installation steps)

    Download Docker Desktop from the site, or via Homebrew:

    Terminal window
    brew install --cask docker
  • Visual Studio Code is still my go-to code editor

    Note (Installation steps)

    Download VSCode from the site, or via Homebrew:

    Terminal window
    brew install --cask visual-studio-code
    Tip (Recommended configurations)

    Open the command palette (Cmd + Shift + P), run Shell Command: Install 'code' command in PATH, and you’ll be able to open folders from the terminal with:

    Terminal window
    code .
    Tip (Recommended extensions)
  • pgAdmin4 as a GUI for PostgreSQL databases

    • Great for quickly inspecting tables, running ad-hoc queries, and managing database users without having to drop into psql every time.
    Note (Installation steps)

    Download pgAdmin4 from the site, or via Homebrew:

    Terminal window
    brew install --cask pgadmin4
  • Postman for building, testing, and documenting APIs

    • Great for whenever I’m developing on backends.
    • Allows me to organise endpoints into collections, save example requests, and test auth flows.
    Note (Installation steps)

    Download Postman from the site, or via Homebrew:

    Terminal window
    brew install --cask postman

Terminal

  • iTerm2, a powerful alternative to Terminal for macOS

    • Colours, readability, autocompletion and split terminal displays, iTerm2 brings many great modern quality-of-life tweaks to the terminal on macOS.

    Split Pane in iTerm2

    Tip (Recommended configurations)
    • Set as default terminal

      Setting iTerm2 as the default terminal

      • In the top menu bar, click on iTerm2 > Make iTerm2 Default Term.
    • Disable inactive split pane dimming

      • The default dims whichever pane isn’t focused, which gets quite distracting.

      • In the top menu bar, click on iTerm2 > Settings > Appearance > Dimming, and untick the Dim inactive split panes checkbox.


Shell

  • Oh My Zsh

    • Zsh is already the default shell on macOS, but Oh My Zsh enhances it through plugins and themes.
    • My theme of choice is Powerlevel10k.

    Oh My Zsh shell with the Powerlevel10k theme in my iTerm2 terminal

    Note (Installation steps)

    Install Oh My Zsh with the following command:

    Terminal window
    sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

    And for the theme, Powerlevel10k:

    Terminal window
    git clone --depth=1 https://github.com/romkatv/powerlevel10k.git "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k"

    Edit your shell config with:

    Terminal window
    nano ~/.zshrc

    Update the ZSH_THEME section to look like this:

    Terminal window
    ZSH_THEME="powerlevel10k/powerlevel10k"
    Tip (Recommended plugins)

    Here are some of the plugins that I recommend starting with:

    The git plugin ships with Oh My Zsh, but zsh-autosuggestions and zsh-syntax-highlighting need to be cloned in manually first:

    Terminal window
    git clone https://github.com/zsh-users/zsh-autosuggestions \
    ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
    git clone https://github.com/zsh-users/zsh-syntax-highlighting \
    ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

    Then edit your shell config with:

    Terminal window
    nano ~/.zshrc

    And update the plugins=() section to look like this:

    Terminal window
    plugins=(git zsh-autosuggestions zsh-syntax-highlighting)

Web Browser

  • Arc Browser

    • I’ve been using Arc for how content-focused and clean its UI is, but its team has basically halted development of new features, and at this point, I do believe it’s worth exploring alternatives.

    Tab Management with the Vertical Sidebar in Arc

    • Still, it has some great features worth sticking around for, and those include:

      • Spaces: basically profiles or workspaces each with their own tabs, pinned tabs (basically bookmarks), cookies, history and extensions. Quick switch using Ctrl + [number].
      • Vertical Sidebar: controversial and opinionated, but I find this feature really great for tab management and when toggled to be hidden, tabs stay out of the way when browsing content.
      • Split View: side-by-side tabs in one window. Useful for quick comparisons!

    Split View in Arc

    Important (Potential Shortcomings)

    Arc auto-archives (deletes) inactive tabs after a set time, up to 30 days, and there’s no setting to disable this. Definitely a bold choice, and one that will need some getting used to.

    The workaround: pin any tabs you actually want to keep around.

  • Zen Browser

    • Arc-inspired, open-source, and Firefox-based.

    • This is basically what I’d switch to if (or, realistically, when) Arc’s lack of development becomes too much. Besides, many of the Arc features I mentioned above actually have direct equivalents here:

      • Workspaces: same idea as Arc’s Spaces.
      • Vertical Sidebar: same vertical tab management that I’ve grown used to in Arc.
      • Split View: also supported, with a similar feel. In fact, Zen provides more vertical real-estate in its implementation, removing the URL bar in split view.

    Split View in Arc (top-half) vs. in Zen (bottom-half) Split View in Arc vs. in Zen

    • Honestly, the experience is close enough that the muscle memory carries over. I’ve been testing it on macOS and daily-driving it on Windows, and the rough edges are few and rare enough to not get in the way of daily browsing.
    Important (Potential Shortcomings)

    Zen doesn’t support DRM-protected content, which means streaming platforms like Netflix and Disney+ won’t work. Could be a dealbreaker if you watch a lot of content in your browser, so worth knowing upfront.

    Also, it’s probably worth noting that Zen is still in beta as of writing this, so expect the occasional bug.


Productivity & Lifestyle

  • Notion / Obsidian for note taking, based largely on preference

  • Anki for spaced-repetition flashcards

    • I use this for retaining technical concepts and anything that I want to remember long-term. The mobile app syncs with the desktop version through AnkiWeb, so I can do quick reviews during my daily commutes.
  • Apple Mail, Reminders, and Calendar (already comes pre-installed on macOS)

    • Nothing fancy here, just the default Apple apps.
    • I stick with them because of how seamless and simple they are.
  • Spotify


Additional Tools / Utilities

  • Raycast, a replacement to the built-in Spotlight feature

    • Boosts productivity and absolutely brilliant for some of my daily use cases like:

      • launching applications,
      • searching and managing files,
      • accessing clipboard history,
      • managing windows intuitively, Raycast window management
      • and quick conversions! Raycast quick conversions
    • It even has a store for community-built extensions. Honestly, this is one of those tools I can’t imagine switching back from.

    • No, seriously, try it out! :))

    Note (Installation steps)

    Download Raycast from the site, or via Homebrew:

    Terminal window
    brew install --cask raycast
  • Blip for quick, convenient, cross-platform file sharing

    • AirDrop is locked to the Apple ecosystem and to close-proximity sharing, so I use Blip to send large files across my various devices, including Android and Windows.

macOS Settings

Finder

  • Enabling file name extensions
    • On the top menu bar, click Finder > Settings > Advanced > Check Show all filename extensions.

Dock

  • Automatically hide
    • In System Settings > Desktop & Dock > Enable Automatically hide and show the Dock.

Got something I missed?

This is a working list that’ll keep changing as I find better tools or realise I’ve been doing things wrong. If you’ve got a recommendation, spotted a mistake, or just have a different setup that works well for you, do let me know to check it out!