Download the PHP package packstub/filament-session-replay without Composer

On this page you can find all versions of the php package packstub/filament-session-replay. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package filament-session-replay

Filament Session Replay

![Filament Session Replay — watch what happened, inside your own panel](https://raw.githubusercontent.com/packstub/art/main/filament-session-replay/banner.jpg) [![Latest Version on Packagist](https://img.shields.io/packagist/v/packstub/filament-session-replay.svg?style=flat-square)](https://packagist.org/packages/packstub/filament-session-replay) [![Tests](https://img.shields.io/github/actions/workflow/status/packstub/filament-session-replay/tests.yml?branch=main&label=tests&style=flat-square)](https://github.com/packstub/filament-session-replay/actions/workflows/tests.yml) [![Total Downloads](https://img.shields.io/packagist/dt/packstub/filament-session-replay.svg?style=flat-square)](https://packagist.org/packages/packstub/filament-session-replay) [![License](https://img.shields.io/packagist/l/packstub/filament-session-replay.svg?style=flat-square)](https://github.com/packstub/filament-session-replay/blob/main/LICENSE.md) [![Sponsor](https://img.shields.io/badge/sponsor-%E2%9D%A4-ea4aaa?style=flat-square&logo=githubsponsors&logoColor=white)](https://github.com/sponsors/icaliman)

Session replay inside your Filament panel. "The form did nothing when I clicked save" becomes a replay you watch next to the user it belongs to, with the failed Livewire request, the JavaScript error and the rage click marked on the timeline. Recordings stay on your own disk and database, and who may watch them is a gate your app defines. Free and open source (MIT), built on Session Replay for Laravel and rrweb.

Beta. 1.0 is close and feedback is very welcome in the issues. Until 1.0, names and config may still change between betas; the changelog says how to upgrade.

Features

Compatibility

Filament Session Replay Filament Laravel PHP
1.x 5.x 12, 13 8.3+

Installation

While both are in beta, require the core with @beta too: Composer takes a beta of a dependency only when your app asks for it.

Composer brings packstub/session-replay along; the install command publishes its config, runs the migrations and publishes App\Providers\SessionReplayServiceProvider with the gate in it. Register the plugin in your panel provider:

Schedule the clean-up:

Open the panel, click around, then open Session replays in the navigation. Read more

Recording a panel

The recorder is added through a render hook, so there is no directive to place. It records with what only the panel knows: the panel's guard, the current tenant, the panel id and who is impersonating. The pages recordings are watched on are never recorded. Record one panel and watch in another by registering the plugin twice:

->record(fn (?Model $user): bool => ! $user?->is_staff) narrows it per person. What recording costs (34 KB for a 50-row table page, 0.2 KB per idle minute) is measured in the installation guide.

The Sessions resource

The Session replays resource in an operator panel: person, workspace, start, length, pages, errors and vitals of every recording, an impersonated session flagged

Newest first, searchable by a person's name, email or key, with the numbers that tell you which recording to open: errors, rage clicks and web vitals are indexed when the recording arrives, so filtering never opens a file.

The filters of the Session replays table: errors, slow pages, rage clicks, impersonated, pinned, device, first page and start date

Read more

Watching a recording

The watch page: the facts of the recording, the player paused on an edit modal where Save changes was clicked again and again, and the marker list with failed Livewire requests, the rage click and a TypeError

The watch page shows the facts, the player and the markers: page views, failed Livewire requests, uncaught errors, console.error, web vitals and rage clicks. A click on a marker seeks to a second before it, and ?t=83 opens a replay at 1:23, which makes a good link for a ticket. Pin keeps a recording out of pruning, Export downloads it as one JSON file with its stylesheets, Delete removes it with its files. Read more

Around your users

A customer's page in the panel with a Session replays tab listing that person's recordings

A customers table with a Watch last session action on the rows of people who have a recording

->widget() adds the last seven days to the dashboard, each number linked to the filtered list:

The stats widget: recordings in the last 7 days, with errors, slow pages

Read more

Masking where the field is

Every input is masked by default and passwords always are. For what a page displays, say so where the field is declared:

A replayed Orders table whose Customer column shows asterisks while the rest of the page stays readable

Mask keeps the page readable for whoever watches (the value is there, its content is not); block records an empty box of the same size. Masking happens in the browser, before anything is uploaded. Read more

Workspaces and impersonation

In a panel with tenancy the resource and the widget list the current workspace's recordings; a panel without a tenant lists all of them with a Workspace column (->tenantLabelUsing() when your tenant has no name). Sessions made while impersonating carry who was behind them: Packstub's Account Switcher is detected, ->impersonatorUsing() covers anything else. Database-per-tenant apps keep the index on the central connection. Read more

Who may watch

The gate is asked without a recording for the list and with it for a single replay and every file behind it, in the panel and on the core's data routes alike. Until it is defined only the local environment is let in. A policy registered for ReplaySession takes over inside the panel (Filament Shield), deleteSessionReplay separates deleting from watching, and SessionReplay::visibleUsing() keeps rows the gate would refuse out of every list. Read more

Two packages, one picture

Package What it does
packstub/session-replay Records (rrweb, masked inputs, markers), ingests, stores gzip chunks on your disk with an index in your database, prunes, links the recording into Laravel's log context, and guards every byte with the viewSessionReplay gate. Works in any Laravel app.
packstub/filament-session-replay (this one) The panel experience: recording wired to the panel's guard and tenant, the Sessions resource, the watch page, the relation manager, the action, the widget and the masking macros.

Everything about privacy, storage, consent and configuration lives in the core and applies here unchanged. Hosted replay products are a great fit for product analytics and funnels; this pair is for replay inside your own app, and the two run happily side by side.

Documentation

Guide What it covers
Overview What you get, at a glance
Installation Install, register, the gate, the plugin's options, languages, recording in one panel and watching in another
Watching The resource, its filters, the watch page, Pin, Export, Delete, who may do what
Masking maskInReplay() and blockInReplay()
People The relation manager, "Watch last session", the stats widget, naming and finding people
Tenancy Workspaces, operator panels, database-per-tenant apps, impersonation

The core's guides cover the rest: Recording, Privacy, Watching replays, Storage, Error tracking, Configuration.

Testing

Changelog

See CHANGELOG.md.

Security

Please report security issues to [email protected] instead of the issue tracker.

Credits

License

MIT. See LICENSE.md.


All versions of filament-session-replay with dependencies

PHP Build Version
Package Version
Requires php Version ^8.3
filament/filament Version ^5.0
packstub/session-replay Version ^1.0
spatie/laravel-package-tools Version ^1.93
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package packstub/filament-session-replay contains the following files

Loading the files please wait ...