Skip to content

feat: remove tags from UI and backend (POLY-77)#83

Merged
evan-taylor merged 1 commit intodevfrom
feature/POLY-77-remove-tags
Apr 16, 2026
Merged

feat: remove tags from UI and backend (POLY-77)#83
evan-taylor merged 1 commit intodevfrom
feature/POLY-77-remove-tags

Conversation

@cole-hackman
Copy link
Copy Markdown
Collaborator

@cole-hackman cole-hackman commented Apr 16, 2026

Linear: POLY-77

Summary

Removes the tags feature entirely from both the UI and backend. Tags are redundant now that search and category filtering provide sufficient discoverability.

Changes

Backend

  • Removed tags field from listings schema and by_tag index
  • Removed TAG_CONSTRAINTS, validateTags(), normalizeSearchTags() from listings.ts
  • Removed tags arg from createListing, updateListing, internalCreateListing, internalUpdateListing, getListings, searchAndFilterListings
  • Removed tags from PublicListing type and mapping in savedListings.ts

Frontend

  • Deleted TagInput and TagPicker components
  • Removed tags section from Create Listing and Edit Listing forms
  • Removed tag chips from listing detail screen
  • Removed tags filter chip and TagPicker from FilterBar
  • Removed selectedTags state, tag URL params, and tag query args from home screen
  • Removed tags from ListingCard type

Shared

  • Removed tags from Listing and CreateListingInput in packages/shared

Tests

  • Removed 12 tag-specific test cases (normalization, dedup, max length, empty tags, tag filtering, tag pagination)
  • Updated baseArgs fixtures, createTestListing helper, and schema field assertions

Testing

  • 137 tests pass, lint clean

Made with Kiro

Summary by CodeRabbit

  • Refactor
    • Removed tag support from listing creation and editing—users can no longer add or manage tags on listings
    • Removed tag-based filtering and search capabilities from the marketplace
    • Tags no longer appear on listing detail pages
    • Simplified the overall search, filtering, and listing management experience

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 16, 2026

📝 Walkthrough

Walkthrough

This PR removes tag functionality across the entire codebase. Changes span backend schema and Convex functions, shared type definitions, test coverage, and frontend UI components, eliminating tag validation, filtering, storage, and display capabilities throughout the application.

Changes

Cohort / File(s) Summary
Backend Schema & Core
backend/convex/schema.ts, backend/convex/listings.ts, backend/convex/savedListings.ts
Removed tags field from listings table schema, deleted by_tag index, removed exported TAG_CONSTRAINTS constant, eliminated tag validation/normalization helpers, removed tags from all query/mutation arguments, and updated PublicListing type to exclude tags.
Backend Tests
backend/convex/__tests__/listings-pagination.test.ts, backend/convex/__tests__/listings.test.ts, backend/convex/__tests__/schema.test.ts, backend/convex/__tests__/testUtils.ts
Removed all tag-related test cases covering pagination filtering, normalization, constraints, and schema validation; updated baseArgs and createTestListing to eliminate default/optional tags parameter.
Shared Types
packages/shared/types/listing.ts
Removed optional tags field from Listing and CreateListingInput interfaces.
Frontend Tag Components
frontend/components/TagInput.tsx, frontend/components/TagPicker.tsx
Deleted entire TagInput and TagPicker component implementations including state management, validation logic, UI rendering, and styling.
Frontend Listing Pages
frontend/app/listings/new.tsx, frontend/app/listings/[id]/edit.tsx, frontend/app/listings/[id].tsx
Removed tag input UI from create/edit screens; removed tag chip display and tag-based feed navigation from listing detail page.
Frontend Search & Filter
frontend/app/(tabs)/index.tsx, frontend/components/FilterBar.tsx, frontend/components/ListingCard.tsx
Removed tag-based query filtering, updated FilterBar props to eliminate tag selection, refactored grid rendering with buildWebRows helper, removed selectedTags state and handlers, updated empty-state guidance text, removed tag chips from ListingCard type.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

