Content Feed in Mobile App

TRUETECH 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 1 servicesAll 1735 services
Content Feed in Mobile App
Medium
~3-5 business days
FAQ
Our competencies:
Development stages
Latest works
  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1054
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    445

Developing a Content Feed in a Mobile App

The feed is the screen users see most frequently and interact with during every session. Performance is critical here: 60 fps when scrolling through hundreds of cards with images, videos, and variable-length text. A single unoptimized render — and users perceive the app as "sluggish," without understanding why.

Rendering Performance

React Native FlashList. The standard FlatList has a known limitation — JS-side recycling. FlashList by Shopify solves this through the native RecyclerListView protocol. Key parameters: estimatedItemSize (critical for performance — set the average card height, otherwise initial layout calculates incorrectly), overrideItemLayout for cards with known dimensions, drawDistance to manage the rendering buffer.

Diverse card types (photo post, video post, ad block, stories) require getItemType — FlashList creates a separate reuse pool for each type. Without this, the video player from a "video" card ends up in a "text" card.

Jetpack Compose LazyColumn. The key by element id is mandatory — without it, Compose cannot efficiently compare elements during updates. contentType is analogous to getItemType. For images — AsyncImage from Coil 2.x with placeholder and error fallback. rememberLazyListState() preserves scroll position during configuration changes.

Flutter SliverList. SliverList.builder inside CustomScrollView — the correct approach for feeds with diverse content: you can add SliverAppBar with parallax, SliverPersistentHeader for sticky headers. AutomaticKeepAliveClientMixin in video cards — so the player is not recreated when leaving the viewport.

Video Autoplay

The main pain point for video feeds. You need to play the video that's most visible (largest visible area in the viewport) and stop the others.

In React Native: IntersectionObserver-like logic through onViewableItemsChanged in FlatList with viewabilityConfig: { itemVisiblePercentThreshold: 60 }. Determine viewableItems, pass isActive prop to the card. In the card — Video component from react-native-video with paused={!isActive}.

On Android — ExoPlayer (Media3) with RecyclerView.OnScrollListener. PlayerView in each card reuses a single ExoPlayer instance through ExoPlayer.Builder().build() at the adapter level.

From practice: news aggregator, React Native. Feed of 50+ cards, some with video. Stuttered on Android during scrolling — FPS dropped to 30 on Xiaomi Redmi 9. Profiled through Android Studio Profiler: main load on Bridge thread from frequent onScroll events. Added scrollEventThrottle={32} (30 fps for scroll events), replaced FlatList with FlashList — stable 60 fps.

Feed Algorithm and Infinite Scroll

An infinite scroll feed requires handling multiple states: initial load (skeleton), next page load (footer indicator), pull-to-refresh update (top spinner), empty feed (empty state with CTA), load error (retry button).

Prefetch: start loading the next page when 3–5 cards remain to the end of the list. Don't wait for the user to hit the spinner.

Optimistic reactions (likes, reposts): update UI instantly, request goes in the background. On error — rollback with shake animation. Users don't wait for server confirmation for simple actions.

Card Types

Type Technical Features
Photo Lazy load + placeholder, progressive JPEG via FastImage
Video Thumbnail before playback, ExoPlayer / AVPlayer
Gallery Horizontal PageView/ViewPager inside vertical list
Text expandable with "Read more" when exceeding N lines
Link preview OGP data: image, title, domain

Scope of Work

  • Feed with support for diverse card types
  • Infinite scroll with cursor-based pagination
  • Pull-to-refresh
  • Video autoplay based on visibility
  • Likes, reposts, bookmarks with optimistic updates
  • Skeleton loading for first render
  • Algorithmic or chronological feed — as per API requirements
  • Prefetch next page

Timeline

3–5 business days — depends on the number of card types and presence of video content. Feed with text and photos only — 3 days. With video and diverse cards — 4–5 days. Cost calculated individually.