> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://fastpix.com/docs/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://fastpix.com/docs/_mcp/server.

# Explore the demo apps

> Two complete, Compose-based sample apps for the FastPix Android Player: an Instagram-style infinite reel feed and a Flipkart-style shop screen with series and shoppable reels.

The FastPix Android Player SDK ships two complete, Compose-based demo apps that show its fast-start features working together in screens shaped like real apps. Open them from **Demo: Infinite reels** and **Demo: Shop reels + series** on the sample app's home screen. Both live in the [sample app on GitHub](https://github.com/FastPix/fastpix-android-player).

\


## Infinite reels (Instagram-style)

A full-screen vertical feed that never ends: one video per page, with the next page of reels fetched as the user nears the end. Each reel carries an Instagram-style overlay with a profile picture, name, Follow, an expandable caption, an audio line, and like, comment, share, and more controls on the right.

The app code only binds `pool.playerAt(page)` to each page and calls `pool.setCurrentIndex(page)` when the pager settles. Everything that makes it fast comes from the pool's configuration:

| What makes it fast                                    | How                                                                   |
| ----------------------------------------------------- | --------------------------------------------------------------------- |
| Swipes land on video, not black                       | `FastPixPlayerPool` with `PrerenderConfig(count = 1, behind = 1)`     |
| The next reels are already buffered                   | `PreloadConfig(count = 3, behind = 1)`                                |
| Swiping back or re-watching plays from disk           | `CacheConfig.enabled()`                                               |
| Start on 250 ms of media, without buffering far ahead | `BufferConfig.FEED`                                                   |
| Each page starts at the quality the last one learned  | One `AbrConfig` and bandwidth estimate across the pool                |
| No decoder setup on every swipe                       | The pool's few players, recycled between pages                        |
| Endless feed                                          | `pool.addToPlaylist(...)` as each new page of reels arrives           |
| One analytics view per reel watched                   | `setAnalyticsConfig(...)` on the pool; pre-rendered pages never count |

For the recipe behind this screen, see [Build video feeds](/docs/android-player/build-video-feeds).

\


## Shop reels and series (Flipkart-style)

A shopping home screen: a row of series across the top and a grid of shoppable reels below it that keeps loading as the user scrolls. It combines all three playback shapes:

* **Tap a reel in the grid.** The reel feed opens on that reel, and the user can swipe on through the whole endless feed, exactly like the infinite reels demo.
* **Tap a series.** The episode plays on top with every episode listed below it. Episodes play on in order, and tapping one jumps to it. This is one `FastPixPlayer` holding the series as a [playlist](/docs/android-player/manage-playlists) (`setPlaylist`), with `PrerenderConfig(count = 1)` so moving to the next episode shows its first frame at once, and `PreloadConfig(count = 2, behind = 1)`.
* **Nothing plays on the home screen, but it makes the next screen fast.** `FastPixPreCacher` warms the first seconds of the reels and series on screen once scrolling settles, so whatever the user taps starts from disk. It warms with the players' own cache and `AbrConfig` settings, so it fetches the rendition they will start on, and it stops while another screen is open. See [Pre-cache videos before a player exists](/docs/android-player/pre-cache-videos).

\


## Things to know about the demos

* Both demos build every item with `PlaylistItem.fastPix(playbackId)`, so the pre-cacher and the players share one disk cache keyed by asset.
* Analytics is off unless you set your FastPix Data workspace in `local.properties` with `fastpix.analyticsWorkspace=your-workspace-id`.
* The content is the sample's public test videos, repeated, served by an in-app stand-in for a backend. Captions, counts, and profile pictures are placeholder data, and likes and follows last only while the screen is open.

\


## What's next

* [Build video feeds](/docs/android-player/build-video-feeds) for the `FastPixPlayerPool` recipes behind these screens.
* [Preload and cache for faster startup](/docs/android-player/preload-and-cache-for-faster-startup) for the buffering, preloading, caching, and pre-rendering levers.
* [Complete integration example](/docs/android-player/complete-integration-example) for a single-player setup with playback, seek preview, resolution control, and analytics.