Feature Requests Screen
Full-screen interactive Feature Requests board and proposal submission screen.
Renders a searchable, filterable list of community feature proposals with live vote counters, status badges, author avatars, and an interactive Floating Action Button to draft new requests.
Key Behaviors & Architecture
Debounced Search: Free-text search matching titles and descriptions, debounced at ~350 ms.
Version Filter: Top app bar dropdown menu that filters requests by milestone release (AppVersion).
Optimistic Upvoting: Vote pill immediately animates count increment/decrement and automatically reconciles with server response or reverts on failure. Users cannot vote on their own requests (FeatureRequestItem.isOwnRequest).
New Request Bottom Sheet: Bottom sheet modal allowing users to draft and submit new proposals (FeatureRequestDraft). Handles moderation feedback (FeatureRequestSubmissionResult.pending).
Detail & Profile Sheets: Tapping a card opens FeatureRequestDetailSheet for discussions and replies, while tapping user avatars opens UserProfileSheet.
Remote Theming & Feature Gating: Automatically wrapped in SdkSurface with SdkFeature.FEATURE_REQUESTS.
Example Integration
@Composable
fun CommunityFeedbackTab(
client: FeedbackClient,
userTokenStore: UserTokenStore
) {
FeatureRequestsScreen(
client = client,
userToken = userTokenStore.token,
modifier = Modifier.fillMaxSize()
)
}Screenshots
| Feature Requests | Submit a Request |
|---|---|
![]() | ![]() |
Parameters
Shared FeedbackClient instance used for network queries and mutations.
Stable anonymous user token from UserTokenStore used to track vote state and ownership.

