PHPackages                             fibtegis/filament-infinite-scroll - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. fibtegis/filament-infinite-scroll

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

fibtegis/filament-infinite-scroll
=================================

Seamless infinite scrolling plugin that replaces pagination in Filament Tables.

v1.0.3(10mo ago)203.3k—4.5%3[2 issues](https://github.com/Fibtegis/filament-infinite-scroll/issues)Apache-2.0PHPPHP ^8.1

Since Jun 22Pushed 10mo agoCompare

[ Source](https://github.com/Fibtegis/filament-infinite-scroll)[ Packagist](https://packagist.org/packages/fibtegis/filament-infinite-scroll)[ Docs](https://github.com/fibtegis/filament-infinite-scroll)[ RSS](/packages/fibtegis-filament-infinite-scroll/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (9)Versions (5)Used By (0)

Filament Infinite Scroll v3
===========================

[](#filament-infinite-scroll-v3)

**Filament Infinite Scroll** is a lightweight plugin that replaces the standard Filament **v3** table pagination with a fluid, auto-loading infinite scroll mechanism. It is compatible with all tables, including Resources, Relation Managers, Widgets, and standalone Table Builders.

As the user approaches the end of a list, more rows are fetched transparently via Livewire, preserving filters, search, and sorting.

> Developed and maintained by **Fibtegis Yazılım Proje ve Danışmanık Hizmetleri LTD. ŞTİ.**

---

Features
--------

[](#features)

- 🔄 **Seamless Integration:** Smooth infinite scroll on any Filament table.
- 🪄 **One-Line Setup:** Enable it by simply adding the `->infinite()` method.
- 🏎️ **Efficient Server Usage:** Low server memory usage as records are fetched in batches.
- 🌗 **Theme-Aware:** Works in both dark and light modes, inheriting your panel's theme.
- 📏 **Auto-Height:** Automatically calculates the table height once and keeps it fixed for the session, making only the table body scrollable.
- ⚙️ **Auto-Reset:** Automatically resets when the user changes filters, search, or sorting.
- 🛠️ **Modern Standards:** Fully PSR-4 compliant, installable via Composer, and auto-discoverable by the panel.

---

Requirements
------------

[](#requirements)

PackageVersionPHP**8.1+**Laravel**10 or 11**Filament**3.0+**LivewireShips with FilamentAlpine.jsShips with Filament---

Installation
------------

[](#installation)

Install the package into your project via Composer:

```
composer require fibtegis/filament-infinite-scroll
```

After installation, it's good practice to clear cached views and plugins:

```
php artisan optimize:clear
```

The plugin is auto-discovered by Filament. No manual registration is needed.

---

Quick Start
-----------

[](#quick-start)

Enabling infinite scroll is just a two-step process:

1. **Use the Trait:**Add the `InteractsWithInfiniteScroll` trait to your respective `ListRecords` page, relation manager, or table widget.

    ```
    // app/Filament/Resources/CustomerResource/Pages/ListCustomers.php

    use Fibtegis\FilamentInfiniteScroll\Concerns\InteractsWithInfiniteScroll;
    use Filament\Resources\Pages\ListRecords;

    class ListCustomers extends ListRecords
    {
        use InteractsWithInfiniteScroll;

        // ...
    }
    ```
2. **Enable the Method:**Inside your `table()` method, chain the `->infinite()` method to your table definition.

    ```
    // app/Filament/Resources/CustomerResource.php

    use Filament\Tables\Table;

    public static function table(Table $table): Table
    {
        return $table
            ->columns([
                // ... your columns ...
            ])
            ->filters([
                // ... your filters ...
            ])
            ->actions([
                // ... your actions ...
            ])
            ->bulkActions([
                // ... your bulk actions ...
            ])
            ->infinite(); // 👈 Just add this line
    }
    ```

That's it! Your table will now automatically load new records when you scroll to the bottom.

---

Configuration
-------------

[](#configuration)

The `infinite()` method accepts a parameter to define the number of records to load per batch.

```
->infinite(perPage: 50) // Load 50 records at a time (default: 25)
```

OptionDefaultDescription`perPage``25`The number of records to fetch in each batch.---

How It Works
------------

[](#how-it-works)

- A `Table::mixin` adds the `->infinite()` method. This method disables native pagination and limits the query based on the current page.
- The `InteractsWithInfiniteScroll` **Trait** tracks the current `$page` number and whether all records have been loaded (`$infiniteEnded`).
- An **Alpine.js** component uses an `IntersectionObserver` to detect when the end of the page is reached.
- When the end of the page is reached, the `loadMore()` method is triggered via Livewire.
- On initial page load, Alpine.js calculates the maximum height of the table container **once** and injects this style into the page's `` tag. This ensures the style is permanent and unaffected by Livewire updates.
- When the records run out (`$infiniteEnded = true`), the observer is automatically stopped.

---

💖 Supporting the Project
------------------------

[](#-supporting-the-project)

If you find this plugin useful and would like to support its future development, you can do so by simply acquiring our company's token. Your support is greatly appreciated and helps us continue to maintain and improve this project.

- **Token:** Fibtegis Token (Solana)
- **Contract:** `CXun4JaKiDLmPHrcMLbB2v9ZEqXztp7SsRtgHpmYpump`
- **Buy/View on GMGN:** [https://gmgn.ai/sol/token/CXun4JaKiDLmPHrcMLbB2v9ZEqXztp7SsRtgHpmYpump](https://gmgn.ai/sol/token/CXun4JaKiDLmPHrcMLbB2v9ZEqXztp7SsRtgHpmYpump?filter=All)

---

License
-------

[](#license)

Published under the Apache-2.0 License. See the `LICENSE` file for details.

© 2025 **Fibtegis Yazılım Proje ve Danışmanık Hizmetleri LTD. ŞTİ.**

---

⚠️ Trait Collision: InteractsWithInfiniteScroll vs AdvancedTables
-----------------------------------------------------------------

[](#️-trait-collision-interactswithinfinitescroll-vs-advancedtables)

If you're using both `InteractsWithInfiniteScroll` and `AdvancedTables` traits in the same class (such as `ListRecords`), method name collisions like `updatedTableFilters`, `updatedTableSearch`, and `updatedTableSortColumn` may occur.

To resolve this, explicitly alias the methods and define a custom implementation that calls both versions:

```
use InteractsWithInfiniteScroll, AdvancedTables {
    InteractsWithInfiniteScroll::updatedTableFilters as infiniteUpdatedTableFilters;
    InteractsWithInfiniteScroll::updatedTableSearch as infiniteUpdatedTableSearch;
    InteractsWithInfiniteScroll::updatedTableSortColumn as infiniteUpdatedTableSortColumn;
    AdvancedTables::updatedTableFilters as advancedUpdatedTableFilters;
    AdvancedTables::updatedTableSearch as advancedUpdatedTableSearch;
    AdvancedTables::updatedTableSortColumn as advancedUpdatedTableSortColumn;
}

public function updatedTableFilters(): void
{
    $this->infiniteUpdatedTableFilters();
    $this->advancedUpdatedTableFilters();
}

public function updatedTableSearch(): void
{
    $this->infiniteUpdatedTableSearch();
    $this->advancedUpdatedTableSearch();
}

public function updatedTableSortColumn(): void
{
    $this->infiniteUpdatedTableSortColumn();
    $this->advancedUpdatedTableSortColumn();
}
```

This ensures both plugins work together without conflict.

Contributors ✨
--------------

[](#contributors-)

Thanks goes to these wonderful people:

  [![](https://avatars.githubusercontent.com/OccTherapist)
**OccTherapist**](https://github.com/OccTherapist)
[💻](#code-OccTherapist "Code")

###  Health Score

38

—

LowBetter than 85% of packages

Maintenance53

Moderate activity, may be stable

Popularity31

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 92.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~7 days

Total

4

Last Release

302d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/119601175?v=4)[Fibteq](/maintainers/Fibtegis)[@Fibtegis](https://github.com/Fibtegis)

---

Top Contributors

[![Fibtegis](https://avatars.githubusercontent.com/u/119601175?v=4)](https://github.com/Fibtegis "Fibtegis (13 commits)")[![OccTherapist](https://avatars.githubusercontent.com/u/28587659?v=4)](https://github.com/OccTherapist "OccTherapist (1 commits)")

---

Tags

lazy loadingpaginationtablesinfinite-scrollfilamentfibtegis

###  Code Quality

TestsPHPUnit

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/fibtegis-filament-infinite-scroll/health.svg)

```
[![Health](https://phpackages.com/badges/fibtegis-filament-infinite-scroll/health.svg)](https://phpackages.com/packages/fibtegis-filament-infinite-scroll)
```

###  Alternatives

[pboivin/filament-peek

Full-screen page preview modal for Filament

253319.6k12](/packages/pboivin-filament-peek)[dotswan/filament-map-picker

Easily pick and retrieve geo-coordinates using a map-based interface in your Filament applications.

124139.3k2](/packages/dotswan-filament-map-picker)[creagia/filament-code-field

A Filamentphp input field to edit or view code data.

58289.3k3](/packages/creagia-filament-code-field)[codewithdennis/filament-select-tree

The multi-level select field enables you to make single selections from a predefined list of options that are organized into multiple levels or depths.

320392.1k17](/packages/codewithdennis-filament-select-tree)[swisnl/filament-backgrounds

Beautiful backgrounds for Filament auth pages

54149.2k6](/packages/swisnl-filament-backgrounds)[tapp/filament-google-autocomplete-field

Filament plugin that provides a Google Autocomplete field

3098.1k](/packages/tapp-filament-google-autocomplete-field)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
