--- title: Controlled Flow --- # Taking Control of Vue Flow Vue Flow is designed to be flexible and customizable, allowing you to take control of the flow of your application. By default, Vue Flow will apply changes automatically, so you don't have to worry about it. ::: warning This API is subject to change in the next major release where changes will *most likely* not be applied automatically anymore. ::: Though, there are cases where you want to take control of changes and apply them manually after some processing and validations for example. This guide will show you how to take control of Vue Flow and apply these changes manually. ## The `applyChanges` option The `applyChanges` option is a flag that can be passed to the `VueFlow` component to enable or disable automatic change handling. By setting this option to `false`, we tell Vue Flow to not apply changes automatically anymore. ```vue ``` ## `onNodesChange` / `onEdgesChange` events Vue Flow provides two events that can be used to listen to changes on nodes and edges. These events are emitted regardless of the `applyChanges` option, so you can use them to listen to changes even if you have automatic changes enabled. ```vue ``` ## `applyNodeChanges` / `applyEdgeChanges` Vue Flow provides two functions that can be used to apply changes manually. These functions are available from the `useVueFlow` composable. ```vue ``` ## Validating Changes Using what we just learned, we can now take control of changes and apply them manually. In this example, we will first disable automatic change handlers with `applyChanges`, then use the `onNodesChange` event to listen to changes and validate delete changes and, if they are valid, use `applyNodeChanges` to apply them. ```vue ```