Skip to content
← Back to rules

vue/no-deprecated-delete-set Correctness

What it does

Disallow using deprecated $set / $delete (in Vue.js 3.0.0+).

Why is this bad?

In Vue 3, the instance methods $set / $delete and the global Vue.set / Vue.delete were removed. Reactivity is now backed by Proxies, so plain assignment and the delete operator work as expected and these helpers are no longer needed.

Examples

Examples of incorrect code for this rule:

vue
<script>
export default {
  mounted() {
    this.$set(obj, key, value);
    this.$delete(obj, key);
    Vue.set(obj, key, value);
    Vue.delete(obj, key);
  },
};
</script>

Examples of correct code for this rule:

vue
<script>
export default {
  mounted() {
    obj[key] = value;
    delete obj[key];
  },
};
</script>

How to use

To enable this rule using the config file or in the CLI, you can use:

json
{
  "plugins": ["vue"],
  "rules": {
    "vue/no-deprecated-delete-set": "error"
  }
}
ts
import { defineConfig } from "oxlint";

export default defineConfig({
  plugins: ["vue"],
  rules: {
    "vue/no-deprecated-delete-set": "error",
  },
});
bash
oxlint --deny vue/no-deprecated-delete-set --vue-plugin

Version

This rule was added in v1.62.0.

References