<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/projectile-3-4-xdqraspom" -->

---
title: Projectile 3.4 | daily.dev
description: Projectile 3.4 focuses on polishing features across a series of releases this summer, centered on handling repositories that span multiple checkouts or related...
canonical: https://daily.dev/posts/projectile-3-4-xdqraspom
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Projectile 3.4 | daily.dev
og:description: Projectile 3.4 focuses on polishing features across a series of releases this summer, centered on handling repositories that span multiple checkouts or related...
og:url: https://daily.dev/posts/projectile-3-4-xdqraspom
og:image: https://api.daily.dev/og/posts/XdQRaspoM.png
og:image:alt: Projectile 3.4
og:image:width: 1200
og:image:height: 630
og:locale: en
---

[Meta Redux](https://daily.dev/sources/metaredux)

[Read post](https://api.daily.dev/r/XdQRaspoM)

# [Projectile 3.4](https://api.daily.dev/r/XdQRaspoM "Go to post")

Projectile 3.4 focuses on polishing features across a series of releases this summer, centered on handling repositories that span multiple checkouts or related projects. New commands let users switch between worktrees or clones of the same repository (projectile-switch-worktree) and jump between related sibling projects grouped by upstream remote owner rather than directory name (projectile-switch-sibling-project). Command history now follows the repository rather than the directory, test-at-point support expanded to Ruby, Rust, Elixir, Java, Erlang, and F#, and the dashboard/doctor reports gained colored, actionable UI. Several config options were renamed (old names still honored) and two dead options were removed.

[#devtools](/tags/devtools "Check all #devtools posts")[#testing](/tags/testing "Check all #testing posts")

Aug 13•7m read time•From [metaredux.com](https://api.daily.dev/r/XdQRaspoM "metaredux.com")

[![Post cover image](https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/dedf722536cd790a73f152e04476db6b?_a=AQAEuop)](https://api.daily.dev/r/XdQRaspoM "Go to post")

Table of contents

[Somewhere else in the same project](https://api.daily.dev/r/XdQRaspoM?a=somewhere-else-in-the-same-project "Somewhere else in the same project")[Somewhere else in the same effort](https://api.daily.dev/r/XdQRaspoM?a=somewhere-else-in-the-same-effort "Somewhere else in the same effort")[The commands come with you](https://api.daily.dev/r/XdQRaspoM?a=the-commands-come-with-you "The commands come with you")[More languages, fewer surprises](https://api.daily.dev/r/XdQRaspoM?a=more-languages-fewer-surprises "More languages, fewer surprises")[The reports answer back](https://api.daily.dev/r/XdQRaspoM?a=the-reports-answer-back "The reports answer back")[Odds and ends](https://api.daily.dev/r/XdQRaspoM?a=odds-and-ends "Odds and ends")[Upgrade notes](https://api.daily.dev/r/XdQRaspoM?a=upgrade-notes "Upgrade notes")

Questions this post answers

What's new in Projectile 3.4 for Emacs?

Projectile 3.4 adds cross-repository navigation features: projectile-switch-worktree (bound to s-p W) lists other git worktrees or Jujutsu workspaces of the current repository, and projectile-switch-sibling-project (s-p n) finds related projects grouped by upstream remote owner. Command history now follows the repository rather than the directory across worktrees, and projectile-run-test-at-point gained support for Ruby, Rust, Elixir, Java, Erlang, and F#. Emacs users tracking Projectile updates like this can follow tool changes on daily.dev.

Do I need to update my config after upgrading Projectile to 3.4?

Most existing configs keep working, but a batch of options were renamed in Projectile 3.4: the six projectile-<cmd>-use-comint-mode options merged into one projectile-use-comint-mode, and projectile-per-project-compilation-buffer plus projectile-per-command-compilation-buffer became projectile-compilation-buffer-scope. Old names are still honored with an obsolescence notice. Two options, projectile-tags-file-name and projectile-go-project-test-function, were removed entirely since they only worked at load time. Developers planning an upgrade can check breaking changes like these on daily.dev before updating tooling.

How does Projectile decide which projects are related to each other in projectile-switch-sibling-project?

Projectile groups projects by the owner of their upstream git remote rather than comparing directory names, since name-matching only catches obvious cases like rubocop and rubocop-rails while missing unrelated-looking repos under the same organization. To avoid false groupings, an inferred group covering more than a quarter of a user's known projects gets dropped automatically, and projectile-project-groups lets users define explicit groups that are never overridden. Developers customizing tool workflows around monorepo-like setups can dig into details like this on daily.dev.

603 Impressions

Comment

Bookmark

Copy

![Placeholder image for anonymous user](https://media.daily.dev/image/upload/s--qsFuKGv_--/t_logo,f_auto/public/noProfile)Share your thoughtsPost

[![Meta Redux's image](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/553e6ad4c072454a986660a28a241343)](https://daily.dev/sources/metaredux)

[Meta Redux](https://daily.dev/sources/metaredux "https://daily.dev/sources/metaredux")

MetaRedux provides tutorials, guides, and resources for learning and mastering Redux, a state manage... Read more

3 Followers

•

18 Upvotes

#### Would you recommend this post?

Copy link

WhatsApp

Facebook

X

New Squad

Copy linkShare with your friends

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Projectile 3.4","url":"https://daily.dev/posts/projectile-3-4-xdqraspom","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/projectile-3-4-xdqraspom"},"datePublished":"2026-08-13T13:23:17.399Z","dateModified":"2026-08-13T13:23:51.146Z","description":"Projectile 3.4 focuses on polishing features across a series of releases this summer, centered on handling repositories that span multiple checkouts or related...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/dedf722536cd790a73f152e04476db6b?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/dedf722536cd790a73f152e04476db6b?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Meta Redux","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Meta Redux","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/553e6ad4c072454a986660a28a241343","url":"https://daily.dev/sources/metaredux"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/projectile-3-4-xdqraspom","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"devtools,testing","timeRequired":"PT7M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Meta Redux","item":"https://daily.dev/sources/metaredux"},{"@type":"ListItem","position":3,"name":"Projectile 3.4"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/projectile-3-4-xdqraspom#faq","mainEntity":[{"@type":"Question","name":"What's new in Projectile 3.4 for Emacs?","acceptedAnswer":{"@type":"Answer","text":"Projectile 3.4 adds cross-repository navigation features: projectile-switch-worktree (bound to s-p W) lists other git worktrees or Jujutsu workspaces of the current repository, and projectile-switch-sibling-project (s-p n) finds related projects grouped by upstream remote owner. Command history now follows the repository rather than the directory across worktrees, and projectile-run-test-at-point gained support for Ruby, Rust, Elixir, Java, Erlang, and F#. Emacs users tracking Projectile updates like this can follow tool changes on daily.dev."}},{"@type":"Question","name":"Do I need to update my config after upgrading Projectile to 3.4?","acceptedAnswer":{"@type":"Answer","text":"Most existing configs keep working, but a batch of options were renamed in Projectile 3.4: the six projectile-<cmd>-use-comint-mode options merged into one projectile-use-comint-mode, and projectile-per-project-compilation-buffer plus projectile-per-command-compilation-buffer became projectile-compilation-buffer-scope. Old names are still honored with an obsolescence notice. Two options, projectile-tags-file-name and projectile-go-project-test-function, were removed entirely since they only worked at load time. Developers planning an upgrade can check breaking changes like these on daily.dev before updating tooling."}},{"@type":"Question","name":"How does Projectile decide which projects are related to each other in projectile-switch-sibling-project?","acceptedAnswer":{"@type":"Answer","text":"Projectile groups projects by the owner of their upstream git remote rather than comparing directory names, since name-matching only catches obvious cases like rubocop and rubocop-rails while missing unrelated-looking repos under the same organization. To avoid false groupings, an inferred group covering more than a quarter of a user's known projects gets dropped automatically, and projectile-project-groups lets users define explicit groups that are never overridden. Developers customizing tool workflows around monorepo-like setups can dig into details like this on daily.dev."}}]}
```