Possibly related PRs

Suggested reviewers

  • SamanSP1386

Poem

Hop away, dear tags, to lands afar! 🐰
FilterBars now lighter, listing cards shine bright,
Schema simplified, searches take flight,
A codebase unburdened—fresh as morning dew! ✨

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically describes the main change: removing tags feature from both UI and backend, with a reference to the associated issue ticket.
Description check ✅ Passed The PR description includes all required template sections: linked issues (Linear: POLY-77), comprehensive summary of changes across backend/frontend/shared, clear testing information showing 137 tests pass and lint clean, and follows conventional commit format.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/POLY-77-remove-tags

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 16, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
poly-buys Ready Ready Preview, Comment Apr 16, 2026 2:32pm

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
frontend/app/(tabs)/index.tsx (1)

35-52: Use a stable row key here.

rowKey changes whenever the last partial row gets more items after a "load more", so React remounts that whole row and its cards unnecessarily. startIndex is stable for this append-only grid.

Proposed diff
   for (let startIndex = 0; startIndex < items.length; startIndex += size) {
     const rowItems = items.slice(startIndex, startIndex + size);
-    const rowKey = rowItems.map((item) => item._id).join('-');
+    const rowKey = `row-${startIndex}`;
     const fillerKeys: string[] = [];
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@frontend/app/`(tabs)/index.tsx around lines 35 - 52, The current buildWebRows
function uses a rowKey derived from concatenating item._id values which changes
when items are appended, causing React to remount rows; change the row key to a
stable identifier such as startIndex (or a combination like `row-${startIndex}`)
when pushing rows in buildWebRows so that the key remains stable across "load
more" appends and prevents unnecessary remounting of the row and its cards.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@frontend/app/`(tabs)/index.tsx:
- Around line 35-52: The current buildWebRows function uses a rowKey derived
from concatenating item._id values which changes when items are appended,
causing React to remount rows; change the row key to a stable identifier such as
startIndex (or a combination like `row-${startIndex}`) when pushing rows in
buildWebRows so that the key remains stable across "load more" appends and
prevents unnecessary remounting of the row and its cards.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 6e1b0f5e-a443-4c01-b9be-28917abc9c0f

📥 Commits

Reviewing files that changed from the base of the PR and between 3bdb15e and 0195763.

📒 Files selected for processing (16)
  • backend/convex/__tests__/listings-pagination.test.ts
  • backend/convex/__tests__/listings.test.ts
  • backend/convex/__tests__/schema.test.ts
  • backend/convex/__tests__/testUtils.ts
  • backend/convex/listings.ts
  • backend/convex/savedListings.ts
  • backend/convex/schema.ts
  • frontend/app/(tabs)/index.tsx
  • frontend/app/listings/[id].tsx
  • frontend/app/listings/[id]/edit.tsx
  • frontend/app/listings/new.tsx
  • frontend/components/FilterBar.tsx
  • frontend/components/ListingCard.tsx
  • frontend/components/TagInput.tsx
  • frontend/components/TagPicker.tsx
  • packages/shared/types/listing.ts
💤 Files with no reviewable changes (13)
  • frontend/app/listings/new.tsx
  • backend/convex/tests/schema.test.ts
  • packages/shared/types/listing.ts
  • frontend/app/listings/[id]/edit.tsx
  • frontend/components/ListingCard.tsx
  • backend/convex/tests/listings-pagination.test.ts
  • backend/convex/tests/testUtils.ts
  • frontend/app/listings/[id].tsx
  • backend/convex/savedListings.ts
  • backend/convex/tests/listings.test.ts
  • frontend/components/TagInput.tsx
  • frontend/components/TagPicker.tsx
  • backend/convex/schema.ts

@evan-taylor evan-taylor merged commit 1cfeeec into dev Apr 16, 2026
4 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants