Blog>
Snippets

Batching Mutations for Performance

Illustrate how multiple mutations can be batched together to minimize the number of network requests and improve application performance.
const batchMutateTodos = async (todos) => {
  const response = await fetch('/api/todos/batch', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify(todos),
  });

  if (!response.ok) {
    throw new Error('Failed to batch update todos');
  }

  return response.json();
};
This function 'batchMutateTodos' sends a batch of todos to be updated or created in a single network request to the server. It makes a POST request to the '/api/todos/batch' endpoint with the todos array. This reduces the number of network requests compared to updating or creating todos individually.
const todos = [{ title: 'Learn React' }, { title: 'Build a Todo App' }];
batchMutateTodos(todos)
  .then(response => console.log('Batch mutation successful', response))
  .catch(error => console.error('Batch mutation failed', error));
Here, 'todos' is an array of todo items meant for batch updating or creation using the previously defined 'batchMutateTodos' function. It then handles the promise returned by the function with success and error callbacks to log the outcome of the batch mutation request.