prerender/laravel-prerender

Laravel middleware for prerendering JavaScript-rendered pages via Prerender.io

Maintainers

Package info

github.com/prerender/laravel

pkg:composer/prerender/laravel-prerender

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

dev-main 2026-06-19 10:29 UTC

This package is not auto-updated.

Last update: 2026-06-20 08:39:12 UTC


README

Laravel middleware for Prerender.io. Intercepts requests from bots and crawlers and serves prerendered HTML, so your JavaScript-rendered app is fully indexable by search engines and social media scrapers.

Compatible with Laravel 11+ and PHP 8.2+.

Installation

composer require prerender/laravel-prerender

Publish the config file:

php artisan vendor:publish --tag=prerender-config

Setup

Add your token to .env:

PRERENDER_TOKEN=your-token

The middleware registers itself automatically via the service provider.

Configuration

Key Env var Default Description
enable PRERENDER_ENABLE true Disable entirely (e.g. local dev)
prerender_url PRERENDER_SERVICE_URL https://service.prerender.io Service URL (override for self-hosted)
prerender_token PRERENDER_TOKEN null Your Prerender.io token
prerender_soft_http_codes PRERENDER_SOFT_HTTP_STATUS_CODES true Pass 3xx/404 codes through as-is
full_url PRERENDER_FULL_URL false Send full URL including query string
timeout PRERENDER_TIMEOUT 0 Guzzle timeout in seconds (0 = none)

Whitelist / Blacklist

Only prerender URLs matching the whitelist (empty = all URLs pass):

'whitelist' => ['/blog/*', '/product/*'],

Never prerender URLs matching the blacklist (static assets are blacklisted by default):

'blacklist' => ['*.js', '*.css', '/admin/*'],

Patterns support * wildcards. Blacklist patterns are matched with the query string stripped, so *.woff2 also matches /font.woff2?v=3.

How it works

Requests are prerendered when all of the following are true:

  • The HTTP method is GET
  • The User-Agent matches a known bot/crawler (Googlebot, Bingbot, Twitterbot, GPTBot, ClaudeBot, etc.)
    — OR the URL contains _escaped_fragment_
    — OR the X-BUFFERBOT header is present
  • The URI is not blacklisted (static assets are excluded by default)
  • The URI matches the whitelist (if configured)

If the Prerender service is unreachable, the middleware falls back gracefully.

License

MIT