Skip to content
A Server-Side Rendering Engine for Professionals
Branch: master
Clone or download
Latest commit 12ee646 Mar 18, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
presets Publish Mar 19, 2019
runtime Publish Mar 15, 2019
utils Publish Mar 15, 2019
website Complete Redux support and documentation Mar 17, 2019
.gitattributes Initial commit to a new repo Mar 6, 2018
LICENSE Add artifact directory to save the original artworks Mar 13, 2019
package.json Add `update-packages` script. Mar 12, 2019

Gourmet SSR

Latest Version Last Commit Open Issues Node Version Requirement Website Status Main Language PRs Welcome License


  • Library, not Framework - Gourmet SSR is designed to be used as a view library in your existing project. We worked very hard to make Gourmet SSR unobtrusive.
  • Production First - Small footprint at runtime, chunked transfer, long-term caching, HTTP/2 optimized bundling and much more. Production is always the number one priority of Gourmet SSR.
  • Human Friendly - Developers are humans too. When we a new feature, the first thing we consider is how to make it easy to understand and use - just like we do for the consumer products.
  • Flexible - Gourmet SSR can be deployed as an in-process VM sandbox, a separate process, a remote HTTP cluster or an AWS Lambda function. Your server can be Django or Rails. The view layer is not limited to React.

Quick Overview

You write the user interface without complicated bootstrapping or boilerplate. It is just a plain tree of React components.

// hello.js
import React from "react";

export default function Hello({greeting}) {
  return <div>{greeting}</div>;

Configuration is designed to be minimal, but not to the level of "magic". Here, we specify the above React component as a root component of the main page.

// gourmet_config.js
module.exports = {
  pages: {
    main: "./hello.js"

Gourmet SSR is just a view library in your server. This is how you render and serve the main page.

// server.js
const express = require("express");
const gourmet = require("@gourmet/client-lib");

const app = express();


app.get("/", (req, res) => {
  res.serve("main", {greeting: "Hello, world!"});

app.listen(3000, () => {
  console.log("Server is listening on port 3000");

The content is rendered on the server-side and rehydrated on the client-side. Required assets are also linked statically.

The HTML output has all the elements it needs to render the initial user interface - which is great for SEO and user experience.

$ curl http://localhost:3000
<!doctype html>
<html lang="en">
    <script defer src="/s/vendors~main.js"></script>
    <script defer src="/s/main.js"></script>
    <div id="__gourmet_content__"><div id="__gourmet_react__"><div>Hello, world!</div></div></div>
    <script>window.__gourmet_data__={"renderedLoadables":[],"clientProps":{"greeting":"Hello, world!"},"reactClientRender":"hydrate"};</script>


Learn more about using Gourmet SSR on the official website.


Gourmet SSR is open source software licensed as MIT.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.