Performance: Component library patterns (Headless UI)
MEDIUM IMPACT
This affects page load speed and interaction responsiveness by how UI components are rendered and managed in the DOM.
import { Menu } from '@headlessui/react';
export function Dropdown() {
return (
<Menu>
<Menu.Button className="btn">Menu</Menu.Button>
<Menu.Items className="dropdown-menu">
<Menu.Item>
{({ active }) => (
<a href="#" className={`${active ? 'bg-blue-500 text-white' : ''}`}>Item 1</a>
)}
</Menu.Item>
<Menu.Item>
{({ active }) => (
<a href="#" className={`${active ? 'bg-blue-500 text-white' : ''}`}>Item 2</a>
)}
</Menu.Item>
<Menu.Item>
{({ active }) => (
<a href="#" className={`${active ? 'bg-blue-500 text-white' : ''}`}>Item 3</a>
)}
</Menu.Item>
</Menu.Items>
</Menu>
);
}import React from 'react'; export function Dropdown() { return ( <div className="dropdown"> <button className="btn">Menu</button> <ul className="dropdown-menu"> <li><a href="#">Item 1</a></li> <li><a href="#">Item 2</a></li> <li><a href="#">Item 3</a></li> </ul> </div> ); }
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Bundled styled components | High (many nested nodes) | Multiple per interaction | High (complex styles) | [X] Bad |
| Headless UI with Tailwind | Low (minimal nodes) | Single per interaction | Low (utility classes) | [OK] Good |