Emacs Bedrock 2.0 Ships With Zero Bloat

Bedrock, the minimal starter kit for Emacs, just hit version 2.0. The release comes from a developer named Ashton and surfaced on Hacker News, where it climbed to 173 points. The pitch is simple: better defaults for Emacs, hand-crafted, with no third-party packages in the base config.

If you’ve ever tried to set up Emacs from scratch, you know the pain. Bedrock skips the heavy frameworks. You copy two files into your config folder once, then edit them directly as you learn. That’s the whole idea.

What Bedrock actually is

Bedrock is not a giant configuration framework like Doom or Spacemacs. According to the Hacker News post, it’s just an early-init.el and an init.el that you drop into ~/.emacs.d/ and own from day one. The files carry enough comments to point you in the right direction, but they don’t bury you in prose when you’re hunting for code.

Configuration for popular third-party packages lives in a separate extras/ folder. You pull in what you want, one package or a whole file at a time. Nothing gets forced on you.

What’s new in 2.0

This is a major release mostly because it breaks compatibility with Emacs 29 and now requires Emacs 31, which shipped in August 2026. Here’s what changed:

  1. Lexical binding everywhere. All .el files now use the lexical-binding: t cookie, the modern default for cleaner, faster Elisp.
  2. Auto-install for packages. Anything declared with use-package installs itself if it’s missing. Less manual setup.
  3. Embark over which-key. If the embark package is loaded, Bedrock now uses embark-auto-prefix-help-mode for command hints.
  4. Built-in grep editing. wgrep is gone, replaced by the native grep-change-to-grep-edit-mode. One less dependency.
  5. Better tree-sitter. The syntax-parsing config got a major overhaul for smarter highlighting and code navigation.
  6. Nicer isearch and live completions. Improved incremental search plus an Completions buffer that auto-updates as you type.
  7. repeat-mode on by default. Chain repeated commands without re-hitting the full key sequence.

Bug fixes round it out: theme colors are now respected, the startup message is better suppressed, and there’s a pile of small improvements. Ashton is upfront that the lists aren’t exhaustive, and full details sit in the changelog.

How it compares

Most Emacs starter kits act as a layer between you and your config. They live in their own repo, ship their own abstractions, and offer an upgrade command. Bedrock rejects that model on purpose. There’s no automatic upgrade path, because that would mean the Bedrock code has to live somewhere other than your init.el. The point is that you learn to own your entire config as fast as possible.

To update, you compare the commit you copied from against the new main branch and cherry-pick what you want. More work, more control. That trade-off is the whole personality of the project.

Who it’s for

Bedrock is free and open source, with no telemetry. Ashton notes he’ll never know how many people use it, and he’s fine with that. It started as a personal experiment in tweaking Emacs defaults, then became something he handed to curious friends, and grew from there.

The honest caveat: if you’re already happy on an older Bedrock version, you may not need to upgrade at all. Ashton calls 2.0 an incremental improvement, not a total overhaul. Emacs is a stable editor, and a starter kit built for the bleeding edge stays relatively stable too. The Emacs 31 requirement is the real gate. If you can’t upgrade that high, you can strip out the version-specific config without much trouble.

What stands out here is the philosophy. In a world of config frameworks that abstract everything away, Bedrock bets that owning your setup beats renting someone else’s. For anyone starting with Emacs, or tired of a config they don’t understand, that’s a refreshing stance.

Full release notes and the changelog are available at the original source.

Scroll to Top