2021-09-30
2512
#vue
Michael Gallagher
1742
Sep 30, 2021 ⋅ 8 min read

Vuex showdown: Mutations vs. actions

Michael Gallagher Living in the vibrant city of Buenos Aires, developing project management software with Teamwork. Modern JS is my passion; Vue, my tool of choice.

Recent posts:

Stop writing REST APIs from scratch in 2025

Writing REST APIs by hand is a thing of the past. Frameworks like tRPC, Fastify, and Hono eliminate boilerplate with schema-driven design, improving speed and safety.

Ikeh Akinyemi
Oct 14, 2025 ⋅ 3 min read
good dx is not enough component libraries featured image

Good DX isn’t enough: Why your component library still fails your team

Great developer experience feels amazing, until your design system starts breaking down. Here’s why good DX isn’t enough and what makes teams scale successfully.

Peter Aideloje
Oct 14, 2025 ⋅ 9 min read
react 19.2 what is new and what to expect

React 19.2 is here: Activity API, useEffectEvent, and more

Discover what’s new in React 19.2, which features long-awaited features like the Activity API and the useEffectEvent Hook.

David Omotayo
Oct 13, 2025 ⋅ 7 min read
ai dev tool power rankings

AI dev tool power rankings & comparison [Oct 2025]

Compare the top AI development tools and models of October September 2025. View updated rankings, feature breakdowns, and find the best fit for you.

Chizaram Ken
Oct 13, 2025 ⋅ 9 min read
View all posts

2 Replies to "Vuex showdown: Mutations vs. actions"

  1. Hi Michael, thanks for this nice article! Vuex is a great tool but I think we are lacking some guidelines to follow to get it right.

    I often read that mutations should be one-liners , or at least remain really simple… Why? The doc describes a mutation as a transaction, this term makes me think that we could write as much code as needed in a single mutation to enforce state coherency.

    Let’s take a simple example: an image with its width and height stored in the state, and a boolean to keep aspect ratio when changing the width or height. Would you advise to write the keep aspect ratio logic in the ´setWidth’ and ´setHeight’ mutations, or move it into the actions?

    Thanks!

  2. Hey Jonathan,

    Glad you like the article, I’ve tried my best not to be overly opinionated about it. I normally use actions, even if it is just wrapping a mutation. The question for me in your example is whether there are 1 or 2 actions/mutations. You could have the 2 you mention, or maybe `setDimensions` which would set both? The reason I say it is that, to me, the width and height will probably always be set together, considering them as separate transactions for either mutations or actions, doesn’t give any additional benefit to traceability, readability or reusability. And this would cover your aspect ratio point also.

    Cheers
    Mike

Leave a Reply