JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
<pre id="output"></pre>

JavaScript

var tests = [{
    date: '2018-01-01',
    add: {
      d: 1
    }
  },
  {
    date: '2018-01-01',
    add: {
      M: 1
    }
  },
  {
    date: '2018-01-01',
    add: {
      Y: 1
    }
  },
  {
    date: '2018-01-30',
    add: {
      M: 1
    }
  },
  {
    date: '2018-01-30',
    add: {
      M: 2
    }
  },
  {
    date: '2000-02-29',
    add: {
      Y: 1
    }
  },
  {
    date: '2000-02-29',
    add: {
      Y: 4
    }
  },
  {
    date: '2000-01-30',
    add: {
      d: 2
    }
  },
  {
    date: '2018-01-01',
    add: {
      Y: 2,
      M: 3,
      d: 4
    }
  },
  {
    date: '2018-01-01',
    add: {
      Y: 5,
      M: 15,
      d: 40
    }
  },
];

var $output = $("#output");

tests.forEach(x => console.log(x));

tests.forEach(x => $output.html($output.html() + JSON.stringify(x) + " => " + moment(x.date).add(x.add).format('Y-MM-DD') + "\n"));