YAMLResume v0.7: Dev Mode

YAMLResume v0.7 introduces a new `dev` mode that provides a real-time, watch-mode experience for resume creation, drastically improving developer experience.

I am super excited to introduce YAMLResume v0.7, a release focused on enhancing your developer experience (DX). The centerpiece of this update is the new dev mode—a feature that brings a seamless, real-time development workflow to your resume creation process.

Dev Mode Workflow

Gone are the days of the tedious edit-save-build cycle. With dev mode, YAMLResume now watches your resume file for changes and automatically rebuilds the PDF in near real-time. This seemingly simple addition transforms the experience of crafting a resume into a fluid, interactive, and much more enjoyable process.

The Friction of the Old Workflow

Before v0.7, creating a resume with YAMLResume, while powerful, involved a repetitive, manual process. You would:

  1. Open your my-resume.yml file in your favorite text editor.
  2. Make a change—perhaps updating a job description or adding a new skill.
  3. Save the file.
  4. Switch to your terminal.
  5. Run the yamlresume build my-resume.yml command.
  6. Wait for the command to finish.
  7. Switch to your PDF viewer and refresh it to see the result.
  8. Notice a small typo or a formatting issue.
  9. Repeat the entire cycle.

This loop, illustrated below, introduced significant friction into the resume creation process. Each change, no matter how small, required a context switch and a manual command execution. This constant interruption breaks the creative flow and slows down the process of refining your resume.

In the world of modern software development, we've become accustomed to tools that provide instant feedback. Web developers have hot-reloading, which updates the browser automatically as they change the code. This tight feedback loop is crucial for productivity and is a core tenet of a great developer experience. We believed that crafting your resume as code should be no different.

The Solution: A Seamless Dev Mode

The yamlresume dev command eliminates the manual build cycle entirely. You start it once, and it works quietly in the background, watching for your changes and rebuilds the resume automatically.

To start the development mode, simply run:

yamlresume dev my-resume.yml

Now, you can open your my-resume.yml file and your PDF side-by-side. Every time you save a change to your YAML file, YAMLResume will automatically detect it and trigger a rebuild. Your PDF viewer will update moments later, showing you the latest version of your resume.

The new workflow is significantly simpler and more efficient:

This instant feedback loop allows you to iterate quickly, experiment with different phrasing, and perfect the layout of your resume without the constant context switching. It makes the process feel less like a chore and more like a creative endeavor.

Here is a live demo of the dev mode in action:

You can watch the youtube demo for more details.

How It Works: A Look Under the Hood

While the dev mode is simple to use, there's some interesting technology working behind the scenes to ensure it's both robust and efficient.

The File Watcher: chokidar

At the heart of the dev mode is a file watcher. A naive approach would be to use Node.js's built-in fs.watch API. However, fs.watch has known limitations and inconsistencies across different operating systems. More importantly, it struggles with certain text editor behaviors.

For example, editors like Vim use an "atomic save" strategy. When you save a file, Vim doesn't directly write to the original file. Instead, it writes the changes to a temporary file (the well-known .swp file), then renames that temporary file to replace the original. This process can confuse basic file watchers, which might miss the change entirely or trigger multiple events.

To provide a reliable experience, we adopted chokidar, a popular and battle-tested file-watching library. Chokidar abstracts away the cross-platform inconsistencies and is specifically designed to handle these tricky editor behaviors gracefully. We've configured it to wait until a file has finished writing before triggering a rebuild, ensuring that we don't try to build a partially saved file.

Preventing Build Storms: coalescifn

What happens if you save the file multiple times in quick succession? A simple implementation might try to start a new build for every single save event. This could lead to a "build storm," where multiple build processes are running concurrently, consuming unnecessary system resources and potentially leading to race conditions.

To solve this, we wrote and open sourced a clever little utility called coalescifn. This utility helps us coalesce multiple calls into one. Here's how it works in the context of dev mode:

  1. When the first file change is detected, we immediately start a build.
  2. If more changes are detected while that build is running, we don't start new builds. We simply make a note that the file has changed again.
  3. Once the initial build is complete, we check if any more changes occurred during that time.
  4. If there were subsequent changes, we run exactly one more build to ensure the final PDF reflects the latest version of the file. If there were no new changes, we do nothing and wait for the next save event.

This strategy ensures that there is only one build running at a time, and it guarantees that the final build always uses the most recent version of your resume file. It's an efficient approach that keeps the dev mode responsive and light on system resources.

Here is a diagram illustrating the coalescing logic:

Advanced Control

The dev command also comes with options to give you more control over the build process, mirroring the flags available on the build command.

Skipping PDF Generation

Sometimes, you might only want to inspect the intermediate LaTeX (.tex) file that YAMLResume generates. This can be useful for debugging or for those who want to manually tweak the LaTeX code. Generating the PDF is the most time-consuming part of the build process. If you don't need it, you can tell dev mode to skip it:

yamlresume dev my-resume.yml --no-pdf

With this flag, dev mode will still watch for changes and regenerate the .tex file instantly, but it won't run the xelatex command. This makes the rebuild process almost instantaneous.

Disabling Validation

As of v0.5, YAMLResume includes a powerful schema validation step that catches potential errors in your resume during building. While this is incredibly useful for ensuring correctness, there might be times when you want to temporarily disable it. For example, you might be in the middle of a large refactoring of your resume structure and don't want to be interrupted by validation errors.

You can disable validation with the --no-validate flag:

yamlresume dev my-resume.yml --no-validate

This allows you to work more freely, with the understanding that you should re-enable validation later to ensure your resume is well-formed.

A New DX for "Resume as Code"

The introduction of dev mode is more than just a new feature; it's a step towards fulfilling the true promise of "Resume as Code." It elevates the experience from a static, command-line-driven process to a dynamic, interactive one that feels much more like modern software development.

You might be used to npm run build and npm run dev in the past? YAMLResume now has the same workflow built in.

By closing the feedback loop, we're making it easier and faster for you to create beautiful, professional resumes. We believe this will encourage more experimentation and allow you to focus on what truly matters: the content of your resume and how it tells your professional story.

We invite you to update to YAMLResume v0.7 and experience the new dev mode for yourself.

  • Install or update to the latest version: npm install -g yamlresume@latest
  • Try it out with your existing resume: yamlresume dev my-resume.yml
  • Join our community on GitHub to share your feedback, ask questions, or contribute to the future of YAMLResume.

We're committed to building the best possible developer experience for resume creation, and we can't wait to hear what you think of this new release!

Written by

Xiao Hanyu

At

Sat Aug 30 2025