Add inline thumbs up/down feedback widget in app navigation#2175
Add inline thumbs up/down feedback widget in app navigation#2175
Conversation
- New AppNavFeedback component with thumbs up/down voting - Optional text feedback after voting - Emits feedback via HyperDX.addAction with vote, comment, page, route, and query - Popover-based UI integrated between Help menu and Team Settings in sidebar - Follows existing patterns: Mantine UI, tabler icons, approved variants Co-authored-by: Mike Shi <mike@hyperdx.io>
|
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
E2E Test Results✅ All tests passed • 156 passed • 3 skipped • 1249s
Tests ran across 4 shards in parallel. |
- Replace popover-based design with inline thumbs up/down directly in the sidebar - Layout: [thumbs up] [thumbs down] How's your experience? [Hide] - After voting, an inline textarea + Submit button appears below - 'Hide' button persists dismissal via localStorage - Collapsed sidebar shows just the thumb icons with a tooltip - Auto-hides after successful submission with a thank you message Co-authored-by: Mike Shi <mike@hyperdx.io>
Co-authored-by: Mike Shi <mike@hyperdx.io>
Gate the feedback UI on !IS_LOCAL_MODE (SDK must be initialized).
For local testing, set localStorage.setItem('hdx-feedback-enabled', 'true')
in the browser console to force-enable the widget.
Co-authored-by: Mike Shi <mike@hyperdx.io>
Mantine's useLocalStorage deserializes with JSON.parse, so a raw
localStorage.setItem('hdx-feedback-enabled', 'true') yields boolean true,
not string 'true'. Changed the hook type to boolean and comparison to
=== true so the override actually works.
Co-authored-by: Mike Shi <mike@hyperdx.io>
Split into two actions: - 'user feedback vote': fired instantly on thumbs up/down click - 'user feedback comment': fired on Submit with the optional comment This ensures the vote is captured even if the user never submits a comment. Co-authored-by: Mike Shi <mike@hyperdx.io>
Co-authored-by: Mike Shi <mike@hyperdx.io>
🟡 Tier 3 — StandardIntroduces new logic, modifies core functionality, or touches areas with non-trivial risk. Why this tier:
Review process: Full human review — logic, architecture, edge cases. Stats
|
PR Review
|
- After submitting feedback, the widget hides for the current session only (useState) instead of permanently (localStorage). It reappears on next page load. The 'Hide' button still persists via localStorage for users who never want to see it. - Use the same navItem/navItemContent/navItemIcon class structure so the thumbs up icon aligns vertically with Help, Team Settings, etc. Co-authored-by: Mike Shi <mike@hyperdx.io>
Renders nothing on error so a bug in the feedback component never breaks the sidebar navigation. Co-authored-by: Mike Shi <mike@hyperdx.io>

Summary
Adds an inline feedback widget in the sidebar navigation that lets users give thumbs up or thumbs down feedback about their in-app experience. The widget renders directly in the sidebar (no flyout/popover) with the layout:
[thumbs up] [thumbs down] Feedback? [Hide].How it works:
user feedback voteaction and reveals an inline textarea + Submit buttonuser feedback commentactionlocalStorage)Visibility:
!IS_LOCAL_MODE)localStorage.setItem('hdx-feedback-enabled', 'true')in the browser consoleImplementation:
AppNavFeedbackcomponent inpackages/app/src/components/AppNav/AppNavFeedback.tsxfeedbackLabelandfeedbackHidestyles toAppNav.module.scssnavItem/navItemContent/navItemIconclass structure for vertical alignment with other nav itemsActionIcon,Textarea,Buttonwith approved variantsIconThumbUp/Down,IconThumbUpFilled/DownFilledScreenshots
Inline feedback — aligned with other nav items:
Inline feedback aligned
After clicking thumbs up — comment form expanded:
Inline feedback with comment
How to test locally or on Vercel
yarn devlocalStorage.setItem('hdx-feedback-enabled', 'true')then refreshlocalStorage.removeItem('feedbackHidden'))References
To show artifacts inline, enable in settings.
Linear Issue: HDX-4126