This is closely related to: Reach the same performance as static website with dynamic tree. Performance considerations should guide if we actually want this or not.
No more need for:
on
for (const h of elem.querySelectorAll('.h')) {
Article.tsx
now that we have separate headers, we can just inject it one by one.Bibliography: