eq_ui Component Library Gap Analysis
This report maps every CSS feature that eq_ui depends on against what the Blitz rendering engine currently supports. The goal is to give the Blitz team a clear picture of what is missing for full Tailwind support, based on a real-world Dioxus component library.
eq_ui is a Dioxus 0.7.3 component library with around 32 atoms, 6 molecules, and 4 organisms, styled entirely with Tailwind CSS utility classes. The only external CSS is a single index.css file containing custom keyframes and a CSS Houdini property definition.
This analysis is based on source code review of all eq_ui components, the Blitz GitHub repository and issue tracker (as of 14th April 2026), and Discord conversations with Nico Burns and Evan Almloff.
Please if any mismatch or failures from my side to address parts of features to be considered with a pinch of salt since nor I am an expert with aforementioned technology but at the same time still on its learning path.
Critical Blockers
The hover media query problem
Status: Confirmed not supported. Tracked in Blitz issue number 252.
This is the single biggest blocker. Tailwind v4 wraps every hover utility inside a media query that checks whether the device supports hover. The generated CSS looks like this:
.hover\:bg-amber-500 {
&:hover {
@media (hover: hover) {
background-color: var(--color-amber-500);
}
}
}
Because Blitz does not recognize the @media(hover: hover) query, none of these styles apply. This means that no hover effect works at all in eq_ui when rendered through Blitz, even though Blitz does internally support the hover pseudo-class through its set_hover_to mechanism in document.rs.
Every single interactive component in eq_ui uses hover styles. Buttons change background color on hover. Cards lift with shadow on hover. Table rows highlight on hover. Navigation items change text color on hover. Links show underlines on hover. The list goes on across all 30+ interactive components.
The fix would specifically be recognizing @media(hover: hover) and treating it as true, since Blitz does support pointer-based hover state tracking internally. (or so I understood it does after looking in the code, but I cannot be sure)
Note on non-CSS dependencies
This section is not a Blitz CSS gap, but is worth mentioning for completeness since it affects how eq_ui will need to adapt for Blitz rendering.
eq_ui currently uses document::eval() from the Dioxus document API in five components (EqTab, EqRadioGroup, EqTree, EqAccordion, EqGrid) for programmatic focus management and clipboard access. Since Blitz intentionally has no JavaScript engine, this is expected behavior, not a missing feature. The eq_ui library will need to be refactored to use platform-native APIs instead. The upcoming web-sys-x support in Dioxus desktop, which provides cross-platform web APIs without a JS engine, is the likely migration path.
Quite in the same way, EqGrid’s virtual scrolling depends on get_client_rect() and get_scroll_offset() for DOM measurement. Whether these Dioxus platform APIs work under Blitz is a Dioxus integration question rather than a CSS support question, but it is worth verifying since virtual scrolling is essential for large datasets.
High Priority Issues
1 - CSS TRANSITIONS
Status: Unknown. Since no issue was found tracking transition support.
2 - POSITION STICKY
Status: Unknown. Did not find any issue tracking this either.
eq_ui uses sticky positioning in two important places
Without sticky positioning, grid headers will scroll out of view and users will lose context about which column they are looking at. The page header will also scroll away.
3 - KEYFRAME ANIMATIONS
Status: If I understood from the issues 313 and 320 it is partially working
eq_ui uses two animations:
4 - CSS transforms
Status: According to what I found it is touched on issue 317. Issue 280 is open ( the hit testing for transformed elements one )
eq_ui uses transforms in several places:
I think the open hit testing issue (issue 280) would cause problems with carousel navigation buttons and any clickable element that has a transform applied.
Other issues that I believe can be seen as important but maybe lower priority :
eq_ui Component Library Gap Analysis
This report maps every CSS feature that eq_ui depends on against what the Blitz rendering engine currently supports. The goal is to give the Blitz team a clear picture of what is missing for full Tailwind support, based on a real-world Dioxus component library.
eq_ui is a Dioxus 0.7.3 component library with around 32 atoms, 6 molecules, and 4 organisms, styled entirely with Tailwind CSS utility classes. The only external CSS is a single index.css file containing custom keyframes and a CSS Houdini property definition.
This analysis is based on source code review of all eq_ui components, the Blitz GitHub repository and issue tracker (as of 14th April 2026), and Discord conversations with Nico Burns and Evan Almloff.
Please if any mismatch or failures from my side to address parts of features to be considered with a pinch of salt since nor I am an expert with aforementioned technology but at the same time still on its learning path.
Critical Blockers
The hover media query problem
Status: Confirmed not supported. Tracked in Blitz issue number 252.
This is the single biggest blocker. Tailwind v4 wraps every hover utility inside a media query that checks whether the device supports hover. The generated CSS looks like this:
Because Blitz does not recognize the @media(hover: hover) query, none of these styles apply. This means that no hover effect works at all in eq_ui when rendered through Blitz, even though Blitz does internally support the hover pseudo-class through its set_hover_to mechanism in document.rs.
Every single interactive component in eq_ui uses hover styles. Buttons change background color on hover. Cards lift with shadow on hover. Table rows highlight on hover. Navigation items change text color on hover. Links show underlines on hover. The list goes on across all 30+ interactive components.
The fix would specifically be recognizing @media(hover: hover) and treating it as true, since Blitz does support pointer-based hover state tracking internally. (or so I understood it does after looking in the code, but I cannot be sure)
Note on non-CSS dependencies
This section is not a Blitz CSS gap, but is worth mentioning for completeness since it affects how eq_ui will need to adapt for Blitz rendering.
eq_ui currently uses document::eval() from the Dioxus document API in five components (EqTab, EqRadioGroup, EqTree, EqAccordion, EqGrid) for programmatic focus management and clipboard access. Since Blitz intentionally has no JavaScript engine, this is expected behavior, not a missing feature. The eq_ui library will need to be refactored to use platform-native APIs instead. The upcoming web-sys-x support in Dioxus desktop, which provides cross-platform web APIs without a JS engine, is the likely migration path.
Quite in the same way, EqGrid’s virtual scrolling depends on get_client_rect() and get_scroll_offset() for DOM measurement. Whether these Dioxus platform APIs work under Blitz is a Dioxus integration question rather than a CSS support question, but it is worth verifying since virtual scrolling is essential for large datasets.
High Priority Issues
1 - CSS TRANSITIONS
Status: Unknown. Since no issue was found tracking transition support.
transition-colors is the most common, applied to buttons, inputs, links, and anything that changes color on hover or focus.
transition-transform is used for button lift effects and chevron rotation in trees and accordions.
transition-opacity is used for fade effects and overlay visibility.
transition-all is used on cards and elements with complex multi-property hover states.
transition with a bracket value targeting grid-template-rows is used for the accordion expand and collapse animation. This is a particularly important one because the accordion body animates its height by transitioning grid rows from 0fr to 1fr.
transition with a bracket value targeting width is used for the progress bar fill animation.
2 - POSITION STICKY
Status: Unknown. Did not find any issue tracking this either.
eq_ui uses sticky positioning in two important places
Without sticky positioning, grid headers will scroll out of view and users will lose context about which column they are looking at. The page header will also scroll away.
3 - KEYFRAME ANIMATIONS
Status: If I understood from the issues 313 and 320 it is partially working
eq_ui uses two animations:
4 - CSS transforms
Status: According to what I found it is touched on issue 317. Issue 280 is open ( the hit testing for transformed elements one )
eq_ui uses transforms in several places:
I think the open hit testing issue (issue 280) would cause problems with carousel navigation buttons and any clickable element that has a transform applied.
Other issues that I believe can be seen as important but maybe lower priority :
::after pseudo-element: Unknown Status. Medium priority. Affects EqTab.
::placeholder pseudo-element: Unknown Status . Medium priority. Affects all input components.
focus:ring styles: Unknown Status. Medium priority. Affects all focusable elements.
backdrop-filter blur: Unknown Status. Medium priority. Affects EqHeader.
:nth-child(even): Unknown Status. Low priority. Affects EqGrid striped rows.
:last-child: Unknown. Low priority. Affects EqGrid borders.
Scrollbar styling: Unknown. Low priority. Affects scrollable containers.