diff --git a/components/advanced/babel-plugin.js b/components/advanced/babel-plugin.js
new file mode 100644
index 00000000..c9b82c45
--- /dev/null
+++ b/components/advanced/babel-plugin.js
@@ -0,0 +1,175 @@
+import React from 'react';
+import SectionLayout from '../SectionLayout';
+import CodeBlock from '../CodeBlock';
+import Code from '../Code';
+import Note from '../Note';
+import Link from '../Link'
+
+const installNPM = `
+npm install --save-dev babel-plugin-styled-components
+`.trim();
+
+const usage = `
+{
+ "plugins": ["styled-components"]
+}
+`.trim();
+
+const ssr = `
+{
+ "plugins": [
+ ["styled-components", {
+ "ssr": true
+ }]
+ ]
+}
+`.trim();
+
+const displayName = `
+{
+ "plugins": [
+ ["styled-components", {
+ "displayName": false
+ }]
+ ]
+}
+`.trim();
+
+const preprocess = `
+{
+ "plugins": [
+ ["styled-components", {
+ "preprocess": true
+ }]
+ ]
+}
+`.trim();
+
+const minify = `
+{
+ "plugins": [
+ ["styled-components", {
+ "minify": false
+ }]
+ ]
+}
+`.trim();
+
+const transpilation = `
+{
+ "plugins": [
+ ["styled-components", {
+ "transpileTemplateLiterals": false
+ }]
+ ]
+}
+`.trim();
+
+const BabelPlugin = () =>
+
+ This plugin adds support for server-side rendering, for minification of
+ styles and gives you a nicer debugging experience.
+ Install the babel-plugin first: Then add it to your babel configuration like so:
+ By adding a unique identifier to every styled component this plugin
+ avoids checksum mismatches due to different class generation on the
+ client and on the server. If you do not use this plugin and try to
+ server-side render styled-components React will complain.
+
+ You can enable it with the
+ This options adds the components' name and displayName to the class name
+ attached to the DOM node. In your browser's DevTools you'll see:{' '}
+
+ This also adds support for showing your components' real name in the
+ React DevTools. Consider writing a styled component that renders a{' '}
+
+ This makes it easier to find your components and to figure out where
+ they live in your app.
+
+ If you don't need this feature, you can disable it with the{' '}
+
+ This plugin preprocesses your styles with stylis and uses the{' '}
+
+ This effectively removes stylis from your runtime bundle and should
+ slightly improve runtime performance and shrink your bundle size.
+
+ It automatically disables the
+ You can enable preprocessing with the
+ This plugin minifies your styles in the tagged template literals, giving
+ you big bundle size savings.
+
+ You can disable minification with the
+ We also transpile ssr
option:
+
+ <button class="sc-Button-asdf123 asdf123" />
+
{' '}
+ instead of just <button class="asdf123" />
.
+ button
element, called MyButton
. It will
+ normally show up as <styled.button>
for all of your
+ components, but with this plugin they show{' '}
+ <MyButton />
.
+ displayName
option:
+ no-parser.js
entrypoint on styled-components.
+ minify
option, since stylis
+ already does some minification on your CSS.
+ preprocess
option:
+ minify
option:
+ styled-components
tagged template
+ literals down to a smaller representation than what Babel normally does,
+ because styled-components
template literals don't need to
+ be 100% spec compliant. see{' '}
+ Tagged Template Literals for
+ more information about that) You can use the {' '}
+ transpileTemplateLiterals
option to turn this feature off.
+