Skip to content
Scalpels home

Scalpels is officially launching on October 31, 2026. Special early adopter pricing is available now.

Reel

Laravel MIT licensed Experimental

What a user's browser did before the bug, recorded into your own Laravel Cloud account and tied to the Laravel request that failed. Reel captures sanitised DOM events rather than video, masks every input before anything leaves the page, and puts server errors on the replay timeline as markers.

Work in progress. Available to teams with Unlimited.

Replaces
Hosted session replay
Runs on
Your Laravel Cloud account
Needs
Compute · Database · Queue · Object storage · Scheduler
Reel, installed and recording Placeholder — the launch recording replaces this

What it records

DOM events, not pixels, sanitised in the browser and re-checked on ingest

  • Sanitised capture

    rrweb records the DOM; a second sanitiser masks inputs, strips hydration payloads, URLs and query strings, and blocks canvas, media and frames before upload.

  • Consent first

    Nothing records until your app says so, Global Privacy Control can refuse outright, and any route can be hidden from Reel entirely.

  • Request correlation

    Same-origin requests carry the session id, the middleware trusts only ids it issued, and every binding is labelled exact, approximate or ambiguous.

  • Error markers

    A 5xx on a bound request lands on the timeline as a marker with method, path and status, filterable in the list and jumpable in the player.

  • A sandboxed player

    Replay runs in a locked-down frame with a strict content policy, and every view is audited with who watched what, and when.

  • Retention you control

    Thirty-day expiry, protect a recording, a cooling period before deletion, per-user erasure with an audit that omits the erased id.

  • Masking that cannot be weakened

    Input, select, textarea and editable text are replaced in the browser, and the server re-validates every chunk against an allowlist, rejecting anything carrying a query string, a data URL or an unknown event. Settings can add masking; they can never remove it.

  • The request behind the recording

    500

    With context export switched on, the session id rides in Laravel Context to whatever Nightwatch transport you already use, including Hone, so an exception arrives with a link to the person who hit it. Neither client is modified.

Reel vs. the incumbents

We rebuilt one row of their feature matrix

LogRocket, Fullstory and PostHog are good products, and Reel is not trying to replace them. It does one slice of what they do — show you what a user did before a server error, on infrastructure you own — and deliberately does not do the rest. The question is not which product is better. It is which slice you are actually using.

Reel feature comparison
Feature Reel Self-hosted, MIT LogRocket Hosted Fullstory Hosted PostHog Hosted, or self-host
Recordings on infrastructure you own the row we rebuilt Does this well:Your Cloud account Works, but on their terms:Enterprise only Not built:Hosted only Partly, or with a caveat:Unsupported self-host
The Laravel request behind a replay the row we rebuilt Does this well:Bound and labelled Partly, or with a caveat:Generic integrations Partly, or with a caveat:Generic integrations Partly, or with a caveat:Own error tracking
Inputs masked before upload Does this well:Mandatory, server-checked Partly, or with a caveat:Passwords only Does this well:All text masked Does this well:Inputs, can disable
Network bodies and console logs we did not build this Not built:Status and path only Does this well:Included Does this well:Included Does this well:Bodies opt-in
Heatmaps, funnels, product analytics we did not build this Not built:Not built Does this well:Included Does this well:Their core strength Does this well:Included
Native mobile SDKs we did not build this Not built:Mobile web only Does this well:Included Works, but on their terms:Add-on Does this well:Included
AI session summaries we did not build this Not built:Not built Works, but on their terms:Pro plan Works, but on their terms:Add-on Partly, or with a caveat:Beta
Where your recordings live Does this well:Your private bucket Works, but on their terms:Their cluster Works, but on their terms:Their cluster Works, but on their terms:Their cluster
Cost of recording more sessions Does this well:Disk Works, but on their terms:Per session Works, but on their terms:Per session, by quote Works, but on their terms:Per recording
Who is on call for the tool itself Partly, or with a caveat:You are Does this well:They are Does this well:They are Does this well:They are
  • Does this well
  • Partly, or with a caveat
  • Not built
  • Works, but on their terms

The honest test

Ask what the replay tool is actually for on your team. If these are all true, you are paying per session for a suite to use one row of it.

  • The question you ask it is "what did this user do before the 500?"
  • You would rather own the recordings than rent them.
  • Everything you would record is a Laravel application in a browser.

Then you lose very little by moving. Reel is experimental today, so start with a consented pilot; the recordings stay in your bucket either way.

Keep paying them if

These are the parts we chose not to build, and we are not going to pretend otherwise.

  • You want heatmaps, funnels, journeys or product analytics next to the replay.
  • You ship native iOS or Android apps and want them in the same tool.
  • You rely on console logs, network bodies or client state in the recording.
  • You need vendor support, an SLA, or AI-written session summaries.

Small, sharp tools are a deliberate scope, not an unfinished roadmap. Reel will not grow into an analytics platform.

Be honest about it

You don't need us to run Reel

The repository is public and MIT licensed. These are the steps, and you are welcome to spend the afternoon doing them by hand.

  1. 1

    Fork the Reel repository into your own GitHub organisation.

  2. 2

    Deploy the fork to Laravel Cloud with its own compute, Postgres, queue, private object storage and scheduler, then create the first administrator.

  3. 3

    Create an application in Reel, install the client in your app with its one-time enrolment code, add the recorder to your layout, and start recording after consent.

Or buy Unlimited once. Scalpels forks it, provisions exactly what it needs on your Laravel Cloud account, and deploys it. The app and the infrastructure are yours either way — the only question is who spends the afternoon.

Deploy Reel with Unlimited

Reel pairs with the rest of the suite

With context export on, the session id travels in the ordinary Nightwatch payload to Hone, so an exception there carries a link to the recording of the person who hit it.