Feature Parity Check
Systematic verification that a feature is complete, consistent, and native across all platforms.
When to Use
- After completing a feature implementation
- When user says "verify parity", "check all platforms", "sync feature", or "feature-parity-check"
- Before marking any multi-platform feature as done
Verification Workflow
Copy this checklist and update as you progress:
Feature: [NAME]
Status: In Progress
Phase 1 - Discovery
- [ ] Web implementation reviewed
- [ ] Mobile implementation reviewed
- [ ] All functionality catalogued
Phase 2 - Native Verification
- [ ] Web Desktop: Proper desktop patterns
- [ ] Web Mobile: Touch-friendly, responsive
- [ ] iOS: Native components (SF Symbols, native sheets, haptics)
- [ ] Android: Native components (Material Icons, native patterns)
Phase 3 - Functionality Parity
- [ ] Feature matrix completed
- [ ] All gaps identified and fixed
Phase 4 - API Consistency
- [ ] Single API endpoint for each operation
- [ ] No local business logic duplication
- [ ] Constants synced (mobile/constants/options.ts ↔ web/src/types/index.ts)
Phase 5 - Sister Functionality Audit
- [ ] Related UI touchpoints identified
- [ ] All related views updated
- [ ] Cross-references working
Phase 1: Discovery
Goal: Understand EVERYTHING each platform does before making changes. Never lose functionality.
Step 1.1: Identify All Implementation Files
Search for the feature across both codebases:
# Web implementation
rg -l "feature-keyword" web/src/
# Mobile implementation
rg -l "feature-keyword" mobile/
# API routes
rg -l "feature-keyword" web/src/app/api/
Step 1.2: Read and Document Each Implementation
For each file found, document:
- What actions/operations it supports
- What data it displays
- What user interactions it handles
- Any platform-specific behaviors
Step 1.3: Create Functionality Inventory
## [Feature Name] Functionality Inventory
### Operations Found
| Operation | Web | Mobile | API Endpoint |
|-----------|-----|--------|--------------|
| Create X | ✓ | ✓ | POST /api/x |
| Edit X | ✓ | ✗ | PUT /api/x |
| Delete X | ✗ | ✓ | DELETE /api/x|
### Data Displayed
| Data Point | Web | Mobile |
|------------|-----|--------|
| Title | ✓ | ✓ |
| Thumbnail | ✓ | ✗ |
### Missing in Web: [list]
### Missing in Mobile: [list]
CRITICAL: If one platform has functionality the others don't, ADD it to the others—never remove it.
Phase 2: Native Verification
Goal: Each platform must feel native, not like a cross-platform wrapper.
2.1 Web Desktop Checklist
2.2 Web Mobile Checklist
2.3 iOS Checklist
2.4 Android Checklist
Red Flags (Fix Immediately)
- ❌ Custom JS-drawn bottom tabs (use
expo-router/unstable-native-tabs)
- ❌ Emoji as icons
- ❌ Heavy custom styling overriding platform defaults
- ❌ JS-based animations instead of
react-native-reanimated
- ❌ Manual safe area padding on native components
Phase 3: Functionality Parity
Goal: Identical capabilities across all platforms.
3.1 Build Feature Matrix
| Capability |
Web Desktop |
Web Mobile |
iOS |
Android |
Notes |
| View list |
✓ |
✓ |
✓ |
✓ |
|
| Create new |
✓ |
✓ |
✗ |
✗ |
NEEDS FIX |
| Edit |
✓ |
✓ |
✓ |
✓ |
|
| Delete |
✓ |
✗ |
✓ |
✓ |
NEEDS FIX |
| Filter |
✓ |
✓ |
✗ |
✗ |
NEEDS FIX |
3.2 Fix All Gaps
For each gap:
- Identify the reference implementation (usually web)
- Implement the missing functionality
- Ensure it uses the same API endpoint
- Verify the UI is native to that platform
3.3 Edge Cases to Check
- Empty states (no data)
- Loading states
- Error states
- Offline behavior
- Permission denied states
- Data validation feedback
Phase 4: API Consistency
Goal: All platforms use the same backend logic.
4.1 Verify Single Source of Truth
For each operation in the feature:
Operation: [e.g., "Update profile photo"]
✓ CORRECT: All platforms call → PUT /api/users/me/photo
✗ WRONG: Mobile has local logic, Web calls API
4.2 Check for Logic Leakage
Search for business logic that should be server-side:
# Check mobile for embedded logic
rg -A5 "supabase\.(from|rpc)" mobile/
rg "\.update\(|\.insert\(|\.delete\(" mobile/
# These should be API calls, not direct DB operations
Rule: Mobile should ONLY call web/src/app/api/ endpoints via mobile/lib/api.ts.
4.3 Constants Sync
Compare and sync:
mobile/constants/options.ts
web/src/types/index.ts
Any shared constants (dropdown options, enums, validation rules) must be identical.
Phase 5: Sister Functionality Audit
Goal: Find and update all related UI that touches this feature.
5.1 Identify Related Touchpoints
Search for references to the feature's:
- Data types
- API endpoints
- State/store keys
- Component names
# Find all files referencing this data type
rg "EventType|Event\[|events\." --type ts --type tsx
# Find all components that might display this data
rg -l "event" web/src/components/
rg -l "event" mobile/components/
5.2 Common Sister Functionalities
| If you changed... |
Also check... |
| Events |
Calendar views, notifications, home feed, search results |
| User profiles |
Match cards, chat headers, review displays |
| Photos/Gallery |
Profile previews, thumbnails, chat image sends |
| Settings/Preferences |
Any feature that reads those preferences |
| Notifications |
Badge counts, notification lists, push handlers |
5.3 Update All Related Views
For each related view found:
- Verify it reflects the new/changed functionality
- Update if needed
- Apply same parity check (all 4 platforms)
Completion Criteria
Before marking complete, verify ALL of these:
FINAL CHECKLIST
Functionality
- [ ] All operations work on Web Desktop
- [ ] All operations work on Web Mobile
- [ ] All operations work on iOS
- [ ] All operations work on Android
- [ ] No functionality was lost from any platform
Native Feel
- [ ] Web uses appropriate desktop/mobile patterns
- [ ] iOS uses SF Symbols and native components
- [ ] Android uses Material Icons and native patterns
- [ ] No platform feels like a wrapped web app
API Consistency
- [ ] All platforms call the same API endpoints
- [ ] No business logic in client code
- [ ] Constants are synced
Sister Features
- [ ] All related UI touchpoints identified
- [ ] All related views updated
- [ ] No orphaned references to old implementations
Quick Reference: Project Locations
| Type |
Path |
| Web pages |
web/src/app/ |
| Web components |
web/src/components/ |
| Web API routes |
web/src/app/api/ |
| Web services |
web/src/lib/services/ |
| Mobile screens |
mobile/app/ |
| Mobile components |
mobile/components/ |
| Mobile API client |
mobile/lib/api.ts |
| Mobile constants |
mobile/constants/options.ts |
| Web types/constants |
web/src/types/index.ts |
Reporting Format
After completing verification, provide summary:
## Feature Parity Report: [Feature Name]
### Status: ✓ VERIFIED / ⚠️ ISSUES FOUND
### Changes Made
- [List all fixes applied]
### Platform Status
| Platform | Status | Notes |
|----------|--------|-------|
| Web Desktop | ✓ | |
| Web Mobile | ✓ | |
| iOS | ✓ | |
| Android | ✓ | |
### API Verification
- Endpoints used: [list]
- Business logic location: [path]
### Sister Features Updated
- [List any related features that were also updated]
### Remaining Issues (if any)
- [List anything that couldn't be fixed automatically]