Product Catalog with Filters for Mobile App

NOVASOLUTIONS.TECHNOLOGY is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1All 1735 services
Product Catalog with Filters for Mobile App
Medium
~3-5 days
Frequently Asked Questions

Our competencies:

Development stages

Latest works

  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    495

Development of Product Catalog with Filters in Mobile Application

Catalog with filters — not "screen with list and checkboxes". This is managing state of several independent dimensions (category, price, brand, availability, rating) that must apply instantly, persist between sessions and not break deep links. This is where most teams stumble — not on layout, but on state architecture.

Typical issues

Filter state loss. User selected three filters, navigated to product card, returned — catalog reset. Classic. In React Native happens when filters stored in local state of screen component, and Navigator unmounts it on transition. Solution: extract filters to global store — Zustand, Redux Toolkit or Recoil. On Flutter — InheritedWidget or Riverpod's StateNotifierProvider, living above Navigator in widget tree.

Performance with large catalog. FlatList in React Native starts jerking at 500+ products with images if not configured with getItemLayout (fixed cell height eliminates recalculation), windowSize not set (default 21 — this is 10 screens above and below viewport, for heavy cells lower to 5–7), and FlashList from Shopify not connected instead of standard FlatList. FlashList uses cell reuse at JS level, giving real performance boost on mid-range Android.

On Android with Jetpack Compose — LazyVerticalGrid with key by product id and rememberLazyGridState to restore scroll position. Images via Coil with AsyncImage and memoryCachePolicy = CachePolicy.ENABLED.

Filter implementation. Most labor-intensive — not rendering filters, but applying them. If server-side filtering, each filter change must debounce (300–500 ms), cancel previous request (AbortController in RN, CancellationToken or Job.cancel() in Android coroutines) and show skeleton instead of empty screen during loading.

For client-side filtering (whole catalog preloaded) use memoization: useMemo / useCallback in RN, remember { derivedStateOf {} } in Compose. Without this each rerender recalculates 500 products by all active filters.

Filter architecture

FilterState {
  categories: Set<string>
  priceRange: { min: number, max: number }
  brands: Set<string>
  inStock: boolean
  sortBy: 'price_asc' | 'price_desc' | 'rating' | 'new'
}

Such structure easily serializes to URL query params for deep linking and AsyncStorage/SharedPreferences for persistence. Deep link like myapp://catalog?category=shoes&brand=nike&price_max=5000 fully restores filter state on open.

Components and UX

Implement filters in bottom sheet (not full-screen modal, so user sees catalog context). In React Native — @gorhom/bottom-sheet with snapPoints. Show badge with number of active filters on Filters button.

Active filter chips above product list with ability to delete each — mandatory element. Without them user doesn't understand why sees 3 products from 500.

Sort — separate ActionSheet or segmented control, don't mix with filters.

Case from practice: clothing e-commerce, React Native + Redux Toolkit. Filter by size + color + brand. After applying filters app hung for 800 ms — recalculation happened synchronously in main thread on each checkbox tap. Reworked: filter application via createSelector with reselect, debounce 200 ms on any parameter change, computation extracted to useTransition (React 18) — interface stopped blocking.

Grid vs list

Provide both modes with choice saved in AsyncStorage. In grid — numColumns={2} with dynamic card width calculation via Dimensions.get('window').width. On tablet auto-switch to 3–4 columns.

What's included

  • Catalog screen with LazyList/FlatList/LazyVerticalGrid
  • Bottom sheet with filters: categories, price range (RangeSlider), multi-select, toggles
  • Active filter chips with ability to clear
  • Sort with choice persistence
  • Grid/list view toggle
  • API integration: debounce, request cancellation, skeleton loading
  • Pagination or infinite scroll in catalog
  • Filter state persistence between sessions
  • Deep linking to catalog with preset filters

Timeline

3–5 working days — depends on number of filter types, server or client filtering and product card complexity. Cost calculated individually after analyzing requirements and API structure.