A Symfony bundle that integrates 'prerender' services, i.e. rendertron or

Installs: 5 152

Dependents: 1

Suggesters: 0

Security: 0

Stars: 1

Watchers: 1

Forks: 1

Open Issues: 2


v1.0.0-alpha.2 2023-04-20 13:04 UTC

This package is auto-updated.

Last update: 2024-02-20 14:57:49 UTC


Latest Version Software License Build Status

Use this bundle to (pre)render a request or URL. This is useful if you render your page using javascript and want to show the HTML output of that page to Googlebot or other clients not very fond of javascript.

See Googles own help page on this topic: Implement dynamic rendering.


To install this bundle, simply run:

composer require setono/prerender-bundle

This will install the bundle and enable it if you're using Symfony Flex. If you're not using Flex, add the bundle manually to bundles.php instead.


The bundle is already preconfigured for you if you want to use the open source version of Then you just need to run that service. However, you can configure it easily like so:

# config/packages/setono_prerender.yaml
        prerender: ''

If you want to create your own prerenderer service, just implement the PrerendererInterface and tag your service with setono_prerender.prerenderer. Then in the configuration of the bundle do this:

# config/packages/setono_prerender.yaml
    prerenderer: 'the-service-id-of-your-prerenderer-service'


Here is a very basic example of a product controller where we want to render the index action:



namespace App\Controller;

use Setono\PrerenderBundle\Prerenderer\PrerendererInterface;
use Symfony\Component\HttpFoundation\Response;

final class ProductController
    public function index(PrerendererInterface $prerenderer): Response
        if($this->isBot()) {
            // return the rendered HTML if the client is a bot
            return new Response($prerenderer->renderMainRequest());

        // render the response the normal way if the client is NOT a bot
        return new Response('...');

     * Method that returns true if the client is a bot
    private function isBot(): bool
        // ...