> For the complete documentation index, see [llms.txt](https://docs.firework.com/firework-for-developers/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.firework.com/firework-for-developers/android-sdk/integration-guide/feed-sources/discovery-feed.md).

# Discovery Feed

The Discovery Feed provides curated content from the Firework platform that learns user preferences over time. It's the most exploratory feed type, probing user preferences and recommending videos users are most likely to engage with while maintaining your app's core theme.

## Overview

Discovery Feed uses recommendation algorithms to:

* Learn what users like and dislike over time
* Suggest videos based on user engagement patterns
* Maintain app-specific constraints you configure

## Configuration Options

You can configure the following constraints for your application during registration. Work with the Firework partner success team to help with configuration:

### Available Constraints

* **Locale** - Filter videos by specific locales
* **Country** - Filter by country where video was uploaded
* **Language** - Filter by video language
* **Allow Tags** - Include videos with specific tags
* **Reject Tags** - Exclude videos with specific tags

> **Note:** If no constraints are defined, you may see international content. Constraints can be defined at registration time or configured at runtime.

## Usage

### XML Configuration

```xml
<com.firework.videofeed.FwVideoFeedView
    android:id="@+id/videoFeedView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
```

### Programmatic Configuration

```kotlin
val viewOptions = viewOptions {
    baseOptions {
        feedResource(FeedResource.Discovery)
    }
    layoutOptions {
        feedLayout(FeedLayout.GRID)
        columnCount(3)
    }
}

val videoFeedView = findViewById<FwVideoFeedView>(R.id.videoFeedView)
videoFeedView.init(viewOptions)
```

## Complete Example

```kotlin
class DiscoveryActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_discovery)
        
        val videoFeedView = findViewById<FwVideoFeedView>(R.id.videoFeedView)
        
        val viewOptions = viewOptions {
            baseOptions {
                feedResource(FeedResource.Discovery)
            }
            layoutOptions {
                feedLayout(FeedLayout.GRID)
                columnCount(3)
            }
            titleOptions {
                showFeedTitle(true)
            }
        }
        
        videoFeedView.init(viewOptions)
    }
}
```

## Important Notes

* Discovery Feed requires no parameters (it's a singleton object)
* Content is personalized based on user engagement
* Backend constraints can be configured through your Firework account
* Videos are ordered by recommendation algorithm
* User preferences are learned over time through interactions

## See Also

* [Feed Sources Overview](/firework-for-developers/android-sdk/integration-guide/feed-sources.md) - All available feed types
* [BaseOption Configuration](/firework-for-developers/android-sdk/integration-guide/configuration/base-options.md) - Detailed configuration
* [FwVideoFeedView](/firework-for-developers/android-sdk/integration-guide/configure-video-feed.md) - Video feed widget
* [Layout Options](/firework-for-developers/android-sdk/integration-guide/configuration/layout-options.md) - Feed layout configuration
