Official Plugin
View plugin on GitHub
See starters using this


Provide support for using the css-in-js library Emotion including server side rendering.

This plugin supports Emotion v11+

Older versions should use versions of this plugin which support Emotion 8 and 9. Check out the Emotion 10 migration guide for more information on how to upgrade.


npm install gatsby-plugin-emotion @emotion/react @emotion/styled

How to use

Add the plugin to your gatsby-config.js.

module.exports = {
  plugins: [
      resolve: `gatsby-plugin-emotion`,
      options: {
        // Accepts the following options, all of which are defined by `@emotion/babel-plugin` plugin.
        // The values for each key in this example are the defaults the plugin uses.
        sourceMap: true,
        autoLabel: "dev-only",
        labelFormat: `[local]`,
        cssPropOptimization: true,


The plugin supports the same options that you can pass into @emotion/babel-plugin.

Option Type Description Default Required
sourceMap boolean Tells the plugin to inject source maps for use in browser dev tools in development. true
autoLabel 'dev-only' ∣ 'always' ∣ 'never' Automatically adds the label property to styles so that class names generated by css or styled include the name of the variable the result is assigned to. You can read more about this option in @emotion/babel-plugin’s docs dev-only
labelFormat string Only works when autoLabel is set to true. It allows you to define the format of the resulting label. The format is defined via string where variable parts are enclosed in square brackets []. For example labelFormat: "my-classname--[local]", where [local] will be replaced with the name of the variable the result is assigned to. "[local]"
cssPropOptimization boolean Assumes that you are using something to make @emotion/react’s jsx function work for all jsx. If you are not doing so and you do not want such optimizations to occur, disable this option. true