Need help with laravel-server-side-rendering?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

565 Stars 52 Forks MIT License 76 Commits 2 Opened issues


Server side rendering JavaScript in your Laravel application

Services available


Need anything else?

Contributors list

Server side rendering JavaScript in your Laravel application

Latest Version on Packagist GitHub Workflow Status Total Downloads

Making server side rendering a bit less hard in Laravel.

    <title>My server side rendered app</title>
    <script defer src="%7B%7B%20mix('app-client.js')%20%7D%7D">
    {!! ssr('js/app-server.js') !!}

This package is a Laravel bridge for the spatie/server-side-rendering library. Before getting started, dig through the readme to learn about the underlying concepts and caveats. This readme also assumes you already have some know-how about building server rendered JavaScript apps.

Vue and React example apps are available at spatie/laravel-server-side-rendering-examples if you want to see it in action.

Support us

We invest a lot of resources into creating best in class open source packages. You can support us by buying one of our paid products.

We highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using. You'll find our address on our contact page. We publish all received postcards on our virtual postcard wall.


You can install the package via composer:

composer require spatie/laravel-server-side-rendering

The service provider and

alias will be automatically registered.

You can optionally publish the config file if you want to tweak things.

php artisan vendor:publish --provider="Spatie\Ssr\SsrServiceProvider" --tag="config"



First you'll need to pick an engine to execute your scripts. The server-side-rendering library ships with V8 and Node engines. By default, the package is configured to use node, since you probably already have that installed on your system.

Set up the

environment variable in your .env file to get started:


You'll also need to ensure that a

folder exists, or change the
config value to something else.

If you'd rather use the V8 engine, you can skip the previous two steps. You'll need to have the v8js extension installed though.


Besides the above, no configuration's required. If you need to tweak things anyway, the config file is well documented.

Setting up your scripts

You'll need to build two scripts: a server script and a client script. Refer to your frontend-framework-of-choice's documentation on how to build those.

mix.js('resources/js/app-client.js', 'public/js')
   .js('resources/js/app-server.js', 'public/js');

The server script should be passed to the

function, the client script should be loaded manually. The package assumes you're using Laravel Mix, and will resolve the path for you. You can opt out of this behaviour by setting
in the config file.

{!! ssr('js/app-server.js') !!}

    {!! ssr('js/app-server.js')-&gt;render() !!}

A facade is available too.

    <title>My server side rendered app</title>
    <script defer src="%7B%7B%20mix('js/app-client.js')%20%7D%7D"></script>

    {!! Ssr::entry('js/app-server.js')-&gt;render() !!}

Rendering options can be chained after the function or facade call.

    <title>My server side rendered app</title>
    <script defer src="%7B%7B%20mix('js/app-client.js')%20%7D%7D"></script>

    {!! ssr('js/app-server.js')-&gt;context('user', $user)-&gt;render() !!}

Available options are documented at spatie/server-side-rendering.


composer test


Please see CHANGELOG for more information what has changed recently.


Please see CONTRIBUTING for details.


If you discover any security related issues, please email [email protected] instead of using the issue tracker.



The MIT License (MIT). Please see License File for more information.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.