Amazing work man. Here are a few suggestions : i. you should use a counter as the id of the blocks and increment it whenever a new block is created, because whenever elements are deleted from the beginning, the block${blocks.length + 1} sets the id of the new block with an id which could already be there in the array. suppose, block.length = 2, currently block ids are : block1, block2 if you delete block1, block.length=1, if you insert again, the new id will be block${1 + 1}`-> block2, which already exists. ii. whenever re-rendering the components you can use a setTimeout for each component render, so that paint flashing can be seen slowly.