April 21, 2026
Monorepo or Monodrama?
Using Changesets in a polyglot monorepo
One tool to rule them all—or spark a turf war
TLDR: An engineer shows how to use Changesets to manage versions across one big, multi‑language codebase, and the comments erupt. Fans celebrate real-world success, others push Nix as the cleaner path, and a new tool called Sampo enters as a simpler but early-stage alternative—teams want versioning that actually works.
Luke Hsiao drops a how-to on using Changesets to wrangle versions in a single repo that houses many languages—a “polyglot monorepo.” Translation: one big code home, many tongues, fewer headaches. He leans on custom scripts and GitHub Actions to make a JavaScript-born tool play nice with Python, Rust, and friends. The pitch: one consistent versioning story across the whole company.
The crowd? Instantly split. One camp cheers: Panos says Changesets has been a lifesaver and wants to see how this scales across languages. Another camp storms in with a banner that basically reads, “Forget that, use Nix.” User sshine argues Nix—a universal package manager—keeps every tool locked in and tidy across projects, sparking the classic dev meme: JS crew vs. Nix wizards. Meanwhile, moltar’s just here for the receipts, asking for more Docker steps like it’s the post-credits scene we were promised.
Then came the plot twist: hanspagel flexes they’re publishing everywhere—npm, PyPI, Maven, crates.io, NuGet—all powered by Changesets, fanning the hype. But Princesseuh drops an indie challenger: sampo, a Changesets-inspired tool with native polyglot support—less hacking, still maturing. Cue the popcorn: is Changesets the pragmatic king, Nix the purity play, or Sampo the up-and-comer with main-character energy?
Key Points
- •Changesets is proposed as a solution to manage per-package versioning and changelogs in a polyglot monorepo.
- •The GitHub Action changesets/action enables custom scripts for versioning and publishing, allowing polyglot workflows despite no native support.
- •The approach assumes per-package semantic versioning and individual CHANGELOG.md files with engineers committing changeset files to define bumps.
- •The article provides a recommended repository structure including .changeset config, docs, pnpm workspace files, language-specific package directories, and Docker assets.
- •The setup targets a private, enterprise GitHub environment and uses just and uv scripts to automate release processes.