I don't know much js, but it seems fairly straightforward. Here's some comments:
// create an element with 'tag'
const elem = document.createElement(tag)
// copy properties into the new element one at a time
for (const k in props) {
elem[k] = props[k]
}
// append child elements one at a time
for (const kid of kids) {
elem.appendChild(kid)
}
// and that's it
return elem
Applied recursively, you can make dom elements with very little boilerplate.