From 08b6e4b8761db4993ec9d61322c87a653958c96a Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Thu, 24 Jan 2019 18:00:04 +0000
Subject: [PATCH 01/54] Update docs for stable Hooks

---
 content/docs/hooks-custom.md    |  8 ++++----
 content/docs/hooks-effect.md    |  8 ++++----
 content/docs/hooks-faq.md       | 25 ++++++++++++++++++++++---
 content/docs/hooks-intro.md     | 12 ++++++++++--
 content/docs/hooks-overview.md  | 10 +++++-----
 content/docs/hooks-reference.md | 15 ++++++++-------
 content/docs/hooks-rules.md     |  4 ++--
 content/docs/hooks-state.md     | 12 ++++++------
 content/docs/nav.yml            |  2 +-
 9 files changed, 62 insertions(+), 34 deletions(-)

diff --git a/content/docs/hooks-custom.md b/content/docs/hooks-custom.md
index b48f7f782b..4d10032b23 100644
--- a/content/docs/hooks-custom.md
+++ b/content/docs/hooks-custom.md
@@ -6,14 +6,14 @@ next: hooks-reference.html
 prev: hooks-rules.html
 ---
 
-*Hooks* are an upcoming feature that lets you use state and other React features without writing a class. They're currently in React v16.8.0-alpha.1.
+*Hooks* let you use state and other React features without writing a class.
 
 Building your own Hooks lets you extract component logic into reusable functions.
 
 When we were learning about [using the Effect Hook](/docs/hooks-effect.html#example-using-hooks-1), we saw this component from a chat application that displays a message indicating whether a friend is online or offline:
 
 ```js{4-15}
-import { useState, useEffect } from 'react';
+import React, { useState, useEffect } from 'react';
 
 function FriendStatus(props) {
   const [isOnline, setIsOnline] = useState(null);
@@ -39,7 +39,7 @@ function FriendStatus(props) {
 Now let's say that our chat application also has a contact list, and we want to render names of online users with a green color. We could copy and paste similar logic above into our `FriendListItem` component but it wouldn't be ideal:
 
 ```js{4-15}
-import { useState, useEffect } from 'react';
+import React, { useState, useEffect } from 'react';
 
 function FriendListItem(props) {
   const [isOnline, setIsOnline] = useState(null);
@@ -74,7 +74,7 @@ When we want to share logic between two JavaScript functions, we extract it to a
 **A custom Hook is a JavaScript function whose name starts with "`use`" and that may call other Hooks.** For example, `useFriendStatus` below is our first custom Hook:
 
 ```js{3}
-import { useState, useEffect } from 'react';
+import React, { useState, useEffect } from 'react';
 
 function useFriendStatus(friendID) {
   const [isOnline, setIsOnline] = useState(null);
diff --git a/content/docs/hooks-effect.md b/content/docs/hooks-effect.md
index b010453869..dbe2637563 100644
--- a/content/docs/hooks-effect.md
+++ b/content/docs/hooks-effect.md
@@ -6,12 +6,12 @@ next: hooks-rules.html
 prev: hooks-intro.html
 ---
 
-*Hooks* are an upcoming feature that lets you use state and other React features without writing a class. They're currently in React v16.8.0-alpha.1.
+*Hooks* let you use state and other React features without writing a class.
 
 The *Effect Hook* lets you perform side effects in function components:
 
 ```js{1,6-10}
-import { useState, useEffect } from 'react';
+import React, { useState, useEffect } from 'react';
 
 function Example() {
   const [count, setCount] = useState(0);
@@ -94,7 +94,7 @@ Now let's see how we can do the same with the `useEffect` Hook.
 We've already seen this example at the top of this page, but let's take a closer look at it:
 
 ```js{1,6-8}
-import { useState, useEffect } from 'react';
+import React, { useState, useEffect } from 'react';
 
 function Example() {
   const [count, setCount] = useState(0);
@@ -199,7 +199,7 @@ Let's see how we could write this component with Hooks.
 You might be thinking that we'd need a separate effect to perform the cleanup. But code for adding and removing a subscription is so tightly related that `useEffect` is designed to keep it together. If your effect returns a function, React will run it when it is time to clean up:
 
 ```js{10-16}
-import { useState, useEffect } from 'react';
+import React, { useState, useEffect } from 'react';
 
 function FriendStatus(props) {
   const [isOnline, setIsOnline] = useState(null);
diff --git a/content/docs/hooks-faq.md b/content/docs/hooks-faq.md
index 74d9227e49..abd57a0bb6 100644
--- a/content/docs/hooks-faq.md
+++ b/content/docs/hooks-faq.md
@@ -5,7 +5,7 @@ permalink: docs/hooks-faq.html
 prev: hooks-reference.html
 ---
 
-*Hooks* are an upcoming feature that lets you use state and other React features without writing a class. They're currently in React v16.8.0-alpha.1.
+*Hooks* let you use state and other React features without writing a class.
 
 This page answers some of the frequently asked questions about [Hooks](/docs/hooks-overview.html).
 
@@ -19,7 +19,9 @@ This page answers some of the frequently asked questions about [Hooks](/docs/hoo
 -->
 
 * **[Adoption Strategy](#adoption-strategy)**
+  * [Which versions of React include Hooks?](#which-versions-of-react-include-hooks)
   * [Do I need to rewrite all my class components?](#do-i-need-to-rewrite-all-my-class-components)
+  * [What can I do with Hooks that I couldn't with classes?](#what-can-i-do-with-hooks-that-i-couldnt-with-classes)
   * [How much of my React knowledge stays relevant?](#how-much-of-my-react-knowledge-stays-relevant)
   * [Should I use Hooks, classes, or a mix of both?](#should-i-use-hooks-classes-or-a-mix-of-both)
   * [Do Hooks cover all use cases for classes?](#do-hooks-cover-all-use-cases-for-classes)
@@ -51,10 +53,27 @@ This page answers some of the frequently asked questions about [Hooks](/docs/hoo
 
 ## Adoption Strategy
 
+### Which versions of React include Hooks?
+
+Starting with 16.8.0, React includes a stable implementation of React Hooks for:
+
+* React DOM
+* React DOM Server
+* React Test Renderer
+* React Shallow Renderer
+
+Note that **to enable Hooks, all React packages need to be 16.8.0 or higher**. Hooks won't work if you forget to update, for example, React DOM.
+
+React Native will fully support Hooks in its next stable release.
+
 ### Do I need to rewrite all my class components?
 
 No. There are [no plans](/docs/hooks-intro.html#gradual-adoption-strategy) to remove classes from React -- we all need to keep shipping products and can't afford rewrites. We recommend trying Hooks in new code.
 
+### What can I do with Hooks that I couldn't with classes?
+
+Hooks offer a powerful and expressive new way to reuse functionality between components. ["Building Your Own Hooks"](/docs/hooks-custom.html) provides a glimpse of what's possible. [This article](https://medium.com/@dan_abramov/making-sense-of-react-hooks-fdbde8803889) by a React core team member dives deeper into the new capabilities unlocked by Hooks.
+
 ### How much of my React knowledge stays relevant?
 
 Hooks are a more direct way to use the React features you already know -- such as state, lifecycle, context, and refs. They don't fundamentally change how React works, and your knowledge of components, props, and top-down data flow is just as relevant.
@@ -71,7 +90,7 @@ You can't use Hooks *inside* of a class component, but you can definitely mix cl
 
 Our goal is for Hooks to cover all use cases for classes as soon as possible. There are no Hook equivalents to the uncommon `getSnapshotBeforeUpdate` and `componentDidCatch` lifecycles yet, but we plan to add them soon.
 
-It is a very early time for Hooks, so some integrations like DevTools support or Flow/TypeScript typings may not be ready yet. Some third-party libraries might also not be compatible with Hooks at the moment.
+It is an early time for Hooks, and some third-party libraries might not be compatible with Hooks at the moment.
 
 ### Do Hooks replace render props and higher-order components?
 
@@ -85,7 +104,7 @@ In the future, new versions of these libraries might also export custom Hooks su
 
 ### Do Hooks work with static typing?
 
-Hooks were designed with static typing in mind. Because they're functions, they are easier to type correctly than patterns like higher-order components. We have reached out both to Flow and TypeScript teams in advance, and they plan to include definitions for React Hooks in the future.
+Hooks were designed with static typing in mind. Because they're functions, they are easier to type correctly than patterns like higher-order components. The latest Flow and TypeScript React definitions include support for React Hooks.
 
 Importantly, custom Hooks give you the power to constrain React API if you'd like to type them more strictly in some way. React gives you the primitives, but you can combine them in different ways than what we provide out of the box.
 
diff --git a/content/docs/hooks-intro.md b/content/docs/hooks-intro.md
index b6e595372e..aea4019791 100644
--- a/content/docs/hooks-intro.md
+++ b/content/docs/hooks-intro.md
@@ -5,10 +5,10 @@ permalink: docs/hooks-intro.html
 next: hooks-overview.html
 ---
 
-*Hooks* are an upcoming feature that lets you use state and other React features without writing a class. They're currently in React v16.8.0-alpha.1.
+*Hooks* let you use state and other React features without writing a class.
 
 ```js{4,5}
-import { useState } from 'react';
+import React, { useState } from 'react';
 
 function Example() {
   // Declare a new state variable, which we'll call "count"
@@ -29,6 +29,10 @@ This new function `useState` is the first "Hook" we'll learn about, but this exa
 
 **You can start learning Hooks [on the next page](/docs/hooks-overview.html).** On this page, we'll continue by explaining why we're adding Hooks to React and how they can help you write great applications.
 
+>Note
+>
+>React 16.8.0 is the first release to support Hooks. When upgrading, don't forget to update all packages, including React DOM. React Native will support Hooks in the next stable release.
+
 ## Video Introduction
 
 At React Conf 2018, Sophie Alpert and Dan Abramov introduced Hooks, followed by Ryan Florence demonstrating how to refactor an application to use them. Watch the video here:
@@ -99,6 +103,10 @@ Finally, there is no rush to migrate to Hooks. We recommend avoiding any "big re
 
 We intend for Hooks to cover all existing use cases for classes, but **we will keep supporting class components for the foreseeable future.** At Facebook, we have tens of thousands of components written as classes, and we have absolutely no plans to rewrite them. Instead, we are starting to use Hooks in the new code side by side with classes.
 
+## Frequently Asked Questions
+
+We've prepared a [Hooks FAQ page](/docs/hooks-faq.html) that answers the most common questions about Hooks.
+
 ## Next Steps
 
 By the end of this page, you should have a rough idea of what problems Hooks are solving, but many details are probably unclear. Don't worry! **Let's now go to [the next page](/docs/hooks-overview.html) where we start learning about Hooks by example.**
diff --git a/content/docs/hooks-overview.md b/content/docs/hooks-overview.md
index 62ce2ab9d3..d3f2dbd842 100644
--- a/content/docs/hooks-overview.md
+++ b/content/docs/hooks-overview.md
@@ -6,7 +6,7 @@ next: hooks-state.html
 prev: hooks-intro.html
 ---
 
-*Hooks* are an upcoming feature that lets you use state and other React features without writing a class. They're currently in React v16.8.0-alpha.1.
+*Hooks* let you use state and other React features without writing a class.
 
 Hooks are [backwards-compatible](/docs/hooks-intro.html#no-breaking-changes). This page provides an overview of Hooks for experienced React users. This is a fast-paced overview. If you get confused, look for a yellow box like this:
 
@@ -21,7 +21,7 @@ Hooks are [backwards-compatible](/docs/hooks-intro.html#no-breaking-changes). Th
 This example renders a counter. When you click the button, it increments the value:
 
 ```js{1,4,5}
-import { useState } from 'react';
+import React, { useState } from 'react';
 
 function Example() {
   // Declare a new state variable, which we'll call "count"
@@ -77,7 +77,7 @@ The Effect Hook, `useEffect`, adds the ability to perform side effects from a fu
 For example, this component sets the document title after React updates the DOM:
 
 ```js{1,6-10}
-import { useState, useEffect } from 'react';
+import React, { useState, useEffect } from 'react';
 
 function Example() {
   const [count, setCount] = useState(0);
@@ -104,7 +104,7 @@ When you call `useEffect`, you're telling React to run your "effect" function af
 Effects may also optionally specify how to "clean up" after them by returning a function. For example, this component uses an effect to subscribe to a friend's online status, and cleans up by unsubscribing from it:
 
 ```js{10-16}
-import { useState, useEffect } from 'react';
+import React, { useState, useEffect } from 'react';
 
 function FriendStatus(props) {
   const [isOnline, setIsOnline] = useState(null);
@@ -181,7 +181,7 @@ Earlier on this page, we introduced a `FriendStatus` component that calls the `u
 First, we'll extract this logic into a custom Hook called `useFriendStatus`:
 
 ```js{3}
-import { useState, useEffect } from 'react';
+import React, { useState, useEffect } from 'react';
 
 function useFriendStatus(friendID) {
   const [isOnline, setIsOnline] = useState(null);
diff --git a/content/docs/hooks-reference.md b/content/docs/hooks-reference.md
index 16c58ccf2e..c3af423931 100644
--- a/content/docs/hooks-reference.md
+++ b/content/docs/hooks-reference.md
@@ -6,7 +6,7 @@ prev: hooks-custom.html
 next: hooks-faq.html
 ---
 
-*Hooks* are an upcoming feature that lets you use state and other React features without writing a class. They're currently in React v16.8.0-alpha.1.
+*Hooks* let you use state and other React features without writing a class.
 
 This page describes the APIs for the built-in Hooks in React.
 
@@ -367,7 +367,7 @@ useDebugValue(value)
 
 `useDebugValue` can be used to display a label for custom hooks in React DevTools.
 
-For example, consider the `useFriendStatus` custom hook described in ["Building Your Own Hooks"](/docs/hooks-custom.html):
+For example, consider the `useFriendStatus` custom Hook described in ["Building Your Own Hooks"](/docs/hooks-custom.html):
 
 ```js{6-8}
 function useFriendStatus(friendID) {
@@ -375,7 +375,7 @@ function useFriendStatus(friendID) {
 
   // ...
 
-  // Show a label in DevTools next to this hook
+  // Show a label in DevTools next to this Hook
   // e.g. "FriendStatus: Online"
   useDebugValue(isOnline ? 'Online' : 'Offline');
 
@@ -385,15 +385,16 @@ function useFriendStatus(friendID) {
 
 > Tip
 >
-> We don't recommend adding debug values to every custom hook. It's most valuable for custom hooks that are part of shared libraries.
+> We don't recommend adding debug values to every custom Hook. It's most valuable for custom Hooks that are part of shared libraries.
 
 #### Defer formatting debug values
 
-In some cases formatting a value for display might be an expensive operation. It's also unnecessary unless a hook is actually inspected.
+In some cases formatting a value for display might be an expensive operation. It's also unnecessary unless a Hook is actually inspected.
 
-For this reason `useDebugValue` accepts a formatting function as an optional second parameter. This function is only called if the hooks is inspected. It receives the debug value as a parameter and should return a formatted display value.
+For this reason `useDebugValue` accepts a formatting function as an optional second parameter. This function is only called if the Hooks are inspected. It receives the debug value as a parameter and should return a formatted display value.
+
+For example a custom Hook that returned a `Date` value could avoid calling the `toDateString` function unnecessarily by passing the following formatter:
 
-For example a custom hook that returned a `Date` value could avoid calling the `toDateString` function unnecessarily by passing the following formatter:
 ```js
 useDebugValue(date, date => date.toDateString());
 ```
diff --git a/content/docs/hooks-rules.md b/content/docs/hooks-rules.md
index af935c7998..20a11360fa 100644
--- a/content/docs/hooks-rules.md
+++ b/content/docs/hooks-rules.md
@@ -6,7 +6,7 @@ next: hooks-custom.html
 prev: hooks-effect.html
 ---
 
-*Hooks* are an upcoming feature that lets you use state and other React features without writing a class. They're currently in React v16.8.0-alpha.1.
+*Hooks* let you use state and other React features without writing a class.
 
 Hooks are JavaScript functions, but you need to follow two rules when using them. We provide a [linter plugin](https://www.npmjs.com/package/eslint-plugin-react-hooks) to enforce these rules automatically:
 
@@ -28,7 +28,7 @@ By following this rule, you ensure that all stateful logic in a component is cle
 We released an ESLint plugin called [`eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks) that enforces these two rules. You can add this plugin to your project if you'd like to try it:
 
 ```bash
-npm install eslint-plugin-react-hooks@next
+npm install eslint-plugin-react-hooks
 ```
 
 ```js
diff --git a/content/docs/hooks-state.md b/content/docs/hooks-state.md
index c910268ac1..35e31fd6c6 100644
--- a/content/docs/hooks-state.md
+++ b/content/docs/hooks-state.md
@@ -6,12 +6,12 @@ next: hooks-effect.html
 prev: hooks-overview.html
 ---
 
-*Hooks* are an upcoming feature that lets you use state and other React features without writing a class. They're currently in React v16.8.0-alpha.1.
+*Hooks* let you use state and other React features without writing a class.
 
 The [previous page](/docs/hooks-intro.html) introduced Hooks with this example:
 
 ```js{4-5}
-import { useState } from 'react';
+import React, { useState } from 'react';
 
 function Example() {
   // Declare a new state variable, which we'll call "count"
@@ -91,7 +91,7 @@ Hooks **don't** work inside classes. But you can use them instead of writing cla
 Our new example starts by importing the `useState` Hook from React:
 
 ```js{1}
-import { useState } from 'react';
+import React, { useState } from 'react';
 
 function Example() {
   // ...
@@ -123,7 +123,7 @@ class Example extends React.Component {
 In a function component, we have no `this`, so we can't assign or read `this.state`. Instead, we call the `useState` Hook directly inside our component:
 
 ```js{4,5}
-import { useState } from 'react';
+import React, { useState } from 'react';
 
 function Example() {
   // Declare a new state variable, which we'll call "count"
@@ -139,7 +139,7 @@ function Example() {
 Now that we know what the `useState` Hook does, our example should make more sense:
 
 ```js{4,5}
-import { useState } from 'react';
+import React, { useState } from 'react';
 
 function Example() {
   // Declare a new state variable, which we'll call "count"
@@ -196,7 +196,7 @@ Let's now **recap what we learned line by line** and check our understanding.
   But if GitHub got away with it for years we can cheat.
 -->
 ```js{1,4,9}
- 1:  import { useState } from 'react';
+ 1:  import React, { useState } from 'react';
  2:
  3:  function Example() {
  4:    const [count, setCount] = useState(0);
diff --git a/content/docs/nav.yml b/content/docs/nav.yml
index 01f5942ad2..4d4a7571f3 100644
--- a/content/docs/nav.yml
+++ b/content/docs/nav.yml
@@ -104,7 +104,7 @@
       title: JS Environment Requirements
     - id: glossary
       title: Glossary
-- title: Hooks (Preview)
+- title: Hooks (New)
   isOrdered: true
   items:
       - id: hooks-intro

From 4d61b4a19d807c20a69328c711307e59f2a8713e Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Fri, 25 Jan 2019 15:22:36 +0000
Subject: [PATCH 02/54] Add Hooks to reference page

---
 content/docs/reference-react.md | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/content/docs/reference-react.md b/content/docs/reference-react.md
index 68a00c4c07..e04a2dfcc9 100644
--- a/content/docs/reference-react.md
+++ b/content/docs/reference-react.md
@@ -65,6 +65,26 @@ Suspense lets components "wait" for something before rendering. Today, Suspense
 - [`React.lazy`](#reactlazy)
 - [`React.Suspense`](#reactsuspense)
 
+### Hooks
+
+Hooks are a new feature available in React 16.8 and higher. They let you use state and other React features without writing a class.
+
+They have a [separate](/docs/hooks-intro.html) documentation section and an API reference page:
+
+- [Basic Hooks](/docs/hooks-reference.html#basic-hooks)
+  - [`useState`](/docs/hooks-reference.html#usestate)
+  - [`useEffect`](/docs/hooks-reference.html#useeffect)
+  - [`useContext`](/docs/hooks-reference.html#usecontext)
+- [Additional Hooks](/docs/hooks-reference.html#additional-hooks)
+  - [`useReducer`](/docs/hooks-reference.html#usereducer)
+  - [`useCallback`](/docs/hooks-reference.html#usecallback)
+  - [`useMemo`](/docs/hooks-reference.html#usememo)
+  - [`useRef`](/docs/hooks-reference.html#useref)
+  - [`useImperativeHandle`](/docs/hooks-reference.html#useimperativehandle)
+  - [`useLayoutEffect`](/docs/hooks-reference.html#uselayouteffect)
+  - [`useDebugValue`](/docs/hooks-reference.html#usedebugvalue)
+
+
 * * *
 
 ## Reference

From f510e11312d6f909ecc00dee28e618c94c46e7a3 Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Fri, 25 Jan 2019 18:08:48 +0000
Subject: [PATCH 03/54] Reword intro

---
 content/docs/hooks-custom.md    | 2 +-
 content/docs/hooks-effect.md    | 2 +-
 content/docs/hooks-faq.md       | 2 +-
 content/docs/hooks-intro.md     | 2 +-
 content/docs/hooks-overview.md  | 2 +-
 content/docs/hooks-reference.md | 2 +-
 content/docs/hooks-rules.md     | 2 +-
 content/docs/hooks-state.md     | 2 +-
 8 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/content/docs/hooks-custom.md b/content/docs/hooks-custom.md
index 4d10032b23..dbc0459e55 100644
--- a/content/docs/hooks-custom.md
+++ b/content/docs/hooks-custom.md
@@ -6,7 +6,7 @@ next: hooks-reference.html
 prev: hooks-rules.html
 ---
 
-*Hooks* let you use state and other React features without writing a class.
+*Hooks* are a new addition in React 16.8. They let you use state and other React features without writing a class.
 
 Building your own Hooks lets you extract component logic into reusable functions.
 
diff --git a/content/docs/hooks-effect.md b/content/docs/hooks-effect.md
index dbe2637563..b40167ec06 100644
--- a/content/docs/hooks-effect.md
+++ b/content/docs/hooks-effect.md
@@ -6,7 +6,7 @@ next: hooks-rules.html
 prev: hooks-intro.html
 ---
 
-*Hooks* let you use state and other React features without writing a class.
+*Hooks* are a new addition in React 16.8. They let you use state and other React features without writing a class.
 
 The *Effect Hook* lets you perform side effects in function components:
 
diff --git a/content/docs/hooks-faq.md b/content/docs/hooks-faq.md
index abd57a0bb6..db403bc023 100644
--- a/content/docs/hooks-faq.md
+++ b/content/docs/hooks-faq.md
@@ -5,7 +5,7 @@ permalink: docs/hooks-faq.html
 prev: hooks-reference.html
 ---
 
-*Hooks* let you use state and other React features without writing a class.
+*Hooks* are a new addition in React 16.8. They let you use state and other React features without writing a class.
 
 This page answers some of the frequently asked questions about [Hooks](/docs/hooks-overview.html).
 
diff --git a/content/docs/hooks-intro.md b/content/docs/hooks-intro.md
index aea4019791..a7f64beaf3 100644
--- a/content/docs/hooks-intro.md
+++ b/content/docs/hooks-intro.md
@@ -5,7 +5,7 @@ permalink: docs/hooks-intro.html
 next: hooks-overview.html
 ---
 
-*Hooks* let you use state and other React features without writing a class.
+*Hooks* are a new addition in React 16.8. They let you use state and other React features without writing a class.
 
 ```js{4,5}
 import React, { useState } from 'react';
diff --git a/content/docs/hooks-overview.md b/content/docs/hooks-overview.md
index d3f2dbd842..013f792ca8 100644
--- a/content/docs/hooks-overview.md
+++ b/content/docs/hooks-overview.md
@@ -6,7 +6,7 @@ next: hooks-state.html
 prev: hooks-intro.html
 ---
 
-*Hooks* let you use state and other React features without writing a class.
+*Hooks* are a new addition in React 16.8. They let you use state and other React features without writing a class.
 
 Hooks are [backwards-compatible](/docs/hooks-intro.html#no-breaking-changes). This page provides an overview of Hooks for experienced React users. This is a fast-paced overview. If you get confused, look for a yellow box like this:
 
diff --git a/content/docs/hooks-reference.md b/content/docs/hooks-reference.md
index c3af423931..5dd1c75f93 100644
--- a/content/docs/hooks-reference.md
+++ b/content/docs/hooks-reference.md
@@ -6,7 +6,7 @@ prev: hooks-custom.html
 next: hooks-faq.html
 ---
 
-*Hooks* let you use state and other React features without writing a class.
+*Hooks* are a new addition in React 16.8. They let you use state and other React features without writing a class.
 
 This page describes the APIs for the built-in Hooks in React.
 
diff --git a/content/docs/hooks-rules.md b/content/docs/hooks-rules.md
index 20a11360fa..80a447992a 100644
--- a/content/docs/hooks-rules.md
+++ b/content/docs/hooks-rules.md
@@ -6,7 +6,7 @@ next: hooks-custom.html
 prev: hooks-effect.html
 ---
 
-*Hooks* let you use state and other React features without writing a class.
+*Hooks* are a new addition in React 16.8. They let you use state and other React features without writing a class.
 
 Hooks are JavaScript functions, but you need to follow two rules when using them. We provide a [linter plugin](https://www.npmjs.com/package/eslint-plugin-react-hooks) to enforce these rules automatically:
 
diff --git a/content/docs/hooks-state.md b/content/docs/hooks-state.md
index 35e31fd6c6..2a234af82e 100644
--- a/content/docs/hooks-state.md
+++ b/content/docs/hooks-state.md
@@ -6,7 +6,7 @@ next: hooks-effect.html
 prev: hooks-overview.html
 ---
 
-*Hooks* let you use state and other React features without writing a class.
+*Hooks* are a new addition in React 16.8. They let you use state and other React features without writing a class.
 
 The [previous page](/docs/hooks-intro.html) introduced Hooks with this example:
 

From 9d62821e9eb7b91c03bf67f9ee3af79f5e8454cd Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Fri, 25 Jan 2019 18:12:30 +0000
Subject: [PATCH 04/54] Tweak refwording

---
 content/docs/reference-react.md | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/content/docs/reference-react.md b/content/docs/reference-react.md
index e04a2dfcc9..3ac8c607a8 100644
--- a/content/docs/reference-react.md
+++ b/content/docs/reference-react.md
@@ -67,9 +67,7 @@ Suspense lets components "wait" for something before rendering. Today, Suspense
 
 ### Hooks
 
-Hooks are a new feature available in React 16.8 and higher. They let you use state and other React features without writing a class.
-
-They have a [separate](/docs/hooks-intro.html) documentation section and an API reference page:
+*Hooks* are a new addition in React 16.8. They let you use state and other React features without writing a class. Hooks have a [dedicated docs section](/docs/hooks-intro.html) and a separate API reference:
 
 - [Basic Hooks](/docs/hooks-reference.html#basic-hooks)
   - [`useState`](/docs/hooks-reference.html#usestate)
@@ -84,7 +82,6 @@ They have a [separate](/docs/hooks-intro.html) documentation section and an API
   - [`useLayoutEffect`](/docs/hooks-reference.html#uselayouteffect)
   - [`useDebugValue`](/docs/hooks-reference.html#usedebugvalue)
 
-
 * * *
 
 ## Reference

From eaefc81239ac78b5c5ca1a1829b293d4ac77c7df Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Fri, 25 Jan 2019 19:22:27 +0000
Subject: [PATCH 05/54] Hooks blog post draft

---
 content/blog/2019-01-30-react-v16.8.0.md | 97 ++++++++++++++++++++++++
 1 file changed, 97 insertions(+)
 create mode 100644 content/blog/2019-01-30-react-v16.8.0.md

diff --git a/content/blog/2019-01-30-react-v16.8.0.md b/content/blog/2019-01-30-react-v16.8.0.md
new file mode 100644
index 0000000000..94359c2603
--- /dev/null
+++ b/content/blog/2019-01-30-react-v16.8.0.md
@@ -0,0 +1,97 @@
+---
+title: "React v16.8: The One With Hooks"
+author: [gaearon]
+---
+
+With React 16.8, [React Hooks](/docs/hooks-intro.html) are available in a stable release!
+
+## What Are Hooks?
+
+Hooks let you use state and other React features without writing a class. You can also **build your own Hooks** to share reusable stateful logic between components.
+
+If you've never heard of Hooks before, you might find these resources interesting:
+
+* [Introducing Hooks](/docs/hooks-intro.html) explains why we're adding Hooks to React.
+* [Hooks at a Glance](/docs/hooks-overview.html) is a fast-paced overview of the built-in Hooks.
+* [Building Your Own Hooks](/docs/hooks-custom.html) demonstrates code reuse with custom Hooks.
+* [Making Sense of React Hooks](https://medium.com/@dan_abramov/making-sense-of-react-hooks-fdbde8803889) explores the new possibilities unlocked by Hooks.
+* [useHooks.com](https://usehooks.com/) showcases community-maintained Hooks recipes and demos.
+
+**You don't have to learn Hooks right now.** Hooks have no breaking changes, and we have no plans to remove classes from React. The [Hooks FAQ](/docs/hooks-faq.html) describes the gradual adoption strategy.
+
+## No Big Rewrites
+
+We don't recommend rewriting your existing applications to use Hooks overnight. Instead, try using Hooks in some of the new components, and let us know what you think. Code using Hooks will work [side by side](/docs/hooks-intro.html#gradual-adoption-strategy) with your existing code using classes.
+
+## Can I Use Hooks Today?
+
+Yes! Starting with 16.8.0, React includes a stable implementation of React Hooks for:
+
+* React DOM
+* React DOM Server
+* React Test Renderer
+* React Shallow Renderer
+
+Note that **to enable Hooks, all React packages need to be 16.8.0 or higher**. Hooks won't work if you forget to update, for example, React DOM.
+
+**React Native will fully support Hooks in its next stable release.**
+
+## Tooling Support
+
+React Hooks are now fully supported by React DevTools. They are also supported in the latest Flow and TypeScript definitions for React. We recommend using a new [lint rule](https://www.npmjs.com/package/eslint-plugin-react-hooks) to enforce best practices with Hooks. It will soon be included into Create React App by default.
+
+## What's Next
+
+React Hooks don't cover *all* use cases for classes yet but they're [very close](/docs/hooks-faq.html#do-hooks-cover-all-use-cases-for-classes). Currently, only `getSnapshotBeforeUpdate()` and `componentDidCatch()` methods don't have equivalent Hooks APIs, and these lifecycles are relatively uncommon. If you want, you should be able to use Hooks in most of the new code you're writing.
+
+Even while Hooks were in alpha, we saw many [interesting examples](https://medium.com/@drcmda/hooks-in-react-spring-a-tutorial-c6c436ad7ee4) of custom Hooks for animations, forms, subscriptions, integrating with other libraries, and so on. Our goal is to empower the React community to write components and Hooks that deliver great user and developer experience. We can't wait to see what you'll create next!
+
+## Thanks
+
+We'd like to thank everybody who commented on the [Hooks RFC](https://github.com/reactjs/rfcs/pull/68) for sharing their feedback. We've read all of your comments and made some adjustments to the final API based on them.
+
+## Installation
+
+React v16.8.0 is available on the npm registry.
+
+To install React 16 with Yarn, run:
+
+```bash
+yarn add react@^16.8.0 react-dom@^16.8.0
+```
+
+To install React 16 with npm, run:
+
+```bash
+npm install --save react@^16.8.0 react-dom@^16.8.0
+```
+
+We also provide UMD builds of React via a CDN:
+
+```html
+<script crossorigin src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
+<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>
+```
+
+Refer to the documentation for [detailed installation instructions](/docs/installation.html).
+
+## Changelog
+
+### React
+
+* Adds [Hooks](https://reactjs.org/docs/hooks-intro.html) — a way to use state and other React features without writing a class. ([@acdlite](https://github.com/acdlite) et al. in [#13968](https://github.com/facebook/react/pull/13968))
+
+### React DOM
+
+* Support synchronous thenables passed to `React.lazy()`. ([@gaearon](https://github.com/gaearon) in [#14626](https://github.com/facebook/react/pull/14626))
+
+### React Test Renderer
+
+* Support Hooks in the shallow renderer. ([@trueadm](https://github.com/trueadm) in [#14567](https://github.com/facebook/react/pull/14567))
+* Fix shallow renderer passing incorrect state to `shouldComponentUpdate` in the presence of `getDerivedStateFromProps`. ([@chenesan](https://github.com/chenesan) in [#14613](https://github.com/facebook/react/pull/14613))
+
+### ESLint Plugin: React Hooks
+
+* Initial [release](https://www.npmjs.com/package/eslint-plugin-react-hooks). ([@calebmer](https://github.com/calebmer) in [#13968](https://github.com/facebook/react/pull/13968))
+* Fix reporting after encountering a loop. ([@calebmer](https://github.com/calebmer) and [@Yurickh](https://github.com/Yurickh) in [#13968](https://github.com/facebook/react/pull/13968))
+

From 57138d729df8d21f50210b516b3b55caf62ecbf7 Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Fri, 25 Jan 2019 19:43:46 +0000
Subject: [PATCH 06/54] Link to roadmap from post

---
 content/blog/2019-01-30-react-v16.8.0.md | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/content/blog/2019-01-30-react-v16.8.0.md b/content/blog/2019-01-30-react-v16.8.0.md
index 94359c2603..b431abbd86 100644
--- a/content/blog/2019-01-30-react-v16.8.0.md
+++ b/content/blog/2019-01-30-react-v16.8.0.md
@@ -42,7 +42,9 @@ React Hooks are now fully supported by React DevTools. They are also supported i
 
 ## What's Next
 
-React Hooks don't cover *all* use cases for classes yet but they're [very close](/docs/hooks-faq.html#do-hooks-cover-all-use-cases-for-classes). Currently, only `getSnapshotBeforeUpdate()` and `componentDidCatch()` methods don't have equivalent Hooks APIs, and these lifecycles are relatively uncommon. If you want, you should be able to use Hooks in most of the new code you're writing.
+We described our plan for the next months in the recently published [React Roadmap](/blog/2018/11/27/react-16-roadmap.html).
+
+Note that React Hooks don't cover *all* use cases for classes yet but they're [very close](/docs/hooks-faq.html#do-hooks-cover-all-use-cases-for-classes). Currently, only `getSnapshotBeforeUpdate()` and `componentDidCatch()` methods don't have equivalent Hooks APIs, and these lifecycles are relatively uncommon. If you want, you should be able to use Hooks in most of the new code you're writing.
 
 Even while Hooks were in alpha, we saw many [interesting examples](https://medium.com/@drcmda/hooks-in-react-spring-a-tutorial-c6c436ad7ee4) of custom Hooks for animations, forms, subscriptions, integrating with other libraries, and so on. Our goal is to empower the React community to write components and Hooks that deliver great user and developer experience. We can't wait to see what you'll create next!
 

From 5da272a3e2b1c768b0492cd8f9e655220220056b Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Tue, 29 Jan 2019 17:49:08 +0000
Subject: [PATCH 07/54] Add more details

---
 content/blog/2019-01-30-react-v16.8.0.md | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/content/blog/2019-01-30-react-v16.8.0.md b/content/blog/2019-01-30-react-v16.8.0.md
index b431abbd86..84412abe3e 100644
--- a/content/blog/2019-01-30-react-v16.8.0.md
+++ b/content/blog/2019-01-30-react-v16.8.0.md
@@ -85,15 +85,19 @@ Refer to the documentation for [detailed installation instructions](/docs/instal
 
 ### React DOM
 
+* Bail out of rendering on identical values for `useState` and `useReducer` Hooks. ([@acdlite](https://github.com/acdlite) in [#14569](https://github.com/facebook/react/pull/14569))
+* Don’t compare the first argument passed to `useEffect`/`useMemo`/`useCallback` Hooks. ([@acdlite](https://github.com/facebook/react/pull/14594) in [#14594](https://github.com/facebook/react/pull/14594))
 * Support synchronous thenables passed to `React.lazy()`. ([@gaearon](https://github.com/gaearon) in [#14626](https://github.com/facebook/react/pull/14626))
+* Render components with Hooks twice in Strict Mode (DEV-only) to match class behavior. ([@gaearon](https://github.com/gaearon) in [#14654](https://github.com/facebook/react/pull/14654))
+* Warn about mismatching Hook order in development. ([@threepointone](https://github.com/threepointone) in [#14585](https://github.com/facebook/react/pull/14585) and [@acdlite](https://github.com/acdlite) in [#14591](https://github.com/facebook/react/pull/14591))
 
 ### React Test Renderer
 
 * Support Hooks in the shallow renderer. ([@trueadm](https://github.com/trueadm) in [#14567](https://github.com/facebook/react/pull/14567))
-* Fix shallow renderer passing incorrect state to `shouldComponentUpdate` in the presence of `getDerivedStateFromProps`. ([@chenesan](https://github.com/chenesan) in [#14613](https://github.com/facebook/react/pull/14613))
+* Fix wrong state in `shouldComponentUpdate` in the presence of `getDerivedStateFromProps` for Shallow Renderer. ([@chenesan](https://github.com/chenesan) in [#14613](https://github.com/facebook/react/pull/14613))
 
 ### ESLint Plugin: React Hooks
 
 * Initial [release](https://www.npmjs.com/package/eslint-plugin-react-hooks). ([@calebmer](https://github.com/calebmer) in [#13968](https://github.com/facebook/react/pull/13968))
 * Fix reporting after encountering a loop. ([@calebmer](https://github.com/calebmer) and [@Yurickh](https://github.com/Yurickh) in [#13968](https://github.com/facebook/react/pull/13968))
-
+* Don't consider throwing to be a rule violation. ([@sophiebits](https://github.com/sophiebits) in [#14040](https://github.com/facebook/react/pull/14040))

From e9081c7f750939ae00fe799dd78ff005f336ccc4 Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Tue, 29 Jan 2019 17:58:12 +0000
Subject: [PATCH 08/54] Update and rename 2019-01-30-react-v16.8.0.md to
 2019-02-04-react-v16.8.0.md

---
 ...{2019-01-30-react-v16.8.0.md => 2019-02-04-react-v16.8.0.md} | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
 rename content/blog/{2019-01-30-react-v16.8.0.md => 2019-02-04-react-v16.8.0.md} (97%)

diff --git a/content/blog/2019-01-30-react-v16.8.0.md b/content/blog/2019-02-04-react-v16.8.0.md
similarity index 97%
rename from content/blog/2019-01-30-react-v16.8.0.md
rename to content/blog/2019-02-04-react-v16.8.0.md
index 84412abe3e..efcb17e9c7 100644
--- a/content/blog/2019-01-30-react-v16.8.0.md
+++ b/content/blog/2019-02-04-react-v16.8.0.md
@@ -86,7 +86,7 @@ Refer to the documentation for [detailed installation instructions](/docs/instal
 ### React DOM
 
 * Bail out of rendering on identical values for `useState` and `useReducer` Hooks. ([@acdlite](https://github.com/acdlite) in [#14569](https://github.com/facebook/react/pull/14569))
-* Don’t compare the first argument passed to `useEffect`/`useMemo`/`useCallback` Hooks. ([@acdlite](https://github.com/facebook/react/pull/14594) in [#14594](https://github.com/facebook/react/pull/14594))
+* Don’t compare the first argument passed to `useEffect`/`useMemo`/`useCallback` Hooks. ([@acdlite](https://github.com/acdlite) in [#14594](https://github.com/facebook/react/pull/14594))
 * Support synchronous thenables passed to `React.lazy()`. ([@gaearon](https://github.com/gaearon) in [#14626](https://github.com/facebook/react/pull/14626))
 * Render components with Hooks twice in Strict Mode (DEV-only) to match class behavior. ([@gaearon](https://github.com/gaearon) in [#14654](https://github.com/facebook/react/pull/14654))
 * Warn about mismatching Hook order in development. ([@threepointone](https://github.com/threepointone) in [#14585](https://github.com/facebook/react/pull/14585) and [@acdlite](https://github.com/acdlite) in [#14591](https://github.com/facebook/react/pull/14591))

From d15ec6e630810e9caa64b7e85546a6a8d8238b15 Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Fri, 1 Feb 2019 15:35:36 +0000
Subject: [PATCH 09/54] changelog updates

---
 content/blog/2019-02-04-react-v16.8.0.md | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/content/blog/2019-02-04-react-v16.8.0.md b/content/blog/2019-02-04-react-v16.8.0.md
index efcb17e9c7..fa2bf4f7d8 100644
--- a/content/blog/2019-02-04-react-v16.8.0.md
+++ b/content/blog/2019-02-04-react-v16.8.0.md
@@ -81,7 +81,8 @@ Refer to the documentation for [detailed installation instructions](/docs/instal
 
 ### React
 
-* Adds [Hooks](https://reactjs.org/docs/hooks-intro.html) — a way to use state and other React features without writing a class. ([@acdlite](https://github.com/acdlite) et al. in [#13968](https://github.com/facebook/react/pull/13968))
+* Add [Hooks](https://reactjs.org/docs/hooks-intro.html) — a way to use state and other React features without writing a class. ([@acdlite](https://github.com/acdlite) et al. in [#13968](https://github.com/facebook/react/pull/13968))
+* Improve the `useReducer` Hook lazy initialization API. ([@acdlite](https://github.com/acdlite) in [#14723](https://github.com/facebook/react/pull/14723))
 
 ### React DOM
 
@@ -99,5 +100,5 @@ Refer to the documentation for [detailed installation instructions](/docs/instal
 ### ESLint Plugin: React Hooks
 
 * Initial [release](https://www.npmjs.com/package/eslint-plugin-react-hooks). ([@calebmer](https://github.com/calebmer) in [#13968](https://github.com/facebook/react/pull/13968))
-* Fix reporting after encountering a loop. ([@calebmer](https://github.com/calebmer) and [@Yurickh](https://github.com/Yurickh) in [#13968](https://github.com/facebook/react/pull/13968))
+* Fix reporting after encountering a loop. ([@calebmer](https://github.com/calebmer) and [@Yurickh](https://github.com/Yurickh) in [#14661](https://github.com/facebook/react/pull/14661))
 * Don't consider throwing to be a rule violation. ([@sophiebits](https://github.com/sophiebits) in [#14040](https://github.com/facebook/react/pull/14040))

From 37d46dd8a397512ca3078aa1f320af27f9bf747c Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Fri, 1 Feb 2019 16:54:14 +0000
Subject: [PATCH 10/54] review tweaks

---
 content/blog/2019-02-04-react-v16.8.0.md | 57 +++++++++++++++++++++++-
 1 file changed, 55 insertions(+), 2 deletions(-)

diff --git a/content/blog/2019-02-04-react-v16.8.0.md b/content/blog/2019-02-04-react-v16.8.0.md
index fa2bf4f7d8..5731a12eee 100644
--- a/content/blog/2019-02-04-react-v16.8.0.md
+++ b/content/blog/2019-02-04-react-v16.8.0.md
@@ -38,7 +38,7 @@ Note that **to enable Hooks, all React packages need to be 16.8.0 or higher**. H
 
 ## Tooling Support
 
-React Hooks are now fully supported by React DevTools. They are also supported in the latest Flow and TypeScript definitions for React. We recommend using a new [lint rule](https://www.npmjs.com/package/eslint-plugin-react-hooks) to enforce best practices with Hooks. It will soon be included into Create React App by default.
+React Hooks are now fully supported by React DevTools. They are also supported in the latest Flow and TypeScript definitions for React. We strongly recommend enabling a new [lint rule called `eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks) to enforce best practices with Hooks. It will soon be included into Create React App by default.
 
 ## What's Next
 
@@ -46,14 +46,35 @@ We described our plan for the next months in the recently published [React Roadm
 
 Note that React Hooks don't cover *all* use cases for classes yet but they're [very close](/docs/hooks-faq.html#do-hooks-cover-all-use-cases-for-classes). Currently, only `getSnapshotBeforeUpdate()` and `componentDidCatch()` methods don't have equivalent Hooks APIs, and these lifecycles are relatively uncommon. If you want, you should be able to use Hooks in most of the new code you're writing.
 
-Even while Hooks were in alpha, we saw many [interesting examples](https://medium.com/@drcmda/hooks-in-react-spring-a-tutorial-c6c436ad7ee4) of custom Hooks for animations, forms, subscriptions, integrating with other libraries, and so on. Our goal is to empower the React community to write components and Hooks that deliver great user and developer experience. We can't wait to see what you'll create next!
+Even while Hooks were in alpha, we saw many [interesting examples](https://medium.com/@drcmda/hooks-in-react-spring-a-tutorial-c6c436ad7ee4) of custom Hooks for animations, forms, subscriptions, integrating with other libraries, and so on. We're excited about Hooks because they make code reuse easier, helping you write your components in a simpler way and make great user experiences. We can't wait to see what you'll create next!
 
 ## Thanks
 
 We'd like to thank everybody who commented on the [Hooks RFC](https://github.com/reactjs/rfcs/pull/68) for sharing their feedback. We've read all of your comments and made some adjustments to the final API based on them.
 
+## Breaking Changes from Alpha Versions
+
+React 16.8.0 is the first **stable** release supporting Hooks.
+
+Over the past few months, we have also provided several **alpha** versions for community feedback: `16.7.0-alpha.0`, `16.7.0-alpha.1`, `16.7.0-alpha.2`, and `16.8.0-alpha.0`.
+
+**We don't recommend depending on alphas in production code.** We publish them so we can make breaking changes in response to community feedback before the API is stable.
+
+Here is a list of all breaking changes to Hooks between the first alpha and the stable release:
+
+* Remove `useMutationEffect`. ([@sophiebits](https://github.com/sophiebits) in [#14336](https://github.com/facebook/react/pull/14336))
+* Rename `useImperativeMethods` to `useImperativeHandle`. ([@threepointone](https://github.com/threepointone) in [#14565](https://github.com/facebook/react/pull/14565))
+* Bail out of rendering on identical values for `useState` and `useReducer` Hooks. ([@acdlite](https://github.com/acdlite) in [#14569](https://github.com/facebook/react/pull/14569))
+* Don’t compare the first argument passed to `useEffect`/`useMemo`/`useCallback` Hooks. ([@acdlite](https://github.com/acdlite) in [#14594](https://github.com/facebook/react/pull/14594))
+* Render components with Hooks twice in Strict Mode (DEV-only). ([@gaearon](https://github.com/gaearon) in [#14654](https://github.com/facebook/react/pull/14654))
+* Improve the `useReducer` Hook lazy initialization API. ([@acdlite](https://github.com/acdlite) in [#14723](https://github.com/facebook/react/pull/14723))
+
+Read more about our [versioning policy and commitment to stability](/docs/faq-versioning.html).
+
 ## Installation
 
+### React
+
 React v16.8.0 is available on the npm registry.
 
 To install React 16 with Yarn, run:
@@ -77,6 +98,37 @@ We also provide UMD builds of React via a CDN:
 
 Refer to the documentation for [detailed installation instructions](/docs/installation.html).
 
+### ESLint Plugin for React Hooks
+
+>Note
+>
+>If you're using Create React App, instead of manually configuring ESLint you can wait for the next version of `react-scripts` which will come out shortly and will include this rule.
+
+Assuming you already have ESLint installed, run:
+
+```sh
+# npm
+npm install eslint-plugin-react-hooks@next --save-dev
+
+# yarn
+yarn add eslint-plugin-react-hooks@next --dev
+```
+
+Then add it to your ESLint configuration:
+
+```js
+{
+  "plugins": [
+    // ...
+    "react-hooks"
+  ],
+  "rules": {
+    // ...
+    "react-hooks/rules-of-hooks": "error"
+  }
+}
+```
+
 ## Changelog
 
 ### React
@@ -92,6 +144,7 @@ Refer to the documentation for [detailed installation instructions](/docs/instal
 * Render components with Hooks twice in Strict Mode (DEV-only) to match class behavior. ([@gaearon](https://github.com/gaearon) in [#14654](https://github.com/facebook/react/pull/14654))
 * Warn about mismatching Hook order in development. ([@threepointone](https://github.com/threepointone) in [#14585](https://github.com/facebook/react/pull/14585) and [@acdlite](https://github.com/acdlite) in [#14591](https://github.com/facebook/react/pull/14591))
 
+
 ### React Test Renderer
 
 * Support Hooks in the shallow renderer. ([@trueadm](https://github.com/trueadm) in [#14567](https://github.com/facebook/react/pull/14567))

From ee5fea9f36c9e6cbeaff0b494160a180dd27075f Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Fri, 1 Feb 2019 17:06:32 +0000
Subject: [PATCH 11/54] Mention type defs

---
 content/blog/2019-02-04-react-v16.8.0.md | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/content/blog/2019-02-04-react-v16.8.0.md b/content/blog/2019-02-04-react-v16.8.0.md
index 5731a12eee..7a8bdd09e5 100644
--- a/content/blog/2019-02-04-react-v16.8.0.md
+++ b/content/blog/2019-02-04-react-v16.8.0.md
@@ -36,6 +36,8 @@ Note that **to enable Hooks, all React packages need to be 16.8.0 or higher**. H
 
 **React Native will fully support Hooks in its next stable release.**
 
+The final TypeScript and Flow definitions are currently in review and will be available soon.
+
 ## Tooling Support
 
 React Hooks are now fully supported by React DevTools. They are also supported in the latest Flow and TypeScript definitions for React. We strongly recommend enabling a new [lint rule called `eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks) to enforce best practices with Hooks. It will soon be included into Create React App by default.

From e3012392a3107aa47d65029a17d47721205b6db2 Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Fri, 1 Feb 2019 19:55:03 +0000
Subject: [PATCH 12/54] add warning for invalid hook call

---
 content/warnings/invalid-hook-call-warning.md | 121 ++++++++++++++++++
 1 file changed, 121 insertions(+)
 create mode 100644 content/warnings/invalid-hook-call-warning.md

diff --git a/content/warnings/invalid-hook-call-warning.md b/content/warnings/invalid-hook-call-warning.md
new file mode 100644
index 0000000000..176c7b2a2d
--- /dev/null
+++ b/content/warnings/invalid-hook-call-warning.md
@@ -0,0 +1,121 @@
+---
+title: Invalid Hook Call Warning
+layout: single
+permalink: warnings/invalid-hook-call-warning.html
+---
+
+ You are probably here because you got the following error message:
+
+ > Hooks can only be called inside the body of a function component.
+
+There are three common reasons you might be seeing it:
+
+1. You might have **mismatching versions** of React and React DOM.
+2. You might be **breaking the [Rules of Hooks](/docs/hooks-rules.html)**.
+3. You might have **more than one copy of React** in the same app.
+
+Let's look at each of these cases.
+
+## Mismatching Versions of React and React DOM
+
+You might be using a version of `react-dom` (<= 16.8.0) or `react-native` (<= 0.60) that doesn't yet support Hooks. You can run `npm ls react-dom` or `npm ls react-native` in your application folder to check which version you're using. If you find more than one of them, this might also create problems (more on that below).
+
+## Breaking the Rules of Hooks
+
+You can only call Hooks **while React is rendering a function component**:
+
+* ✅ Call them at the top level in the body of a function component.
+* ✅ Call them at the top level in the body of a [custom Hook](/docs/hooks-custom.html).
+
+**Learn more about this in the [Rules of Hooks](/docs/hooks-rules.html).**
+
+To avoid confusion, it’s **not** supported to call Hooks in other cases:
+
+* 🔴 Do not call Hooks in class components.
+* 🔴 Do not call in event handlers.
+* 🔴 Do not call Hooks inside functions passed to `useMemo`, `useReducer`, or `useEffect`.
+
+If you break these rules, you might see this error.
+
+```js{2-3,8-9,15-16,23-24,33-34}
+function Counter() {
+  // ✅ Good: top-level in a function component
+  const [count, setCount] = useState(0);
+  // ...
+}
+
+function useWindowWidth() {
+  // ✅ Good: top-level in a custom Hook
+  const [width, setWidth] = useState(window.innerWidth);
+  // ...
+}
+
+function Bad1() {
+  function handleClick() {
+    // 🔴 Bad: inside an event handler (to fix, move it outside!)
+    const theme = useContext(ThemeContext);
+  }
+  // ...
+}
+
+function Bad2() {
+  const style = useMemo(() => {
+    // 🔴 Bad: inside useMemo (to fix, move it outside!)
+    const theme = useContext(ThemeContext);
+    return createStyle(theme);
+  });
+  // ...
+}
+
+
+class Bad3 extends React.Component {
+  render() {
+    // 🔴 Bad: inside a class component
+    useEffect(() => {})
+    // ...
+  }
+}
+```
+
+You can use the [`eslint-plugin-react-hooks` plugin](https://www.npmjs.com/package/eslint-plugin-react-hooks) to catch some of these mistakes.
+
+>Note
+>
+>[Custom Hooks](/docs/hooks-custom.html) *may* call other Hooks (that's their whole purpose). This works because custom Hooks are also supposed to only be called while a function component is rendering.
+
+
+## Duplicate React
+
+In order for Hooks to work, `react` import from your application code needs to resolve to the same module as the `react` import from inside the `react-dom` package.
+
+If these `react` imports resolve to two different exports objects, you will see this warning. This may happen if you **accidentally end up with two copies** of the `react` package.
+
+If you use Node for package management, you can run this check in your project folder:
+
+    npm ls react
+
+If you see more than one React, you'll need to figure out why this happens, and fix your dependency tree. For example, maybe a library you're using incorrectly specifies `react` as a dependency (rather than a peer dependency). Until such a library is fixed, [Yarn resolutions](https://yarnpkg.com/lang/en/docs/selective-version-resolutions/) is one possible workaround.
+
+You can also try to debug this problem by adding some logs and restarting your development server:
+
+```js
+// Add this in node_modules/react-dom/index.js
+window.React1 = require('react');
+
+// Add this in your component file
+require('react-dom');
+window.React2 = require('react');
+console.log(window.React1 === window.React2);
+```
+
+If it prints `false` then you might have two Reacts and need to figure out why that happened. [This issue](https://github.com/facebook/react/issues/13991) includes some common reasons encountered by the community.
+
+This problem can also come up when you use `npm link` or an equivalent. In that case, your bundler might "see" two Reacts — one in application folder and one in your library folder. Assuming `myapp` and `mylib` are sibling folders, one possible fix is to run `npm link ../myapp/node_modules/react` from `mylib`. This should make the library use the application's React copy.
+
+>Note
+>
+>In general, React supports using multiple independent copies on one page (for example, if an app and a third-party widget both use it). It only breaks if you call `ReactDOM.render()` for a component with a different `require('react')` than seen by `react-dom`.
+
+## Other Causes
+
+If none of this worked, please comment in [this issue](https://github.com/facebook/react/issues/13991) and we'll try to help. Try to create a small reproducing example — you might discover the problem as you're doing it.

From f149987d940cefaa0bce4b3351a8991bfdc1d9c0 Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Fri, 1 Feb 2019 20:21:19 +0000
Subject: [PATCH 13/54] Warning page for invalid Hook calls (#1613)

* add warning for invalid hook call

* Fix versions

* Split code examples

* unnecessary comma

* tweaks

* Update content/warnings/invalid-hook-call-warning.md

Co-Authored-By: gaearon <dan.abramov@gmail.com>

* nit
---
 content/warnings/invalid-hook-call-warning.md | 122 ++++++++++++++++++
 1 file changed, 122 insertions(+)
 create mode 100644 content/warnings/invalid-hook-call-warning.md

diff --git a/content/warnings/invalid-hook-call-warning.md b/content/warnings/invalid-hook-call-warning.md
new file mode 100644
index 0000000000..f04ec90138
--- /dev/null
+++ b/content/warnings/invalid-hook-call-warning.md
@@ -0,0 +1,122 @@
+---
+title: Invalid Hook Call Warning
+layout: single
+permalink: warnings/invalid-hook-call-warning.html
+---
+
+ You are probably here because you got the following error message:
+
+ > Hooks can only be called inside the body of a function component.
+
+There are three common reasons you might be seeing it:
+
+1. You might have **mismatching versions** of React and React DOM.
+2. You might be **breaking the [Rules of Hooks](/docs/hooks-rules.html)**.
+3. You might have **more than one copy of React** in the same app.
+
+Let's look at each of these cases.
+
+## Mismatching Versions of React and React DOM
+
+You might be using a version of `react-dom` (< 16.8.0) or `react-native` (< 0.60) that doesn't yet support Hooks. You can run `npm ls react-dom` or `npm ls react-native` in your application folder to check which version you're using. If you find more than one of them, this might also create problems (more on that below).
+
+## Breaking the Rules of Hooks
+
+You can only call Hooks **while React is rendering a function component**:
+
+* ✅ Call them at the top level in the body of a function component.
+* ✅ Call them at the top level in the body of a [custom Hook](/docs/hooks-custom.html).
+
+**Learn more about this in the [Rules of Hooks](/docs/hooks-rules.html).**
+
+```js{2-3,8-9}
+function Counter() {
+  // ✅ Good: top-level in a function component
+  const [count, setCount] = useState(0);
+  // ...
+}
+
+function useWindowWidth() {
+  // ✅ Good: top-level in a custom Hook
+  const [width, setWidth] = useState(window.innerWidth);
+  // ...
+}
+```
+
+To avoid confusion, it’s **not** supported to call Hooks in other cases:
+
+* 🔴 Do not call Hooks in class components.
+* 🔴 Do not call in event handlers.
+* 🔴 Do not call Hooks inside functions passed to `useMemo`, `useReducer`, or `useEffect`.
+
+If you break these rules, you might see this error.
+
+```js{3-4,11-12,20-21}
+function Bad1() {
+  function handleClick() {
+    // 🔴 Bad: inside an event handler (to fix, move it outside!)
+    const theme = useContext(ThemeContext);
+  }
+  // ...
+}
+
+function Bad2() {
+  const style = useMemo(() => {
+    // 🔴 Bad: inside useMemo (to fix, move it outside!)
+    const theme = useContext(ThemeContext);
+    return createStyle(theme);
+  });
+  // ...
+}
+
+class Bad3 extends React.Component {
+  render() {
+    // 🔴 Bad: inside a class component
+    useEffect(() => {})
+    // ...
+  }
+}
+```
+
+You can use the [`eslint-plugin-react-hooks` plugin](https://www.npmjs.com/package/eslint-plugin-react-hooks) to catch some of these mistakes.
+
+>Note
+>
+>[Custom Hooks](/docs/hooks-custom.html) *may* call other Hooks (that's their whole purpose). This works because custom Hooks are also supposed to only be called while a function component is rendering.
+
+
+## Duplicate React
+
+In order for Hooks to work, the `react` import from your application code needs to resolve to the same module as the `react` import from inside the `react-dom` package.
+
+If these `react` imports resolve to two different exports objects, you will see this warning. This may happen if you **accidentally end up with two copies** of the `react` package.
+
+If you use Node for package management, you can run this check in your project folder:
+
+    npm ls react
+
+If you see more than one React, you'll need to figure out why this happens and fix your dependency tree. For example, maybe a library you're using incorrectly specifies `react` as a dependency (rather than a peer dependency). Until that library is fixed, [Yarn resolutions](https://yarnpkg.com/lang/en/docs/selective-version-resolutions/) is one possible workaround.
+
+You can also try to debug this problem by adding some logs and restarting your development server:
+
+```js
+// Add this in node_modules/react-dom/index.js
+window.React1 = require('react');
+
+// Add this in your component file
+require('react-dom');
+window.React2 = require('react');
+console.log(window.React1 === window.React2);
+```
+
+If it prints `false` then you might have two Reacts and need to figure out why that happened. [This issue](https://github.com/facebook/react/issues/13991) includes some common reasons encountered by the community.
+
+This problem can also come up when you use `npm link` or an equivalent. In that case, your bundler might "see" two Reacts — one in application folder and one in your library folder. Assuming `myapp` and `mylib` are sibling folders, one possible fix is to run `npm link ../myapp/node_modules/react` from `mylib`. This should make the library use the application's React copy.
+
+>Note
+>
+>In general, React supports using multiple independent copies on one page (for example, if an app and a third-party widget both use it). It only breaks if `require('react')` resolves differently between the component and the `react-dom` copy it was rendered with.
+
+## Other Causes
+
+If none of this worked, please comment in [this issue](https://github.com/facebook/react/issues/13991) and we'll try to help. Try to create a small reproducing example — you might discover the problem as you're doing it.

From 2fd487e3093319b14c3e031d596ebc4e96a480a8 Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Mon, 4 Feb 2019 14:09:46 +0000
Subject: [PATCH 14/54] Update 2019-02-04-react-v16.8.0.md

---
 content/blog/2019-02-04-react-v16.8.0.md | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/content/blog/2019-02-04-react-v16.8.0.md b/content/blog/2019-02-04-react-v16.8.0.md
index 7a8bdd09e5..688890d92d 100644
--- a/content/blog/2019-02-04-react-v16.8.0.md
+++ b/content/blog/2019-02-04-react-v16.8.0.md
@@ -21,7 +21,7 @@ If you've never heard of Hooks before, you might find these resources interestin
 
 ## No Big Rewrites
 
-We don't recommend rewriting your existing applications to use Hooks overnight. Instead, try using Hooks in some of the new components, and let us know what you think. Code using Hooks will work [side by side](/docs/hooks-intro.html#gradual-adoption-strategy) with your existing code using classes.
+We don't recommend rewriting your existing applications to use Hooks overnight. Instead, try using Hooks in some of the new components, and let us know what you think. Code using Hooks will work [side by side](/docs/hooks-intro.html#gradual-adoption-strategy) with existing code using classes.
 
 ## Can I Use Hooks Today?
 
@@ -34,13 +34,13 @@ Yes! Starting with 16.8.0, React includes a stable implementation of React Hooks
 
 Note that **to enable Hooks, all React packages need to be 16.8.0 or higher**. Hooks won't work if you forget to update, for example, React DOM.
 
-**React Native will fully support Hooks in its next stable release.**
+**React Native will support Hooks in the [0.60 release](https://github.com/react-native-community/react-native-releases/issues/79#issuecomment-457735214).**
 
-The final TypeScript and Flow definitions are currently in review and will be available soon.
+The latest TypeScript and Flow definitions for React support Hooks. The Flow definitions will be updated to the final `useReducer` API in the next Flow release.
 
 ## Tooling Support
 
-React Hooks are now fully supported by React DevTools. They are also supported in the latest Flow and TypeScript definitions for React. We strongly recommend enabling a new [lint rule called `eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks) to enforce best practices with Hooks. It will soon be included into Create React App by default.
+React Hooks are now supported by React DevTools. They are also supported in the latest Flow and TypeScript definitions for React. We strongly recommend enabling a new [lint rule called `eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks) to enforce best practices with Hooks. It will soon be included into Create React App by default.
 
 ## What's Next
 
@@ -58,7 +58,7 @@ We'd like to thank everybody who commented on the [Hooks RFC](https://github.com
 
 React 16.8.0 is the first **stable** release supporting Hooks.
 
-Over the past few months, we have also provided several **alpha** versions for community feedback: `16.7.0-alpha.0`, `16.7.0-alpha.1`, `16.7.0-alpha.2`, and `16.8.0-alpha.0`.
+Over the past few months, we have also provided several **alpha** versions for community feedback: `16.7.0-alpha.0`, `16.7.0-alpha.2`, and `16.8.0-alpha.0`.
 
 **We don't recommend depending on alphas in production code.** We publish them so we can make breaking changes in response to community feedback before the API is stable.
 
@@ -68,6 +68,7 @@ Here is a list of all breaking changes to Hooks between the first alpha and the
 * Rename `useImperativeMethods` to `useImperativeHandle`. ([@threepointone](https://github.com/threepointone) in [#14565](https://github.com/facebook/react/pull/14565))
 * Bail out of rendering on identical values for `useState` and `useReducer` Hooks. ([@acdlite](https://github.com/acdlite) in [#14569](https://github.com/facebook/react/pull/14569))
 * Don’t compare the first argument passed to `useEffect`/`useMemo`/`useCallback` Hooks. ([@acdlite](https://github.com/acdlite) in [#14594](https://github.com/facebook/react/pull/14594))
+* Use `Object.is` algorithm for comparing `useState` and `useReducer` values. ([@Jessidhia](https://github.com/Jessidhia) in [#14752](https://github.com/facebook/react/pull/14752))
 * Render components with Hooks twice in Strict Mode (DEV-only). ([@gaearon](https://github.com/gaearon) in [#14654](https://github.com/facebook/react/pull/14654))
 * Improve the `useReducer` Hook lazy initialization API. ([@acdlite](https://github.com/acdlite) in [#14723](https://github.com/facebook/react/pull/14723))
 
@@ -142,6 +143,7 @@ Then add it to your ESLint configuration:
 
 * Bail out of rendering on identical values for `useState` and `useReducer` Hooks. ([@acdlite](https://github.com/acdlite) in [#14569](https://github.com/facebook/react/pull/14569))
 * Don’t compare the first argument passed to `useEffect`/`useMemo`/`useCallback` Hooks. ([@acdlite](https://github.com/acdlite) in [#14594](https://github.com/facebook/react/pull/14594))
+* Use `Object.is` algorithm for comparing `useState` and `useReducer` values. ([@Jessidhia](https://github.com/Jessidhia) in [#14752](https://github.com/facebook/react/pull/14752))
 * Support synchronous thenables passed to `React.lazy()`. ([@gaearon](https://github.com/gaearon) in [#14626](https://github.com/facebook/react/pull/14626))
 * Render components with Hooks twice in Strict Mode (DEV-only) to match class behavior. ([@gaearon](https://github.com/gaearon) in [#14654](https://github.com/facebook/react/pull/14654))
 * Warn about mismatching Hook order in development. ([@threepointone](https://github.com/threepointone) in [#14585](https://github.com/facebook/react/pull/14585) and [@acdlite](https://github.com/acdlite) in [#14591](https://github.com/facebook/react/pull/14591))

From ed6e711a83f3f53f834fb5e331632a0dd20c3e95 Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Mon, 4 Feb 2019 14:13:21 +0000
Subject: [PATCH 15/54] Thanks Sophie

---
 content/blog/2019-02-04-react-v16.8.0.md | 36 +++++++++++-------------
 1 file changed, 16 insertions(+), 20 deletions(-)

diff --git a/content/blog/2019-02-04-react-v16.8.0.md b/content/blog/2019-02-04-react-v16.8.0.md
index 688890d92d..a2c1341535 100644
--- a/content/blog/2019-02-04-react-v16.8.0.md
+++ b/content/blog/2019-02-04-react-v16.8.0.md
@@ -54,26 +54,6 @@ Even while Hooks were in alpha, we saw many [interesting examples](https://mediu
 
 We'd like to thank everybody who commented on the [Hooks RFC](https://github.com/reactjs/rfcs/pull/68) for sharing their feedback. We've read all of your comments and made some adjustments to the final API based on them.
 
-## Breaking Changes from Alpha Versions
-
-React 16.8.0 is the first **stable** release supporting Hooks.
-
-Over the past few months, we have also provided several **alpha** versions for community feedback: `16.7.0-alpha.0`, `16.7.0-alpha.2`, and `16.8.0-alpha.0`.
-
-**We don't recommend depending on alphas in production code.** We publish them so we can make breaking changes in response to community feedback before the API is stable.
-
-Here is a list of all breaking changes to Hooks between the first alpha and the stable release:
-
-* Remove `useMutationEffect`. ([@sophiebits](https://github.com/sophiebits) in [#14336](https://github.com/facebook/react/pull/14336))
-* Rename `useImperativeMethods` to `useImperativeHandle`. ([@threepointone](https://github.com/threepointone) in [#14565](https://github.com/facebook/react/pull/14565))
-* Bail out of rendering on identical values for `useState` and `useReducer` Hooks. ([@acdlite](https://github.com/acdlite) in [#14569](https://github.com/facebook/react/pull/14569))
-* Don’t compare the first argument passed to `useEffect`/`useMemo`/`useCallback` Hooks. ([@acdlite](https://github.com/acdlite) in [#14594](https://github.com/facebook/react/pull/14594))
-* Use `Object.is` algorithm for comparing `useState` and `useReducer` values. ([@Jessidhia](https://github.com/Jessidhia) in [#14752](https://github.com/facebook/react/pull/14752))
-* Render components with Hooks twice in Strict Mode (DEV-only). ([@gaearon](https://github.com/gaearon) in [#14654](https://github.com/facebook/react/pull/14654))
-* Improve the `useReducer` Hook lazy initialization API. ([@acdlite](https://github.com/acdlite) in [#14723](https://github.com/facebook/react/pull/14723))
-
-Read more about our [versioning policy and commitment to stability](/docs/faq-versioning.html).
-
 ## Installation
 
 ### React
@@ -159,3 +139,19 @@ Then add it to your ESLint configuration:
 * Initial [release](https://www.npmjs.com/package/eslint-plugin-react-hooks). ([@calebmer](https://github.com/calebmer) in [#13968](https://github.com/facebook/react/pull/13968))
 * Fix reporting after encountering a loop. ([@calebmer](https://github.com/calebmer) and [@Yurickh](https://github.com/Yurickh) in [#14661](https://github.com/facebook/react/pull/14661))
 * Don't consider throwing to be a rule violation. ([@sophiebits](https://github.com/sophiebits) in [#14040](https://github.com/facebook/react/pull/14040))
+
+## Hooks Changelog Since Alpha Versions
+
+The above changelog contains all notable changes since our last **stable** release (16.7.0). [As with all our minor releases](/docs/faq-versioning.html), none of the changes break backwards compatibility.
+
+If you're currently using Hooks from an alpha build of React, note that this release does contain some small breaking changes to Hooks. **We don't recommend depending on alphas in production code.** We publish them so we can make changes in response to community feedback before the API is stable.
+
+Here are all breaking changes to Hooks that have been made since the first alpha release:
+
+* Remove `useMutationEffect`. ([@sophiebits](https://github.com/sophiebits) in [#14336](https://github.com/facebook/react/pull/14336))
+* Rename `useImperativeMethods` to `useImperativeHandle`. ([@threepointone](https://github.com/threepointone) in [#14565](https://github.com/facebook/react/pull/14565))
+* Bail out of rendering on identical values for `useState` and `useReducer` Hooks. ([@acdlite](https://github.com/acdlite) in [#14569](https://github.com/facebook/react/pull/14569))
+* Don’t compare the first argument passed to `useEffect`/`useMemo`/`useCallback` Hooks. ([@acdlite](https://github.com/acdlite) in [#14594](https://github.com/facebook/react/pull/14594))
+* Use `Object.is` algorithm for comparing `useState` and `useReducer` values. ([@Jessidhia](https://github.com/Jessidhia) in [#14752](https://github.com/facebook/react/pull/14752))
+* Render components with Hooks twice in Strict Mode (DEV-only). ([@gaearon](https://github.com/gaearon) in [#14654](https://github.com/facebook/react/pull/14654))
+* Improve the `useReducer` Hook lazy initialization API. ([@acdlite](https://github.com/acdlite) in [#14723](https://github.com/facebook/react/pull/14723))

From 0d8957026442f2af82190874213d0935685dc42b Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Mon, 4 Feb 2019 14:14:14 +0000
Subject: [PATCH 16/54] Update 2019-02-04-react-v16.8.0.md

---
 content/blog/2019-02-04-react-v16.8.0.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/content/blog/2019-02-04-react-v16.8.0.md b/content/blog/2019-02-04-react-v16.8.0.md
index a2c1341535..6591b440fd 100644
--- a/content/blog/2019-02-04-react-v16.8.0.md
+++ b/content/blog/2019-02-04-react-v16.8.0.md
@@ -84,6 +84,7 @@ Refer to the documentation for [detailed installation instructions](/docs/instal
 ### ESLint Plugin for React Hooks
 
 >Note
+>As mentioned above, we strongly recommend using the `eslint-plugin-react-hooks` lint rule.
 >
 >If you're using Create React App, instead of manually configuring ESLint you can wait for the next version of `react-scripts` which will come out shortly and will include this rule.
 

From 95258c051661ee21c7f7dd3d9e17c0d3d9eb67b0 Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Mon, 4 Feb 2019 14:26:21 +0000
Subject: [PATCH 17/54] Revert "add warning for invalid hook call"

This reverts commit e3012392a3107aa47d65029a17d47721205b6db2.
---
 content/warnings/invalid-hook-call-warning.md | 121 ------------------
 1 file changed, 121 deletions(-)
 delete mode 100644 content/warnings/invalid-hook-call-warning.md

diff --git a/content/warnings/invalid-hook-call-warning.md b/content/warnings/invalid-hook-call-warning.md
deleted file mode 100644
index 176c7b2a2d..0000000000
--- a/content/warnings/invalid-hook-call-warning.md
+++ /dev/null
@@ -1,121 +0,0 @@
----
-title: Invalid Hook Call Warning
-layout: single
-permalink: warnings/invalid-hook-call-warning.html
----
-
- You are probably here because you got the following error message:
-
- > Hooks can only be called inside the body of a function component.
-
-There are three common reasons you might be seeing it:
-
-1. You might have **mismatching versions** of React and React DOM.
-2. You might be **breaking the [Rules of Hooks](/docs/hooks-rules.html)**.
-3. You might have **more than one copy of React** in the same app.
-
-Let's look at each of these cases.
-
-## Mismatching Versions of React and React DOM
-
-You might be using a version of `react-dom` (<= 16.8.0) or `react-native` (<= 0.60) that doesn't yet support Hooks. You can run `npm ls react-dom` or `npm ls react-native` in your application folder to check which version you're using. If you find more than one of them, this might also create problems (more on that below).
-
-## Breaking the Rules of Hooks
-
-You can only call Hooks **while React is rendering a function component**:
-
-* ✅ Call them at the top level in the body of a function component.
-* ✅ Call them at the top level in the body of a [custom Hook](/docs/hooks-custom.html).
-
-**Learn more about this in the [Rules of Hooks](/docs/hooks-rules.html).**
-
-To avoid confusion, it’s **not** supported to call Hooks in other cases:
-
-* 🔴 Do not call Hooks in class components.
-* 🔴 Do not call in event handlers.
-* 🔴 Do not call Hooks inside functions passed to `useMemo`, `useReducer`, or `useEffect`.
-
-If you break these rules, you might see this error.
-
-```js{2-3,8-9,15-16,23-24,33-34}
-function Counter() {
-  // ✅ Good: top-level in a function component
-  const [count, setCount] = useState(0);
-  // ...
-}
-
-function useWindowWidth() {
-  // ✅ Good: top-level in a custom Hook
-  const [width, setWidth] = useState(window.innerWidth);
-  // ...
-}
-
-function Bad1() {
-  function handleClick() {
-    // 🔴 Bad: inside an event handler (to fix, move it outside!)
-    const theme = useContext(ThemeContext);
-  }
-  // ...
-}
-
-function Bad2() {
-  const style = useMemo(() => {
-    // 🔴 Bad: inside useMemo (to fix, move it outside!)
-    const theme = useContext(ThemeContext);
-    return createStyle(theme);
-  });
-  // ...
-}
-
-
-class Bad3 extends React.Component {
-  render() {
-    // 🔴 Bad: inside a class component
-    useEffect(() => {})
-    // ...
-  }
-}
-```
-
-You can use the [`eslint-plugin-react-hooks` plugin](https://www.npmjs.com/package/eslint-plugin-react-hooks) to catch some of these mistakes.
-
->Note
->
->[Custom Hooks](/docs/hooks-custom.html) *may* call other Hooks (that's their whole purpose). This works because custom Hooks are also supposed to only be called while a function component is rendering.
-
-
-## Duplicate React
-
-In order for Hooks to work, `react` import from your application code needs to resolve to the same module as the `react` import from inside the `react-dom` package.
-
-If these `react` imports resolve to two different exports objects, you will see this warning. This may happen if you **accidentally end up with two copies** of the `react` package.
-
-If you use Node for package management, you can run this check in your project folder:
-
-    npm ls react
-
-If you see more than one React, you'll need to figure out why this happens, and fix your dependency tree. For example, maybe a library you're using incorrectly specifies `react` as a dependency (rather than a peer dependency). Until such a library is fixed, [Yarn resolutions](https://yarnpkg.com/lang/en/docs/selective-version-resolutions/) is one possible workaround.
-
-You can also try to debug this problem by adding some logs and restarting your development server:
-
-```js
-// Add this in node_modules/react-dom/index.js
-window.React1 = require('react');
-
-// Add this in your component file
-require('react-dom');
-window.React2 = require('react');
-console.log(window.React1 === window.React2);
-```
-
-If it prints `false` then you might have two Reacts and need to figure out why that happened. [This issue](https://github.com/facebook/react/issues/13991) includes some common reasons encountered by the community.
-
-This problem can also come up when you use `npm link` or an equivalent. In that case, your bundler might "see" two Reacts — one in application folder and one in your library folder. Assuming `myapp` and `mylib` are sibling folders, one possible fix is to run `npm link ../myapp/node_modules/react` from `mylib`. This should make the library use the application's React copy.
-
->Note
->
->In general, React supports using multiple independent copies on one page (for example, if an app and a third-party widget both use it). It only breaks if you call `ReactDOM.render()` for a component with a different `require('react')` than seen by `react-dom`.
-
-## Other Causes
-
-If none of this worked, please comment in [this issue](https://github.com/facebook/react/issues/13991) and we'll try to help. Try to create a small reproducing example — you might discover the problem as you're doing it.

From e5a987bc60a80ca935f8e11f16b06f2a58215b64 Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Mon, 4 Feb 2019 14:34:52 +0000
Subject: [PATCH 18/54] Tweaks

---
 content/blog/2019-02-04-react-v16.8.0.md | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/content/blog/2019-02-04-react-v16.8.0.md b/content/blog/2019-02-04-react-v16.8.0.md
index 6591b440fd..0cd4ae8973 100644
--- a/content/blog/2019-02-04-react-v16.8.0.md
+++ b/content/blog/2019-02-04-react-v16.8.0.md
@@ -36,8 +36,6 @@ Note that **to enable Hooks, all React packages need to be 16.8.0 or higher**. H
 
 **React Native will support Hooks in the [0.60 release](https://github.com/react-native-community/react-native-releases/issues/79#issuecomment-457735214).**
 
-The latest TypeScript and Flow definitions for React support Hooks. The Flow definitions will be updated to the final `useReducer` API in the next Flow release.
-
 ## Tooling Support
 
 React Hooks are now supported by React DevTools. They are also supported in the latest Flow and TypeScript definitions for React. We strongly recommend enabling a new [lint rule called `eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks) to enforce best practices with Hooks. It will soon be included into Create React App by default.
@@ -84,6 +82,7 @@ Refer to the documentation for [detailed installation instructions](/docs/instal
 ### ESLint Plugin for React Hooks
 
 >Note
+>
 >As mentioned above, we strongly recommend using the `eslint-plugin-react-hooks` lint rule.
 >
 >If you're using Create React App, instead of manually configuring ESLint you can wait for the next version of `react-scripts` which will come out shortly and will include this rule.

From d460a9b106c7b45d1f0168dbbeafb245ccd16cab Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Mon, 4 Feb 2019 15:34:23 +0000
Subject: [PATCH 19/54] Docs updates

---
 content/docs/hooks-faq.md       | 17 +++++++++
 content/docs/hooks-reference.md | 67 +++++++++++++++++++++++----------
 2 files changed, 64 insertions(+), 20 deletions(-)

diff --git a/content/docs/hooks-faq.md b/content/docs/hooks-faq.md
index db403bc023..91c695299e 100644
--- a/content/docs/hooks-faq.md
+++ b/content/docs/hooks-faq.md
@@ -37,6 +37,7 @@ This page answers some of the frequently asked questions about [Hooks](/docs/hoo
   * [Can I run an effect only on updates?](#can-i-run-an-effect-only-on-updates)
   * [How to get the previous props or state?](#how-to-get-the-previous-props-or-state)
   * [How do I implement getDerivedStateFromProps?](#how-do-i-implement-getderivedstatefromprops)
+  * [Is there something like forceUpdate?](#is-there-something-like-forceupdate)
   * [Can I make a ref to a function component?](#can-i-make-a-ref-to-a-function-component)
   * [What does const [thing, setThing] = useState() mean?](#what-does-const-thing-setthing--usestate-mean)
 * **[Performance Optimizations](#performance-optimizations)**
@@ -322,6 +323,22 @@ function ScrollView({row}) {
 
 This might look strange at first, but an update during rendering is exactly what `getDerivedStateFromProps` has always been like conceptually.
 
+### Is there something like forceUpdate?
+
+Both `useState` and `useReducer` Hooks [bail out of updates](/docs/hooks-reference.html#bailing-out-of-a-state-update) if the next value is the same as the previous one. Mutating state in place and calling `setState` will not cause a re-render.
+
+Normally, you shouldn't mutate local state in React. However, as an escape hatch, you can use an incrementing counter to force a re-render even if the state has not changed:
+
+```js
+  const [ignored, forceUpdate] = useReducer(x => x + 1, 0);
+
+  function handleClick() {
+    forceUpdate();
+  }
+```
+
+Try to avoid this pattern if possible.
+
 ### Can I make a ref to a function component?
 
 While you shouldn't need this often, you may expose some imperative methods to a parent component with the [`useImperativeHandle`](/docs/hooks-reference.html#useimperativehandle) Hook.
diff --git a/content/docs/hooks-reference.md b/content/docs/hooks-reference.md
index 5dd1c75f93..cddd027725 100644
--- a/content/docs/hooks-reference.md
+++ b/content/docs/hooks-reference.md
@@ -89,6 +89,10 @@ const [state, setState] = useState(() => {
 });
 ```
 
+#### Bailing out of a state update
+
+If you update a State Hook to the same value as the current state, React will bail out without rendering the children or firing effects. (React uses the [`Object.is` comparison algorithm](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#Description).)
+
 ### `useEffect`
 
 ```js
@@ -172,20 +176,18 @@ The following Hooks are either variants of the basic ones from the previous sect
 ### `useReducer`
 
 ```js
-const [state, dispatch] = useReducer(reducer, initialState);
+const [state, dispatch] = useReducer(reducer, initialArg, init);
 ```
 
 An alternative to [`useState`](#usestate). Accepts a reducer of type `(state, action) => newState`, and returns the current state paired with a `dispatch` method. (If you're familiar with Redux, you already know how this works.)
 
+`useReducer` is usually preferable to `useState` when you have complex state logic that involves multiple sub-values or when the next state depends on the previous one. `useReducer` also lets you optimize performance for components that trigger deep updates because [you can pass `dispatch` down instead of callbacks](/docs/hooks-faq.html#how-to-avoid-passing-callbacks-down).
+
 Here's the counter example from the [`useState`](#usestate) section, rewritten to use a reducer:
 
 ```js
-const initialState = {count: 0};
-
 function reducer(state, action) {
   switch (action.type) {
-    case 'reset':
-      return initialState;
     case 'increment':
       return {count: state.count + 1};
     case 'decrement':
@@ -202,9 +204,6 @@ function Counter({initialCount}) {
   return (
     <>
       Count: {state.count}
-      <button onClick={() => dispatch({type: 'reset'})}>
-        Reset
-      </button>
       <button onClick={() => dispatch({type: 'increment'})}>+</button>
       <button onClick={() => dispatch({type: 'decrement'})}>-</button>
     </>
@@ -212,21 +211,52 @@ function Counter({initialCount}) {
 }
 ```
 
+#### Specifying the initial state
+
+There’s a few different ways to initialize `useReducer` state. You may choose either one depending on the use case. The simplest way to pass the initial state as a second argument:
+
+```js{3}
+  const [state, dispatch] = useReducer(
+    reducer,
+    {count: initialCount}
+  );
+```
+
+>Note
+>
+>React doesn’t use the `state = initialState` argument convention popularized by Redux. The initial value sometimes needs to depend on props and so is specified from the Hook call instead. If you feel strongly about this, you can write `state = initialState` both in the reducer and inside the `useReducer` destructuring assignment, but it's not encouraged.
+
 #### Lazy initialization
 
-`useReducer` accepts an optional third argument, `initialAction`. If provided, the initial action is applied during the initial render. This is useful for computing an initial state that includes values passed via props:
+If calculating the initial state is expensive, you can initialize it lazily. In that case, you can skip the second argument (and pass `undefined`). The third `useReducer` argument is an optional `init` function that you can provide to calculate the initial value once:
 
-```js
-const initialState = {count: 0};
+```js{3-4}
+  const [state, dispatch] = useReducer(
+    reducer,
+    undefined,
+    () => ({count: initialCount})
+  );
+```
+
+#### Lazy initialization with a transform
+
+For the most flexibility, you can specify *both* the second `initialArg` and the third `init` function arguments. In that case, the initial state will be set to `init(initialArg)`.
+
+This is handy if you want to extract the lazy initialization logic outside your reducer:
+
+```js{1-3,11-12,21,26}
+function init(initialCount) {
+  return {count: initialCount};
+}
 
 function reducer(state, action) {
   switch (action.type) {
-    case 'reset':
-      return {count: action.payload};
     case 'increment':
       return {count: state.count + 1};
     case 'decrement':
       return {count: state.count - 1};
+    case 'reset':
+      return init(action.payload);
     default:
       // A reducer must always return a valid state.
       // Alternatively you can throw an error if an invalid action is dispatched.
@@ -235,12 +265,7 @@ function reducer(state, action) {
 }
 
 function Counter({initialCount}) {
-  const [state, dispatch] = useReducer(
-    reducer,
-    initialState,
-    {type: 'reset', payload: initialCount},
-  );
-
+  const [state, dispatch] = useReducer(reducer, initialCount, init);
   return (
     <>
       Count: {state.count}
@@ -255,7 +280,9 @@ function Counter({initialCount}) {
 }
 ```
 
-`useReducer` is usually preferable to `useState` when you have complex state logic that involves multiple sub-values. It also lets you optimize performance for components that trigger deep updates because [you can pass `dispatch` down instead of callbacks](/docs/hooks-faq.html#how-to-avoid-passing-callbacks-down).
+#### Bailing out of a dispatch
+
+If you return the same value from a Reducer Hook as the current state, React will bail out without rendering the children or firing effects. (React uses the [`Object.is` comparison algorithm](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#Description).)
 
 ### `useCallback`
 

From f9f0d66272a373d52ea975978c0c3b2b77620bd8 Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Tue, 5 Feb 2019 15:24:15 +0000
Subject: [PATCH 20/54] Point to codesandbox and usehooks as community examples

---
 content/blog/2019-02-04-react-v16.8.0.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/content/blog/2019-02-04-react-v16.8.0.md b/content/blog/2019-02-04-react-v16.8.0.md
index 0cd4ae8973..f518ddde84 100644
--- a/content/blog/2019-02-04-react-v16.8.0.md
+++ b/content/blog/2019-02-04-react-v16.8.0.md
@@ -46,7 +46,7 @@ We described our plan for the next months in the recently published [React Roadm
 
 Note that React Hooks don't cover *all* use cases for classes yet but they're [very close](/docs/hooks-faq.html#do-hooks-cover-all-use-cases-for-classes). Currently, only `getSnapshotBeforeUpdate()` and `componentDidCatch()` methods don't have equivalent Hooks APIs, and these lifecycles are relatively uncommon. If you want, you should be able to use Hooks in most of the new code you're writing.
 
-Even while Hooks were in alpha, we saw many [interesting examples](https://medium.com/@drcmda/hooks-in-react-spring-a-tutorial-c6c436ad7ee4) of custom Hooks for animations, forms, subscriptions, integrating with other libraries, and so on. We're excited about Hooks because they make code reuse easier, helping you write your components in a simpler way and make great user experiences. We can't wait to see what you'll create next!
+Even while Hooks were in alpha, the React community created many interesting [examples](https://codesandbox.io/react-hooks) and [recipes](https://usehooks.com) using Hooks for animations, forms, subscriptions, integrating with other libraries, and so on. We're excited about Hooks because they make code reuse easier, helping you write your components in a simpler way and make great user experiences. We can't wait to see what you'll create next!
 
 ## Thanks
 

From d97cdcac7f3166c753928beb88209f1face6ac01 Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Tue, 5 Feb 2019 16:05:05 +0000
Subject: [PATCH 21/54] tweaks

---
 content/docs/hooks-reference.md | 30 +++++++++---------------------
 1 file changed, 9 insertions(+), 21 deletions(-)

diff --git a/content/docs/hooks-reference.md b/content/docs/hooks-reference.md
index cddd027725..6a8d8a664f 100644
--- a/content/docs/hooks-reference.md
+++ b/content/docs/hooks-reference.md
@@ -78,7 +78,7 @@ The "+" and "-" buttons use the functional form, because the updated value is ba
 >
 > Another option is `useReducer`, which is more suited for managing state objects that contain multiple sub-values.
 
-#### Lazy initialization
+#### Lazy initial state
 
 The `initialState` argument is the state used during the initial render. In subsequent renders, it is disregarded. If the initial state is the result of an expensive computation, you may provide a function instead, which will be executed only on the initial render:
 
@@ -186,6 +186,8 @@ An alternative to [`useState`](#usestate). Accepts a reducer of type `(state, ac
 Here's the counter example from the [`useState`](#usestate) section, rewritten to use a reducer:
 
 ```js
+const initialState = {count: 0};
+
 function reducer(state, action) {
   switch (action.type) {
     case 'increment':
@@ -193,14 +195,12 @@ function reducer(state, action) {
     case 'decrement':
       return {count: state.count - 1};
     default:
-      // A reducer must always return a valid state.
-      // Alternatively you can throw an error if an invalid action is dispatched.
-      return state;
+      throw new Error();
   }
 }
 
 function Counter({initialCount}) {
-  const [state, dispatch] = useReducer(reducer, {count: initialCount});
+  const [state, dispatch] = useReducer(reducer, initialState);
   return (
     <>
       Count: {state.count}
@@ -213,7 +213,7 @@ function Counter({initialCount}) {
 
 #### Specifying the initial state
 
-There’s a few different ways to initialize `useReducer` state. You may choose either one depending on the use case. The simplest way to pass the initial state as a second argument:
+There’s two different ways to initialize `useReducer` state. You may choose either one depending on the use case. The simplest way to pass the initial state as a second argument:
 
 ```js{3}
   const [state, dispatch] = useReducer(
@@ -224,25 +224,13 @@ There’s a few different ways to initialize `useReducer` state. You may choose
 
 >Note
 >
->React doesn’t use the `state = initialState` argument convention popularized by Redux. The initial value sometimes needs to depend on props and so is specified from the Hook call instead. If you feel strongly about this, you can write `state = initialState` both in the reducer and inside the `useReducer` destructuring assignment, but it's not encouraged.
+>React doesn’t use the `state = initialState` argument convention popularized by Redux. The initial value sometimes needs to depend on props and so is specified from the Hook call instead. If you feel strongly about this, you can call `useReducer(reducer, undefined, reducer)` to emulate the Redux behavior, but it's not encouraged.
 
 #### Lazy initialization
 
-If calculating the initial state is expensive, you can initialize it lazily. In that case, you can skip the second argument (and pass `undefined`). The third `useReducer` argument is an optional `init` function that you can provide to calculate the initial value once:
-
-```js{3-4}
-  const [state, dispatch] = useReducer(
-    reducer,
-    undefined,
-    () => ({count: initialCount})
-  );
-```
-
-#### Lazy initialization with a transform
-
-For the most flexibility, you can specify *both* the second `initialArg` and the third `init` function arguments. In that case, the initial state will be set to `init(initialArg)`.
+You can also create the initial state lazily. To do this, you can pass an `init` function as the third argument. The initial state will be set to `init(initialArg)`.
 
-This is handy if you want to extract the lazy initialization logic outside your reducer:
+It lets you extract the logic for calculating the initial state outside the reducer. This is also handy for resetting the state later in response to an action:
 
 ```js{1-3,11-12,21,26}
 function init(initialCount) {

From 601c016f49719819dd74799f0b334e50311c8d88 Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Tue, 5 Feb 2019 18:05:36 +0000
Subject: [PATCH 22/54] testing

---
 content/blog/2019-02-04-react-v16.8.0.md |  49 ++++++
 content/docs/addons-test-utils.md        | 194 ++++++++++++++++-------
 content/docs/hooks-faq.md                |  62 ++++++++
 3 files changed, 246 insertions(+), 59 deletions(-)

diff --git a/content/blog/2019-02-04-react-v16.8.0.md b/content/blog/2019-02-04-react-v16.8.0.md
index f518ddde84..f99297f681 100644
--- a/content/blog/2019-02-04-react-v16.8.0.md
+++ b/content/blog/2019-02-04-react-v16.8.0.md
@@ -48,6 +48,55 @@ Note that React Hooks don't cover *all* use cases for classes yet but they're [v
 
 Even while Hooks were in alpha, the React community created many interesting [examples](https://codesandbox.io/react-hooks) and [recipes](https://usehooks.com) using Hooks for animations, forms, subscriptions, integrating with other libraries, and so on. We're excited about Hooks because they make code reuse easier, helping you write your components in a simpler way and make great user experiences. We can't wait to see what you'll create next!
 
+## Testing Hooks
+
+We have added a new API called `ReactTestUtils.act()` in this release. It ensures that the behavior in your tests matches what happens in the browser more closely. We recommend to wrap any code rendering and triggering updates to your components into `act()` calls. Testing libraries like [`react-testing-library`](https://github.com/kentcdodds/react-testing-library) can also wrap their APIs with it.
+
+For example, the counter example from [this page](/docs/hooks-effect.html) can be tested like this:
+
+```js{3,20-22,29-31}
+import React from 'react';
+import ReactDOM from 'react-dom';
+import { act } from 'react-dom/test-utils';
+import Counter from './Counter';
+
+let container;
+
+beforeEach(() => {
+  container = document.createElement('div');
+  document.body.appendChild(container);
+});
+
+afterEach(() => {
+  document.body.removeChild(container);
+  container = null;
+});
+
+it('can render and update a counter', () => {
+  // Test first render and componentDidMount
+  act(() => {
+    ReactDOM.render(<Counter />, container);
+  });
+  const button = container.querySelector('button');
+  const label = container.querySelector('p');
+  expect(label.textContent).toBe('You clicked 0 times');
+  expect(document.title).toBe('You clicked 0 times');
+
+  // Test second render and componentDidUpdate
+  act(() => {
+    button.dispatchEvent(new MouseEvent('click', {bubbles: true}));
+  });
+  expect(label.textContent).toBe('You clicked 1 times');
+  expect(document.title).toBe('You clicked 1 times');
+});
+```
+
+The calls to `act()` will also flush the effects inside of them.
+
+If you need to test a custom Hook, you can do so by creating a component in your test, and using your Hook from it. Then you can test the component you wrote.
+
+To reduce the boilerplate, we recommend using [`react-testing-library`](https://git.io/react-testing-library) which is designed to encourage writing tests that use your components as the end users do.
+
 ## Thanks
 
 We'd like to thank everybody who commented on the [Hooks RFC](https://github.com/reactjs/rfcs/pull/68) for sharing their feedback. We've read all of your comments and made some adjustments to the final API based on them.
diff --git a/content/docs/addons-test-utils.md b/content/docs/addons-test-utils.md
index c7ef5c023e..40cec512c3 100644
--- a/content/docs/addons-test-utils.md
+++ b/content/docs/addons-test-utils.md
@@ -19,12 +19,11 @@ var ReactTestUtils = require('react-dom/test-utils'); // ES5 with npm
 
 > Note:
 >
-> Airbnb has released a testing utility called Enzyme, which makes it easy to assert, manipulate, and traverse your React Components' output. If you're deciding on a unit testing utility to use together with Jest, or any other test runner, it's worth checking out: [http://airbnb.io/enzyme/](http://airbnb.io/enzyme/)
+> We recommend using [`react-testing-library`](https://git.io/react-testing-library) which is designed to enable and encourage writing tests that use your components as the end users do.
 >
-> Alternatively, there is another testing utility called react-testing-library designed to enable and encourage writing tests that use your components as the end users use them. It also works with any test runner: [https://git.io/react-testing-library](https://git.io/react-testing-library)
+> Alternatively, Airbnb has released a testing utility called [Enzyme](http://airbnb.io/enzyme/), which makes it easy to assert, manipulate, and traverse your React Components' output.
 
- - [`Simulate`](#simulate)
- - [`renderIntoDocument()`](#renderintodocument)
+ - [`act()`](#act)
  - [`mockComponent()`](#mockcomponent)
  - [`isElement()`](#iselement)
  - [`isElementOfType()`](#iselementoftype)
@@ -38,68 +37,88 @@ var ReactTestUtils = require('react-dom/test-utils'); // ES5 with npm
  - [`findRenderedDOMComponentWithTag()`](#findrendereddomcomponentwithtag)
  - [`scryRenderedComponentsWithType()`](#scryrenderedcomponentswithtype)
  - [`findRenderedComponentWithType()`](#findrenderedcomponentwithtype)
+ - [`renderIntoDocument()`](#renderintodocument)
+ - [`Simulate`](#simulate)
 
 ## Reference
 
-## Shallow Rendering
-
-When writing unit tests for React, shallow rendering can be helpful. Shallow rendering lets you render a component "one level deep" and assert facts about what its render method returns, without worrying about the behavior of child components, which are not instantiated or rendered. This does not require a DOM.
-
-> Note:
->
-> The shallow renderer has moved to `react-test-renderer/shallow`.<br>
-> [Learn more about shallow rendering on its reference page.](/docs/shallow-renderer.html)
-
-## Other Utilities
-
-### `Simulate`
-
-```javascript
-Simulate.{eventName}(
-  element,
-  [eventData]
-)
+### `act()`
+
+To prepare a component for assertions, wrap the code rendering it and performing updates inside an `act()` call. This makes your test run closer to how React works in the browser.
+
+For example, let's say we have this `Counter` component:
+
+```js
+class App extends React.Component {
+  constructor(props) {
+    super(props);
+    this.state = {count: 0};
+    this.handleClick = this.handleClick.bind(this);
+  }
+  componentDidMount() {
+    document.title = `You clicked ${this.state.count} times`;
+  }
+  componentDidUpdate() {
+    document.title = `You clicked ${this.state.count} times`;
+  }
+  handleClick() {
+    this.setState(state => ({
+      count: state.count + 1,
+    }));
+  }
+  render() {
+    return (
+      <div>
+        <p>You clicked {this.state.count} times</p>
+        <button onClick={this.handleClick}>
+          Click me
+        </button>
+      </div>
+    );
+  }
+}
 ```
 
-Simulate an event dispatch on a DOM node with optional `eventData` event data.
-
-`Simulate` has a method for [every event that React understands](/docs/events.html#supported-events).
-
-**Clicking an element**
-
-```javascript
-// <button ref={(node) => this.button = node}>...</button>
-const node = this.button;
-ReactTestUtils.Simulate.click(node);
+Here is how we can test it:
+
+```js{3,20-22,29-31}
+import React from 'react';
+import ReactDOM from 'react-dom';
+import { act } from 'react-dom/test-utils';
+import Counter from './Counter';
+
+let container;
+
+beforeEach(() => {
+  container = document.createElement('div');
+  document.body.appendChild(container);
+});
+
+afterEach(() => {
+  document.body.removeChild(container);
+  container = null;
+});
+
+it('can render and update a counter', () => {
+  // Test first render and componentDidMount
+  act(() => {
+    ReactDOM.render(<Counter />, container);
+  });
+  const button = container.querySelector('button');
+  const label = container.querySelector('p');
+  expect(label.textContent).toBe('You clicked 0 times');
+  expect(document.title).toBe('You clicked 0 times');
+
+  // Test second render and componentDidUpdate
+  act(() => {
+    button.dispatchEvent(new MouseEvent('click', {bubbles: true}));
+  });
+  expect(label.textContent).toBe('You clicked 1 times');
+  expect(document.title).toBe('You clicked 1 times');
+});
 ```
 
-**Changing the value of an input field and then pressing ENTER.**
-
-```javascript
-// <input ref={(node) => this.textInput = node} />
-const node = this.textInput;
-node.value = 'giraffe';
-ReactTestUtils.Simulate.change(node);
-ReactTestUtils.Simulate.keyDown(node, {key: "Enter", keyCode: 13, which: 13});
-```
-
-> Note
->
-> You will have to provide any event property that you're using in your component (e.g. keyCode, which, etc...) as React is not creating any of these for you.
-
-* * *
-
-### `renderIntoDocument()`
-
-```javascript
-renderIntoDocument(element)
-```
-
-Render a React element into a detached DOM node in the document. **This function requires a DOM.**
-
-> Note:
->
-> You will need to have `window`, `window.document` and `window.document.createElement` globally available **before** you import `React`. Otherwise React will think it can't access the DOM and methods like `setState` won't work.
+Don't forget that dispatching DOM events only works when the DOM container is added to the `document`. You can use a helper like [`react-testing-library`](https://github.com/kentcdodds/react-testing-library) to reduce the boilerplate code.
 
 * * *
 
@@ -265,5 +284,62 @@ findRenderedComponentWithType(
 
 Same as [`scryRenderedComponentsWithType()`](#scryrenderedcomponentswithtype) but expects there to be one result and returns that one result, or throws exception if there is any other number of matches besides one.
 
+***
+
+### `renderIntoDocument()`
+
+```javascript
+renderIntoDocument(element)
+```
+
+Render a React element into a detached DOM node in the document. **This function requires a DOM.** It is effectively equivalent to:
+
+```js
+const domContainer = document.createElement('div');
+ReactDOM.render(element, domContainer);
+```
+
+> Note:
+>
+> You will need to have `window`, `window.document` and `window.document.createElement` globally available **before** you import `React`. Otherwise React will think it can't access the DOM and methods like `setState` won't work.
+
 * * *
 
+## Other Utilities
+
+### `Simulate`
+
+```javascript
+Simulate.{eventName}(
+  element,
+  [eventData]
+)
+```
+
+Simulate an event dispatch on a DOM node with optional `eventData` event data.
+
+`Simulate` has a method for [every event that React understands](/docs/events.html#supported-events).
+
+**Clicking an element**
+
+```javascript
+// <button ref={(node) => this.button = node}>...</button>
+const node = this.button;
+ReactTestUtils.Simulate.click(node);
+```
+
+**Changing the value of an input field and then pressing ENTER.**
+
+```javascript
+// <input ref={(node) => this.textInput = node} />
+const node = this.textInput;
+node.value = 'giraffe';
+ReactTestUtils.Simulate.change(node);
+ReactTestUtils.Simulate.keyDown(node, {key: "Enter", keyCode: 13, which: 13});
+```
+
+> Note
+>
+> You will have to provide any event property that you're using in your component (e.g. keyCode, which, etc...) as React is not creating any of these for you.
+
+* * *
\ No newline at end of file
diff --git a/content/docs/hooks-faq.md b/content/docs/hooks-faq.md
index 91c695299e..068180bd1d 100644
--- a/content/docs/hooks-faq.md
+++ b/content/docs/hooks-faq.md
@@ -113,8 +113,70 @@ Importantly, custom Hooks give you the power to constrain React API if you'd lik
 
 From React's point of view, a component using Hooks is just a regular component. If your testing solution doesn't rely on React internals, testing components with Hooks shouldn't be different from how you normally test components.
 
+For example, let's say we have this counter component:
+
+```js
+function Example() {
+  const [count, setCount] = useState(0);
+  useEffect(() => {
+    document.title = `You clicked ${count} times`;
+  });
+  return (
+    <div>
+      <p>You clicked {count} times</p>
+      <button onClick={() => setCount(count + 1)}>
+        Click me
+      </button>
+    </div>
+  );
+}
+```
+
+We'll test it using React DOM. To make sure that the behavior matches what happens in the browser, we'll wrap the code rendering and updating it into [`ReactTestUtils.act()`](/docs/test-utils.html#act) calls:
+
+```js{3,20-22,29-31}
+import React from 'react';
+import ReactDOM from 'react-dom';
+import { act } from 'react-dom/test-utils';
+import Counter from './Counter';
+
+let container;
+
+beforeEach(() => {
+  container = document.createElement('div');
+  document.body.appendChild(container);
+});
+
+afterEach(() => {
+  document.body.removeChild(container);
+  container = null;
+});
+
+it('can render and update a counter', () => {
+  // Test first render and componentDidMount
+  act(() => {
+    ReactDOM.render(<Counter />, container);
+  });
+  const button = container.querySelector('button');
+  const label = container.querySelector('p');
+  expect(label.textContent).toBe('You clicked 0 times');
+  expect(document.title).toBe('You clicked 0 times');
+
+  // Test second render and componentDidUpdate
+  act(() => {
+    button.dispatchEvent(new MouseEvent('click', {bubbles: true}));
+  });
+  expect(label.textContent).toBe('You clicked 1 times');
+  expect(document.title).toBe('You clicked 1 times');
+});
+```
+
+The calls to `act()` will also flush the effects inside of them.
+
 If you need to test a custom Hook, you can do so by creating a component in your test, and using your Hook from it. Then you can test the component you wrote.
 
+To reduce the boilerplate, we recommend using [`react-testing-library`](https://git.io/react-testing-library) which is designed to encourage writing tests that use your components as the end users do.
+
 ### What exactly do the [lint rules](https://www.npmjs.com/package/eslint-plugin-react-hooks) enforce?
 
 We provide an [ESLint plugin](https://www.npmjs.com/package/eslint-plugin-react-hooks) that enforces [rules of Hooks](/docs/hooks-rules.html) to avoid bugs. It assumes that any function starting with "`use`" and a capital letter right after it is a Hook. We recognize this heuristic isn't perfect and there may be some false positives, but without an ecosystem-wide convention there is just no way to make Hooks work well -- and longer names will discourage people from either adopting Hooks or following the convention.

From 30914131e8af651bf464a9380e47d7795b8827b9 Mon Sep 17 00:00:00 2001
From: Brian Vaughn <bvaughn@fb.com>
Date: Tue, 5 Feb 2019 18:21:24 +0000
Subject: [PATCH 23/54] Renamed Hooks blog/date

---
 .../{2019-02-04-react-v16.8.0.md => 2019-02-05-react-v16.8.0.md}  | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename content/blog/{2019-02-04-react-v16.8.0.md => 2019-02-05-react-v16.8.0.md} (100%)

diff --git a/content/blog/2019-02-04-react-v16.8.0.md b/content/blog/2019-02-05-react-v16.8.0.md
similarity index 100%
rename from content/blog/2019-02-04-react-v16.8.0.md
rename to content/blog/2019-02-05-react-v16.8.0.md

From ee909e5a675babde98711197699402befc043ff4 Mon Sep 17 00:00:00 2001
From: Brian Vaughn <bvaughn@fb.com>
Date: Tue, 5 Feb 2019 18:28:01 +0000
Subject: [PATCH 24/54] Udpated changelog

---
 content/blog/2019-02-05-react-v16.8.0.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/content/blog/2019-02-05-react-v16.8.0.md b/content/blog/2019-02-05-react-v16.8.0.md
index f99297f681..1ce3c3fe19 100644
--- a/content/blog/2019-02-05-react-v16.8.0.md
+++ b/content/blog/2019-02-05-react-v16.8.0.md
@@ -176,7 +176,7 @@ Then add it to your ESLint configuration:
 * Support synchronous thenables passed to `React.lazy()`. ([@gaearon](https://github.com/gaearon) in [#14626](https://github.com/facebook/react/pull/14626))
 * Render components with Hooks twice in Strict Mode (DEV-only) to match class behavior. ([@gaearon](https://github.com/gaearon) in [#14654](https://github.com/facebook/react/pull/14654))
 * Warn about mismatching Hook order in development. ([@threepointone](https://github.com/threepointone) in [#14585](https://github.com/facebook/react/pull/14585) and [@acdlite](https://github.com/acdlite) in [#14591](https://github.com/facebook/react/pull/14591))
-
+* Effect clean-up functions must return either `undefined` or a function. All other values, including `null`, are not allowed. [@acdlite](https://github.com/acdlite) in [#14119](https://github.com/facebook/react/pull/14119)
 
 ### React Test Renderer
 

From a0db3e7f1753a33b64e6d9ea52ed9d1b1b8f2887 Mon Sep 17 00:00:00 2001
From: Brian Vaughn <bvaughn@fb.com>
Date: Tue, 5 Feb 2019 18:39:25 +0000
Subject: [PATCH 25/54] Replaced inaccurate comments

---
 content/blog/2019-02-05-react-v16.8.0.md | 4 ++--
 content/docs/hooks-faq.md                | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/content/blog/2019-02-05-react-v16.8.0.md b/content/blog/2019-02-05-react-v16.8.0.md
index 1ce3c3fe19..16eac65d30 100644
--- a/content/blog/2019-02-05-react-v16.8.0.md
+++ b/content/blog/2019-02-05-react-v16.8.0.md
@@ -73,7 +73,7 @@ afterEach(() => {
 });
 
 it('can render and update a counter', () => {
-  // Test first render and componentDidMount
+  // Test first render and effect
   act(() => {
     ReactDOM.render(<Counter />, container);
   });
@@ -82,7 +82,7 @@ it('can render and update a counter', () => {
   expect(label.textContent).toBe('You clicked 0 times');
   expect(document.title).toBe('You clicked 0 times');
 
-  // Test second render and componentDidUpdate
+  // Test second render and effect
   act(() => {
     button.dispatchEvent(new MouseEvent('click', {bubbles: true}));
   });
diff --git a/content/docs/hooks-faq.md b/content/docs/hooks-faq.md
index 068180bd1d..30c5e681ca 100644
--- a/content/docs/hooks-faq.md
+++ b/content/docs/hooks-faq.md
@@ -153,7 +153,7 @@ afterEach(() => {
 });
 
 it('can render and update a counter', () => {
-  // Test first render and componentDidMount
+  // Test first render and effect
   act(() => {
     ReactDOM.render(<Counter />, container);
   });
@@ -162,7 +162,7 @@ it('can render and update a counter', () => {
   expect(label.textContent).toBe('You clicked 0 times');
   expect(document.title).toBe('You clicked 0 times');
 
-  // Test second render and componentDidUpdate
+  // Test second render and effect
   act(() => {
     button.dispatchEvent(new MouseEvent('click', {bubbles: true}));
   });

From 8cae0666577b3ce157a948f024017a51c71c5817 Mon Sep 17 00:00:00 2001
From: Brian Vaughn <bvaughn@fb.com>
Date: Tue, 5 Feb 2019 18:41:23 +0000
Subject: [PATCH 26/54] Added ReactTestUtils.act() to CHANGELOG

---
 content/blog/2019-02-05-react-v16.8.0.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/content/blog/2019-02-05-react-v16.8.0.md b/content/blog/2019-02-05-react-v16.8.0.md
index 16eac65d30..d3a7ac6928 100644
--- a/content/blog/2019-02-05-react-v16.8.0.md
+++ b/content/blog/2019-02-05-react-v16.8.0.md
@@ -182,6 +182,7 @@ Then add it to your ESLint configuration:
 
 * Support Hooks in the shallow renderer. ([@trueadm](https://github.com/trueadm) in [#14567](https://github.com/facebook/react/pull/14567))
 * Fix wrong state in `shouldComponentUpdate` in the presence of `getDerivedStateFromProps` for Shallow Renderer. ([@chenesan](https://github.com/chenesan) in [#14613](https://github.com/facebook/react/pull/14613))
+* Add `ReactTestUtils.act()` for batching updates so that tests more closely match real behavior. ([@threepointone](https://github.com/threepointone) in [#14744](https://github.com/facebook/react/pull/14744))
 
 ### ESLint Plugin: React Hooks
 

From 8fa112eeba9f9ecb12189ab8520d446537e4e25f Mon Sep 17 00:00:00 2001
From: Brian Vaughn <bvaughn@fb.com>
Date: Wed, 6 Feb 2019 08:03:03 +0000
Subject: [PATCH 27/54] Moved blog post to Feb 6th

---
 .../{2019-02-05-react-v16.8.0.md => 2019-02-06-react-v16.8.0.md}  | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename content/blog/{2019-02-05-react-v16.8.0.md => 2019-02-06-react-v16.8.0.md} (100%)

diff --git a/content/blog/2019-02-05-react-v16.8.0.md b/content/blog/2019-02-06-react-v16.8.0.md
similarity index 100%
rename from content/blog/2019-02-05-react-v16.8.0.md
rename to content/blog/2019-02-06-react-v16.8.0.md

From 98c1ebeff3ef169d498eb18c91d451d81e617815 Mon Sep 17 00:00:00 2001
From: Nikhil Erkimutt <nikhil.erkimutt@gmail.com>
Date: Wed, 6 Feb 2019 14:37:45 +0530
Subject: [PATCH 28/54] Update version number in header and versions page

---
 content/versions.yml  | 2 ++
 src/site-constants.js | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/content/versions.yml b/content/versions.yml
index 896af542b7..517c1bd37e 100644
--- a/content/versions.yml
+++ b/content/versions.yml
@@ -1,3 +1,5 @@
+- title: '16.8'
+  changelog: https://github.com/facebook/react/blob/master/CHANGELOG.md#1680-february-6-2019
 - title: '16.7'
   changelog: https://github.com/facebook/react/blob/master/CHANGELOG.md#1670-december-19-2018
 - title: '16.6'
diff --git a/src/site-constants.js b/src/site-constants.js
index 369911383b..8dd09616bb 100644
--- a/src/site-constants.js
+++ b/src/site-constants.js
@@ -8,7 +8,7 @@
 // NOTE: We can't just use `location.toString()` because when we are rendering
 // the SSR part in node.js we won't have a proper location.
 const urlRoot = 'https://reactjs.org';
-const version = '16.7.0';
+const version = '16.8.0';
 const babelURL = 'https://unpkg.com/babel-standalone@6.26.0/babel.min.js';
 
 export {urlRoot, version, babelURL};

From cea45bbbb498d85cf9c1ce615753afd29d20f244 Mon Sep 17 00:00:00 2001
From: Brian Vaughn <bvaughn@fb.com>
Date: Wed, 6 Feb 2019 09:13:58 +0000
Subject: [PATCH 29/54] Updated 16.8 CHANGELOG wording to also mention
 ReactTestRenderer.act()

---
 content/blog/2019-02-06-react-v16.8.0.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/content/blog/2019-02-06-react-v16.8.0.md b/content/blog/2019-02-06-react-v16.8.0.md
index d3a7ac6928..6f6871c229 100644
--- a/content/blog/2019-02-06-react-v16.8.0.md
+++ b/content/blog/2019-02-06-react-v16.8.0.md
@@ -182,7 +182,7 @@ Then add it to your ESLint configuration:
 
 * Support Hooks in the shallow renderer. ([@trueadm](https://github.com/trueadm) in [#14567](https://github.com/facebook/react/pull/14567))
 * Fix wrong state in `shouldComponentUpdate` in the presence of `getDerivedStateFromProps` for Shallow Renderer. ([@chenesan](https://github.com/chenesan) in [#14613](https://github.com/facebook/react/pull/14613))
-* Add `ReactTestUtils.act()` for batching updates so that tests more closely match real behavior. ([@threepointone](https://github.com/threepointone) in [#14744](https://github.com/facebook/react/pull/14744))
+* Add `ReactTestRenderer.act()` and `ReactTestUtils.act()` for batching updates so that tests more closely match real behavior. ([@threepointone](https://github.com/threepointone) in [#14744](https://github.com/facebook/react/pull/14744))
 
 ### ESLint Plugin: React Hooks
 

From be56e22bf62bd33edb0d4962ba7b08323f60e801 Mon Sep 17 00:00:00 2001
From: Rafael Cammarano Guglielmi <rafaelcg@gmail.com>
Date: Wed, 6 Feb 2019 10:14:22 +0000
Subject: [PATCH 30/54] Fix typo on hooks availability

Might make people that are going through the docs confused.
---
 content/docs/hooks-intro.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/content/docs/hooks-intro.md b/content/docs/hooks-intro.md
index a7f64beaf3..d0a4ef6acc 100644
--- a/content/docs/hooks-intro.md
+++ b/content/docs/hooks-intro.md
@@ -47,7 +47,7 @@ Before we continue, note that Hooks are:
 
 * **Completely opt-in.** You can try Hooks in a few components without rewriting any existing code. But you don't have to learn or use Hooks right now if you don't want to.
 * **100% backwards-compatible.** Hooks don't contain any breaking changes.
-* **Available now.** Hooks are currently in an alpha release, and we hope to include them in React 16.x after receiving community feedback.
+* **Available now.** Hooks are now available with the release of v16.8.0.
 
 **There are no plans to remove classes from React.** You can read more about the gradual adoption strategy for Hooks in the [bottom section](#gradual-adoption-strategy) of this page.
 

From 9f4b4a92a007051f7443b960807aab5a8298495b Mon Sep 17 00:00:00 2001
From: Christoph Nakazawa <cpojer@fb.com>
Date: Wed, 6 Feb 2019 10:25:57 +0000
Subject: [PATCH 31/54] React Native will ship hooks in its 0.59 release.
 (#1633)

---
 content/blog/2019-02-06-react-v16.8.0.md      | 2 +-
 content/warnings/invalid-hook-call-warning.md | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/content/blog/2019-02-06-react-v16.8.0.md b/content/blog/2019-02-06-react-v16.8.0.md
index 6f6871c229..d64e1a768f 100644
--- a/content/blog/2019-02-06-react-v16.8.0.md
+++ b/content/blog/2019-02-06-react-v16.8.0.md
@@ -34,7 +34,7 @@ Yes! Starting with 16.8.0, React includes a stable implementation of React Hooks
 
 Note that **to enable Hooks, all React packages need to be 16.8.0 or higher**. Hooks won't work if you forget to update, for example, React DOM.
 
-**React Native will support Hooks in the [0.60 release](https://github.com/react-native-community/react-native-releases/issues/79#issuecomment-457735214).**
+**React Native will support Hooks in the [0.59 release](https://github.com/react-native-community/react-native-releases/issues/79#issuecomment-457735214).**
 
 ## Tooling Support
 
diff --git a/content/warnings/invalid-hook-call-warning.md b/content/warnings/invalid-hook-call-warning.md
index f04ec90138..38808adecb 100644
--- a/content/warnings/invalid-hook-call-warning.md
+++ b/content/warnings/invalid-hook-call-warning.md
@@ -18,7 +18,7 @@ Let's look at each of these cases.
 
 ## Mismatching Versions of React and React DOM
 
-You might be using a version of `react-dom` (< 16.8.0) or `react-native` (< 0.60) that doesn't yet support Hooks. You can run `npm ls react-dom` or `npm ls react-native` in your application folder to check which version you're using. If you find more than one of them, this might also create problems (more on that below).
+You might be using a version of `react-dom` (< 16.8.0) or `react-native` (< 0.59) that doesn't yet support Hooks. You can run `npm ls react-dom` or `npm ls react-native` in your application folder to check which version you're using. If you find more than one of them, this might also create problems (more on that below).
 
 ## Breaking the Rules of Hooks
 

From af11b29c18c2ca2a81096c30d6f254ab0061e23e Mon Sep 17 00:00:00 2001
From: Brian Vaughn <bvaughn@fb.com>
Date: Wed, 6 Feb 2019 10:29:19 +0000
Subject: [PATCH 32/54] Added link to 16.7 docs

---
 content/versions.yml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/content/versions.yml b/content/versions.yml
index 517c1bd37e..8f1ca21be9 100644
--- a/content/versions.yml
+++ b/content/versions.yml
@@ -1,7 +1,9 @@
 - title: '16.8'
   changelog: https://github.com/facebook/react/blob/master/CHANGELOG.md#1680-february-6-2019
 - title: '16.7'
+  path: /version/16.7
   changelog: https://github.com/facebook/react/blob/master/CHANGELOG.md#1670-december-19-2018
+  url: https://5c54aa429e16c80007af3cd2--reactjs.netlify.com/
 - title: '16.6'
   path: /version/16.6
   changelog: https://github.com/facebook/react/blob/master/CHANGELOG.md#1660-october-23-2018

From add50079b1c042692ee5c55b72de72ab48ef6a2b Mon Sep 17 00:00:00 2001
From: Soichiro Miki <smiki-tky@umin.ac.jp>
Date: Thu, 7 Feb 2019 00:09:14 +0900
Subject: [PATCH 33/54] Port external gatsby-remark-autolink-headers plugin

---
 gatsby-config.js                              |  2 +-
 package.json                                  |  3 +-
 .../gatsby-client.js                          | 30 ++++++++
 .../gatsby-ssr.js                             | 76 +++++++++++++++++++
 .../gatsby-remark-header-custom-ids/index.js  | 60 +++++++++++++++
 .../package.json                              |  4 +
 yarn.lock                                     | 19 ++---
 7 files changed, 181 insertions(+), 13 deletions(-)
 create mode 100644 plugins/gatsby-remark-header-custom-ids/gatsby-client.js
 create mode 100644 plugins/gatsby-remark-header-custom-ids/gatsby-ssr.js
 create mode 100644 plugins/gatsby-remark-header-custom-ids/index.js
 create mode 100644 plugins/gatsby-remark-header-custom-ids/package.json

diff --git a/gatsby-config.js b/gatsby-config.js
index ed0799f34f..456396f927 100644
--- a/gatsby-config.js
+++ b/gatsby-config.js
@@ -55,7 +55,7 @@ module.exports = {
               maxWidth: 840,
             },
           },
-          'gatsby-remark-autolink-headers',
+          'gatsby-remark-header-custom-ids',
           {
             resolve: 'gatsby-remark-code-repls',
             options: {
diff --git a/package.json b/package.json
index a9930ccc89..d050abaf59 100644
--- a/package.json
+++ b/package.json
@@ -29,7 +29,6 @@
     "gatsby-plugin-react-helmet": "^3.0.0",
     "gatsby-plugin-sharp": "^2.0.0",
     "gatsby-plugin-twitter": "^2.0.0",
-    "gatsby-remark-autolink-headers": "^2.0.12",
     "gatsby-remark-code-repls": "^2.0.0",
     "gatsby-remark-copy-linked-files": "^2.0.0",
     "gatsby-remark-embed-snippet": "^3.0.0",
@@ -40,8 +39,10 @@
     "gatsby-source-filesystem": "^2.0.0",
     "gatsby-transformer-remark": "^2.0.0",
     "gatsby-transformer-sharp": "^2.0.0",
+    "github-slugger": "^1.2.1",
     "glamor": "^2.20.40",
     "hex2rgba": "^0.0.1",
+    "mdast-util-to-string": "^1.0.5",
     "normalize.css": "^8.0.0",
     "prettier": "^1.7.4",
     "prismjs": "^1.15.0",
diff --git a/plugins/gatsby-remark-header-custom-ids/gatsby-client.js b/plugins/gatsby-remark-header-custom-ids/gatsby-client.js
new file mode 100644
index 0000000000..6b24d0b13a
--- /dev/null
+++ b/plugins/gatsby-remark-header-custom-ids/gatsby-client.js
@@ -0,0 +1,30 @@
+let offsetY = 0;
+
+const getTargetOffset = hash => {
+  const id = window.decodeURI(hash.replace(`#`, ``));
+  if (id !== ``) {
+    const element = document.getElementById(id);
+    if (element) {
+      return element.offsetTop - offsetY;
+    }
+  }
+  return null;
+};
+
+exports.onInitialClientRender = (_, pluginOptions) => {
+  if (pluginOptions.offsetY) {
+    offsetY = pluginOptions.offsetY;
+  }
+
+  requestAnimationFrame(() => {
+    const offset = getTargetOffset(window.location.hash);
+    if (offset !== null) {
+      window.scrollTo(0, offset);
+    }
+  });
+};
+
+exports.shouldUpdateScroll = ({routerProps: {location}}) => {
+  const offset = getTargetOffset(location.hash);
+  return offset !== null ? [0, offset] : true;
+};
diff --git a/plugins/gatsby-remark-header-custom-ids/gatsby-ssr.js b/plugins/gatsby-remark-header-custom-ids/gatsby-ssr.js
new file mode 100644
index 0000000000..8d9ca0d41f
--- /dev/null
+++ b/plugins/gatsby-remark-header-custom-ids/gatsby-ssr.js
@@ -0,0 +1,76 @@
+const React = require(`react`);
+
+const pluginDefaults = {
+  className: `anchor`,
+  icon: true,
+  offsetY: 0,
+};
+
+exports.onRenderBody = ({setHeadComponents}, pluginOptions) => {
+  const {className, icon, offsetY} = Object.assign(
+    pluginDefaults,
+    pluginOptions,
+  );
+
+  const styles = `
+    .${className} {
+      float: left;
+      padding-right: 4px;
+      margin-left: -20px;
+    }
+    h1 .${className} svg,
+    h2 .${className} svg,
+    h3 .${className} svg,
+    h4 .${className} svg,
+    h5 .${className} svg,
+    h6 .${className} svg {
+      visibility: hidden;
+    }
+    h1:hover .${className} svg,
+    h2:hover .${className} svg,
+    h3:hover .${className} svg,
+    h4:hover .${className} svg,
+    h5:hover .${className} svg,
+    h6:hover .${className} svg,
+    h1 .${className}:focus svg,
+    h2 .${className}:focus svg,
+    h3 .${className}:focus svg,
+    h4 .${className}:focus svg,
+    h5 .${className}:focus svg,
+    h6 .${className}:focus svg {
+      visibility: visible;
+    }
+  `;
+
+  const script = `
+    document.addEventListener("DOMContentLoaded", function(event) {
+      var hash = window.decodeURI(location.hash.replace('#', ''))
+      if (hash !== '') {
+        var element = document.getElementById(hash)
+        if (element) {
+          var offset = element.offsetTop
+          // Wait for the browser to finish rendering before scrolling.
+          setTimeout((function() {
+            window.scrollTo(0, offset - ${offsetY})
+          }), 0)
+        }
+      }
+    })
+  `;
+
+  const style = icon ? (
+    <style key={`gatsby-remark-autolink-headers-style`} type="text/css">
+      {styles}
+    </style>
+  ) : (
+    undefined
+  );
+
+  return setHeadComponents([
+    style,
+    <script
+      key={`gatsby-remark-autolink-headers-script`}
+      dangerouslySetInnerHTML={{__html: script}}
+    />,
+  ]);
+};
diff --git a/plugins/gatsby-remark-header-custom-ids/index.js b/plugins/gatsby-remark-header-custom-ids/index.js
new file mode 100644
index 0000000000..b883608d68
--- /dev/null
+++ b/plugins/gatsby-remark-header-custom-ids/index.js
@@ -0,0 +1,60 @@
+/*!
+ * Based on 'gatsby-remark-autolink-headers'
+ * Original Author: Kyle Mathews <mathews.kyle@gmail.com>
+ * Copyright (c) 2015 Gatsbyjs
+ */
+
+const toString = require('mdast-util-to-string');
+const visit = require('unist-util-visit');
+const slugs = require('github-slugger')();
+
+function patch(context, key, value) {
+  if (!context[key]) {
+    context[key] = value;
+  }
+
+  return context[key];
+}
+
+const svgIcon = `<svg aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>`;
+
+module.exports = (
+  {markdownAST},
+  {icon = svgIcon, className = `anchor`, maintainCase = false},
+) => {
+  slugs.reset();
+
+  visit(markdownAST, 'heading', node => {
+    const id = slugs.slug(toString(node), maintainCase);
+    const data = patch(node, 'data', {});
+
+    patch(data, 'id', id);
+    patch(data, 'htmlAttributes', {});
+    patch(data, 'hProperties', {});
+    patch(data.htmlAttributes, 'id', id);
+    patch(data.hProperties, 'id', id);
+
+    if (icon !== false) {
+      node.children.unshift({
+        type: 'link',
+        url: `#${id}`,
+        title: null,
+        data: {
+          hProperties: {
+            'aria-hidden': true,
+            class: className,
+          },
+          hChildren: [
+            {
+              type: 'raw',
+              // The Octicon link icon is the default. But users can set their own icon via the "icon" option.
+              value: icon,
+            },
+          ],
+        },
+      });
+    }
+  });
+
+  return markdownAST;
+};
diff --git a/plugins/gatsby-remark-header-custom-ids/package.json b/plugins/gatsby-remark-header-custom-ids/package.json
new file mode 100644
index 0000000000..f146c90c1e
--- /dev/null
+++ b/plugins/gatsby-remark-header-custom-ids/package.json
@@ -0,0 +1,4 @@
+{
+  "name": "gatsby-remark-header-custom-ids",
+  "version": "0.0.1"
+}
diff --git a/yarn.lock b/yarn.lock
index 5beaed7f47..35a394271f 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5463,16 +5463,6 @@ gatsby-react-router-scroll@^2.0.0:
     scroll-behavior "^0.9.9"
     warning "^3.0.0"
 
-gatsby-remark-autolink-headers@^2.0.12:
-  version "2.0.12"
-  resolved "https://registry.yarnpkg.com/gatsby-remark-autolink-headers/-/gatsby-remark-autolink-headers-2.0.12.tgz#96830bd7496ace7d1b7e07444aa09ecbe2ac59d2"
-  integrity sha512-TI7dpdHOUohIWCW7i8ta4zZAdWG5C2ZmrHMC9flWGWQ62oq6Q2eW+I1I/v//UZ+vJ1dRaSX2lmsVFmt87rLVHQ==
-  dependencies:
-    "@babel/runtime" "^7.0.0"
-    github-slugger "^1.1.1"
-    mdast-util-to-string "^1.0.2"
-    unist-util-visit "^1.3.0"
-
 gatsby-remark-code-repls@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/gatsby-remark-code-repls/-/gatsby-remark-code-repls-2.0.0.tgz#b3290987046f1d325e6e93dbe9295f3cbb3df34a"
@@ -5814,6 +5804,13 @@ github-slugger@^1.1.1:
   dependencies:
     emoji-regex ">=6.0.0 <=6.1.1"
 
+github-slugger@^1.2.1:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.2.1.tgz#47e904e70bf2dccd0014748142d31126cfd49508"
+  integrity sha512-SsZUjg/P03KPzQBt7OxJPasGw6NRO5uOgiZ5RGXVud5iSIZ0eNZeNp5rTwCxtavrRUa/A77j8mePVc5lEvk0KQ==
+  dependencies:
+    emoji-regex ">=6.0.0 <=6.1.1"
+
 glamor@^2.20.40:
   version "2.20.40"
   resolved "https://registry.yarnpkg.com/glamor/-/glamor-2.20.40.tgz#f606660357b7cf18dface731ad1a2cfa93817f05"
@@ -8184,7 +8181,7 @@ mdast-util-to-nlcst@^3.2.0:
     unist-util-position "^3.0.0"
     vfile-location "^2.0.0"
 
-mdast-util-to-string@^1.0.2:
+mdast-util-to-string@^1.0.2, mdast-util-to-string@^1.0.5:
   version "1.0.5"
   resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.0.5.tgz#3552b05428af22ceda34f156afe62ec8e6d731ca"
   integrity sha512-2qLt/DEOo5F6nc2VFScQiHPzQ0XXcabquRJxKMhKte8nt42o08HUxNDPk7tt0YPxnWjAT11I1SYi0X0iPnfI5A==

From e74a555db72ce3400225fbcbfc7159767730cef8 Mon Sep 17 00:00:00 2001
From: Soichiro Miki <smiki-tky@umin.ac.jp>
Date: Thu, 7 Feb 2019 00:27:47 +0900
Subject: [PATCH 34/54] Implement custom-id syntax on headings

---
 plugins/gatsby-remark-header-custom-ids/index.js | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/plugins/gatsby-remark-header-custom-ids/index.js b/plugins/gatsby-remark-header-custom-ids/index.js
index b883608d68..df64570736 100644
--- a/plugins/gatsby-remark-header-custom-ids/index.js
+++ b/plugins/gatsby-remark-header-custom-ids/index.js
@@ -25,7 +25,16 @@ module.exports = (
   slugs.reset();
 
   visit(markdownAST, 'heading', node => {
-    const id = slugs.slug(toString(node), maintainCase);
+    // Support custom-id syntax.
+    const rawHeader = toString(node);
+    const match = /^.+(\s*\{#([a-z0-9\-_]+?)\}\s*)$/.exec(rawHeader);
+    const id = match ? match[2] : slugs.slug(rawHeader, maintainCase);
+    if (match) {
+      // Remove the custom ID part from the text node.
+      const lastNode = node.children[node.children.length - 1];
+      lastNode.value = lastNode.value.replace(match[1], '');
+    }
+
     const data = patch(node, 'data', {});
 
     patch(data, 'id', id);

From 16515ce4b903a3030ff852fdbe1ab3eb88c54c08 Mon Sep 17 00:00:00 2001
From: Soichiro Miki <smiki-tky@umin.ac.jp>
Date: Thu, 7 Feb 2019 00:50:57 +0900
Subject: [PATCH 35/54] Replace keys when inserting style/script tags

---
 plugins/gatsby-remark-header-custom-ids/gatsby-ssr.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/plugins/gatsby-remark-header-custom-ids/gatsby-ssr.js b/plugins/gatsby-remark-header-custom-ids/gatsby-ssr.js
index 8d9ca0d41f..c616fc289e 100644
--- a/plugins/gatsby-remark-header-custom-ids/gatsby-ssr.js
+++ b/plugins/gatsby-remark-header-custom-ids/gatsby-ssr.js
@@ -59,7 +59,7 @@ exports.onRenderBody = ({setHeadComponents}, pluginOptions) => {
   `;
 
   const style = icon ? (
-    <style key={`gatsby-remark-autolink-headers-style`} type="text/css">
+    <style key="gatsby-remark-header-custom-ids-style" type="text/css">
       {styles}
     </style>
   ) : (
@@ -69,7 +69,7 @@ exports.onRenderBody = ({setHeadComponents}, pluginOptions) => {
   return setHeadComponents([
     style,
     <script
-      key={`gatsby-remark-autolink-headers-script`}
+      key="gatsby-remark-header-custom-ids-script"
       dangerouslySetInnerHTML={{__html: script}}
     />,
   ]);

From f846c4da1b8bd1904c8f862fb2139ddd24450ea5 Mon Sep 17 00:00:00 2001
From: "Kent C. Dodds" <kent+github@doddsfamily.us>
Date: Wed, 6 Feb 2019 09:27:30 -0700
Subject: [PATCH 36/54] react-testing-library now supports `act` (#1635)

* react-testing-library now supports `act`

* fix typo
---
 content/blog/2019-02-06-react-v16.8.0.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/content/blog/2019-02-06-react-v16.8.0.md b/content/blog/2019-02-06-react-v16.8.0.md
index d64e1a768f..9fe33e8f43 100644
--- a/content/blog/2019-02-06-react-v16.8.0.md
+++ b/content/blog/2019-02-06-react-v16.8.0.md
@@ -50,7 +50,7 @@ Even while Hooks were in alpha, the React community created many interesting [ex
 
 ## Testing Hooks
 
-We have added a new API called `ReactTestUtils.act()` in this release. It ensures that the behavior in your tests matches what happens in the browser more closely. We recommend to wrap any code rendering and triggering updates to your components into `act()` calls. Testing libraries like [`react-testing-library`](https://github.com/kentcdodds/react-testing-library) can also wrap their APIs with it.
+We have added a new API called `ReactTestUtils.act()` in this release. It ensures that the behavior in your tests matches what happens in the browser more closely. We recommend to wrap any code rendering and triggering updates to your components into `act()` calls. Testing libraries can also wrap their APIs with it (for example, [`react-testing-library`](https://github.com/kentcdodds/react-testing-library)'s `render` and `fireEvent` utilities do this).
 
 For example, the counter example from [this page](/docs/hooks-effect.html) can be tested like this:
 

From d20be53455461d561ff820947e9da250fd3666c9 Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Wed, 6 Feb 2019 18:26:26 +0000
Subject: [PATCH 37/54] Document test renderer act (temporary fix)

---
 content/docs/addons-test-utils.md | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/content/docs/addons-test-utils.md b/content/docs/addons-test-utils.md
index 40cec512c3..12606b5a7e 100644
--- a/content/docs/addons-test-utils.md
+++ b/content/docs/addons-test-utils.md
@@ -46,6 +46,10 @@ var ReactTestUtils = require('react-dom/test-utils'); // ES5 with npm
 
 To prepare a component for assertions, wrap the code rendering it and performing updates inside an `act()` call. This makes your test run closer to how React works in the browser.
 
+>Note
+>
+>If you use `react-test-renderer`, it also provides an `act` export that behaves the same way.
+
 For example, let's say we have this `Counter` component:
 
 ```js
@@ -342,4 +346,4 @@ ReactTestUtils.Simulate.keyDown(node, {key: "Enter", keyCode: 13, which: 13});
 >
 > You will have to provide any event property that you're using in your component (e.g. keyCode, which, etc...) as React is not creating any of these for you.
 
-* * *
\ No newline at end of file
+* * *

From 8eaa70139f0c1201b4ef9cbf84a94b06eff8f79a Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Wed, 6 Feb 2019 18:28:08 +0000
Subject: [PATCH 38/54] Use 16.8.1 (#1638)

---
 src/site-constants.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/site-constants.js b/src/site-constants.js
index 8dd09616bb..a401ab74b7 100644
--- a/src/site-constants.js
+++ b/src/site-constants.js
@@ -8,7 +8,7 @@
 // NOTE: We can't just use `location.toString()` because when we are rendering
 // the SSR part in node.js we won't have a proper location.
 const urlRoot = 'https://reactjs.org';
-const version = '16.8.0';
+const version = '16.8.1';
 const babelURL = 'https://unpkg.com/babel-standalone@6.26.0/babel.min.js';
 
 export {urlRoot, version, babelURL};

From 29e585535df63697f3b736677d3d8ac596e5ad90 Mon Sep 17 00:00:00 2001
From: Nat Alison <tesseralis@gmail.com>
Date: Wed, 6 Feb 2019 16:51:44 -0800
Subject: [PATCH 39/54] first run

---
 scripts/generateHeaderIDs.js | 64 ++++++++++++++++++++++++++++++++++++
 1 file changed, 64 insertions(+)
 create mode 100644 scripts/generateHeaderIDs.js

diff --git a/scripts/generateHeaderIDs.js b/scripts/generateHeaderIDs.js
new file mode 100644
index 0000000000..cdcd4a5e3b
--- /dev/null
+++ b/scripts/generateHeaderIDs.js
@@ -0,0 +1,64 @@
+const fs = require('fs');
+
+function walk(dir) {
+  let results = [];
+  const list = fs.readdirSync(dir);
+  list.forEach(function(file) {
+    file = dir + '/' + file;
+    const stat = fs.statSync(file);
+    if (stat && stat.isDirectory()) {
+      /* Recurse into a subdirectory */
+      results = results.concat(walk(file));
+    } else {
+      /* Is a file */
+      results.push(file);
+    }
+  });
+  return results;
+}
+
+function generateID(text) {
+  return text
+    .toLowerCase()
+    .replace(/\s/g, '-')
+    .replace(/[^-a-z0-9]/g, '');
+}
+
+function addHeaderID(line) {
+  // check if we're a header at all
+  if (!line.startsWith('#')) return;
+  // check if it already has an id
+  if (/\{#[-A-Za-z0-9]+\}/.match(line)) return;
+  const headingText = line.slice(line.indexOf(' ')).trim();
+  const headingLevel = line.slice(0, line.indexOf(' '));
+  return `${headingLevel} ${headingText} ${generateID(headingText)}`;
+}
+
+function addHeaderIDs(lines) {
+  let inCode = false;
+  const results = [];
+  lines.forEach(line => {
+    // Ignore code blocks
+    if (line.startsWith('```')) {
+      inCode = !inCode;
+      return;
+    }
+    if (inCode) {
+      results.push(line);
+    }
+
+    results.push(addHeaderID(line));
+  });
+}
+
+const [path] = process.argv.slice(2);
+
+const files = walk(path);
+files.forEach(file => {
+  if (!file.endsWith('.md')) return;
+
+  const file = fs.readFileSync(file, 'utf8');
+  const lines = file.split('\n');
+  const updatedLines = addHeaderIDs(lines);
+  fs.writeFileSync(file, updatedLines.join('\n'));
+});

From 0a45ebfa5ff6fb858ac5f2c074c9187dd0ba9800 Mon Sep 17 00:00:00 2001
From: Nat Alison <tesseralis@gmail.com>
Date: Wed, 6 Feb 2019 16:56:54 -0800
Subject: [PATCH 40/54] update script

---
 scripts/generateHeaderIDs.js | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/scripts/generateHeaderIDs.js b/scripts/generateHeaderIDs.js
index cdcd4a5e3b..77153ecee2 100644
--- a/scripts/generateHeaderIDs.js
+++ b/scripts/generateHeaderIDs.js
@@ -26,12 +26,12 @@ function generateID(text) {
 
 function addHeaderID(line) {
   // check if we're a header at all
-  if (!line.startsWith('#')) return;
+  if (!line.startsWith('#')) return line;
   // check if it already has an id
-  if (/\{#[-A-Za-z0-9]+\}/.match(line)) return;
+  if (/\{#[-A-Za-z0-9]+\}/.test(line)) return line;
   const headingText = line.slice(line.indexOf(' ')).trim();
   const headingLevel = line.slice(0, line.indexOf(' '));
-  return `${headingLevel} ${headingText} ${generateID(headingText)}`;
+  return `${headingLevel} ${headingText} {#${generateID(headingText)}}`;
 }
 
 function addHeaderIDs(lines) {
@@ -41,14 +41,17 @@ function addHeaderIDs(lines) {
     // Ignore code blocks
     if (line.startsWith('```')) {
       inCode = !inCode;
+      results.push(line);
       return;
     }
     if (inCode) {
       results.push(line);
+      return;
     }
 
     results.push(addHeaderID(line));
   });
+  return results;
 }
 
 const [path] = process.argv.slice(2);
@@ -57,8 +60,8 @@ const files = walk(path);
 files.forEach(file => {
   if (!file.endsWith('.md')) return;
 
-  const file = fs.readFileSync(file, 'utf8');
-  const lines = file.split('\n');
+  const content = fs.readFileSync(file, 'utf8');
+  const lines = content.split('\n');
   const updatedLines = addHeaderIDs(lines);
   fs.writeFileSync(file, updatedLines.join('\n'));
 });

From 6a50996b7f7ade012c4cf6869584f35e3f557d9b Mon Sep 17 00:00:00 2001
From: Nat Alison <tesseralis@gmail.com>
Date: Wed, 6 Feb 2019 17:18:56 -0800
Subject: [PATCH 41/54] only update script and stuff

---
 package.json                                         |  3 ++-
 .../{generateHeaderIDs.js => generateHeadingIDs.js}  | 12 +++++++++---
 2 files changed, 11 insertions(+), 4 deletions(-)
 rename scripts/{generateHeaderIDs.js => generateHeadingIDs.js} (90%)

diff --git a/package.json b/package.json
index d050abaf59..0dd174fb97 100644
--- a/package.json
+++ b/package.json
@@ -72,12 +72,13 @@
   },
   "scripts": {
     "build": "gatsby build",
-    "check-all": "npm-run-all prettier --parallel lint flow",
+    "check-all": "npm-run-all prettier generate-ids --parallel lint flow",
     "ci-check": "npm-run-all prettier:diff --parallel lint flow",
     "dev": "gatsby develop -H 0.0.0.0",
     "flow": "flow",
     "format:source": "prettier --config .prettierrc --write \"{gatsby-*.js,{flow-typed,plugins,src}/**/*.js}\"",
     "format:examples": "prettier --config examples/.prettierrc --write \"examples/**/*.js\"",
+    "generate-ids": "node scripts/generateHeadingIDs.js content",
     "lint": "eslint .",
     "netlify": "yarn --version && rimraf node_modules && yarn install --frozen-lockfile --check-files && yarn build",
     "nit:source": "prettier --config .prettierrc --list-different \"{gatsby-*.js,{flow-typed,plugins,src}/**/*.js}\"",
diff --git a/scripts/generateHeaderIDs.js b/scripts/generateHeadingIDs.js
similarity index 90%
rename from scripts/generateHeaderIDs.js
rename to scripts/generateHeadingIDs.js
index 77153ecee2..63e804027e 100644
--- a/scripts/generateHeaderIDs.js
+++ b/scripts/generateHeadingIDs.js
@@ -26,9 +26,13 @@ function generateID(text) {
 
 function addHeaderID(line) {
   // check if we're a header at all
-  if (!line.startsWith('#')) return line;
+  if (!line.startsWith('#')) {
+    return line;
+  }
   // check if it already has an id
-  if (/\{#[-A-Za-z0-9]+\}/.test(line)) return line;
+  if (/\{#[-A-Za-z0-9]+\}/.test(line)) {
+    return line;
+  }
   const headingText = line.slice(line.indexOf(' ')).trim();
   const headingLevel = line.slice(0, line.indexOf(' '));
   return `${headingLevel} ${headingText} {#${generateID(headingText)}}`;
@@ -58,7 +62,9 @@ const [path] = process.argv.slice(2);
 
 const files = walk(path);
 files.forEach(file => {
-  if (!file.endsWith('.md')) return;
+  if (!file.endsWith('.md')) {
+    return;
+  }
 
   const content = fs.readFileSync(file, 'utf8');
   const lines = content.split('\n');

From 5a37071ecd530541100d6804e97d3f6c7fb75638 Mon Sep 17 00:00:00 2001
From: Nat Alison <tesseralis@gmail.com>
Date: Wed, 6 Feb 2019 17:21:56 -0800
Subject: [PATCH 42/54] use githubslugger

---
 scripts/generateHeadingIDs.js | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/scripts/generateHeadingIDs.js b/scripts/generateHeadingIDs.js
index 63e804027e..eb3621340a 100644
--- a/scripts/generateHeadingIDs.js
+++ b/scripts/generateHeadingIDs.js
@@ -1,4 +1,5 @@
 const fs = require('fs');
+const GithubSlugger = require('github-slugger');
 
 function walk(dir) {
   let results = [];
@@ -24,7 +25,7 @@ function generateID(text) {
     .replace(/[^-a-z0-9]/g, '');
 }
 
-function addHeaderID(line) {
+function addHeaderID(line, slugger) {
   // check if we're a header at all
   if (!line.startsWith('#')) {
     return line;
@@ -35,10 +36,12 @@ function addHeaderID(line) {
   }
   const headingText = line.slice(line.indexOf(' ')).trim();
   const headingLevel = line.slice(0, line.indexOf(' '));
-  return `${headingLevel} ${headingText} {#${generateID(headingText)}}`;
+  return `${headingLevel} ${headingText} {#${slugger.slug(headingText)}}`;
 }
 
 function addHeaderIDs(lines) {
+  // Sluggers should be per file
+  const slugger = new GithubSlugger();
   let inCode = false;
   const results = [];
   lines.forEach(line => {
@@ -53,7 +56,7 @@ function addHeaderIDs(lines) {
       return;
     }
 
-    results.push(addHeaderID(line));
+    results.push(addHeaderID(line, slugger));
   });
   return results;
 }

From 3e49e971d04159f294291e15908cd35b2370e1db Mon Sep 17 00:00:00 2001
From: Nat Alison <tesseralis@gmail.com>
Date: Wed, 6 Feb 2019 17:22:04 -0800
Subject: [PATCH 43/54] add everything else again

---
 content/blog/2013-06-05-why-react.md          |   8 +-
 content/blog/2013-06-12-community-roundup.md  |   8 +-
 .../blog/2013-06-19-community-roundup-2.md    |  12 +-
 content/blog/2013-06-21-react-v0-3-3.md       |   6 +-
 .../blog/2013-06-27-community-roundup-3.md    |  12 +-
 ...13-07-02-react-v0-4-autobind-by-default.md |   4 +-
 .../blog/2013-07-03-community-roundup-4.md    |   8 +-
 ...v0-4-prop-validation-and-default-values.md |   4 +-
 content/blog/2013-07-17-react-v0-4-0.md       |   6 +-
 .../blog/2013-07-23-community-roundup-5.md    |  12 +-
 content/blog/2013-07-26-react-v0-4-1.md       |   4 +-
 ...7-30-use-react-and-jsx-in-ruby-on-rails.md |   8 +-
 .../blog/2013-08-05-community-roundup-6.md    |  10 +-
 ...se-react-and-jsx-in-python-applications.md |   6 +-
 .../blog/2013-08-26-community-roundup-7.md    |   6 +-
 .../blog/2013-09-24-community-roundup-8.md    |  12 +-
 content/blog/2013-10-16-react-v0.5.0.md       |  10 +-
 content/blog/2013-10-29-react-v0-5-1.md       |   6 +-
 content/blog/2013-10-3-community-roundup-9.md |  12 +-
 .../blog/2013-11-06-community-roundup-10.md   |  16 +--
 .../blog/2013-11-18-community-roundup-11.md   |  18 +--
 content/blog/2013-12-19-react-v0.8.0.md       |  10 +-
 .../blog/2013-12-23-community-roundup-12.md   |  18 +--
 .../blog/2013-12-30-community-roundup-13.md   |  16 +--
 .../blog/2014-01-06-community-roundup-14.md   |  16 +--
 .../blog/2014-02-05-community-roundup-15.md   |  22 +--
 .../blog/2014-02-15-community-roundup-16.md   |  20 +--
 content/blog/2014-02-16-react-v0.9-rc1.md     |  16 +--
 content/blog/2014-02-20-react-v0.9.md         |  18 +--
 .../blog/2014-02-24-community-roundup-17.md   |  40 +++---
 .../blog/2014-03-14-community-roundup-18.md   |  30 ++--
 content/blog/2014-03-19-react-v0.10-rc1.md    |  14 +-
 content/blog/2014-03-21-react-v0.10.md        |  14 +-
 content/blog/2014-03-28-the-road-to-1.0.md    |  16 +--
 .../blog/2014-06-27-community-roundup-19.md   |  18 +--
 content/blog/2014-07-13-react-v0.11-rc1.md    |  26 ++--
 content/blog/2014-07-17-react-v0.11.md        |  30 ++--
 content/blog/2014-07-25-react-v0.11.1.md      |   8 +-
 .../blog/2014-07-28-community-roundup-20.md   |  20 +--
 .../blog/2014-08-03-community-roundup-21.md   |  20 +--
 .../blog/2014-09-12-community-round-up-22.md  |  18 +--
 content/blog/2014-09-16-react-v0.11.2.md      |   8 +-
 .../2014-10-14-introducing-react-elements.md  |  20 +--
 content/blog/2014-10-16-react-v0.12-rc1.md    |  22 +--
 .../blog/2014-10-17-community-roundup-23.md   |  28 ++--
 content/blog/2014-10-28-react-v0.12.md        |  36 ++---
 .../blog/2014-11-25-community-roundup-24.md   |  22 +--
 content/blog/2014-12-18-react-v0.12.2.md      |   6 +-
 ...-19-react-js-conf-diversity-scholarship.md |   6 +-
 .../blog/2015-01-27-react-v0.13.0-beta-1.md   |  12 +-
 .../2015-02-18-react-conf-roundup-2015.md     |   4 +-
 ...015-02-20-introducing-relay-and-graphql.md |  12 +-
 content/blog/2015-02-24-react-v0.13-rc1.md    |  24 ++--
 .../2015-02-24-streamlining-react-elements.md |  40 +++---
 content/blog/2015-03-03-react-v0.13-rc2.md    |   2 +-
 .../blog/2015-03-04-community-roundup-25.md   |  10 +-
 content/blog/2015-03-10-react-v0.13.md        |  26 ++--
 content/blog/2015-03-16-react-v0.13.1.md      |  14 +-
 ...lding-the-facebook-news-feed-with-relay.md |  16 +--
 .../blog/2015-03-30-community-roundup-26.md   |  22 +--
 content/blog/2015-04-17-react-native-v0.4.md  |   4 +-
 content/blog/2015-04-18-react-v0.13.2.md      |  14 +-
 .../blog/2015-05-01-graphql-introduction.md   |  10 +-
 content/blog/2015-05-08-react-v0.13.3.md      |  12 +-
 ...deprecating-jstransform-and-react-tools.md |   8 +-
 content/blog/2015-07-03-react-v0.14-beta-1.md |   4 +-
 .../2015-08-03-new-react-devtools-beta.md     |  20 +--
 .../2015-08-11-relay-technical-preview.md     |   8 +-
 .../2015-09-02-new-react-developer-tools.md   |   2 +-
 content/blog/2015-09-10-react-v0.14-rc1.md    |  16 +--
 .../blog/2015-09-14-community-roundup-27.md   |  12 +-
 ...15-10-01-react-render-and-top-level-api.md |   4 +-
 content/blog/2015-10-07-react-v0.14.md        |  18 +--
 ...5-10-19-reactiflux-is-moving-to-discord.md |  28 ++--
 content/blog/2015-10-28-react-v0.14.1.md      |  10 +-
 content/blog/2015-11-02-react-v0.14.2.md      |   4 +-
 content/blog/2015-11-18-react-v0.14.3.md      |  10 +-
 ...eact-js-conf-2016-diversity-scholarship.md |   6 +-
 ...react-components-elements-and-instances.md |  18 +--
 content/blog/2015-12-29-react-v0.14.4.md      |   8 +-
 .../blog/2016-02-19-new-versioning-scheme.md  |  10 +-
 content/blog/2016-03-07-react-v15-rc1.md      |  16 +--
 content/blog/2016-03-16-react-v15-rc2.md      |   2 +-
 content/blog/2016-03-29-react-v0.14.8.md      |   4 +-
 content/blog/2016-04-07-react-v15.md          |  18 +--
 content/blog/2016-04-08-react-v15.0.1.md      |   6 +-
 .../2016-07-13-mixins-considered-harmful.md   |  36 ++---
 ...07-22-create-apps-with-no-configuration.md |  24 ++--
 .../2016-08-05-relay-state-of-the-state.md    |  14 +-
 .../blog/2016-09-28-our-first-50000-stars.md  |  12 +-
 content/blog/2016-11-16-react-v15.4.0.md      |  20 +--
 content/blog/2017-04-07-react-v15.5.0.md      |  26 ++--
 ...017-05-18-whats-new-in-create-react-app.md |  16 +--
 content/blog/2017-06-13-react-v15.6.0.md      |  16 +--
 .../2017-07-26-error-handling-in-react-16.md  |  16 +--
 .../2017-09-08-dom-attributes-in-react-16.md  |  16 +--
 content/blog/2017-09-25-react-v15.6.2.md      |  10 +-
 content/blog/2017-09-26-react-v16.0.md        |  32 ++---
 ...17-11-28-react-v16.2.0-fragment-support.md |  48 +++----
 ...12-07-introducing-the-react-rfc-process.md |   6 +-
 ...improving-the-repository-infrastructure.md |  56 ++++----
 .../2018-03-01-sneak-peek-beyond-react-16.md  |   2 +-
 .../2018-03-27-update-on-async-rendering.md   |  30 ++--
 content/blog/2018-03-29-react-v-16-3.md       |  10 +-
 content/blog/2018-05-23-react-v-16-4.md       |  24 ++--
 ...07-you-probably-dont-need-derived-state.md |  24 ++--
 content/blog/2018-08-01-react-v-16-4-2.md     |  22 +--
 ...18-09-10-introducing-the-react-profiler.md |  24 ++--
 .../blog/2018-10-01-create-react-app-v2.md    |  12 +-
 content/blog/2018-10-23-react-v-16-6.md       |  22 +--
 content/blog/2018-11-27-react-16-roadmap.md   |  18 +--
 content/blog/2018-12-19-react-v-16-7.md       |  12 +-
 content/blog/2019-02-06-react-v16.8.0.md      |  32 ++---
 content/community/conferences.it-IT.md        |   4 +-
 content/community/conferences.ko-KR.md        |   4 +-
 content/community/conferences.md              | 128 +++++++++---------
 content/community/conferences.zh-CN.md        |   8 +-
 content/community/courses.md                  |   4 +-
 content/community/meetups.md                  |  60 ++++----
 content/community/podcasts.md                 |   4 +-
 content/community/support.md                  |   6 +-
 content/community/tools-jsx.md                |   4 +-
 content/community/tools-starter-kits.md       |   4 +-
 content/community/tools-ui-components.md      |   4 +-
 content/community/videos.it-IT.md             |  32 ++---
 content/community/videos.ko-KR.md             |  32 ++---
 content/community/videos.md                   |  26 ++--
 content/community/videos.zh-CN.md             |  32 ++---
 content/docs/accessibility.md                 |  66 ++++-----
 content/docs/add-react-to-a-website.md        |  22 +--
 content/docs/addons-animation.md              |  32 ++---
 content/docs/addons-create-fragment.md        |   6 +-
 content/docs/addons-perf.md                   |  28 ++--
 content/docs/addons-pure-render-mixin.md      |   2 +-
 content/docs/addons-shallow-compare.md        |   2 +-
 content/docs/addons-shallow-renderer.md       |   8 +-
 content/docs/addons-test-utils.md             |  38 +++---
 .../docs/addons-two-way-binding-helpers.md    |  10 +-
 content/docs/addons-update.md                 |  18 +--
 content/docs/addons.md                        |   6 +-
 content/docs/cdn-links.md                     |   2 +-
 content/docs/code-splitting.md                |  18 +--
 content/docs/codebase-overview.md             |  30 ++--
 content/docs/components-and-props.md          |  10 +-
 content/docs/composition-vs-inheritance.md    |   6 +-
 content/docs/conditional-rendering.md         |   8 +-
 content/docs/context.md                       |  26 ++--
 content/docs/create-a-new-react-app.md        |  14 +-
 content/docs/cross-origin-errors.md           |   8 +-
 content/docs/design-principles.md             |  26 ++--
 content/docs/error-boundaries.md              |  16 +--
 content/docs/faq-ajax.md                      |   6 +-
 content/docs/faq-build.md                     |   6 +-
 content/docs/faq-functions.md                 |  34 ++---
 content/docs/faq-internals.md                 |   6 +-
 content/docs/faq-state.md                     |  16 +--
 content/docs/faq-structure.md                 |  10 +-
 content/docs/faq-styling.md                   |  10 +-
 content/docs/faq-versioning.md                |   8 +-
 content/docs/forms.md                         |  16 +--
 content/docs/forwarding-refs.md               |   8 +-
 content/docs/fragments.md                     |  10 +-
 content/docs/getting-started.md               |  38 +++---
 content/docs/handling-events.md               |   2 +-
 content/docs/hello-world.md                   |   6 +-
 content/docs/higher-order-components.md       |  18 +--
 content/docs/hooks-custom.md                  |   8 +-
 content/docs/hooks-effect.md                  |  26 ++--
 content/docs/hooks-faq.md                     |  36 ++---
 content/docs/hooks-intro.md                   |  18 +--
 content/docs/hooks-overview.md                |  16 +--
 content/docs/hooks-reference.md               |  44 +++---
 content/docs/hooks-rules.md                   |  10 +-
 content/docs/hooks-state.md                   |  20 +--
 content/docs/how-to-contribute.md             |  42 +++---
 content/docs/implementation-notes.md          |  28 ++--
 .../docs/integrating-with-other-libraries.md  |  18 +--
 content/docs/introducing-jsx.md               |  14 +-
 content/docs/jsx-in-depth.md                  |  32 ++---
 content/docs/legacy-context.md                |  10 +-
 content/docs/lifting-state-up.md              |   8 +-
 content/docs/lists-and-keys.md                |  12 +-
 content/docs/optimizing-performance.md        |  30 ++--
 content/docs/portals.md                       |   4 +-
 content/docs/react-without-es6.md             |   8 +-
 content/docs/reconciliation.md                |  16 +--
 content/docs/reference-dom-elements.md        |  24 ++--
 content/docs/reference-events.md              |  40 +++---
 content/docs/reference-glossary.md            |  34 ++---
 content/docs/reference-react-component.md     |  72 +++++-----
 content/docs/reference-react-dom-server.md    |  12 +-
 content/docs/reference-react-dom.md           |  16 +--
 content/docs/reference-react.md               |  54 ++++----
 content/docs/reference-test-renderer.md       |  48 +++----
 content/docs/refs-and-the-dom.md              |  22 +--
 content/docs/render-props.md                  |   8 +-
 content/docs/rendering-elements.md            |   6 +-
 content/docs/state-and-lifecycle.md           |  16 +--
 content/docs/static-type-checking.md          |  36 ++---
 content/docs/strict-mode.md                   |  10 +-
 content/docs/thinking-in-react.md             |  16 +--
 content/docs/typechecking-with-proptypes.md   |   6 +-
 content/docs/uncontrolled-components.md       |   4 +-
 content/docs/web-components.md                |   4 +-
 content/tutorial/tutorial.md                  |  62 ++++-----
 content/warnings/dont-call-proptypes.md       |   8 +-
 content/warnings/invalid-hook-call-warning.md |   8 +-
 content/warnings/legacy-factories.md          |   8 +-
 content/warnings/refs-must-have-owner.md      |   6 +-
 209 files changed, 1814 insertions(+), 1814 deletions(-)

diff --git a/content/blog/2013-06-05-why-react.md b/content/blog/2013-06-05-why-react.md
index 30d54b24c8..6c23552a12 100644
--- a/content/blog/2013-06-05-why-react.md
+++ b/content/blog/2013-06-05-why-react.md
@@ -6,13 +6,13 @@ author: [petehunt]
 There are a lot of JavaScript MVC frameworks out there. Why did we build React
 and why would you want to use it?
 
-## React isn't an MVC framework.
+## React isn't an MVC framework. {#react-isnt-an-mvc-framework}
 
 React is a library for building composable user interfaces. It encourages
 the creation of reusable UI components which present data that changes over
 time.
 
-## React doesn't use templates.
+## React doesn't use templates. {#react-doesnt-use-templates}
 
 Traditionally, web application UIs are built using templates or HTML directives.
 These templates dictate the full set of abstractions that you are allowed to use
@@ -33,7 +33,7 @@ to render views, which we see as an advantage over templates for a few reasons:
 We've also created [JSX](/docs/jsx-in-depth.html), an optional syntax
 extension, in case you prefer the readability of HTML to raw JavaScript.
 
-## Reactive updates are dead simple.
+## Reactive updates are dead simple. {#reactive-updates-are-dead-simple}
 
 React really shines when your data changes over time.
 
@@ -63,7 +63,7 @@ Because this re-render is so fast (around 1ms for TodoMVC), the developer
 doesn't need to explicitly specify data bindings. We've found this approach
 makes it easier to build apps.
 
-## HTML is just the beginning.
+## HTML is just the beginning. {#html-is-just-the-beginning}
 
 Because React has its own lightweight representation of the document, we can do
 some pretty cool things with it:
diff --git a/content/blog/2013-06-12-community-roundup.md b/content/blog/2013-06-12-community-roundup.md
index c8d4af256f..ff7103e8bf 100644
--- a/content/blog/2013-06-12-community-roundup.md
+++ b/content/blog/2013-06-12-community-roundup.md
@@ -5,7 +5,7 @@ author: [vjeux]
 
 React was open sourced two weeks ago and it's time for a little round-up of what has been going on.
 
-## Khan Academy Question Editor
+## Khan Academy Question Editor {#khan-academy-question-editor}
 
 It looks like [Sophie Alpert](http://sophiebits.com/) is the first person outside of Facebook and Instagram to push React code to production. We are very grateful for her contributions in form of pull requests, bug reports and presence on IRC ([#reactjs on Freenode](irc://chat.freenode.net/reactjs)). Sophie wrote about her experience using React:
 
@@ -16,7 +16,7 @@ It looks like [Sophie Alpert](http://sophiebits.com/) is the first person outsid
 >
 > [Read the full post...](http://sophiebits.com/2013/06/09/using-react-to-speed-up-khan-academy.html)
 
-## Pimp my Backbone.View (by replacing it with React)
+## Pimp my Backbone.View (by replacing it with React) {#pimp-my-backboneview-by-replacing-it-with-react}
 
 [Paul Seiffert](https://blog.mayflower.de/) wrote a blog post that explains how to integrate React into Backbone applications.
 
@@ -28,7 +28,7 @@ It looks like [Sophie Alpert](http://sophiebits.com/) is the first person outsid
 >
 > [Read the full post...](https://blog.mayflower.de/3937-Backbone-React.html)
 
-## Using facebook's React with require.js
+## Using facebook's React with require.js {#using-facebooks-react-with-requirejs}
 
 [Mario Mueller](http://blog.xenji.com/) wrote a menu component in React and was able to easily integrate it with require.js, EventEmitter2 and bower.
 
@@ -36,7 +36,7 @@ It looks like [Sophie Alpert](http://sophiebits.com/) is the first person outsid
 >
 > [Read the full post...](http://blog.xenji.com/2013/06/facebooks-react-require-js.html)
 
-## Origins of React
+## Origins of React {#origins-of-react}
 
 [Pete Hunt](http://www.petehunt.net/blog/) explained what differentiates React from other JavaScript libraries in [a previous blog post](/blog/2013/06/05/why-react.html). [Lee Byron](http://leebyron.com/) gives another perspective on Quora:
 
diff --git a/content/blog/2013-06-19-community-roundup-2.md b/content/blog/2013-06-19-community-roundup-2.md
index 3350d68216..3071db80b8 100644
--- a/content/blog/2013-06-19-community-roundup-2.md
+++ b/content/blog/2013-06-19-community-roundup-2.md
@@ -5,7 +5,7 @@ author: [vjeux]
 
 Since the launch we have received a lot of feedback and are actively working on React 0.4. In the meantime, here are the highlights of this week.
 
-## Some quick thoughts on React
+## Some quick thoughts on React {#some-quick-thoughts-on-react}
 
 [Andrew Greig](http://www.andrewgreig.com/) made a blog post that gives a high level description of what React is.
 
@@ -19,7 +19,7 @@ Since the launch we have received a lot of feedback and are actively working on
 >
 > [Read the full post...](http://www.andrewgreig.com/637/)
 
-## React and Socket.IO Chat Application
+## React and Socket.IO Chat Application {#react-and-socketio-chat-application}
 
 [Danial Khosravi](https://danialk.github.io/) made a real-time chat application that interacts with the back-end using Socket.IO.
 
@@ -28,7 +28,7 @@ Since the launch we have received a lot of feedback and are actively working on
 >
 > [Read the full post...](https://danialk.github.io/blog/2013/06/16/reactjs-and-socket-dot-io-chat-application/)
 
-## React and Other Frameworks
+## React and Other Frameworks {#react-and-other-frameworks}
 
 [Pete Hunt](http://www.petehunt.net/blog/) wrote an answer on Quora comparing React and Angular directives. At the end, he explains how you can make an Angular directive that is in fact being rendered with React.
 
@@ -40,7 +40,7 @@ Since the launch we have received a lot of feedback and are actively working on
 
 In the same vein, [Markov Twain](https://twitter.com/markov_twain/status/345702941845499906) re-implemented the examples on the front-page [with Ember](http://jsbin.com/azihiw/2/edit) and [Vlad Yazhbin](https://twitter.com/vla) re-implemented the tutorial [with Angular](http://jsfiddle.net/vla/Cdrse/).
 
-## Web Components: React & x-tags
+## Web Components: React & x-tags {#web-components-react--x-tags}
 
 Mozilla and Google are actively working on Web Components. [Vjeux](http://blog.vjeux.com/) wrote a proof of concept that shows how to implement them using React.
 
@@ -49,7 +49,7 @@ Mozilla and Google are actively working on Web Components. [Vjeux](http://blog.v
 >
 > [Read the full post...](http://blog.vjeux.com/2013/javascript/custom-components-react-x-tags.html)
 
-## React TodoMVC Example
+## React TodoMVC Example {#react-todomvc-example}
 
 [TodoMVC.com](http://todomvc.com/) is a website that collects various implementations of the same basic Todo app. [Pete Hunt](http://www.petehunt.net/blog/) wrote an idiomatic React version.
 
@@ -60,7 +60,7 @@ Mozilla and Google are actively working on Web Components. [Vjeux](http://blog.v
 >
 > [Read the source code...](https://github.com/tastejs/todomvc/tree/gh-pages/labs/architecture-examples/react)
 
-## JSX is not HTML
+## JSX is not HTML {#jsx-is-not-html}
 
 Many of you pointed out differences between JSX and HTML. In order to clear up some confusion, we have added some documentation that covers the four main differences:
 
diff --git a/content/blog/2013-06-21-react-v0-3-3.md b/content/blog/2013-06-21-react-v0-3-3.md
index f09bf8a6f1..31f150de2e 100644
--- a/content/blog/2013-06-21-react-v0-3-3.md
+++ b/content/blog/2013-06-21-react-v0-3-3.md
@@ -6,18 +6,18 @@ author: [zpao]
 We have a ton of great stuff coming in v0.4, but in the meantime we're releasing v0.3.3. This release addresses some small issues people were having and simplifies our tools to make them easier to use.
 
 
-## react-tools
+## react-tools {#react-tools}
 
 * Upgrade Commoner so `require` statements are no longer relativized when passing through the transformer. This was a feature needed when building React, but doesn't translate well for other consumers of `bin/jsx`.
 * Upgraded our dependencies on Commoner and Recast so they use a different directory for their cache.
 * Freeze our esprima dependency.
 
 
-## React
+## React {#react}
 
 * Allow reusing the same DOM node to render different components. e.g. `React.renderComponent(<div/>, domNode); React.renderComponent(<span/>, domNode);` will work now.
 
 
-## JSXTransformer
+## JSXTransformer {#jsxtransformer}
 
 * Improved the in-browser transformer so that transformed scripts will execute in the expected scope. The allows components to be defined and used from separate files.
diff --git a/content/blog/2013-06-27-community-roundup-3.md b/content/blog/2013-06-27-community-roundup-3.md
index 2d297f20f3..371da7ed67 100644
--- a/content/blog/2013-06-27-community-roundup-3.md
+++ b/content/blog/2013-06-27-community-roundup-3.md
@@ -5,7 +5,7 @@ author: [vjeux]
 
 The highlight of this week is that an interaction-heavy app has been ported to React. React components are solving issues they had with nested views.
 
-## Moving From Backbone To React
+## Moving From Backbone To React {#moving-from-backbone-to-react}
 
 [Clay Allsopp](https://twitter.com/clayallsopp) successfully ported [Propeller](http://usepropeller.com/blog/posts/from-backbone-to-react/), a fairly big, interaction-heavy JavaScript app, to React.
 
@@ -17,7 +17,7 @@ The highlight of this week is that an interaction-heavy app has been ported to R
 >
 > [Read the full post...](http://usepropeller.com/blog/posts/from-backbone-to-react/)
 
-## Grunt Task for JSX
+## Grunt Task for JSX {#grunt-task-for-jsx}
 
 [Eric Clemmons](https://ericclemmons.github.io/) wrote a task for [Grunt](http://gruntjs.com/) that applies the JSX transformation to your JavaScript files. It also works with [Browserify](http://browserify.org/) if you want all your files to be concatenated and minified together.
 
@@ -45,7 +45,7 @@ The highlight of this week is that an interaction-heavy app has been ported to R
 >
 > [Check out the project ...](https://github.com/ericclemmons/grunt-react)
 
-## Backbone/Handlebars Nested Views
+## Backbone/Handlebars Nested Views {#backbonehandlebars-nested-views}
 
 [Joel Burget](http://joelburget.com/) wrote a blog post talking about the way we would write React-like components in Backbone and Handlebars.
 
@@ -57,13 +57,13 @@ The highlight of this week is that an interaction-heavy app has been ported to R
 >
 > [Read the full post...](http://joelburget.com/react/)
 
-## JSRomandie Meetup
+## JSRomandie Meetup {#jsromandie-meetup}
 
 [Renault John Lecoultre](https://twitter.com/renajohn/) from [BugBuster](http://www.bugbuster.com) did a React introduction talk at a JS meetup called [JS Romandie](https://twitter.com/jsromandie) last week.
 
 <script async class="speakerdeck-embed" data-id="888a9d50c01b01300df36658d0894ac1" data-ratio="1.33333333333333" src="//speakerdeck.com/assets/embed.js"></script>
 
-## CoffeeScript integration
+## CoffeeScript integration {#coffeescript-integration}
 
 [Vjeux](http://blog.vjeux.com/) used the fact that JSX is just a syntactic sugar on-top of regular JS to rewrite the React front-page examples in CoffeeScript.
 
@@ -81,7 +81,7 @@ The highlight of this week is that an interaction-heavy app has been ported to R
 >
 > [Read the full post...](http://blog.vjeux.com/2013/javascript/react-coffeescript.html)
 
-## Tutorial in Plain JavaScript
+## Tutorial in Plain JavaScript {#tutorial-in-plain-javascript}
 
 We've seen a lot of people comparing React with various frameworks. [Ricardo Tomasi](http://ricardo.cc/) decided to re-implement the tutorial without any framework, just plain JavaScript.
 
diff --git a/content/blog/2013-07-02-react-v0-4-autobind-by-default.md b/content/blog/2013-07-02-react-v0-4-autobind-by-default.md
index c8e5155ff9..9c98fd9b2a 100644
--- a/content/blog/2013-07-02-react-v0-4-autobind-by-default.md
+++ b/content/blog/2013-07-02-react-v0-4-autobind-by-default.md
@@ -6,7 +6,7 @@ author: [zpao]
 React v0.4 is very close to completion. As we finish it off, we'd like to share with you some of the major changes we've made since v0.3. This is the first of several posts we'll be making over the next week.
 
 
-## What is React.autoBind?
+## What is React.autoBind? {#what-is-reactautobind}
 
 If you take a look at most of our current examples, you'll see us using `React.autoBind` for event handlers. This is used in place of `Function.prototype.bind`. Remember that in JS, [function calls are late-bound](https://bonsaiden.github.io/JavaScript-Garden/#function.this). That means that if you simply pass a function around, the `this` used inside won't necessarily be the `this` you expect. `Function.prototype.bind` creates a new, properly bound, function so that when called, `this` is exactly what you expect it to be.
 
@@ -33,7 +33,7 @@ React.createClass({
 ```
 
 
-## What's Changing in v0.4?
+## What's Changing in v0.4? {#whats-changing-in-v04}
 
 After using `React.autoBind` for a few weeks, we realized that there were very few times that we didn't want that behavior. So we made it the default! Now all methods defined within `React.createClass` will already be bound to the correct instance.
 
diff --git a/content/blog/2013-07-03-community-roundup-4.md b/content/blog/2013-07-03-community-roundup-4.md
index 12c32a1185..b7bd158c29 100644
--- a/content/blog/2013-07-03-community-roundup-4.md
+++ b/content/blog/2013-07-03-community-roundup-4.md
@@ -5,7 +5,7 @@ author: [vjeux]
 
 React reconciliation process appears to be very well suited to implement a text editor with a live preview as people at Khan Academy show us.
 
-## Khan Academy
+## Khan Academy {#khan-academy}
 
 [Ben Kamens](http://bjk5.com/) explains how [Sophie Alpert](http://sophiebits.com/) and [Joel Burget](http://joelburget.com/) are promoting React inside of [Khan Academy](https://www.khanacademy.org/). They now have three projects in the works using React.
 
@@ -21,7 +21,7 @@ The best part is the demo of how React reconciliation process makes live editing
 
 [![](../images/blog/monkeys.gif)](http://bjk5.com/post/53742233351/getting-your-team-to-adopt-new-technology)
 
-## React Snippets
+## React Snippets {#react-snippets}
 
 Over the past several weeks, members of our team, [Pete Hunt](http://www.petehunt.net/) and [Paul O'Shannessy](http://zpao.com/), answered many questions that were asked in the [React group](https://groups.google.com/forum/#!forum/reactjs). They give a good overview of how to integrate React with other libraries and APIs through the use of [Mixins](/docs/reusable-components.html) and [Lifecycle Methods](/docs/working-with-the-browser.html).
 
@@ -44,13 +44,13 @@ Over the past several weeks, members of our team, [Pete Hunt](http://www.petehun
 >
 > * [JSFiddle](http://jsfiddle.net/LQxy7/): Your React component simply render empty divs, and then in componentDidMount() you call React.renderComponent() on each of those divs to set up a new root React tree. Be sure to explicitly unmountAndReleaseReactRootNode() for each component in componentWillUnmount().
 
-## Introduction to React Screencast
+## Introduction to React Screencast {#introduction-to-react-screencast}
 
 [Pete Hunt](http://www.petehunt.net/) recorded himself implementing a simple `<Blink>` tag in React.
 
 <figure><iframe src="https://player.vimeo.com/video/67248575" width="100%" height="340" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></figure>
 
-## Snake in React
+## Snake in React {#snake-in-react}
 
 [Tom Occhino](http://tomocchino.com/) implemented Snake in 150 lines with React.
 
diff --git a/content/blog/2013-07-11-react-v0-4-prop-validation-and-default-values.md b/content/blog/2013-07-11-react-v0-4-prop-validation-and-default-values.md
index e7b091693c..8a5cc18c52 100644
--- a/content/blog/2013-07-11-react-v0-4-prop-validation-and-default-values.md
+++ b/content/blog/2013-07-11-react-v0-4-prop-validation-and-default-values.md
@@ -6,7 +6,7 @@ author: [zpao]
 Many of the questions we got following the public launch of React revolved around `props`, specifically that people wanted to do validation and to make sure their components had sensible defaults.
 
 
-## Validation
+## Validation {#validation}
 
 Oftentimes you want to validate your `props` before you use them. Perhaps you want to ensure they are a specific type. Or maybe you want to restrict your prop to specific values. Or maybe you want to make a specific prop required. This was always possible — you could have written validations in your `render` or `componentWillReceiveProps` functions, but that gets clunky fast.
 
@@ -29,7 +29,7 @@ React.createClass({
 ```
 
 
-## Default Values
+## Default Values {#default-values}
 
 One common pattern we've seen with our React code is to do something like this:
 
diff --git a/content/blog/2013-07-17-react-v0-4-0.md b/content/blog/2013-07-17-react-v0-4-0.md
index 0c229a7cf3..2a50e8b1e0 100644
--- a/content/blog/2013-07-17-react-v0-4-0.md
+++ b/content/blog/2013-07-17-react-v0-4-0.md
@@ -13,7 +13,7 @@ React v0.4 has some big changes. We've also restructured the documentation to be
 When you're ready, [go download it](/docs/installation.html)!
 
 
-### React
+### React {#react}
 
 * Switch from using `id` attribute to `data-reactid` to track DOM nodes. This allows you to integrate with other JS and CSS libraries more easily.
 * Support for more DOM elements and attributes (e.g., `<canvas>`)
@@ -25,7 +25,7 @@ When you're ready, [go download it](/docs/installation.html)!
 * We've implemented an improved synthetic event system that conforms to the W3C spec.
 * Updates to your component are batched now, which may result in a significantly faster re-render of components. `this.setState` now takes an optional callback as its second parameter. If you were using `onClick={this.setState.bind(this, state)}` previously, you'll want to make sure you add a third parameter so that the event is not treated as the callback.
 
-### JSX
+### JSX {#jsx}
 
 * Support for comment nodes `<div>{/* this is a comment and won't be rendered */}</div>`
 * Children are now transformed directly into arguments instead of being wrapped in an array
@@ -33,7 +33,7 @@ When you're ready, [go download it](/docs/installation.html)!
   Previously this would be transformed into `React.DOM.div(null, [Component1(null), Component2(null)])`.
   If you were using React without JSX previously, your code should still work.
 
-### react-tools
+### react-tools {#react-tools}
 
 * Fixed a number of bugs when transforming directories
 * No longer re-write `require()`s to be relative unless specified
diff --git a/content/blog/2013-07-23-community-roundup-5.md b/content/blog/2013-07-23-community-roundup-5.md
index 34d74869cc..02e0d53559 100644
--- a/content/blog/2013-07-23-community-roundup-5.md
+++ b/content/blog/2013-07-23-community-roundup-5.md
@@ -5,7 +5,7 @@ author: [vjeux]
 
 We launched the [React Facebook Page](https://www.facebook.com/react) along with the React v0.4 launch. 700 people already liked it to get updated on the project :)
 
-## Cross-browser onChange
+## Cross-browser onChange {#cross-browser-onchange}
 
 [Sophie Alpert](http://sophiebits.com/) from [Khan Academy](https://www.khanacademy.org/) worked on a cross-browser implementation of `onChange` event that landed in v0.4. She wrote a blog post explaining the various browser quirks she had to deal with.
 
@@ -16,7 +16,7 @@ We launched the [React Facebook Page](https://www.facebook.com/react) along with
 > [Read the full post...](http://sophiebits.com/2013/06/18/a-near-perfect-oninput-shim-for-ie-8-and-9.html)
 
 
-## React Samples
+## React Samples {#react-samples}
 
 Learning a new library is always easier when you have working examples you can play with. [jwh](https://github.com/jhw) put many of them on his [react-samples GitHub repo](https://github.com/jhw/react-samples).
 
@@ -50,7 +50,7 @@ Learning a new library is always easier when you have working examples you can p
 > * Toggle [#1](https://rawgithub.com/jhw/react-samples/master/html/toggle.html)
 
 
-## React Chosen Wrapper
+## React Chosen Wrapper {#react-chosen-wrapper}
 
 [Cheng Lou](https://github.com/chenglou) wrote a wrapper for the [Chosen](https://harvesthq.github.io/chosen/) input library called [react-chosen](https://github.com/chenglou/react-chosen). It took just 25 lines to be able to use jQuery component as a React one.
 
@@ -64,21 +64,21 @@ React.renderComponent(
 ```
 
 
-## JSX and ES6 Template Strings
+## JSX and ES6 Template Strings {#jsx-and-es6-template-strings}
 
 [Domenic Denicola](http://domenicdenicola.com/) wrote a slide deck about the great applications of ES6 features and one slide shows how we could use Template Strings to compile JSX at run-time without the need for a pre-processing phase.
 
 <figure><iframe src="https://www.slideshare.net/slideshow/embed_code/24187146?rel=0&startSlide=36" width="100%" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px" allowfullscreen webkitallowfullscreen mozallowfullscreen> </iframe></figure>
 
 
-## React Presentation
+## React Presentation {#react-presentation}
 
 [Tom Occhino](http://tomocchino.com/) and [Jordan Walke](https://github.com/jordwalke), React developers, did a presentation of React at Facebook Seattle's office. Check out the first 25 minutes for the presentation and the remaining 45 for a Q&A. I highly recommend you watching this video.
 
 <figure><iframe width="650" height="400" src="//www.youtube-nocookie.com/embed/XxVg_s8xAms" frameborder="0" allowfullscreen></iframe></figure>
 
 
-## Docs
+## Docs {#docs}
 
 [Pete Hunt](http://www.petehunt.net/) rewrote the entirety of the docs for v0.4. The goal was to add more explanation about why we built React and what the best practices are.
 
diff --git a/content/blog/2013-07-26-react-v0-4-1.md b/content/blog/2013-07-26-react-v0-4-1.md
index 569c45a827..181bb09bee 100644
--- a/content/blog/2013-07-26-react-v0-4-1.md
+++ b/content/blog/2013-07-26-react-v0-4-1.md
@@ -6,7 +6,7 @@ author: [zpao]
 React v0.4.1 is a small update, mostly containing correctness fixes. Some code has been restructured internally but those changes do not impact any of our public APIs.
 
 
-## React
+## React {#react}
 
 * `setState` callbacks are now executed in the scope of your component.
 * `click` events now work on Mobile Safari.
@@ -16,7 +16,7 @@ React v0.4.1 is a small update, mostly containing correctness fixes. Some code h
 * Added checksums to detect and correct cases where server-side rendering markup mismatches what React expects client-side.
 
 
-## JSXTransformer
+## JSXTransformer {#jsxtransformer}
 
 * Improved environment detection so it can be run in a non-browser environment.
 
diff --git a/content/blog/2013-07-30-use-react-and-jsx-in-ruby-on-rails.md b/content/blog/2013-07-30-use-react-and-jsx-in-ruby-on-rails.md
index e436b671e1..60529a4cef 100644
--- a/content/blog/2013-07-30-use-react-and-jsx-in-ruby-on-rails.md
+++ b/content/blog/2013-07-30-use-react-and-jsx-in-ruby-on-rails.md
@@ -12,7 +12,7 @@ This gem has 2 primary purposes:
 2. To allow you to write JSX without an external build step to transform that into JS.
 
 
-## Packaging react.js
+## Packaging react.js {#packaging-reactjs}
 
 To make `react.js` available for use client-side, simply add `react` to your manifest, and declare the variant you'd like to use in your environment. When you use `:production`, the minified and optimized `react.min.js` will be used instead of the development version. For example:
 
@@ -32,7 +32,7 @@ end
 ```
 
 
-## Writing JSX
+## Writing JSX {#writing-jsx}
 
 When you name your file with `myfile.js.jsx`, `react-rails` will automatically try to transform that file. For the time being, we still require that you include the docblock at the beginning of the file. For example, this file will get transformed on request.
 
@@ -42,12 +42,12 @@ React.renderComponent(<MyComponent/>, document.getElementById('example'))
 ```
 
 
-## Asset Pipeline
+## Asset Pipeline {#asset-pipeline}
 
 `react-rails` takes advantage of the [asset pipeline](http://guides.rubyonrails.org/asset_pipeline.html) that was introduced in Rails 3.1. A very important part of that pipeline is the `assets:precompile` Rake task. `react-rails` will ensure that your JSX files will be transformed into regular JS before all of your assets are minified and packaged.
 
 
-## Installation
+## Installation {#installation}
 
 Installation follows the same process you're familiar with. You can install it globally with `gem install react-rails`, though we suggest you add the dependency to your `Gemfile` directly.
 
diff --git a/content/blog/2013-08-05-community-roundup-6.md b/content/blog/2013-08-05-community-roundup-6.md
index 987a0fa05d..22db39d88e 100644
--- a/content/blog/2013-08-05-community-roundup-6.md
+++ b/content/blog/2013-08-05-community-roundup-6.md
@@ -5,13 +5,13 @@ author: [vjeux]
 
 This is the first Community Round-up where none of the items are from Facebook/Instagram employees. It's great to see the adoption of React growing.
 
-## React Game Tutorial
+## React Game Tutorial {#react-game-tutorial}
 
 [Caleb Cassel](https://twitter.com/CalebCassel) wrote a [step-by-step tutorial](https://rawgithub.com/calebcassel/react-demo/master/part1.html) about making a small game. It covers JSX, State and Events, Embedded Components and Integration with Backbone.
 <figure><a href="https://rawgithub.com/calebcassel/react-demo/master/part1.html"><img src="../images/blog/dog-tutorial.png"></a></figure>
 
 
-## Reactify
+## Reactify {#reactify}
 
 [Andrey Popp](http://andreypopp.com/) created a [Browserify](http://browserify.org/) helper to compile JSX files.
 
@@ -27,7 +27,7 @@ This is the first Community Round-up where none of the items are from Facebook/I
 
 
 
-## React Integration with Este
+## React Integration with Este {#react-integration-with-este}
 
 [Daniel Steigerwald](http://daniel.steigerwald.cz/) is now using React within [Este](https://github.com/steida/este), which is a development stack for web apps in CoffeeScript that are statically typed using the Closure Library.
 
@@ -52,7 +52,7 @@ este.demos.react.todoApp = este.react.create (`/** @lends {React.ReactComponent.
 [Check it out on GitHub...](https://github.com/steida/este-library/blob/master/este/demos/thirdparty/react/start.coffee)
 
 
-## React Stylus Boilerplate
+## React Stylus Boilerplate {#react-stylus-boilerplate}
 
 [Zaim Bakar](https://zaim.github.io/) shared his boilerplate to get started with Stylus CSS processor.
 
@@ -67,7 +67,7 @@ este.demos.react.todoApp = este.react.create (`/** @lends {React.ReactComponent.
 > [Check it out on GitHub...](https://github.com/zaim/react-stylus-boilerplate)
 
 
-## WebFUI
+## WebFUI {#webfui}
 
 [Conrad Barski](http://lisperati.com/), author of the popular book [Land of Lisp](http://landoflisp.com/), wants to use React for his ClojureScript library called [WebFUI](https://github.com/drcode/webfui).
 
diff --git a/content/blog/2013-08-19-use-react-and-jsx-in-python-applications.md b/content/blog/2013-08-19-use-react-and-jsx-in-python-applications.md
index 95375f38a7..bbbc4da636 100644
--- a/content/blog/2013-08-19-use-react-and-jsx-in-python-applications.md
+++ b/content/blog/2013-08-19-use-react-and-jsx-in-python-applications.md
@@ -5,7 +5,7 @@ author: [kmeht]
 
 Today we're happy to announce the initial release of [PyReact](https://github.com/facebook/react-python), which makes it easier to use React and JSX in your Python applications. It's designed to provide an API to transform your JSX files into JavaScript, as well as provide access to the latest React source files.
 
-## Usage
+## Usage {#usage}
 
 Transform your JSX files via the provided `jsx` module:
 
@@ -30,7 +30,7 @@ from react import source
 react_js = source.path_for('react.min.js')
 ```
 
-## Django
+## Django {#django}
 
 PyReact includes a JSX compiler for [django-pipeline](https://github.com/cyberdelia/django-pipeline). Add it to your project's pipeline settings like this:
 
@@ -40,7 +40,7 @@ PIPELINE_COMPILERS = (
 )
 ```
 
-## Installation
+## Installation {#installation}
 
 PyReact is hosted on PyPI, and can be installed with `pip`:
 
diff --git a/content/blog/2013-08-26-community-roundup-7.md b/content/blog/2013-08-26-community-roundup-7.md
index fd5cb62e6b..bc526b4662 100644
--- a/content/blog/2013-08-26-community-roundup-7.md
+++ b/content/blog/2013-08-26-community-roundup-7.md
@@ -14,13 +14,13 @@ It's been three months since we open sourced React and it is going well. Some st
 * 2 early adopters: [Khan Academy](http://sophiebits.com/2013/06/09/using-react-to-speed-up-khan-academy.html) and [Propeller](http://usepropeller.com/blog/posts/from-backbone-to-react/)
 
 
-## Wolfenstein Rendering Engine Ported to React
+## Wolfenstein Rendering Engine Ported to React {#wolfenstein-rendering-engine-ported-to-react}
 
 [Pete Hunt](http://www.petehunt.net/) ported the render code of the web version of Wolfenstein 3D to React. Check out [the demo](http://www.petehunt.net/wolfenstein3D-react/wolf3d.html) and [render.js](https://github.com/petehunt/wolfenstein3D-react/blob/master/js/renderer.js#L183) file for the implementation.
 <figure><a href="http://www.petehunt.net/wolfenstein3D-react/wolf3d.html"><img src="../images/blog/wolfenstein_react.png"></a></figure>
 
 
-## React & Meteor
+## React & Meteor {#react--meteor}
 
 [Ben Newman](https://twitter.com/benjamn) made a [13-lines wrapper](https://github.com/benjamn/meteor-react/blob/master/lib/mixin.js) to use React and Meteor together. [Meteor](http://www.meteor.com/) handles the real-time data synchronization between client and server. React provides the declarative way to write the interface and only updates the parts of the UI that changed.
 
@@ -46,7 +46,7 @@ It's been three months since we open sourced React and it is going well. Some st
 >
 > [Read more ...](https://github.com/benjamn/meteor-react)
 
-## React Page
+## React Page {#react-page}
 
 [Jordan Walke](https://github.com/jordwalke) implemented a complete React project creator called [react-page](https://github.com/facebook/react-page/). It supports both server-side and client-side rendering, source transform and packaging JSX files using CommonJS modules, and instant reload.
 
diff --git a/content/blog/2013-09-24-community-roundup-8.md b/content/blog/2013-09-24-community-roundup-8.md
index e91b13e63f..d94649e0f2 100644
--- a/content/blog/2013-09-24-community-roundup-8.md
+++ b/content/blog/2013-09-24-community-roundup-8.md
@@ -9,7 +9,7 @@ First, we are organizing a [React Hackathon](http://reactjshack-a-thon.splashtha
 
 We've also reached a point where there are too many questions for us to handle directly. We're encouraging people to ask questions on [StackOverflow](http://stackoverflow.com/questions/tagged/reactjs) using the tag [[reactjs]](http://stackoverflow.com/questions/tagged/reactjs). Many members of the team and community have subscribed to the tag, so feel free to ask questions there. We think these will be more discoverable than Google Groups archives or IRC logs.
 
-## JavaScript Jabber
+## JavaScript Jabber {#javascript-jabber}
 
 [Pete Hunt](http://www.petehunt.net/) and [Jordan Walke](https://github.com/jordwalke) were interviewed on [JavaScript Jabber](http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/) for an hour.  They go over many aspects of React such as 60 FPS, Data binding, Performance, Diffing Algorithm, DOM Manipulation, Node.js support, server-side rendering, JSX, requestAnimationFrame and the community. This is a gold mine of information about React.
 
@@ -24,13 +24,13 @@ We've also reached a point where there are too many questions for us to handle d
 > [Read the full conversation ...](http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/)
 
 
-## JSXTransformer Trick
+## JSXTransformer Trick {#jsxtransformer-trick}
 
 While this is not going to work for all the attributes since they are camelCased in React, this is a pretty cool trick.
 
 <div style="margin-left: 74px;"><blockquote class="twitter-tweet"><p>Turn any DOM element into a React.js function: JSXTransformer.transform(&quot;/** <a href="https://twitter.com/jsx">@jsx</a> React.DOM */&quot; + element.innerHTML).code</p>&mdash; Ross Allen (@ssorallen) <a href="https://twitter.com/ssorallen/statuses/377105575441489920">September 9, 2013</a></blockquote></div>
 
-## Remarkable React
+## Remarkable React {#remarkable-react}
 
 [Stoyan Stefanov](http://www.phpied.com/) gave a talk at [BrazilJS](http://braziljs.com.br/) about React and wrote an article with the content of the presentation. He goes through the difficulties of writing _active apps_ using the DOM API and shows how React handles it.
 
@@ -49,18 +49,18 @@ While this is not going to work for all the attributes since they are camelCased
 > [Read More ...](http://www.phpied.com/remarkable-react/)
 
 
-## Markdown in React
+## Markdown in React {#markdown-in-react}
 
 [Sophie Alpert](http://sophiebits.com/) converted [marked](https://github.com/chjj/marked), a Markdown JavaScript implementation, in React: [marked-react](https://github.com/sophiebits/marked-react). Even without using JSX, the HTML generation is now a lot cleaner. It is also safer as forgetting a call to `escape` will not introduce an XSS vulnerability.
 <figure><a href="https://github.com/sophiebits/marked-react/commit/cb70c9df6542c7c34ede9efe16f9b6580692a457"><img src="../images/blog/markdown_refactor.png"></a></figure>
 
 
-## Unite from BugBusters
+## Unite from BugBusters {#unite-from-bugbusters}
 
 [Renault John Lecoultre](https://twitter.com/renajohn) wrote [Unite](https://www.bugbuster.com/), an interactive tool for analyzing code dynamically using React. It integrates with CodeMirror.
 <figure><a href="https://unite.bugbuster.com/"><img src="../images/blog/unite.png"></a></figure>
 
-## #reactjs IRC Logs
+## #reactjs IRC Logs {#reactjs-irc-logs}
 
 [Vjeux](http://blog.vjeux.com/) re-implemented the display part of the IRC logger in React. Just 130 lines are needed for a performant infinite scroll with timestamps and color-coded author names.
 
diff --git a/content/blog/2013-10-16-react-v0.5.0.md b/content/blog/2013-10-16-react-v0.5.0.md
index 46836135fe..88b7f4d7b1 100644
--- a/content/blog/2013-10-16-react-v0.5.0.md
+++ b/content/blog/2013-10-16-react-v0.5.0.md
@@ -9,16 +9,16 @@ The biggest change you'll notice as a developer is that we no longer support `cl
 
 The other major change in v0.5 is that we've added an additional build - `react-with-addons` - which adds support for some extras that we've been working on including animations and two-way binding. [Read more about these addons in the docs](/docs/addons.html).
 
-## Thanks to Our Community
+## Thanks to Our Community {#thanks-to-our-community}
 
 We added *22 new people* to the list of authors since we launched React v0.4.1 nearly 3 months ago. With a total of 48 names in our `AUTHORS` file, that means we've nearly doubled the number of contributors in that time period. We've seen the number of people contributing to discussion on IRC, mailing lists, Stack Overflow, and GitHub continue rising. We've also had people tell us about talks they've given in their local community about React.
 
 It's been awesome to see the things that people are building with React, and we can't wait to see what you come up with next!
 
 
-## Changelog
+## Changelog {#changelog}
 
-### React
+### React {#react}
 
 * Memory usage improvements - reduced allocations in core which will help with GC pauses
 * Performance improvements - in addition to speeding things up, we made some tweaks to stay out of slow path code in V8 and Nitro.
@@ -39,11 +39,11 @@ It's been awesome to see the things that people are building with React, and we
 * Better support for server-side rendering - [react-page](https://github.com/facebook/react-page) has helped improve the stability for server-side rendering.
 * Made it possible to use React in environments enforcing a strict [Content Security Policy](https://developer.mozilla.org/en-US/docs/Security/CSP/Introducing_Content_Security_Policy). This also makes it possible to use React to build Chrome extensions.
 
-### React with Addons (New!)
+### React with Addons (New!) {#react-with-addons-new}
 
 * Introduced a separate build with several "addons" which we think can help improve the React experience. We plan to deprecate this in the long-term, instead shipping each as standalone pieces. [Read more in the docs](/docs/addons.html).
 
-### JSX
+### JSX {#jsx}
 
 * No longer transform `class` to `className` as part of the transform! This is a breaking change - if you were using `class`, you *must* change this to `className` or your components will be visually broken.
 * Added warnings to the in-browser transformer to make it clear it is not intended for production use.
diff --git a/content/blog/2013-10-29-react-v0-5-1.md b/content/blog/2013-10-29-react-v0-5-1.md
index 08407d6aff..e70b730886 100644
--- a/content/blog/2013-10-29-react-v0-5-1.md
+++ b/content/blog/2013-10-29-react-v0-5-1.md
@@ -5,16 +5,16 @@ author: [zpao]
 
 This release focuses on fixing some small bugs that have been uncovered over the past two weeks. I would like to thank everybody involved, specifically members of the community who fixed half of the issues found. Thanks to [Sophie Alpert][1], [Andrey Popp][2], and [Laurence Rowe][3] for their contributions!
 
-## Changelog
+## Changelog {#changelog}
 
-### React
+### React {#react}
 
 * Fixed bug with `<input type="range">` and selection events.
 * Fixed bug with selection and focus.
 * Made it possible to unmount components from the document root.
 * Fixed bug for `disabled` attribute handling on non-`<input>` elements.
 
-### React with Addons
+### React with Addons {#react-with-addons}
 
 * Fixed bug with transition and animation event detection.
 
diff --git a/content/blog/2013-10-3-community-roundup-9.md b/content/blog/2013-10-3-community-roundup-9.md
index d69d464419..9eb3d2d1af 100644
--- a/content/blog/2013-10-3-community-roundup-9.md
+++ b/content/blog/2013-10-3-community-roundup-9.md
@@ -8,7 +8,7 @@ We organized a React hackathon last week-end in the Facebook Seattle office. 50
 ![](../images/blog/react-hackathon.jpg)
 
 
-## React Hackathon Winner
+## React Hackathon Winner {#react-hackathon-winner}
 
 [Alex Swan](http://bold-it.com/) implemented [Qu.izti.me](http://qu.izti.me/), a multi-player quiz game. It is real-time via Web Socket and mobile friendly.
 
@@ -19,7 +19,7 @@ We organized a React hackathon last week-end in the Facebook Seattle office. 50
 >
 > [Read More...](http://bold-it.com/javascript/facebook-react-example/)
 
-## JSConf EU Talk: Rethinking Best Practices
+## JSConf EU Talk: Rethinking Best Practices {#jsconf-eu-talk-rethinking-best-practices}
 
 [Pete Hunt](http://www.petehunt.net/) presented React at JSConf EU. He covers three controversial design decisions of React:
 
@@ -32,7 +32,7 @@ The video will be available soon on the [JSConf EU website](http://2013.jsconf.e
 <figure><iframe src="https://www.slideshare.net/slideshow/embed_code/26589373" width="100%" height="450" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" allowfullscreen></iframe></figure>
 
 
-## Pump - Clojure bindings for React
+## Pump - Clojure bindings for React {#pump---clojure-bindings-for-react}
 
 [Alexander Solovyov](http://solovyov.net/) has been working on React bindings for ClojureScript. This is really exciting as it is using "native" ClojureScript data structures.
 
@@ -52,7 +52,7 @@ The video will be available soon on the [JSConf EU website](http://2013.jsconf.e
 [Check it out on GitHub...](https://github.com/piranha/pump)
 
 
-## JSXHint
+## JSXHint {#jsxhint}
 
 [Todd Kennedy](http://blog.selfassembled.org/) working at [Cond&eacute; Nast](http://www.condenast.com/) implemented a wrapper on-top of [JSHint](http://www.jshint.com/) that first converts JSX files to JS.
 
@@ -65,7 +65,7 @@ The video will be available soon on the [JSConf EU website](http://2013.jsconf.e
 > [Check it out on GitHub...](https://github.com/CondeNast/JSXHint)
 
 
-## Turbo React
+## Turbo React {#turbo-react}
 
 [Ross Allen](https://twitter.com/ssorallen) working at [Mesosphere](http://mesosphere.io/) combined [Turbolinks](https://github.com/rails/turbolinks/), a library used by Ruby on Rails to speed up page transition, and React.
 
@@ -79,7 +79,7 @@ The video will be available soon on the [JSConf EU website](http://2013.jsconf.e
 > [Check out the demo...](https://turbo-react.herokuapp.com/)
 
 
-## Reactive Table
+## Reactive Table {#reactive-table}
 
 [Stoyan Stefanov](http://www.phpied.com/) continues his series of blog posts about React. This one is an introduction tutorial on rendering a simple table with React.
 
diff --git a/content/blog/2013-11-06-community-roundup-10.md b/content/blog/2013-11-06-community-roundup-10.md
index 6aa3a9b6c0..f85b77e6a8 100644
--- a/content/blog/2013-11-06-community-roundup-10.md
+++ b/content/blog/2013-11-06-community-roundup-10.md
@@ -7,7 +7,7 @@ This is the 10th round-up already and React has come quite far since it was open
 
 The best part is that no drastic changes have been required to support all those use cases. Most of the efforts were targeted at polishing edge cases, performance improvements, and documentation.
 
-## Khan Academy - Officially moving to React
+## Khan Academy - Officially moving to React {#khan-academy---officially-moving-to-react}
 
 [Joel Burget](http://joelburget.com/) announced at Hack Reactor that new front-end code at Khan Academy should be written in React!
 
@@ -22,14 +22,14 @@ The best part is that no drastic changes have been required to support all those
 > [Read the full article](http://joelburget.com/backbone-to-react/)
 
 
-## React: Rethinking best practices
+## React: Rethinking best practices {#react-rethinking-best-practices}
 
 [Pete Hunt](http://www.petehunt.net/)'s talk at JSConf EU 2013 is now available in video.
 
 <figure><iframe width="650" height="370" src="//www.youtube-nocookie.com/embed/x7cQ3mrcKaY" frameborder="0" allowfullscreen></iframe></figure>
 
 
-## Server-side React with PHP
+## Server-side React with PHP {#server-side-react-with-php}
 
 [Stoyan Stefanov](http://www.phpied.com/)'s series of articles on React has two new entries on how to execute React on the server to generate the initial page load.
 
@@ -50,7 +50,7 @@ The best part is that no drastic changes have been required to support all those
 > <figure><a href="http://www.phpied.com/server-side-react-with-php-part-2/"><img src="../images/blog/react-php.png"></a></figure>
 
 
-## TodoMVC Benchmarks
+## TodoMVC Benchmarks {#todomvc-benchmarks}
 
 Webkit has a [TodoMVC Benchmark](https://github.com/WebKit/webkit/tree/master/PerformanceTests/DoYouEvenBench) that compares different frameworks. They recently included React and here are the results (average of 10 runs in Chrome 30):
 
@@ -89,13 +89,13 @@ By default, React "re-renders" all the components when anything changes. This is
 
 The fact that you can control when components are rendered is a very important characteristic of React as it gives you control over its performance. We are going to talk more about performance in the future, stay tuned.
 
-## Guess the filter
+## Guess the filter {#guess-the-filter}
 
 [Connor McSheffrey](http://conr.me) implemented a small game using React. The goal is to guess which filter has been used to create the Instagram photo.
 <figure><a href="http://guessthefilter.com/"><img src="../images/blog/guess_filter.jpg"></a></figure>
 
 
-## React vs FruitMachine
+## React vs FruitMachine {#react-vs-fruitmachine}
 
 [Andrew Betts](http://trib.tv/), director of the [Financial Times Labs](http://labs.ft.com/), posted an article comparing [FruitMachine](https://github.com/ftlabs/fruitmachine) and React.
 
@@ -105,7 +105,7 @@ The fact that you can control when components are rendered is a very important c
 
 Even though we weren't inspired by FruitMachine (React has been used in production since before FruitMachine was open sourced), it's great to see similar technologies emerging and becoming popular.
 
-## React Brunch
+## React Brunch {#react-brunch}
 
 [Matthew McCray](http://elucidata.net/) implemented [react-brunch](https://npmjs.org/package/react-brunch), a JSX compilation step for [Brunch](http://brunch.io/).
 
@@ -117,7 +117,7 @@ Even though we weren't inspired by FruitMachine (React has been used in producti
 >
 > [Read more...](https://npmjs.org/package/react-brunch)
 
-## Random Tweet
+## Random Tweet {#random-tweet}
 
 I'm going to start adding a tweet at the end of each round-up. We'll start with this one:
 
diff --git a/content/blog/2013-11-18-community-roundup-11.md b/content/blog/2013-11-18-community-roundup-11.md
index 9386299988..7fe40e47a1 100644
--- a/content/blog/2013-11-18-community-roundup-11.md
+++ b/content/blog/2013-11-18-community-roundup-11.md
@@ -5,14 +5,14 @@ author: [vjeux]
 
 This round-up is the proof that React has taken off from its Facebook's root: it features three in-depth presentations of React done by external people. This is awesome, keep them coming!
 
-## Super VanJS 2013 Talk
+## Super VanJS 2013 Talk {#super-vanjs-2013-talk}
 
 [Steve Luscher](https://github.com/steveluscher) working at [LeanPub](https://leanpub.com/) made a 30 min talk at [Super VanJS](https://twitter.com/vanjs). He does a remarkable job at explaining why React is so fast with very exciting demos using the HTML5 Audio API.
 
 <figure><iframe width="650" height="338" src="//www.youtube-nocookie.com/embed/1OeXsL5mr4g" frameborder="0" allowfullscreen></iframe></figure>
 
 
-## React Tips
+## React Tips {#react-tips}
 
 [Connor McSheffrey](http://connormcsheffrey.com/) and [Cheng Lou](https://github.com/chenglou) added a new section to the documentation. It's a list of small tips that you will probably find useful while working on React. Since each article is very small and focused, we [encourage you to contribute](/tips/introduction.html)!
 
@@ -30,7 +30,7 @@ This round-up is the proof that React has taken off from its Facebook's root: it
 - [False in JSX](/tips/false-in-jsx.html)
 
 
-## Intro to the React Framework
+## Intro to the React Framework {#intro-to-the-react-framework}
 
 [Pavan Podila](http://blog.pixelingene.com/) wrote an in-depth introduction to React on TutsPlus. This is definitively worth reading.
 
@@ -40,7 +40,7 @@ This round-up is the proof that React has taken off from its Facebook's root: it
 > [Read the full article ...](http://dev.tutsplus.com/tutorials/intro-to-the-react-framework--net-35660)
 
 
-## 140-characters textarea
+## 140-characters textarea {#140-characters-textarea}
 
 [Brian Kim](https://github.com/brainkim) wrote a small textarea component that gradually turns red as you reach the 140-characters limit. Because he only changes the background color, React is smart enough not to mess with the text selection.
 
@@ -48,13 +48,13 @@ This round-up is the proof that React has taken off from its Facebook's root: it
 <script async src="//codepen.io/assets/embed/ei.js"></script>
 
 
-## Genesis Skeleton
+## Genesis Skeleton {#genesis-skeleton}
 
 [Eric Clemmons](https://ericclemmons.github.io/) is working on a "Modern, opinionated, full-stack starter kit for rapid, streamlined application development". The version 0.4.0 has just been released and has first-class support for React.
 <figure><a href="http://genesis-skeleton.com/"><img src="../images/blog/genesis_skeleton.png"></a>a></figure>
 
 
-## AgFlow Talk
+## AgFlow Talk {#agflow-talk}
 
 [Robert Zaremba](http://rz.scale-it.pl/) working on [AgFlow](http://www.agflow.com/) recently talked in Poland about React.
 
@@ -67,7 +67,7 @@ This round-up is the proof that React has taken off from its Facebook's root: it
 <figure><iframe src="https://docs.google.com/presentation/d/1JSFbjCuuexwOHCeHWBMNRIJdyfD2Z0ZQwX65WOWkfaI/embed?start=false" frameborder="0" width="100%" height="468" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"> </iframe></figure>
 
 
-## JSX
+## JSX {#jsx}
 
 [Todd Kennedy](http://tck.io/) working at Cond&eacute; Nast wrote [JSXHint](https://github.com/CondeNast/JSXHint) and explains in a blog post his perspective on JSX.
 
@@ -79,13 +79,13 @@ This round-up is the proof that React has taken off from its Facebook's root: it
 > [Read the full article...](http://tck.io/posts/jsxhint_and_react.html)
 
 
-## Photo Gallery
+## Photo Gallery {#photo-gallery}
 
 [Maykel Loomans](http://miekd.com/), designer at Instagram, wrote a gallery for photos he shot using React.
 <figure><a href="http://photos.miekd.com/xoxo2013/"><img src="../images/blog/xoxo2013.png"></a>a></figure>
 
 
-## Random Tweet
+## Random Tweet {#random-tweet}
 
 <img src="../images/blog/steve_reverse.gif" style="float: right;" />
 <div style="width: 320px;"><blockquote class="twitter-tweet"><p>I think this reversed gif of Steve Urkel best describes my changing emotions towards the React Lib <a href="http://t.co/JoX0XqSXX3">http://t.co/JoX0XqSXX3</a></p>&mdash; Ryan Seddon (@ryanseddon) <a href="https://twitter.com/ryanseddon/statuses/398572848802852864">November 7, 2013</a></blockquote></div>
diff --git a/content/blog/2013-12-19-react-v0.8.0.md b/content/blog/2013-12-19-react-v0.8.0.md
index 1a94597f8b..71c384d0e3 100644
--- a/content/blog/2013-12-19-react-v0.8.0.md
+++ b/content/blog/2013-12-19-react-v0.8.0.md
@@ -16,9 +16,9 @@ In order to make the transition to 0.8 for our current users as painless as poss
 We hope that by releasing `react` on npm, we will enable a new set of uses that have been otherwise difficult. All feedback is welcome!
 
 
-## Changelog
+## Changelog {#changelog}
 
-### React
+### React {#react}
 
 * Added support for more attributes:
   * `rows` & `cols` for `<textarea>`
@@ -29,16 +29,16 @@ We hope that by releasing `react` on npm, we will enable a new set of uses that
 * Fixed Selection events in IE11
 * Added `onContextMenu` events
 
-### React with Addons
+### React with Addons {#react-with-addons}
 
 * Fixed bugs with TransitionGroup when children were undefined
 * Added support for `onTransition`
 
-### react-tools
+### react-tools {#react-tools}
 
 * Upgraded `jstransform` and `esprima-fb`
 
-### JSXTransformer
+### JSXTransformer {#jsxtransformer}
 
 * Added support for use in IE8
 * Upgraded browserify, which reduced file size by ~65KB (16KB gzipped)
diff --git a/content/blog/2013-12-23-community-roundup-12.md b/content/blog/2013-12-23-community-roundup-12.md
index 368acb7f7a..994975227f 100644
--- a/content/blog/2013-12-23-community-roundup-12.md
+++ b/content/blog/2013-12-23-community-roundup-12.md
@@ -5,7 +5,7 @@ author: [vjeux]
 
 React got featured on the front-page of Hacker News thanks to the Om library. If you try it out for the first time, take a look at the [docs](/docs/getting-started.html) and do not hesitate to ask questions on the [Google Group](https://groups.google.com/group/reactjs), [IRC](irc://chat.freenode.net/reactjs) or [Stack Overflow](http://stackoverflow.com/questions/tagged/reactjs). We are trying our best to help you out!
 
-## The Future of JavaScript MVC
+## The Future of JavaScript MVC {#the-future-of-javascript-mvc}
 
 [David Nolen](https://swannodette.github.io/) announced Om, a thin wrapper on-top of React in ClojureScript. It stands out by only using immutable data structures. This unlocks the ability to write a very efficient [shouldComponentUpdate](/docs/component-specs.html#updating-shouldcomponentupdate) and get huge performance improvements on some tasks.
 
@@ -20,7 +20,7 @@ React got featured on the front-page of Hacker News thanks to the Om library. If
 
 
 
-## Scroll Position with React
+## Scroll Position with React {#scroll-position-with-react}
 
 Managing the scroll position when new content is inserted is usually very tricky to get right. [Vjeux](http://blog.vjeux.com/) discovered that [componentWillUpdate](/docs/component-specs.html#updating-componentwillupdate) and [componentDidUpdate](/docs/component-specs.html#updating-componentdidupdate) were triggered exactly at the right time to manage the scroll position.
 
@@ -43,7 +43,7 @@ Managing the scroll position when new content is inserted is usually very tricky
 > [Check out the blog article...](http://blog.vjeux.com/2013/javascript/scroll-position-with-react.html)
 
 
-## Lights Out
+## Lights Out {#lights-out}
 
 React declarative approach is well suited to write games. [Cheng Lou](https://github.com/chenglou) wrote the famous Lights Out game in React. It's a good example of use of [TransitionGroup](/docs/animation.html) to implement animations.
 <figure><a href="https://chenglou.github.io/react-lights-out/"><img src="../images/blog/lights-out.png"></a></figure>
@@ -51,7 +51,7 @@ React declarative approach is well suited to write games. [Cheng Lou](https://gi
 [Try it out!](https://chenglou.github.io/react-lights-out/)
 
 
-## Reactive Table Bookmarklet
+## Reactive Table Bookmarklet {#reactive-table-bookmarklet}
 
 [Stoyan Stefanov](http://www.phpied.com/) wrote a bookmarklet to process tables on the internet. It adds a little "pop" button that expands to a full-screen view with sorting, editing and export to csv and json.
 <figure><a href="http://www.phpied.com/reactivetable-bookmarklet/"><img src="../images/blog/reactive-bookmarklet.png"></a></figure>
@@ -59,13 +59,13 @@ React declarative approach is well suited to write games. [Cheng Lou](https://gi
 [Check out the blog post...](http://www.phpied.com/reactivetable-bookmarklet/)
 
 
-## MontageJS Tutorial in React
+## MontageJS Tutorial in React {#montagejs-tutorial-in-react}
 
 [Ross Allen](https://twitter.com/ssorallen) implemented [MontageJS](http://montagejs.org/)'s [Reddit tutorial](http://montagejs.org/docs/tutorial-reddit-client-with-montagejs.html) in React. This is a good opportunity to compare the philosophies of the two libraries.
 
 [View the source on JSFiddle...](https://jsfiddle.net/ssorallen/fEsYt/)
 
-## Writing Good React Components
+## Writing Good React Components {#writing-good-react-components}
 
 [William Högman Rudenmalm](http://blog.whn.se/) wrote an article on how to write good React components. This is full of good advice.
 
@@ -78,7 +78,7 @@ React declarative approach is well suited to write games. [Cheng Lou](https://gi
 > [Read the full article ...](http://blog.whn.se/post/69621609605/writing-good-react-components)
 
 
-## Hoodie React TodoMVC
+## Hoodie React TodoMVC {#hoodie-react-todomvc}
 
 [Sven Lito](http://svenlito.com/) integrated the React TodoMVC example within an [Hoodie](http://hood.ie/) web app environment. This should let you get started using Hoodie and React.
 
@@ -88,7 +88,7 @@ hoodie new todomvc -t "hoodiehq/hoodie-react-todomvc"
 
 [Check out on GitHub...](https://github.com/hoodiehq/hoodie-react-todomvc)
 
-## JSX Compiler
+## JSX Compiler {#jsx-compiler}
 
 Ever wanted to have a quick way to see what a JSX tag would be converted to? [Tim Yung](http://www.yungsters.com/) made a page for it.
 <figure><a href="/react/jsx-compiler.html"><img src="../images/blog/jsx-compiler.png"></a></figure>
@@ -97,6 +97,6 @@ Ever wanted to have a quick way to see what a JSX tag would be converted to? [Ti
 
 
 
-## Random Tweet
+## Random Tweet {#random-tweet}
 
 <center><blockquote class="twitter-tweet" lang="en"><p>.<a href="https://twitter.com/jordwalke">@jordwalke</a> lays down some truth <a href="http://t.co/AXAn0UlUe3">http://t.co/AXAn0UlUe3</a>, optimizing your JS application shouldn&#39;t force you to rewrite so much code <a href="https://twitter.com/search?q=%23reactjs&amp;src=hash">#reactjs</a></p>&mdash; David Nolen (@swannodette) <a href="https://twitter.com/swannodette/statuses/413780079249215488">December 19, 2013</a></blockquote></center>
diff --git a/content/blog/2013-12-30-community-roundup-13.md b/content/blog/2013-12-30-community-roundup-13.md
index 9002e106fa..fad6b1e017 100644
--- a/content/blog/2013-12-30-community-roundup-13.md
+++ b/content/blog/2013-12-30-community-roundup-13.md
@@ -6,7 +6,7 @@ author: [vjeux]
 Happy holidays! This blog post is a little-late Christmas present for all the React users. Hopefully it will inspire you to write awesome web apps in 2014!
 
 
-## React Touch
+## React Touch {#react-touch}
 
 [Pete Hunt](http://www.petehunt.net/) wrote three demos showing that React can be used to run 60fps native-like experiences on mobile web. A frosted glass effect, an image gallery with 3d animations and an infinite scroll view.
 
@@ -15,14 +15,14 @@ Happy holidays! This blog post is a little-late Christmas present for all the Re
 [Try out the demos!](https://petehunt.github.io/react-touch/)
 
 
-## Introduction to React
+## Introduction to React {#introduction-to-react}
 
 [Stoyan Stefanov](http://www.phpied.com/) talked at Joe Dev On Tech about React. He goes over all the features of the library and ends with a concrete example.
 
 <figure><iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/SMMRJif5QW0" frameborder="0" allowfullscreen></iframe></figure>
 
 
-## JSX: E4X The Good Parts
+## JSX: E4X The Good Parts {#jsx-e4x-the-good-parts}
 
 JSX is often compared to the now defunct E4X, [Vjeux](http://blog.vjeux.com/) went over all the E4X features and explained how JSX is different and hopefully doesn't repeat the same mistakes.
 
@@ -35,7 +35,7 @@ JSX is often compared to the now defunct E4X, [Vjeux](http://blog.vjeux.com/) we
 > [Continue reading ...](http://blog.vjeux.com/2013/javascript/jsx-e4x-the-good-parts.html)
 
 
-## React + Socket.io
+## React + Socket.io {#react--socketio}
 
 [Geert Pasteels](http://enome.be/nl) made a small experiment with Socket.io. He wrote a very small mixin that synchronizes React state with the server. Just include this mixin to your React component and it is now live!
 
@@ -60,7 +60,7 @@ componentWillUnmount: function () {
 [Check it out on GitHub...](https://github.com/Enome/react.io)
 
 
-## cssobjectify
+## cssobjectify {#cssobjectify}
 
 [Andrey Popp](http://andreypopp.com/) implemented a source transform that takes a CSS file and converts it to JSON. This integrates pretty nicely with React.
 
@@ -89,7 +89,7 @@ var MyComponent = React.createClass({
 [Check it out on GitHub...](https://github.com/andreypopp/cssobjectify)
 
 
-## ngReact
+## ngReact {#ngreact}
 
 [David Chang](http://davidandsuzi.com/) working at [HasOffer](http://www.hasoffers.com/) wanted to speed up his Angular app and replaced Angular primitives by React at different layers. When using React naively it is 67% faster, but when combining it with angular's transclusion it is 450% slower.
 
@@ -99,7 +99,7 @@ var MyComponent = React.createClass({
 > [Read the full article...](http://davidandsuzi.com/ngreact-react-components-in-angular/)
 
 
-## vim-jsx
+## vim-jsx {#vim-jsx}
 
 [Max Wang](https://github.com/mxw) made a vim syntax highlighting and indentation plugin for vim.
 
@@ -112,6 +112,6 @@ var MyComponent = React.createClass({
 > [View on GitHub...](https://github.com/mxw/vim-jsx)
 
 
-## Random Tweet
+## Random Tweet {#random-tweet}
 
 <center><blockquote class="twitter-tweet" lang="en"><p>I may be starting to get annoying with this, but ReactJS is really exciting. I truly feel the virtual DOM is a game changer.</p>&mdash; Eric Florenzano (@ericflo) <a href="https://twitter.com/ericflo/statuses/413842834974732288">December 20, 2013</a></blockquote></center>
diff --git a/content/blog/2014-01-06-community-roundup-14.md b/content/blog/2014-01-06-community-roundup-14.md
index edc6dad663..75395546af 100644
--- a/content/blog/2014-01-06-community-roundup-14.md
+++ b/content/blog/2014-01-06-community-roundup-14.md
@@ -5,7 +5,7 @@ author: [vjeux]
 
 The theme of this first round-up of 2014 is integration. I've tried to assemble a list of articles and projects that use React in various environments.
 
-## React Baseline
+## React Baseline {#react-baseline}
 
 React is only one-piece of your web application stack. [Mark Lussier](https://github.com/intabulas) shared his baseline stack that uses React along with Grunt, Browserify, Bower, Zepto, Director and Sass. This should help you get started using React for a new project.
 
@@ -18,7 +18,7 @@ React is only one-piece of your web application stack. [Mark Lussier](https://gi
 > [Check it out on GitHub...](https://github.com/intabulas/reactjs-baseline)
 
 
-## Animal Sounds
+## Animal Sounds {#animal-sounds}
 
 [Josh Duck](http://joshduck.com/) used React in order to build a Windows 8 tablet app. This is a good example of a touch app written in React.
 [![](../images/blog/animal-sounds.jpg)](http://apps.microsoft.com/windows/en-us/app/baby-play-animal-sounds/9280825c-2ed9-41c0-ba38-aa9a5b890bb9)
@@ -26,7 +26,7 @@ React is only one-piece of your web application stack. [Mark Lussier](https://gi
 [Download the app...](http://apps.microsoft.com/windows/en-us/app/baby-play-animal-sounds/9280825c-2ed9-41c0-ba38-aa9a5b890bb9)
 
 
-## React Rails Tutorial
+## React Rails Tutorial {#react-rails-tutorial}
 
 [Selem Delul](http://selem.im) bundled the [React Tutorial](/tutorial/tutorial.html) into a rails app. This is a good example on how to get started with a rails project.
 
@@ -41,7 +41,7 @@ React is only one-piece of your web application stack. [Mark Lussier](https://gi
 >
 > [View on GitHub...](https://github.com/necrodome/react-rails-tutorial)
 
-## Mixing with Backbone
+## Mixing with Backbone {#mixing-with-backbone}
 
 [Eldar Djafarov](http://eldar.djafarov.com/) implemented a mixin to link Backbone models to React state and a small abstraction to write two-way binding on-top.
 
@@ -50,7 +50,7 @@ React is only one-piece of your web application stack. [Mark Lussier](https://gi
 [Check out the blog post...](http://eldar.djafarov.com/2013/11/reactjs-mixing-with-backbone/)
 
 
-## React Infinite Scroll
+## React Infinite Scroll {#react-infinite-scroll}
 
 [Guillaume Rivals](https://twitter.com/guillaumervls) implemented an InfiniteScroll component. This is a good example of a React component that has a simple yet powerful API.
 
@@ -67,13 +67,13 @@ React is only one-piece of your web application stack. [Mark Lussier](https://gi
 [Try it out on GitHub!](https://github.com/guillaumervls/react-infinite-scroll)
 
 
-## Web Components Style
+## Web Components Style {#web-components-style}
 
 [Thomas Aylott](http://subtlegradient.com/) implemented an API that looks like Web Components but using React underneath.
 
 [View the source on JSFiddle...](http://jsfiddle.net/SubtleGradient/ue2Aa)
 
-## React vs Angular
+## React vs Angular {#react-vs-angular}
 
 React is often compared with Angular. [Pete Hunt](http://skulbuny.com/2013/10/31/react-vs-angular/) wrote an opinionated post on the subject.
 
@@ -85,6 +85,6 @@ React is often compared with Angular. [Pete Hunt](http://skulbuny.com/2013/10/31
 
 
 
-## Random Tweet
+## Random Tweet {#random-tweet}
 
 <div><blockquote class="twitter-tweet" lang="en"><p>Really intrigued by React.js. I&#39;ve looked at all JS frameworks, and excepting <a href="https://twitter.com/serenadejs">@serenadejs</a> this is the first one which makes sense to me.</p>&mdash; Jonas Nicklas (@jonicklas) <a href="https://twitter.com/jonicklas/statuses/412640708755869696">December 16, 2013</a></blockquote></div>
diff --git a/content/blog/2014-02-05-community-roundup-15.md b/content/blog/2014-02-05-community-roundup-15.md
index 729a2edea5..8d5f5f606b 100644
--- a/content/blog/2014-02-05-community-roundup-15.md
+++ b/content/blog/2014-02-05-community-roundup-15.md
@@ -7,14 +7,14 @@ Interest in React seems to have surged ever since David Nolen ([@swannodette](ht
 
 In this React Community Round-up, we are taking a closer look at React from a functional programming perspective.
 
-## "React: Another Level of Indirection"
+## "React: Another Level of Indirection" {#react-another-level-of-indirection}
 To start things off, Eric Normand ([@ericnormand](https://twitter.com/ericnormand)) of [LispCast](http://lispcast.com) makes the case for [React from a general functional programming standpoint](http://www.lispcast.com/react-another-level-of-indirection) and explains how React's "Virtual DOM provides the last piece of the Web Frontend Puzzle for ClojureScript".
 
 > The Virtual DOM is an indirection mechanism that solves the difficult problem of DOM programming: how to deal with incremental changes to a stateful tree structure. By abstracting away the statefulness, the Virtual DOM turns the real DOM into an immediate mode GUI, which is perfect for functional programming.
 >
 > [Read the full post...](http://www.lispcast.com/react-another-level-of-indirection)
 
-## Reagent: Minimalistic React for ClojureScript
+## Reagent: Minimalistic React for ClojureScript {#reagent-minimalistic-react-for-clojurescript}
 Dan Holmsand ([@holmsand](https://twitter.com/holmsand)) created [Reagent](https://holmsand.github.io/reagent/), a simplistic ClojureScript API to React.
 
 > It allows you to define efficient React components using nothing but plain ClojureScript functions and data, that describe your UI using a Hiccup-like syntax.
@@ -24,7 +24,7 @@ Dan Holmsand ([@holmsand](https://twitter.com/holmsand)) created [Reagent](https
 > [Check it out on GitHub...](https://holmsand.github.io/reagent/)
 
 
-## Functional DOM programming
+## Functional DOM programming {#functional-dom-programming}
 
 React's one-way data-binding naturally lends itself to a functional programming approach. Facebook's Pete Hunt ([@floydophone](https://twitter.com/floydophone)) explores how one would go about [writing web apps in a functional manner](https://medium.com/p/67d81637d43). Spoiler alert:
 
@@ -38,7 +38,7 @@ Pete also explains this in detail at his #MeteorDevShop talk (about 30 Minutes):
 
 
 
-## Kioo: Separating markup and logic
+## Kioo: Separating markup and logic {#kioo-separating-markup-and-logic}
 [Creighton Kirkendall](https://github.com/ckirkendall) created [Kioo](https://github.com/ckirkendall/kioo), which adds Enlive-style templating to React. HTML templates are separated from the application logic. Kioo comes with separate examples for both Om and Reagent.
 
 A basic example from github:
@@ -85,7 +85,7 @@ A basic example from github:
 (om/root app-state my-page (.-body js/document))
 ```
 
-## Om
+## Om {#om}
 
 In an interview with David Nolen, Tom Coupland ([@tcoupland](https://twitter.com/tcoupland)) of InfoQ provides a nice summary of recent developments around Om ("[Om: Enhancing Facebook's React with Immutability](http://www.infoq.com/news/2014/01/om-react)").
 
@@ -93,7 +93,7 @@ In an interview with David Nolen, Tom Coupland ([@tcoupland](https://twitter.com
 >
 > [Read the full interview...](http://www.infoq.com/news/2014/01/om-react)
 
-### A slice of React, ClojureScript and Om
+### A slice of React, ClojureScript and Om {#a-slice-of-react-clojurescript-and-om}
 
 Fredrik Dyrkell ([@lexicallyscoped](https://twitter.com/lexicallyscoped)) rewrote part of the [React tutorial in both ClojureScript and Om](http://www.lexicallyscoped.com/2013/12/25/slice-of-reactjs-and-cljs.html), along with short, helpful explanations.
 
@@ -105,21 +105,21 @@ In a separate post, Dyrkell breaks down [how to build a binary clock component](
 
 [[Demo](http://www.lexicallyscoped.com/demo/binclock/)] [[Code](https://github.com/fredyr/binclock/blob/master/src/binclock/core.cljs)]
 
-### Time Travel: Implementing undo in Om
+### Time Travel: Implementing undo in Om {#time-travel-implementing-undo-in-om}
 David Nolen shows how to leverage immutable data structures to [add global undo](https://swannodette.github.io/2013/12/31/time-travel/) functionality to an app – using just 13 lines of ClojureScript.
 
-### A Step-by-Step Om Walkthrough
+### A Step-by-Step Om Walkthrough {#a-step-by-step-om-walkthrough}
 
 [Josh Lehman](http://www.joshlehman.me) took the time to create an extensive [step-by-step walkthrough](http://www.joshlehman.me/rewriting-the-react-tutorial-in-om/) of the React tutorial in Om. The well-documented source is on [github](https://github.com/jalehman/omtut-starter).
 
-### Omkara
+### Omkara {#omkara}
 
 [brendanyounger](https://github.com/brendanyounger) created [omkara](https://github.com/brendanyounger/omkara), a starting point for ClojureScript web apps based on Om/React. It aims to take advantage of server-side rendering and comes with a few tips on getting started with Om/React projects.
 
-### Om Experience Report
+### Om Experience Report {#om-experience-report}
 Adam Solove ([@asolove](https://twitter.com/asolove/)) [dives a little deeper into Om, React and ClojureScript](http://adamsolove.com/js/clojure/2014/01/06/om-experience-report.html). He shares some helpful tips he gathered while building his [CartoCrayon](https://github.com/asolove/carto-crayon) prototype.
 
-## Not-so-random Tweet
+## Not-so-random Tweet {#not-so-random-tweet}
 
 
 <div><blockquote class="twitter-tweet" lang="en"><p>[@swannodette](https://twitter.com/swannodette) No thank you! It's honestly a bit weird because Om is exactly what I didn't know I wanted for doing functional UI work.</p>&mdash; Adam Solove (@asolove) <a href="https://twitter.com/asolove/status/420294067637858304">January 6, 2014</a></blockquote></div>
diff --git a/content/blog/2014-02-15-community-roundup-16.md b/content/blog/2014-02-15-community-roundup-16.md
index 84796ba64c..064cbb8cc1 100644
--- a/content/blog/2014-02-15-community-roundup-16.md
+++ b/content/blog/2014-02-15-community-roundup-16.md
@@ -6,14 +6,14 @@ author: [jgebhardt]
 There have been many posts recently covering the <i>why</i> and <i>how</i> of React. This week's community round-up includes a collection of recent articles to help you get started with React, along with a few posts that explain some of the inner workings.
 
 
-## React in a nutshell
+## React in a nutshell {#react-in-a-nutshell}
 Got five minutes to pitch React to your coworkers? John Lynch ([@johnrlynch](https://twitter.com/johnrlynch)) put together [this excellent and refreshing slideshow](http://slid.es/johnlynch/reactjs):
 
 <iframe src="//slid.es/johnlynch/reactjs/embed" width="100%" height="420" scrolling="no" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
 
 
 
-## React's diff algorithm
+## React's diff algorithm {#reacts-diff-algorithm}
 
 React core team member Christopher Chedeau ([@vjeux](https://twitter.com/vjeux)) explores the innards of React's tree diffing algorithm in this [extensive and well-illustrated post](http://calendar.perfplanet.com/2013/diff/). <figure>[![](../images/blog/react-diff-tree.png)](http://calendar.perfplanet.com/2013/diff/)</figure>
 
@@ -22,7 +22,7 @@ While we're talking about tree diffing: Matt Esch ([@MatthewEsch](https://twitte
 
 
 
-## Many, many new introductions to React!
+## Many, many new introductions to React! {#many-many-new-introductions-to-react}
 
 
 
@@ -40,23 +40,23 @@ Taylor Lapeyre ([@taylorlapeyre](https://twitter.com/taylorlapeyre)) wrote anoth
 
 [This "Deep explanation for newbies"](http://www.webdesignporto.com/react-js-in-pure-javascript-facebook-library/?utm_source=echojs&utm_medium=post&utm_campaign=echojs) by [@ProJavaScript](https://twitter.com/ProJavaScript) explains how to get started building a React game without using the optional JSX syntax.
 
-### React around the world
+### React around the world {#react-around-the-world}
 
 It's great to see the React community expand internationally. [This site](http://habrahabr.ru/post/189230/) features a React introduction in Russian.
 
-### React tutorial series
+### React tutorial series {#react-tutorial-series}
 
 [Christopher Pitt](https://medium.com/@followchrisp) explains [React Components](https://medium.com/react-tutorials/828c397e3dc8) and [React Properties](https://medium.com/react-tutorials/ef11cd55caa0). The former includes a nice introduction to using JSX, while the latter focuses on adding interactivity and linking multiple components together. Also check out the [other posts in his React Tutorial series](https://medium.com/react-tutorials), e.g. on using [React + Backbone Model](https://medium.com/react-tutorials/8aaec65a546c) and [React + Backbone Router](https://medium.com/react-tutorials/c00be0cf1592).
 
-### Beginner tutorial: Implementing the board game Go
+### Beginner tutorial: Implementing the board game Go {#beginner-tutorial-implementing-the-board-game-go}
 
 [Chris LaRose](http://cjlarose.com/) walks through the steps of creating a Go app in React, showing how to separate application logic from the rendered components. Check out his [tutorial](http://cjlarose.com/2014/01/09/react-board-game-tutorial.html) or go straight to the [code](https://github.com/cjlarose/react-go).
 
-### Egghead.io video tutorials
+### Egghead.io video tutorials {#eggheadio-video-tutorials}
 
 Joe Maddalone ([@joemaddalone](https://twitter.com/joemaddalone)) of [egghead.io](https://egghead.io/) created a series of React video tutorials, such as [this](http://www.youtube-nocookie.com/v/rFvZydtmsxM) introduction to React Components. [[part 1](http://www.youtube-nocookie.com/v/rFvZydtmsxM)], [[part 2](http://www.youtube-nocookie.com/v/5yvFLrt7N8M)]
 
-### "React: Finally, a great server/client web stack"
+### "React: Finally, a great server/client web stack" {#react-finally-a-great-serverclient-web-stack}
 
 Eric Florenzano ([@ericflo](https://twitter.com/ericflo)) sheds some light on what makes React perfect for server rendering:
 
@@ -66,12 +66,12 @@ Eric Florenzano ([@ericflo](https://twitter.com/ericflo)) sheds some light on wh
 
 > [Read the full post...](http://eflorenzano.com/blog/2014/01/23/react-finally-server-client/)
 
-## Building a complex React component
+## Building a complex React component {#building-a-complex-react-component}
 [Matt Harrison](http://matt-harrison.com/) walks through the process of [creating an SVG-based Resistance Calculator](http://matt-harrison.com/building-a-complex-web-component-with-facebooks-react-library/) using React. <figure>[![](../images/blog/resistance-calculator.png)](http://matt-harrison.com/building-a-complex-web-component-with-facebooks-react-library/)</figure>
 
 
 
-## Random Tweets
+## Random Tweets {#random-tweets}
 
 <div><blockquote class="twitter-tweet" lang="en"><p>[#reactjs](https://twitter.com/search?q=%23reactjs&src=hash) has very simple API, but it's amazing how much work has been done under the hood to make it blazing fast.</p>&mdash; Anton Astashov (@anton_astashov) <a href="https://twitter.com/anton_astashov/status/417556491646693378">December 30, 2013</a></blockquote></div>
 
diff --git a/content/blog/2014-02-16-react-v0.9-rc1.md b/content/blog/2014-02-16-react-v0.9-rc1.md
index 177f7372cc..afc3822ba8 100644
--- a/content/blog/2014-02-16-react-v0.9-rc1.md
+++ b/content/blog/2014-02-16-react-v0.9-rc1.md
@@ -20,7 +20,7 @@ We've also published version `0.9.0-rc1` of the `react` and `react-tools` packag
 
 Please try these builds out and [file an issue on GitHub](https://github.com/facebook/react/issues/new) if you see anything awry.
 
-## Upgrade Notes
+## Upgrade Notes {#upgrade-notes}
 
 In addition to the changes to React core listed below, we've made a small change to the way JSX interprets whitespace to make things more consistent. With this release, space between two components on the same line will be preserved, while a newline separating a text node from a tag will be eliminated in the output. Consider the code:
 
@@ -53,11 +53,11 @@ We believe this new behavior is more helpful and eliminates cases where unwanted
 
 In cases where you want to preserve the space adjacent to a newline, you can write a JS string like `{"Monkeys: "}` in your JSX source. We've included a script to do an automated codemod of your JSX source tree that preserves the old whitespace behavior by adding and removing spaces appropriately. You can [install jsx\_whitespace\_transformer from npm](https://github.com/facebook/react/blob/master/npm-jsx_whitespace_transformer/README.md) and run it over your source tree to modify files in place. The transformed JSX files will preserve your code's existing whitespace behavior.
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes}
 
 - The lifecycle methods `componentDidMount` and `componentDidUpdate` no longer receive the root node as a parameter; use `this.getDOMNode()` instead
 - Whenever a prop is equal to `undefined`, the default value returned by `getDefaultProps` will now be used instead
@@ -69,7 +69,7 @@ In cases where you want to preserve the space adjacent to a newline, you can wri
 - On `input`, `select`, and `textarea` elements, `.getValue()` is no longer supported; use `.getDOMNode().value` instead
 - `this.context` on components is now reserved for internal use by React
 
-#### New Features
+#### New Features {#new-features}
 
 - React now never rethrows errors, so stack traces are more accurate and Chrome's purple break-on-error stop sign now works properly
 - Added a new tool for profiling React components and identifying places where defining `shouldComponentUpdate` can give performance improvements
@@ -92,7 +92,7 @@ In cases where you want to preserve the space adjacent to a newline, you can wri
 - Added support for `onReset` on `<form>` elements
 - The `autoFocus` attribute is now polyfilled consistently on `input`, `select`, and `textarea`
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes}
 
 - React no longer adds an `__owner__` property to each component's `props` object; passed-in props are now never mutated
 - When nesting top-level components (e.g., calling `React.renderComponent` within `componentDidMount`), events now properly bubble to the parent component
@@ -112,7 +112,7 @@ In cases where you want to preserve the space adjacent to a newline, you can wri
 - `scrollLeft` and `scrollTop` are no longer accessed on document.body, eliminating a warning in Chrome
 - General performance fixes, memory optimizations, improvements to warnings and error messages
 
-### React with Addons
+### React with Addons {#react-with-addons}
 
 - `React.addons.TransitionGroup` was renamed to `React.addons.CSSTransitionGroup`
 - `React.addons.TransitionGroup` was added as a more general animation wrapper
@@ -122,7 +122,7 @@ In cases where you want to preserve the space adjacent to a newline, you can wri
 - Performance optimizations for CSSTransitionGroup
 - On checkbox `<input>` elements, `checkedLink` is now supported for two-way binding
 
-### JSX Compiler and react-tools Package
+### JSX Compiler and react-tools Package {#jsx-compiler-and-react-tools-package}
 
 - Whitespace normalization has changed; now space between two tags on the same line will be preserved, while newlines between two tags will be removed
 - The `react-tools` npm package no longer includes the React core libraries; use the `react` package instead.
diff --git a/content/blog/2014-02-20-react-v0.9.md b/content/blog/2014-02-20-react-v0.9.md
index 19eb598245..bcb02397cb 100644
--- a/content/blog/2014-02-20-react-v0.9.md
+++ b/content/blog/2014-02-20-react-v0.9.md
@@ -20,7 +20,7 @@ As always, the release is available for download from the CDN:
 
 We've also published version `0.9.0` of the `react` and `react-tools` packages on npm and the `react` package on bower.
 
-## What’s New?
+## What’s New? {#whats-new}
 
 This version includes better support for normalizing event properties across all supported browsers so that you need to worry even less about cross-browser differences. We've also made many improvements to error messages and have refactored the core to never rethrow errors, so stack traces are more accurate and Chrome's purple break-on-error stop sign now works properly.
 
@@ -28,7 +28,7 @@ We've also added to the add-ons build [React.addons.TestUtils](/docs/test-utils.
 
 We've also made several other improvements and a few breaking changes; the full changelog is provided below.
 
-## JSX Whitespace
+## JSX Whitespace {#jsx-whitespace}
 
 In addition to the changes to React core listed below, we've made a small change to the way JSX interprets whitespace to make things more consistent. With this release, space between two components on the same line will be preserved, while a newline separating a text node from a tag will be eliminated in the output. Consider the code:
 
@@ -61,11 +61,11 @@ We believe this new behavior is more helpful and eliminates cases where unwanted
 
 In cases where you want to preserve the space adjacent to a newline, you can write `{'Monkeys: '}` or `Monkeys:{' '}` in your JSX source. We've included a script to do an automated codemod of your JSX source tree that preserves the old whitespace behavior by adding and removing spaces appropriately. You can [install jsx\_whitespace\_transformer from npm](https://github.com/facebook/react/blob/master/npm-jsx_whitespace_transformer/README.md) and run it over your source tree to modify files in place. The transformed JSX files will preserve your code's existing whitespace behavior.
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes}
 
 - The lifecycle methods `componentDidMount` and `componentDidUpdate` no longer receive the root node as a parameter; use `this.getDOMNode()` instead
 - Whenever a prop is equal to `undefined`, the default value returned by `getDefaultProps` will now be used instead
@@ -77,7 +77,7 @@ In cases where you want to preserve the space adjacent to a newline, you can wri
 - On `input`, `select`, and `textarea` elements, `.getValue()` is no longer supported; use `.getDOMNode().value` instead
 - `this.context` on components is now reserved for internal use by React
 
-#### New Features
+#### New Features {#new-features}
 
 - React now never rethrows errors, so stack traces are more accurate and Chrome's purple break-on-error stop sign now works properly
 - Added support for SVG tags `defs`, `linearGradient`, `polygon`, `radialGradient`, `stop`
@@ -102,7 +102,7 @@ In cases where you want to preserve the space adjacent to a newline, you can wri
 - Added support for `onReset` on `<form>` elements
 - The `autoFocus` attribute is now polyfilled consistently on `input`, `select`, and `textarea`
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes}
 
 - React no longer adds an `__owner__` property to each component's `props` object; passed-in props are now never mutated
 - When nesting top-level components (e.g., calling `React.renderComponent` within `componentDidMount`), events now properly bubble to the parent component
@@ -123,7 +123,7 @@ In cases where you want to preserve the space adjacent to a newline, you can wri
 - `scrollLeft` and `scrollTop` are no longer accessed on document.body, eliminating a warning in Chrome
 - General performance fixes, memory optimizations, improvements to warnings and error messages
 
-### React with Addons
+### React with Addons {#react-with-addons}
 
 - `React.addons.TestUtils` was added to help write unit tests
 - `React.addons.TransitionGroup` was renamed to `React.addons.CSSTransitionGroup`
@@ -134,7 +134,7 @@ In cases where you want to preserve the space adjacent to a newline, you can wri
 - Performance optimizations for CSSTransitionGroup
 - On checkbox `<input>` elements, `checkedLink` is now supported for two-way binding
 
-### JSX Compiler and react-tools Package
+### JSX Compiler and react-tools Package {#jsx-compiler-and-react-tools-package}
 
 - Whitespace normalization has changed; now space between two tags on the same line will be preserved, while newlines between two tags will be removed
 - The `react-tools` npm package no longer includes the React core libraries; use the `react` package instead.
diff --git a/content/blog/2014-02-24-community-roundup-17.md b/content/blog/2014-02-24-community-roundup-17.md
index f689cf4490..41dd68a08b 100644
--- a/content/blog/2014-02-24-community-roundup-17.md
+++ b/content/blog/2014-02-24-community-roundup-17.md
@@ -6,50 +6,50 @@ author: [jgebhardt]
 
 It's exciting to see the number of real-world React applications and components skyrocket over the past months! This community round-up features a few examples of inspiring React applications and components.
 
-## React in the Real World
+## React in the Real World {#react-in-the-real-world}
 
-### Facebook Lookback video editor
+### Facebook Lookback video editor {#facebook-lookback-video-editor}
 Large parts of Facebook's web frontend are already powered by React. The recently released Facebook [Lookback video and its corresponding editor](https://www.facebook.com/lookback/edit/) are great examples of a complex, real-world React app.
 
-### Russia's largest bank is now powered by React
+### Russia's largest bank is now powered by React {#russias-largest-bank-is-now-powered-by-react}
 Sberbank, Russia's largest bank, recently switched large parts of their site to use React, as detailed in [this post by Vyacheslav Slinko](https://groups.google.com/forum/#!topic/reactjs/Kj6WATX0atg).
 
-### Relato
+### Relato {#relato}
 [Relato](https://bripkens.github.io/relato/) by [Ben Ripkens](https://github.com/bripkens) shows Open Source Statistics based on npm data. It features a filterable and sortable table built in React. Check it out &ndash; it's super fast!
 
-### Makona Editor
+### Makona Editor {#makona-editor}
 
  John Lynch ([@johnrlynch](https://twitter.com/johnrlynch)) created Makona, a block-style document editor for the web. Blocks of different content types comprise documents, authored using plain markup. At the switch of a toggle, block contents are then rendered on the page. While not quite a WYSIWYG editor, Makona uses plain textareas for input. This makes it compatible with a wider range of platforms than traditional rich text editors.
 [![](../images/blog/makona-editor.png)](https://johnthethird.github.io/makona-editor/)
 
-### Create Chrome extensions using React
+### Create Chrome extensions using React {#create-chrome-extensions-using-react}
 React is in no way limited to just web pages. Brandon Tilley ([@BinaryMuse](https://twitter.com/BinaryMuse)) just released a detailed walk-through of [how he built his Chrome extension "Fast Tab Switcher" using React](http://brandontilley.com/2014/02/24/creating-chrome-extensions-with-react.html).
 
 
-### Twitter Streaming Client
+### Twitter Streaming Client {#twitter-streaming-client}
 
 Javier Aguirre ([@javaguirre](https://twitter.com/javaguirre)) put together a simple [twitter streaming client using node, socket.io and React](http://javaguirre.net/2014/02/11/twitter-streaming-api-with-node-socket-io-and-reactjs/).
 
 
-### Sproutsheet
+### Sproutsheet {#sproutsheet}
 
 [Sproutsheet](http://sproutsheet.com/) is a gardening calendar. You can use it to track certain events that happen in the life of your plants. It's currently in beta and supports localStorage, and data/image import and export.
 
-### Instant Domain Search
+### Instant Domain Search {#instant-domain-search}
 [Instant Domain Search](https://instantdomainsearch.com/) also uses React. It sure is instant!
 
 
-### SVG-based graphical node editor
+### SVG-based graphical node editor {#svg-based-graphical-node-editor}
 [NoFlo](http://noflojs.org/) and [Meemoo](http://meemoo.org/) developer [Forresto Oliphant](http://www.forresto.com/) built an awesome SVG-based [node editor](https://forresto.github.io/prototyping/react/) in React.
  [![](../images/blog/react-svg-fbp.png)](https://forresto.github.io/prototyping/react/)
 
 
-### Ultimate Tic-Tac-Toe Game in React
+### Ultimate Tic-Tac-Toe Game in React {#ultimate-tic-tac-toe-game-in-react}
 Rafał Cieślak ([@Ravicious](https://twitter.com/Ravicious)) wrote a [React version](https://ravicious.github.io/ultimate-ttt/) of [Ultimate Tic Tac Toe](http://mathwithbaddrawings.com/2013/06/16/ultimate-tic-tac-toe/). Find the source [here](https://github.com/ravicious/ultimate-ttt).
 
 
 
-### ReactJS Gallery
+### ReactJS Gallery {#reactjs-gallery}
 
 [Emanuele Rampichini](https://github.com/lele85)'s [ReactJS Gallery](https://github.com/lele85/ReactGallery) is a cool demo app that shows fullscreen images from a folder on the server. If the folder content changes, the gallery app updates via websockets.
 
@@ -59,29 +59,29 @@ Emanuele shared this awesome demo video with us:
 
 
 
-## React Components
+## React Components {#react-components}
 
 
-### Table Sorter
+### Table Sorter {#table-sorter}
 [Table Sorter](https://bgerm.github.io/react-table-sorter-demo/) by [bgerm](https://github.com/bgerm) [[source](https://github.com/bgerm/react-table-sorter-demo)] is another helpful React component.
 
-### Static-search
+### Static-search {#static-search}
 
 Dmitry Chestnykh [@dchest](https://twitter.com/dchest) wrote a [static search indexer](https://github.com/dchest/static-search) in Go, along with a [React-based web front-end](http://www.codingrobots.com/search/) that consumes search result via JSON.
 
-### Lorem Ipsum component
+### Lorem Ipsum component {#lorem-ipsum-component}
 
 [Martin Andert](https://github.com/martinandert) created [react-lorem-component](https://github.com/martinandert/react-lorem-component), a simple component for all your placeholding needs.
 
-### Input with placeholder shim
+### Input with placeholder shim {#input-with-placeholder-shim}
 [react-input-placeholder](enigma-io/react-input-placeholder) by [enigma-io](@enigma-io) is a small wrapper around React.DOM.input that shims in placeholder functionality for browsers that don't natively support it.
 
-### diContainer
+### diContainer {#dicontainer}
 
 [dicontainer](https://github.com/SpektrumFM/dicontainer) provides a dependency container that lets you inject Angular-style providers and services as simple React.js Mixins.
 
 
-## React server rendering
+## React server rendering {#react-server-rendering}
 
 Ever wonder how to pre-render React components on the server? [react-server-example](https://github.com/mhart/react-server-example) by Michael Hart ([@hichaelmart](https://twitter.com/hichaelmart)) walks through the necessary steps.
 
@@ -89,6 +89,6 @@ Similarly, Alan deLevie ([@adelevie](https://twitter.com/adelevie)) created [rea
 
 
 
-## Random Tweet
+## Random Tweet {#random-tweet}
 
 <div><blockquote class="twitter-tweet" lang="en"><p>Recent changes: web ui is being upgraded to [#reactjs](https://twitter.com/search?q=%23reactjs&src=hash), HEAD~4 at [https://camlistore.googlesource.com/camlistore/](https://camlistore.googlesource.com/camlistore/)</p>&mdash; Camlistore (@Camlistore) <a href="https://twitter.com/Camlistore/status/423925795820539904">January 16, 2014</a></blockquote></div>
diff --git a/content/blog/2014-03-14-community-roundup-18.md b/content/blog/2014-03-14-community-roundup-18.md
index c91e47a122..f803a1feef 100644
--- a/content/blog/2014-03-14-community-roundup-18.md
+++ b/content/blog/2014-03-14-community-roundup-18.md
@@ -5,11 +5,11 @@ author: [jgebhardt]
 
 In this Round-up, we are taking a few closer looks at React's interplay with different frameworks and architectures.
 
-## "Little framework BIG splash"
+## "Little framework BIG splash" {#little-framework-big-splash}
 
 Let's start with yet another refreshing introduction to React: Craig Savolainen ([@maedhr](https://twitter.com/maedhr)) walks through some first steps, demonstrating [how to build a Google Maps component](http://infinitemonkeys.influitive.com/little-framework-big-splash) using React.
 
-## Architecting your app with react
+## Architecting your app with react {#architecting-your-app-with-react}
 
 Brandon Konkle ([@bkonkle](https://twitter.com/bkonkle))
 [Architecting your app with react](http://lincolnloop.com/blog/architecting-your-app-react-part-1/)
@@ -19,13 +19,13 @@ We're looking forward to part 2!
 >
 > [Read the full article...](http://lincolnloop.com/blog/architecting-your-app-react-part-1/)
 
-## React vs. async DOM manipulation
+## React vs. async DOM manipulation {#react-vs-async-dom-manipulation}
 
 Eliseu Monar ([@eliseumds](https://twitter.com/eliseumds))'s post "[ReactJS vs async concurrent rendering](http://eliseumds.tumblr.com/post/77843550010/vitalbox-pchr-reactjs-vs-async-concurrent-rendering)" is a great example of how React quite literally renders a whole array of common web development work(arounds) obsolete.
 
 
 
-## React, Scala and the Play Framework
+## React, Scala and the Play Framework {#react-scala-and-the-play-framework}
 [Matthias Nehlsen](http://matthiasnehlsen.com/) wrote a detailed introductory piece on [React and the Play Framework](http://matthiasnehlsen.com/blog/2014/01/05/play-framework-and-facebooks-react-library/), including a helpful architectural diagram of a typical React app.
 
 Nehlsen's React frontend is the second implementation of his chat application's frontend, following an AngularJS version. Both implementations are functionally equivalent and offer some perspective on differences between the two frameworks.
@@ -34,17 +34,17 @@ In [another article](http://matthiasnehlsen.com/blog/2014/01/24/scala-dot-js-and
 
 Also check out his [talk](http://m.ustream.tv/recorded/42780242) at Ping Conference 2014, in which he walks through a lot of the previously content in great detail.
 
-## React and Backbone
+## React and Backbone {#react-and-backbone}
 
 The folks over at [Venmo](https://venmo.com/) are using React in conjunction with Backbone.
 Thomas Boyt ([@thomasaboyt](https://twitter.com/thomasaboyt)) wrote [this detailed piece](http://www.thomasboyt.com/2013/12/17/using-reactjs-as-a-backbone-view.html) about why React and Backbone are "a fantastic pairing".
 
-## React vs. Ember
+## React vs. Ember {#react-vs-ember}
 
 Eric Berry ([@coderberry](https://twitter.com/coderberry)) developed Ember equivalents for some of the official React examples. Read his post for a side-by-side comparison of the respective implementations: ["Facebook React vs. Ember"](https://instructure.github.io/blog/2013/12/17/facebook-react-vs-ember/).
 
 
-## React and plain old HTML
+## React and plain old HTML {#react-and-plain-old-html}
 
 Daniel Lo Nigro ([@Daniel15](https://twitter.com/Daniel15)) created [React-Magic](https://github.com/reactjs/react-magic), which leverages React to ajaxify plain old html pages and even [allows CSS transitions between pageloads](http://stuff.dan.cx/facebook/react-hacks/magic/red.php).
 
@@ -54,15 +54,15 @@ Daniel Lo Nigro ([@Daniel15](https://twitter.com/Daniel15)) created [React-Magic
 
 On a related note, [Reactize](https://turbo-react.herokuapp.com/) by Ross Allen ([@ssorallen](https://twitter.com/ssorallen)) is a similarly awesome project: A wrapper for Rails' [Turbolinks](https://github.com/rails/turbolinks/), which seems to have inspired John Lynch ([@johnrlynch](https://twitter.com/johnrlynch)) to then create [a server-rendered version using the JSX transformer in Rails middleware](http://www.rigelgroupllc.com/blog/2014/01/12/react-jsx-transformer-in-rails-middleware/).
 
-## React and Object.observe
+## React and Object.observe {#react-and-objectobserve}
 Check out [François de Campredon](https://github.com/fdecampredon)'s implementation of [TodoMVC based on React and ES6's Object.observe](https://github.com/fdecampredon/react-observe-todomvc/).
 
 
-## React and Angular
+## React and Angular {#react-and-angular}
 
 Ian Bicking ([@ianbicking](https://twitter.com/ianbicking)) of Mozilla Labs [explains why he "decided to go with React instead of Angular.js"](https://plus.google.com/+IanBicking/posts/Qj8R5SWAsfE).
 
-### ng-React Update
+### ng-React Update {#ng-react-update}
 
 [David Chang](https://github.com/davidchang) works through some performance improvements of his [ngReact](https://github.com/davidchang/ngReact) project. His post ["ng-React Update - React 0.9 and Angular Track By"](http://davidandsuzi.com/ngreact-update/) includes some helpful advice on boosting render performance for Angular components.
 
@@ -77,11 +77,11 @@ React was also recently mentioned at ng-conf, where the Angular team commented o
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/srt3OBP2kGc?start=113" frameborder="0" allowfullscreen></iframe>
 
-## React and Web Components
+## React and Web Components {#react-and-web-components}
 
 Jonathan Krause ([@jonykrause](https://twitter.com/jonykrause)) offers his thoughts regarding [parallels between React and Web Components](http://jonykrau.se/posts/the-value-of-react), highlighting the value of React's ability to render pages on the server practically for free.
 
-## Immutable React
+## Immutable React {#immutable-react}
 
 [Peter Hausel](http://pk11.kinja.com/) shows how to build a Wikipedia auto-complete demo based on immutable data structures (similar to [mori](https://npmjs.org/package/mori)), really taking advantage of the framework's one-way reactive data binding:
 
@@ -90,16 +90,16 @@ Jonathan Krause ([@jonykrause](https://twitter.com/jonykrause)) offers his thoug
 > [Read the full post](http://tech.kinja.com/immutable-react-1495205675)
 
 
-## D3 and React
+## D3 and React {#d3-and-react}
 
 [Ben Smith](http://10consulting.com/) built some great SVG-based charting components using a little less of D3 and a little more of React: [D3 and React - the future of charting components?](http://10consulting.com/2014/02/19/d3-plus-reactjs-for-charting/)
 
-## Om and React
+## Om and React {#om-and-react}
 Josh Haberman ([@joshhaberman](https://twitter.com/JoshHaberman)) discusses performance differences between React, Om and traditional MVC frameworks in "[A closer look at OM vs React performance](http://blog.reverberate.org/2014/02/on-future-of-javascript-mvc-frameworks.html)".
 
 Speaking of Om: [Omchaya](https://github.com/sgrove/omchaya) by Sean Grove ([@sgrove](https://twitter.com/sgrove)) is a neat Cljs/Om example project.
 
 
-## Random Tweets
+## Random Tweets {#random-tweets}
 
 <div><blockquote class="twitter-tweet" lang="en"><p>Worked for 2 hours on a [@react_js](https://twitter.com/react_js) app sans internet. Love that I could get stuff done with it without googling every question.</p>&mdash; John Shimek (@varikin) <a href="https://twitter.com/varikin/status/436606891657949185">February 20, 2014</a></blockquote></div>
diff --git a/content/blog/2014-03-19-react-v0.10-rc1.md b/content/blog/2014-03-19-react-v0.10-rc1.md
index 9ece98ccd0..cc065e0879 100644
--- a/content/blog/2014-03-19-react-v0.10-rc1.md
+++ b/content/blog/2014-03-19-react-v0.10-rc1.md
@@ -20,7 +20,7 @@ We've also published version `0.10.0-rc1` of the `react` and `react-tools` packa
 
 Please try these builds out and [file an issue on GitHub](https://github.com/facebook/react/issues/new) if you see anything awry.
 
-## Clone On Mount
+## Clone On Mount {#clone-on-mount}
 
 The main purpose of this release is to provide a smooth upgrade path as we evolve some of the implementation of core. In v0.9 we started warning in cases where you called methods on unmounted components. This is part of an effort to enforce the idea that the return value of a component (`React.DOM.div()`, `MyComponent()`) is in fact not a reference to the component instance React uses in the virtual DOM. The return value is instead a light-weight object that React knows how to use. Since the return value currently is a reference to the same object React uses internally, we need to make this transition in stages as many people have come to depend on this implementation detail.
 
@@ -47,25 +47,25 @@ These warnings and method forwarding are only enabled in the development build.
 
 The plan for v0.11 is that we will go fully to "descriptors". Method calls on the return value of `MyComponent()` will fail hard.
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### New Features
+#### New Features {#new-features}
 * Added warnings to help migrate towards descriptors
 * Made it possible to server render without React-related markup (`data-reactid`, `data-react-checksum`). This DOM will not be mountable by React. [Read the docs for `React.renderComponentToStaticMarkup`](/docs/top-level-api.html#react.rendercomponenttostaticmarkup)
 * Added support for more attributes:
   * `srcSet` for `<img>` to specify images at different pixel ratios
   * `textAnchor` for SVG
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes}
 * Ensure all void elements don’t insert a closing tag into the markup.
 * Ensure `className={false}` behaves consistently
 * Ensure `this.refs` is defined, even if no refs are specified.
 
-### Addons
+### Addons {#addons}
 
 * `update` function to deal with immutable data. [Read the docs](/docs/update.html)
 
-### react-tools
+### react-tools {#react-tools}
 * Added an option argument to `transform` function. The only option supported is `harmony`, which behaves the same as `jsx --harmony` on the command line. This uses the ES6 transforms from [jstransform](https://github.com/facebook/jstransform).
diff --git a/content/blog/2014-03-21-react-v0.10.md b/content/blog/2014-03-21-react-v0.10.md
index 2b1ac59b39..121c88a222 100644
--- a/content/blog/2014-03-21-react-v0.10.md
+++ b/content/blog/2014-03-21-react-v0.10.md
@@ -20,7 +20,7 @@ We've also published version `0.10.0` of the `react` and `react-tools` packages
 
 Please try these builds out and [file an issue on GitHub](https://github.com/facebook/react/issues/new) if you see anything awry.
 
-## Clone On Mount
+## Clone On Mount {#clone-on-mount}
 
 The main purpose of this release is to provide a smooth upgrade path as we evolve some of the implementation of core. In v0.9 we started warning in cases where you called methods on unmounted components. This is part of an effort to enforce the idea that the return value of a component (`React.DOM.div()`, `MyComponent()`) is in fact not a reference to the component instance React uses in the virtual DOM. The return value is instead a light-weight object that React knows how to use. Since the return value currently is a reference to the same object React uses internally, we need to make this transition in stages as many people have come to depend on this implementation detail.
 
@@ -47,26 +47,26 @@ These warnings and method forwarding are only enabled in the development build.
 
 The plan for v0.11 is that we will go fully to "descriptors". Method calls on the return value of `MyComponent()` will fail hard.
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### New Features
+#### New Features {#new-features}
 * Added warnings to help migrate towards descriptors
 * Made it possible to server render without React-related markup (`data-reactid`, `data-react-checksum`). This DOM will not be mountable by React. [Read the docs for `React.renderComponentToStaticMarkup`](/docs/top-level-api.html#react.rendercomponenttostaticmarkup)
 * Added support for more attributes:
   * `srcSet` for `<img>` to specify images at different pixel ratios
   * `textAnchor` for SVG
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes}
 * Ensure all void elements don’t insert a closing tag into the markup.
 * Ensure `className={false}` behaves consistently
 * Ensure `this.refs` is defined, even if no refs are specified.
 
-### Addons
+### Addons {#addons}
 
 * `update` function to deal with immutable data. [Read the docs](/docs/update.html)
 
-### react-tools
+### react-tools {#react-tools}
 * Added an option argument to `transform` function. The only option supported is `harmony`, which behaves the same as `jsx --harmony` on the command line. This uses the ES6 transforms from [jstransform](https://github.com/facebook/jstransform).
 
diff --git a/content/blog/2014-03-28-the-road-to-1.0.md b/content/blog/2014-03-28-the-road-to-1.0.md
index 2b167b8c16..2e9f3ac0b7 100644
--- a/content/blog/2014-03-28-the-road-to-1.0.md
+++ b/content/blog/2014-03-28-the-road-to-1.0.md
@@ -7,17 +7,17 @@ When we launched React last spring, we purposefully decided not to call it 1.0.
 
 Our primary goal with 1.0 is to clarify our messaging and converge on an API that is aligned with our goals. In order to do that, we want to clean up bad patterns we've seen in use and really help enable developers write good code.
 
-## Descriptors
+## Descriptors {#descriptors}
 
 The first part of this is what we're calling "descriptors". I talked about this briefly in our [v0.10 announcements][v0.10]. The goal here is to separate our virtual DOM representation from our use of it. Simply, this means the return value of a component (e.g. `React.DOM.div()`, `MyComponent()`) will be a simple object containing the information React needs to render. Currently the object returned is actually linked to React's internal representation of the component and even directly to the DOM element. This has enabled some bad patterns that are quite contrary to how we want people to use React. That's our failure.
 
 We added some warnings in v0.9 to start migrating some of these bad patterns. With v0.10 we'll catch more. You'll see more on this soon as we expect to ship v0.11 with descriptors.
 
-## API Cleanup
+## API Cleanup {#api-cleanup}
 
 This is really connected to everything. We want to keep the API as simple as possible and help developers [fall into the pit of success][pitofsuccess]. Enabling bad patterns with bad APIs is not success.
 
-## ES6
+## ES6 {#es6}
 
 Before we even launched React publicly, members of the team were talking about how we could leverage ES6, namely classes, to improve the experience of creating React components. Calling `React.createClass(...)` isn't great. We don't quite have the right answer here yet, but we're close. We want to make sure we make this as simple as possible. It could look like this:
 
@@ -31,23 +31,23 @@ class MyComponent extends React.Component {
 
 There are other features of ES6 we're already using in core. I'm sure we'll see more of that. The `jsx` executable we ship with `react-tools` already supports transforming many parts of ES6 into code that will run on older browsers.
 
-## Context
+## Context {#context}
 
 While we haven't documented `context`, it exists in some form in React already. It exists as a way to pass values through a tree without having to use props at every single point. We've seen this need crop up time and time again, so we want to make this as easy as possible. Its use has performance tradeoffs, and there are known weaknesses in our implementation, so we want to make sure this is a solid feature.
 
-## Addons
+## Addons {#addons}
 
 As you may know, we ship a separate build of React with some extra features we called "addons". While this has served us fine, it's not great for our users. It's made testing harder, but also results in more cache misses for people using a CDN. The problem we face is that many of these "addons" need access to parts of React that we don't expose publicly. Our goal is to ship each addon on its own and let each hook into React as needed. This would also allow others to write and distribute "addons".
 
-## Browser Support
+## Browser Support {#browser-support}
 
 As much as we'd all like to stop supporting older browsers, it's not always possible. Facebook still supports IE8. While React won't support IE8 forever, our goal is to have 1.0 support IE8. Hopefully we can continue to abstract some of these rough parts.
 
-## Animations
+## Animations {#animations}
 
 Finding a way to define animations in a declarative way is a hard problem. We've been exploring the space for a long time. We've introduced some half-measures to alleviate some use cases, but the larger problem remains. While we'd like to make this a part of 1.0, realistically we don't think we'll have a good solution in place.
 
-## Miscellaneous
+## Miscellaneous {#miscellaneous}
 
 There are several other things I listed on [our projects page][projects] that we're tracking. Some of them are internals and have no obvious outward effect (improve tests, repo separation, updated test runner). I encourage you to take a look.
 
diff --git a/content/blog/2014-06-27-community-roundup-19.md b/content/blog/2014-06-27-community-roundup-19.md
index e61d85375d..7a8956d60e 100644
--- a/content/blog/2014-06-27-community-roundup-19.md
+++ b/content/blog/2014-06-27-community-roundup-19.md
@@ -3,12 +3,12 @@ title: "Community Round-up #19"
 author: [chenglou]
 ---
 
-## React Meetups!
+## React Meetups! {#react-meetups}
 Ever wanted to find developers who also share the same interest in React than you? Recently, there has been a React Meetup in [San Francisco](http://www.meetup.com/ReactJS-San-Francisco/) (courtesy of [Telmate](http://www.telmate.com)), and one in [London](http://www.meetup.com/London-React-User-Group/) (courtesy of [Stuart Harris](http://www.meetup.com/London-React-User-Group/members/105837542/), [Cain Ullah](http://www.meetup.com/London-React-User-Group/members/15509971/) and [Zoe Merchant](http://www.meetup.com/London-React-User-Group/members/137058242/)). These two events have been big successes; a second one in London is [already planned](http://www.meetup.com/London-React-User-Group/events/191406572/).
 
 If you don't live near San Francisco or London, why not start one in your community?
 
-## Complementary Tools
+## Complementary Tools {#complementary-tools}
 In case you haven't seen it, we've consolidated the tooling solution around React on [this wiki page](https://github.com/facebook/react/wiki/Complementary-Tools). Some of the notable recent entries include:
 
 - [Ryan Florence](https://github.com/rpflorence) and [Michael Jackson](https://github.com/mjackson)'s [react-nested-router](https://github.com/rpflorence/react-nested-router), which is a translation of the Ember router API to React.
@@ -19,7 +19,7 @@ In case you haven't seen it, we've consolidated the tooling solution around Reac
 
 These are some of the links that often pop up on the #reactjs IRC channel. If you made something that you think deserves to be shown on the wiki, feel free to add it!
 
-## React in Interesting Places
+## React in Interesting Places {#react-in-interesting-places}
 
 The core concepts React themselves is something very valuable that the community is exploring and pushing further. A year ago, we wouldn't have imagined something like [Bruce Hauman](http://rigsomelight.com)'s [Flappy Bird ClojureScript port](http://rigsomelight.com/2014/05/01/interactive-programming-flappy-bird-clojurescript.html), whose interactive programming has been made possible through React:
 
@@ -31,24 +31,24 @@ And don't forget [Pete Hunt](https://github.com/petehunt)'s Wolfenstein 3D rende
 
 Give us a shoutout on IRC or [React Google Groups](https://groups.google.com/forum/#!forum/reactjs) if you've used React in some Interesting places.
 
-## Even More People Using React
+## Even More People Using React {#even-more-people-using-react}
 
-### Prismatic
+### Prismatic {#prismatic}
 [Prismatic](http://getprismatic.com/home) recently shrank their codebase fivefold with the help of React and its popular ClojureScript wrapper, [Om](https://github.com/swannodette/om). They detailed their very positive experience [here](http://blog.getprismatic.com/om-sweet-om-high-functional-frontend-engineering-with-clojurescript-and-react/).
 
 > Finally, the state is normalized: each piece of information is represented in a single place. Since React ensures consistency between the DOM and the application data, the programmer can focus on ensuring that the state properly stays up to date in response to user input. If the application state is normalized, then this consistency is guaranteed by definition, completely avoiding the possibility of an entire class of common bugs.
 
-### Adobe Brackets
+### Adobe Brackets {#adobe-brackets}
 [Kevin Dangoor](http://www.kevindangoor.com) works on [Brackets](http://brackets.io/?lang=en), the open-source code editor. After writing [his first impression on React](http://www.kevindangoor.com/2014/05/simplifying-code-with-react/), he followed up with another insightful [article](http://www.kevindangoor.com/2014/05/react-in-brackets/) on how to gradually make the code transition, how to preserve the editor's good parts, and how to tune Brackets' tooling around JSX.
 
 > We don’t need to switch to React everywhere, all at once. It’s not a framework that imposes anything on the application structure. [...] Easy, iterative adoption is definitely something in React’s favor for us.
 
-### Storehouse
+### Storehouse {#storehouse}
 [Storehouse](https://www.storehouse.co) (Apple Design Award 2014)'s web presence is build with React. Here's [an example story](https://www.storehouse.co/stories/y2ad-mexico-city-clouds). Congratulations on the award!
 
-### Vim Awesome
+### Vim Awesome {#vim-awesome}
 [Vim Awesome](http://vimawesome.com), an open-source Vim plugins directory built on React, was just launched. Be sure to [check out the source code](https://github.com/divad12/vim-awesome) if you're curious to see an example of how to build a small single-page React app.
 
-## Random Tweets
+## Random Tweets {#random-tweets}
 
 <blockquote class="twitter-tweet" lang="en"><p>Spent 12 hours so far with <a href="https://twitter.com/hashtag/reactjs?src=hash">#reactjs</a>. Spent another 2 wondering why we&#39;ve been doing JS frameworks wrong until now. React makes me happy.</p>&mdash; Paul Irwin (@paulirwin) <a href="https://twitter.com/paulirwin/statuses/481263947589242882">June 24, 2014</a></blockquote>
diff --git a/content/blog/2014-07-13-react-v0.11-rc1.md b/content/blog/2014-07-13-react-v0.11-rc1.md
index eb294dfb8c..08b34c4534 100644
--- a/content/blog/2014-07-13-react-v0.11-rc1.md
+++ b/content/blog/2014-07-13-react-v0.11-rc1.md
@@ -21,12 +21,12 @@ We've also published version `0.11.0-rc1` of the `react` and `react-tools` packa
 Please try these builds out and [file an issue on GitHub](https://github.com/facebook/react/issues/new) if you see anything awry.
 
 
-## `getDefaultProps`
+## `getDefaultProps` {#getdefaultprops}
 
 Starting in React 0.11, `getDefaultProps()` is called only once when `React.createClass()` is called, instead of each time a component is rendered. This means that `getDefaultProps()` can no longer vary its return value based on `this.props` and any objects will be shared across all instances. This change improves performance and will make it possible in the future to do PropTypes checks earlier in the rendering process, allowing us to give better error messages.
 
 
-## Rendering to `null`
+## Rendering to `null` {#rendering-to-null}
 
 Since React's release, people have been using work arounds to "render nothing". Usually this means returning an empty `<div/>` or `<span/>`. Some people even got clever and started returning `<noscript/>` to avoid extraneous DOM nodes. We finally provided a "blessed" solution that allows developers to write meaningful code. Returning `null` is an explicit indication to React that you do not want anything rendered. Behind the scenes we make this work with a `<noscript>` element, though in the future we hope to not put anything in the document. In the mean time, `<noscript>` elements do not affect layout in any way, so you can feel safe using `null` today!
 
@@ -49,7 +49,7 @@ render: function() {
 ```
 
 
-## JSX Namespacing
+## JSX Namespacing {#jsx-namespacing}
 
 Another feature request we've been hearing for a long time is the ability to have namespaces in JSX. Given that JSX is just JavaScript, we didn't want to use XML namespacing. Instead we opted for a standard JS approach: object property access. Instead of assigning variables to access components stored in an object (such as a component library), you can now use the component directly as `<Namespace.Component/>`.
 
@@ -73,7 +73,7 @@ render: function() {
 ```
 
 
-## Improved keyboard event normalization
+## Improved keyboard event normalization {#improved-keyboard-event-normalization}
 
 Keyboard events now contain a normalized `e.key` value according to the [DOM Level 3 Events spec](http://www.w3.org/TR/DOM-Level-3-Events/#keys-special), allowing you to write simpler key handling code that works in all browsers, such as:
 
@@ -91,20 +91,20 @@ handleKeyDown: function(e) {
 
 Keyboard and mouse events also now include a normalized `e.getModifierState()` that works consistently across browsers.
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes}
 * `getDefaultProps()` is now called once per class and shared across all instances
 
-#### New Features
+#### New Features {#new-features}
 * Rendering to `null`
 * Keyboard events include normalized `e.key` and `e.getModifierState()` properties
 * New normalized `onBeforeInput` event
 * `React.Children.count` has been added as a helper for counting the number of children
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes}
 
 * Re-renders are batched in more cases
 * Events: `e.view` properly normalized
@@ -118,24 +118,24 @@ Keyboard and mouse events also now include a normalized `e.getModifierState()` t
 * `img` event listeners are now unbound properly, preventing the error "Two valid but unequal nodes with the same `data-reactid`"
 * Added explicit warning when missing polyfills
 
-### React With Addons
+### React With Addons {#react-with-addons}
 * PureRenderMixin
 * Perf: a new set of tools to help with performance analysis
 * Update: New `$apply` command to transform values
 * TransitionGroup bug fixes with null elements, Android
 
-### React NPM Module
+### React NPM Module {#react-npm-module}
 * Now includes the pre-built packages under `dist/`.
 * `envify` is properly listed as a dependency instead of a peer dependency
 
-### JSX
+### JSX {#jsx}
 * Added support for namespaces, eg `<Components.Checkbox />`
 * JSXTransformer
   * Enable the same `harmony` features available in the command line with `<script type="text/jsx;harmony=true">`
   * Scripts are downloaded in parallel for more speed. They are still executed in order (as you would expect with normal script tags)
   * Fixed a bug preventing sourcemaps from working in Firefox
 
-### React Tools Module
+### React Tools Module {#react-tools-module}
 * Improved readme with usage and API information
 * Improved ES6 transforms available with `--harmony` option
 * Added `--source-map-inline` option to the `jsx` executable
diff --git a/content/blog/2014-07-17-react-v0.11.md b/content/blog/2014-07-17-react-v0.11.md
index 9fa25662c9..6a0c6c3bcc 100644
--- a/content/blog/2014-07-17-react-v0.11.md
+++ b/content/blog/2014-07-17-react-v0.11.md
@@ -28,12 +28,12 @@ We've also published version `0.11.0` of the `react` and `react-tools` packages
 Please try these builds out and [file an issue on GitHub](https://github.com/facebook/react/issues/new) if you see anything awry.
 
 
-## `getDefaultProps`
+## `getDefaultProps` {#getdefaultprops}
 
 Starting in React 0.11, `getDefaultProps()` is called only once when `React.createClass()` is called, instead of each time a component is rendered. This means that `getDefaultProps()` can no longer vary its return value based on `this.props` and any objects will be shared across all instances. This change improves performance and will make it possible in the future to do PropTypes checks earlier in the rendering process, allowing us to give better error messages.
 
 
-## Rendering to `null`
+## Rendering to `null` {#rendering-to-null}
 
 Since React's release, people have been using work arounds to "render nothing". Usually this means returning an empty `<div/>` or `<span/>`. Some people even got clever and started returning `<noscript/>` to avoid extraneous DOM nodes. We finally provided a "blessed" solution that allows developers to write meaningful code. Returning `null` is an explicit indication to React that you do not want anything rendered. Behind the scenes we make this work with a `<noscript>` element, though in the future we hope to not put anything in the document. In the mean time, `<noscript>` elements do not affect layout in any way, so you can feel safe using `null` today!
 
@@ -56,7 +56,7 @@ render: function() {
 ```
 
 
-## JSX Namespacing
+## JSX Namespacing {#jsx-namespacing}
 
 Another feature request we've been hearing for a long time is the ability to have namespaces in JSX. Given that JSX is just JavaScript, we didn't want to use XML namespacing. Instead we opted for a standard JS approach: object property access. Instead of assigning variables to access components stored in an object (such as a component library), you can now use the component directly as `<Namespace.Component/>`.
 
@@ -80,7 +80,7 @@ render: function() {
 ```
 
 
-## Improved keyboard event normalization
+## Improved keyboard event normalization {#improved-keyboard-event-normalization}
 
 Keyboard events now contain a normalized `e.key` value according to the [DOM Level 3 Events spec](http://www.w3.org/TR/DOM-Level-3-Events/#keys-special), allowing you to write simpler key handling code that works in all browsers, such as:
 
@@ -98,34 +98,34 @@ handleKeyDown: function(e) {
 
 Keyboard and mouse events also now include a normalized `e.getModifierState()` that works consistently across browsers.
 
-## Descriptors
+## Descriptors {#descriptors}
 
 In our [v0.10 release notes](/blog/2014/03/21/react-v0.10.html#clone-on-mount), we called out that we were deprecating the existing behavior of the component function call (eg `component = MyComponent(props, ...children)` or `component = <MyComponent prop={...}/>`). Previously that would create an instance and React would modify that internally. You could store that reference and then call functions on it (eg `component.setProps(...)`). This no longer works. `component` in the above examples will be a descriptor and not an instance that can be operated on. The v0.10 release notes provide a complete example along with a migration path. The development builds also provided warnings if you called functions on descriptors.
 
 Along with this change to descriptors, `React.isValidComponent` and `React.PropTypes.component` now actually validate that the value is a descriptor. Overwhelmingly, these functions are used to validate the value of `MyComponent()`, which as mentioned is now a descriptor, not a component instance. We opted to reduce code churn and make the migration to 0.11 as easy as possible. However, we realize this is has caused some confusion and we're working to make sure we are consistent with our terminology.
 
-## Prop Type Validation
+## Prop Type Validation {#prop-type-validation}
 
 Previously `React.PropTypes` validation worked by simply logging to the console. Internally, each validator was responsible for doing this itself. Additionally, you could write a custom validator and the expectation was that you would also simply `console.log` your error message. Very shortly into the 0.11 cycle we changed this so that our validators return (*not throw*) an `Error` object. We then log the `error.message` property in a central place in ReactCompositeComponent. Overall the result is the same, but this provides a clearer intent in validation. In addition, to better transition into our descriptor factory changes, we also currently run prop type validation twice in development builds. As a result, custom validators doing their own logging result in duplicate messages. To update, simply return an `Error` with your message instead.
 
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes}
 * `getDefaultProps()` is now called once per class and shared across all instances
 * `MyComponent()` now returns a descriptor, not an instance
 * `React.isValidComponent` and `React.PropTypes.component` validate *descriptors*, not component instances.
 * Custom `propType` validators should return an `Error` instead of logging directly
 
-#### New Features
+#### New Features {#new-features}
 * Rendering to `null`
 * Keyboard events include normalized `e.key` and `e.getModifierState()` properties
 * New normalized `onBeforeInput` event
 * `React.Children.count` has been added as a helper for counting the number of children
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes}
 
 * Re-renders are batched in more cases
 * Events: `e.view` properly normalized
@@ -139,24 +139,24 @@ Previously `React.PropTypes` validation worked by simply logging to the console.
 * `img` event listeners are now unbound properly, preventing the error "Two valid but unequal nodes with the same `data-reactid`"
 * Added explicit warning when missing polyfills
 
-### React With Addons
+### React With Addons {#react-with-addons}
 * PureRenderMixin: a mixin which helps optimize "pure" components
 * Perf: a new set of tools to help with performance analysis
 * Update: New `$apply` command to transform values
 * TransitionGroup bug fixes with null elements, Android
 
-### React NPM Module
+### React NPM Module {#react-npm-module}
 * Now includes the pre-built packages under `dist/`.
 * `envify` is properly listed as a dependency instead of a peer dependency
 
-### JSX
+### JSX {#jsx}
 * Added support for namespaces, eg `<Components.Checkbox />`
 * JSXTransformer
   * Enable the same `harmony` features available in the command line with `<script type="text/jsx;harmony=true">`
   * Scripts are downloaded in parallel for more speed. They are still executed in order (as you would expect with normal script tags)
   * Fixed a bug preventing sourcemaps from working in Firefox
 
-### React Tools Module
+### React Tools Module {#react-tools-module}
 * Improved readme with usage and API information
 * Improved ES6 transforms available with `--harmony` option
 * Added `--source-map-inline` option to the `jsx` executable
diff --git a/content/blog/2014-07-25-react-v0.11.1.md b/content/blog/2014-07-25-react-v0.11.1.md
index cb210d0ea3..a13780af9f 100644
--- a/content/blog/2014-07-25-react-v0.11.1.md
+++ b/content/blog/2014-07-25-react-v0.11.1.md
@@ -28,16 +28,16 @@ We've also published version `0.11.1` of the `react` and `react-tools` packages
 
 Please try these builds out and [file an issue on GitHub](https://github.com/facebook/react/issues/new) if you see anything awry.
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes}
 * `setState` can be called inside `componentWillMount` in non-DOM environments
 * `SyntheticMouseEvent.getEventModifierState` correctly renamed to `getModifierState`
 * `getModifierState` correctly returns a `boolean`
 * `getModifierState` is now correctly case sensitive
 * Empty Text node used in IE8 `innerHTML` workaround is now removed, fixing rerendering in certain cases
 
-### JSXTransformer
+### JSXTransformer {#jsxtransformer}
 * Fix duplicate variable declaration (caused issues in some browsers)
diff --git a/content/blog/2014-07-28-community-roundup-20.md b/content/blog/2014-07-28-community-roundup-20.md
index b21d21167e..93b91c5296 100644
--- a/content/blog/2014-07-28-community-roundup-20.md
+++ b/content/blog/2014-07-28-community-roundup-20.md
@@ -5,28 +5,28 @@ author: [LoukaN]
 
 It's an exciting time for React as there are now more commits from open source contributors than from Facebook engineers! Keep up the good work :)
 
-## Atom moves to React
+## Atom moves to React {#atom-moves-to-react}
 
 [Atom, GitHub's code editor, is now using React](http://blog.atom.io/2014/07/02/moving-atom-to-react.html) to build the editing experience. They made the move in order to improve performance. By default, React helped them eliminate unnecessary reflows, enabling them to focus on architecting the rendering pipeline in order to minimize repaints by using hardware acceleration. This is a testament to the fact that React's architecture is perfect for high performant applications.
 
 [<img src="../images/blog/gpu-cursor-move.gif" style="width: 100%;" />](http://blog.atom.io/2014/07/02/moving-atom-to-react.html)
 
 
-## Why Does React Scale?
+## Why Does React Scale? {#why-does-react-scale}
 
 At the last [JSConf.us](http://2014.jsconf.us/), Vjeux talked about the design decisions made in the API that allows it to scale to a large number of developers. If you don't have 20 minutes, take a look at the [annotated slides](https://speakerdeck.com/vjeux/why-does-react-scale-jsconf-2014).
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/D-ioDiacTm8" frameborder="0" allowfullscreen></iframe>
 
 
-## Live Editing
+## Live Editing {#live-editing}
 
 One of the best features of React is that it provides the foundations to implement concepts that were otherwise extremely difficult, like server-side rendering, undo-redo, rendering to non-DOM environments like canvas... [Dan Abramov](https://twitter.com/dan_abramov) got hot code reloading working with webpack in order to [live edit a React project](https://gaearon.github.io/react-hot-loader/)!
 
 <iframe src="//player.vimeo.com/video/100010922" width="100%" height="315" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
 
 
-## ReactIntl Mixin by Yahoo
+## ReactIntl Mixin by Yahoo {#reactintl-mixin-by-yahoo}
 
 There are a couple of React-related projects that recently appeared on Yahoo's GitHub, the first one being an  [internationalization mixin](https://github.com/yahoo/react-intl). It's great to see them getting excited about React and contributing back to the community.
 
@@ -49,12 +49,12 @@ React.renderComponent(
 );
 ```
 
-## Thinking and Learning React
+## Thinking and Learning React {#thinking-and-learning-react}
 
 Josephine Hall, working at Icelab, used React to write a mobile-focused application. She wrote a blog post [“Thinking and Learning React.js”](http://icelab.com.au/articles/thinking-and-learning-reactjs/) to share her experience with elements they had to use. You'll learn about routing, event dispatch, touchable components, and basic animations.
 
 
-## London React Meetup
+## London React Meetup {#london-react-meetup}
 
 If you missed the last [London React Meetup](http://www.meetup.com/London-React-User-Group/events/191406572/), the video is available, with lots of great content.
 
@@ -68,19 +68,19 @@ If you missed the last [London React Meetup](http://www.meetup.com/London-React-
 In related news, the next [React SF Meetup](http://www.meetup.com/ReactJS-San-Francisco/events/195518392/) will be from Prezi: [“Immediate Mode on the Web: How We Implemented the Prezi Viewer in JavaScript”](https://medium.com/prezi-engineering/how-and-why-prezi-turned-to-javascript-56e0ca57d135). While not in React, their tech is really awesome and shares a lot of React's design principles and perf optimizations.
 
 
-## Using React and KendoUI Together
+## Using React and KendoUI Together {#using-react-and-kendoui-together}
 
 One of the strengths of React is that it plays nicely with other libraries. Jim Cowart proved it by writing a tutorial that explains how to write [React component adapters for KendoUI](http://www.ifandelse.com/using-reactjs-and-kendoui-together/).
 
 <figure><a href="http://www.ifandelse.com/using-reactjs-and-kendoui-together/"><img src="../images/blog/kendoui.png" /></a></figure>
 
 
-## Acorn JSX
+## Acorn JSX {#acorn-jsx}
 
 Ingvar Stepanyan extended the Acorn JavaScript parser to support JSX. The result is a [JSX parser](https://github.com/RReverser/acorn-jsx) that's 1.5–2.0x faster than the official JSX implementation. It is an experiment and is not meant to be used for serious things, but it's always a good thing to get competition on performance!
 
 
-## ReactScriptLoader
+## ReactScriptLoader {#reactscriptloader}
 
 Yariv Sadan created [ReactScriptLoader](https://github.com/yariv/ReactScriptLoader) to make it easier to write components that require an external script.
 
@@ -109,6 +109,6 @@ var Foo = React.createClass({
 });
 ```
 
-## Random Tweet
+## Random Tweet {#random-tweet}
 
 <blockquote class="twitter-tweet" data-conversation="none" lang="en"><p>“<a href="https://twitter.com/apphacker">@apphacker</a>: I take back the mean things I said about <a href="https://twitter.com/reactjs">@reactjs</a> I actually like it.” Summarizing the life of ReactJS in a single tweet.</p>&mdash; Jordan (@jordwalke) <a href="https://twitter.com/jordwalke/statuses/490747339607265280">July 20, 2014</a></blockquote>
diff --git a/content/blog/2014-08-03-community-roundup-21.md b/content/blog/2014-08-03-community-roundup-21.md
index 66bab2ecbd..33eaeffc85 100644
--- a/content/blog/2014-08-03-community-roundup-21.md
+++ b/content/blog/2014-08-03-community-roundup-21.md
@@ -3,7 +3,7 @@ title: "Community Round-up #21"
 author: [LoukaN]
 ---
 
-## React Router
+## React Router {#react-router}
 [Ryan Florence](http://ryanflorence.com/) and [Michael Jackson](https://twitter.com/mjackson) ported Ember's router to React in a project called [React Router](https://github.com/rackt/react-router). This is a very good example of both communities working together to make the web better!
 
 ```javascript
@@ -19,7 +19,7 @@ React.renderComponent((
 ), document.getElementById('example'));
 ```
 
-## Going Big with React
+## Going Big with React {#going-big-with-react}
 
 Areeb Malik, from Facebook, talks about his experience using React. "On paper, all those JS frameworks look promising: clean implementations, quick code design, flawless execution. But what happens when you stress test JavaScript? What happens when you throw 6 megabytes of code at it? In this talk, we'll investigate how React performs in a high stress situation, and how it has helped our team build safe code on a massive scale"
 
@@ -30,7 +30,7 @@ Areeb Malik, from Facebook, talks about his experience using React. "On paper, a
 -->
 
 
-## What is React?
+## What is React? {#what-is-react}
 
 [Craig McKeachie](http://www.funnyant.com/author/admin/) author of [JavaScript Framework Guide](http://www.funnyant.com/javascript-framework-guide/) wrote an excellent news named ["What is React.js? Another Template Library?](http://www.funnyant.com/reactjs-what-is-it/)
 
@@ -47,7 +47,7 @@ Areeb Malik, from Facebook, talks about his experience using React. "On paper, a
 - Can I build something complex with React?
 
 
-## Referencing Dynamic Children
+## Referencing Dynamic Children {#referencing-dynamic-children}
 
 While Matt Zabriskie was working on [react-tabs](https://www.npmjs.com/package/react-tabs) he discovered how to use React.Children.map and React.addons.cloneWithProps in order to [reference dynamic children](http://www.mattzabriskie.com/blog/react-referencing-dynamic-children).
 
@@ -65,28 +65,28 @@ var App = React.createClass({
 ```
 
 
-## JSX with Sweet.js using Readtables
+## JSX with Sweet.js using Readtables {#jsx-with-sweetjs-using-readtables}
 
 Have you ever wondered how JSX was implemented? James Long wrote a very instructive blog post that explains how to [compile JSX with Sweet.js using Readtables](http://jlongster.com/Compiling-JSX-with-Sweet.js-using-Readtables).
 
 [![](../images/blog/sweet-jsx.png)](http://jlongster.com/Compiling-JSX-with-Sweet.js-using-Readtables)
 
 
-## First Look: Getting Started with React
+## First Look: Getting Started with React {#first-look-getting-started-with-react}
 
 [Kirill Buga](http://modernweb.com/authors/kirill-buga/) wrote an article on Modern Web explaining how [React is different from traditional MVC](http://modernweb.com/2014/07/23/getting-started-reactjs/) used by most JavaScript applications
 
 <figure><a href="http://modernweb.com/2014/07/23/getting-started-reactjs"><img src="../images/blog/first-look.png" /></a></figure>
 
 
-## React Draggable
+## React Draggable {#react-draggable}
 
 [Matt Zabriskie](https://github.com/mzabriskie) released a [project](https://github.com/mzabriskie/react-draggable) to make your react components draggable.
 
 [![](../images/blog/react-draggable.png)](https://mzabriskie.github.io/react-draggable/example/)
 
 
-## HTML Parser2 React
+## HTML Parser2 React {#html-parser2-react}
 
 [Jason Brown](https://browniefed.github.io/) adapted htmlparser2 to React: [htmlparser2-react](https://www.npmjs.com/package/htmlparser2-react). That allows you to convert raw HTML to the virtual DOM.
 This is not the intended way to use React but can be useful as last resort if you have an existing piece of HTML.
@@ -100,14 +100,14 @@ var parsedComponent = reactParser(html, React);
 ```
 
 
-## Building UIs with React
+## Building UIs with React {#building-uis-with-react}
 
 If you haven't yet tried out React, Jacob Rios did a Hangout where he covers the most important aspects and thankfully he recorded it!
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/lAn7GVoGlKU" frameborder="0" allowfullscreen></iframe>
 
 
-## Random Tweets
+## Random Tweets {#random-tweets}
 
 <blockquote class="twitter-tweet" lang="en"><p>We shipped reddit&#39;s first production <a href="https://twitter.com/reactjs">@reactjs</a> code last week, our checkout process.&#10;&#10;<a href="https://t.co/KUInwsCmAF">https://t.co/KUInwsCmAF</a></p>&mdash; Brian Holt (@holtbt) <a href="https://twitter.com/holtbt/statuses/493852312604254208">July 28, 2014</a></blockquote>
 <blockquote class="twitter-tweet" lang="en"><p>.<a href="https://twitter.com/AirbnbNerds">@AirbnbNerds</a> just launched our first user-facing React.js feature to production! We love it so far. <a href="https://t.co/KtyudemcIW">https://t.co/KtyudemcIW</a> /<a href="https://twitter.com/floydophone">@floydophone</a></p>&mdash; spikebrehm (@spikebrehm) <a href="https://twitter.com/spikebrehm/statuses/491645223643013121">July 22, 2014</a></blockquote>
diff --git a/content/blog/2014-09-12-community-round-up-22.md b/content/blog/2014-09-12-community-round-up-22.md
index 977ba76dcd..316706e300 100644
--- a/content/blog/2014-09-12-community-round-up-22.md
+++ b/content/blog/2014-09-12-community-round-up-22.md
@@ -16,19 +16,19 @@ This has been an exciting summer as four big companies: Yahoo, Mozilla, Airbnb a
 <blockquote width="300" class="twitter-tweet" lang="en"><p>We shipped reddit&#39;s first production <a href="https://twitter.com/reactjs">@reactjs</a> code last week, our checkout process.&#10;&#10;<a href="https://t.co/KUInwsCmAF">https://t.co/KUInwsCmAF</a></p>&mdash; Brian Holt (@holtbt) <a href="https://twitter.com/holtbt/statuses/493852312604254208">July 28, 2014</a></blockquote>
 </td></tr></table>
 
-## React's Architecture
+## React's Architecture {#reacts-architecture}
 
 [Vjeux](http://blog.vjeux.com/), from the React team, gave a talk at OSCON on the history of React and the various optimizations strategies that are implemented. You can also check out the [annotated slides](https://speakerdeck.com/vjeux/oscon-react-architecture) or [Chris Dawson](http://thenewstack.io/author/chrisdawson/)'s notes titled [JavaScript’s History and How it Led To React](http://thenewstack.io/javascripts-history-and-how-it-led-to-reactjs/).
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/eCf5CquV_Bw" frameborder="0" allowfullscreen></iframe>
 
 
-## v8 optimizations
+## v8 optimizations {#v8-optimizations}
 
 Jakob Kummerow landed [two optimizations to V8](http://www.chromium.org/developers/speed-hall-of-fame#TOC-2014-06-18) specifically targeted at optimizing React. That's really exciting to see browser vendors helping out on performance!
 
 
-## Reusable Components by Khan Academy
+## Reusable Components by Khan Academy {#reusable-components-by-khan-academy}
 
 [Khan Academy](https://www.khanacademy.org/) released [many high quality standalone components](https://khan.github.io/react-components/) they are using. This is a good opportunity to see what React code used in production look like.
 
@@ -44,14 +44,14 @@ var translated = (
 ```
 
 
-## React + Browserify + Gulp
+## React + Browserify + Gulp {#react--browserify--gulp}
 
 [Trường](http://truongtx.me/) wrote a little guide to help your [getting started using React, Browserify and Gulp](http://truongtx.me/2014/07/18/using-reactjs-with-browserify-and-gulp/).
 
 <figure><a href="http://truongtx.me/2014/07/18/using-reactjs-with-browserify-and-gulp/"><img src="../images/blog/react-browserify-gulp.jpg" /></a></figure>
 
 
-## React Style
+## React Style {#react-style}
 
 After React put HTML inside of JavaScript, Sander Spies takes the same approach with CSS: [IntegratedCSS](https://github.com/SanderSpies/react-style). It seems weird at first but this is the direction where React is heading.
 
@@ -76,7 +76,7 @@ var Button = React.createClass({
 ```
 
 
-## Virtual DOM in Elm
+## Virtual DOM in Elm {#virtual-dom-in-elm}
 
 [Evan Czaplicki](http://evan.czaplicki.us) explains how Elm implements the idea of a Virtual DOM and a diffing algorithm. This is great to see React ideas spread to other languages.
 
@@ -85,14 +85,14 @@ var Button = React.createClass({
 > [Read the full article](http://elm-lang.org/blog/Blazing-Fast-Html.elm)
 
 
-## Components Tutorial
+## Components Tutorial {#components-tutorial}
 
 If you are getting started with React, [Joe Maddalone](http://www.joemaddalone.com/) made a good tutorial on how to build your first component.
 
 <iframe width="650" height="200" src="//www.youtube-nocookie.com/embed/rFvZydtmsxM" frameborder="0" allowfullscreen></iframe>
 
 
-## Saving time & staying sane?
+## Saving time & staying sane? {#saving-time--staying-sane}
 
 When [Kent William Innholt](http://http://kentwilliam.com/) who works at [M>Path](http://mpath.com/) summed up his experience using React in an [article](http://kentwilliam.com/articles/saving-time-staying-sane-pros-cons-of-react-js).
 
@@ -106,7 +106,7 @@ When [Kent William Innholt](http://http://kentwilliam.com/) who works at [M>Path
 > [Read the article...](http://kentwilliam.com/articles/saving-time-staying-sane-pros-cons-of-react-js)
 
 
-## Weather
+## Weather {#weather}
 
 To finish this round-up, Andrew Gleave made a page that displays the [Weather](https://github.com/andrewgleave/react-weather). It's great to see that React is also used for small prototypes.
 
diff --git a/content/blog/2014-09-16-react-v0.11.2.md b/content/blog/2014-09-16-react-v0.11.2.md
index 376cecdab0..c7e2cbc105 100644
--- a/content/blog/2014-09-16-react-v0.11.2.md
+++ b/content/blog/2014-09-16-react-v0.11.2.md
@@ -26,20 +26,20 @@ We've also published version `0.11.2` of the `react` and `react-tools` packages
 
 Please try these builds out and [file an issue on GitHub](https://github.com/facebook/react/issues/new) if you see anything awry.
 
-### React Core
+### React Core {#react-core}
 
-#### New Features
+#### New Features {#new-features}
 
 * Added support for `<dialog>` element and associated `open` attribute
 * Added support for `<picture>` element and associated `media` and `sizes` attributes
 * Added `React.createElement` API in preparation for React v0.12
   * `React.createDescriptor` has been deprecated as a result
 
-### JSX
+### JSX {#jsx}
 
 * `<picture>` is now parsed into `React.DOM.picture`
 
-### React Tools
+### React Tools {#react-tools}
 
 * Update `esprima` and `jstransform` for correctness fixes
 * The `jsx` executable now exposes a `--strip-types` flag which can be used to remove TypeScript-like type annotations
diff --git a/content/blog/2014-10-14-introducing-react-elements.md b/content/blog/2014-10-14-introducing-react-elements.md
index a6a5423fe3..fb343cc53a 100644
--- a/content/blog/2014-10-14-introducing-react-elements.md
+++ b/content/blog/2014-10-14-introducing-react-elements.md
@@ -22,13 +22,13 @@ Everything is backwards compatible for now, and as always React will provide you
 Continue reading if you want all the nitty gritty details...
 
 
-## New Terminology
+## New Terminology {#new-terminology}
 
 We wanted to make it easier for new users to see the parallel with the DOM (and why React is different). To align our terminology we now use the term `ReactElement` instead of _descriptor_. Likewise, we use the term `ReactNode` instead of _renderable_.
 
 [See the full React terminology guide.](https://gist.github.com/sebmarkbage/fcb1b6ab493b0c77d589)
 
-## Creating a ReactElement
+## Creating a ReactElement {#creating-a-reactelement}
 
 We now expose an external API for programmatically creating a `ReactElement` object.
 
@@ -44,7 +44,7 @@ var reactDivElement = div(props, children);
 ```
 
 
-## Deprecated: Auto-generated Factories
+## Deprecated: Auto-generated Factories {#deprecated-auto-generated-factories}
 
 Imagine if `React.createClass` was just a plain JavaScript class. If you call a class as a plain function you would call the component's constructor to create a Component instance, not a `ReactElement`:
 
@@ -69,9 +69,9 @@ In future versions of React, we want to be able to support pure classes without
 This is the biggest change to 0.12. Don't worry though. This functionality continues to work the same for this release, it just warns you if you're using a deprecated API. That way you can upgrade piece-by-piece instead of everything at once.
 
 
-## Upgrading to 0.12
+## Upgrading to 0.12 {#upgrading-to-012}
 
-### React With JSX
+### React With JSX {#react-with-jsx}
 
 If you use the React specific [JSX](https://facebook.github.io/jsx/) transform, the upgrade path is simple. Just make sure you have React in scope.
 
@@ -95,7 +95,7 @@ var MyOtherComponent = React.createClass({
 
 *NOTE: React's JSX will not call arbitrary functions in future releases. This restriction is introduced so that it's easier to reason about the output of JSX by both the reader of your code and optimizing compilers. The JSX syntax is not tied to React. Just the transpiler. You can still use [the JSX spec](https://facebook.github.io/jsx/) with a different transpiler for custom purposes.*
 
-### React Without JSX
+### React Without JSX {#react-without-jsx}
 
 If you don't use JSX and just call components as functions, you will need to explicitly create a factory before calling it:
 
@@ -151,7 +151,7 @@ var MyDOMComponent = React.createClass({
 
 We realize that this is noisy. At least it's on the top of the file (out of sight, out of mind). This a tradeoff we had to make to get [the other benefits](https://gist.github.com/sebmarkbage/d7bce729f38730399d28) that this model unlocks.
 
-### Anti-Pattern: Exporting Factories
+### Anti-Pattern: Exporting Factories {#anti-pattern-exporting-factories}
 
 If you have an isolated project that only you use, then you could create a helper that creates both the class and the factory at once:
 
@@ -169,7 +169,7 @@ It also encourages you to put more logic into these helper functions. Something
 To fit into the React ecosystem we recommend that you always export pure classes from your shared modules and let the consumer decide the best strategy for generating `ReactElement`s.
 
 
-## Third-party Languages
+## Third-party Languages {#third-party-languages}
 
 The signature of a `ReactElement` is something like this:
 
@@ -185,7 +185,7 @@ The signature of a `ReactElement` is something like this:
 Languages with static typing that don't need validation (e.g. [Om in ClojureScript](https://github.com/swannodette/om)), and production level compilers will be able to generate these objects inline instead of going through the validation step. This optimization will allow significant performance improvements in React.
 
 
-## Your Thoughts and Ideas
+## Your Thoughts and Ideas {#your-thoughts-and-ideas}
 
 We'd love to hear your feedback on this API and your preferred style. A plausible alternative could be to directly inline objects instead of creating factory functions:
 
@@ -208,7 +208,7 @@ This moves the noise down into the render method though. It also doesn't provide
 *NOTE: This won't work in this version of React because it's conflicting with other legacy APIs that we're deprecating. (We temporarily add a `element._isReactElement = true` marker on the object.)*
 
 
-## The Next Step: ES6 Classes
+## The Next Step: ES6 Classes {#the-next-step-es6-classes}
 
 After 0.12 we'll begin work on moving to ES6 classes. We will still support `React.createClass` as a backwards compatible API. If you use an ES6 transpiler you will be able to declare your components like this:
 
diff --git a/content/blog/2014-10-16-react-v0.12-rc1.md b/content/blog/2014-10-16-react-v0.12-rc1.md
index cff0274301..9a6202a004 100644
--- a/content/blog/2014-10-16-react-v0.12-rc1.md
+++ b/content/blog/2014-10-16-react-v0.12-rc1.md
@@ -20,31 +20,31 @@ The release candidate is available for download:
 We've also published version `0.12.0-rc1` of the `react` and `react-tools` packages on npm and the `react` package on bower.
 
 
-## React Elements
+## React Elements {#react-elements}
 
 The biggest conceptual change we made in v0.12 is the move to React Elements. [We talked about this topic in depth earlier this week](/blog/2014/10/14/introducing-react-elements.html). If you haven't already, you should read up on the exciting changes in there!
 
 
-## JSX Changes
+## JSX Changes {#jsx-changes}
 
 Earlier this year we decided to write [a specification for JSX](https://facebook.github.io/jsx/). This has allowed us to make some changes focused on the React specific JSX and still allow others to innovate in the same space.
 
 
-### The `@jsx` Pragma is Gone!
+### The `@jsx` Pragma is Gone! {#the-jsx-pragma-is-gone}
 
 We have wanted to do this since before we even open sourced React. No more `/** @jsx React.DOM */`!. The React specific JSX transform assumes you have `React` in scope (which had to be true before anyway).
 
 `JSXTransformer` and `react-tools` have both been updated to account for this.
 
 
-### JSX for Function Calls is No Longer Supported
+### JSX for Function Calls is No Longer Supported {#jsx-for-function-calls-is-no-longer-supported}
 
 The React specific JSX transform no longer transforms to function calls. Instead we use `React.createElement` and pass it arguments. This allows us to make optimizations and better support React as a compile target for things like Om. Read more in the [React Elements introduction](/blog/2014/10/14/introducting-react-elements.html).
 
 The result of this change is that we will no longer support arbitrary function calls. We understand that the ability to do was a convenient shortcut for many people but we believe the gains will be worth it.
 
 
-### JSX Lower-case Convention
+### JSX Lower-case Convention {#jsx-lower-case-convention}
 
 We used to have a whitelist of HTML tags that got special treatment in JSX. However as new HTML tags got added to the spec, or we added support for more SVG tags, we had to go update our whitelist. Additionally, there was ambiguity about the behavior. There was always the chance that something new added to the tag list would result in breaking your code. For example:
 
@@ -63,7 +63,7 @@ Currently we still use the whitelist as a sanity check. The transform will fail
 In addition, the HTML tags are converted to strings instead of using `React.DOM` directly. `<div/>` becomes `React.createElement('div')` instead of `React.DOM.div()`.
 
 
-### JSX Spread Attributes
+### JSX Spread Attributes {#jsx-spread-attributes}
 
 Previously there wasn't a way to for you to pass a dynamic or unknown set of properties through JSX. This is now possible using the spread `...` operator.
 
@@ -89,7 +89,7 @@ return <MyComponent {...myProps} />;
 ```
 
 
-## Breaking Change: `key` and `ref` Removed From `this.props`
+## Breaking Change: `key` and `ref` Removed From `this.props` {#breaking-change-key-and-ref-removed-from-thisprops}
 
 The props `key` and `ref` were already reserved property names. This turned out to be difficult to explicitly statically type since any object can accept these extra props. It also screws up JIT optimizations of React internals in modern VMs.
 
@@ -104,14 +104,14 @@ You can no longer access `this.props.ref` and `this.props.key` from inside the C
 You do NOT need to change the way to define `key` and `ref`, only if you need to read it. E.g. `<div key="my-key" />` and `div({ key: 'my-key' })` still works.
 
 
-## Breaking Change: Default Props Resolution
+## Breaking Change: Default Props Resolution {#breaking-change-default-props-resolution}
 
 This is a subtle difference but `defaultProps` are now resolved at `ReactElement` creation time instead of when it's mounted. This is means that we can avoid allocating an extra object for the resolved props.
 
 You will primarily see this breaking if you're also using `transferPropsTo`.
 
 
-## Deprecated: transferPropsTo
+## Deprecated: transferPropsTo {#deprecated-transferpropsto}
 
 `transferPropsTo` is deprecated in v0.12 and will be removed in v0.13. This helper function was a bit magical. It auto-merged a certain whitelist of properties and excluded others. It was also transferring too many properties. This meant that we have to keep a whitelist of valid HTML attributes in the React runtime. It also means that we can't catch typos on props.
 
@@ -130,12 +130,12 @@ return div(this.props);
 Although to avoid passing too many props down, you'll probably want to use something like ES7 rest properties. [Read more about upgrading from transferPropsTo](https://gist.github.com/sebmarkbage/a6e220b7097eb3c79ab7).
 
 
-## Deprecated: Returning `false` in Event Handlers
+## Deprecated: Returning `false` in Event Handlers {#deprecated-returning-false-in-event-handlers}
 
 It used to be possible to return `false` from event handlers to preventDefault. We did this because this works in most browsers. This is a confusing API and we might want to use the return value for something else. Therefore, this is deprecated. Use `event.preventDefault()` instead.
 
 
-## Renamed APIs
+## Renamed APIs {#renamed-apis}
 
 As part of the [new React terminology](https://gist.github.com/sebmarkbage/fcb1b6ab493b0c77d589) we aliased some existing APIs to use the new naming convention:
 
diff --git a/content/blog/2014-10-17-community-roundup-23.md b/content/blog/2014-10-17-community-roundup-23.md
index 62a9840fe8..2088c9332c 100644
--- a/content/blog/2014-10-17-community-roundup-23.md
+++ b/content/blog/2014-10-17-community-roundup-23.md
@@ -6,13 +6,13 @@ author: [LoukaN]
 
 This round-up is a special edition on [Flux](https://facebook.github.io/flux/). If you expect to see diagrams showing arrows that all point in the same direction, you won't be disappointed!
 
-## React And Flux at ForwardJS
+## React And Flux at ForwardJS {#react-and-flux-at-forwardjs}
 
 Facebook engineers [Jing Chen](https://github.com/jingc) and [Bill Fisher](https://github.com/fisherwebdev) gave a talk about Flux and React at [ForwardJS](http://forwardjs.com/), and how using an application architecture with a unidirectional data flow helped solve recurring bugs.
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/i__969noyAM" frameborder="0" allowfullscreen></iframe>
 
-# Yahoo
+# Yahoo {#yahoo}
 
 Yahoo is converting Yahoo Mail to React and Flux and in the process, they open sourced several components. This will help you get an isomorphic application up and running.
 
@@ -22,7 +22,7 @@ Yahoo is converting Yahoo Mail to React and Flux and in the process, they open s
 - [Flux Examples](https://github.com/yahoo/flux-examples)
 
 
-## Reflux
+## Reflux {#reflux}
 
 [Mikael Brassman](https://spoike.ghost.io/) wrote [Reflux](https://github.com/spoike/refluxjs), a library that implements Flux concepts. Note that it diverges significantly from the way we use Flux at Facebook. He explains [the reasons why in a blog post](https://spoike.ghost.io/deconstructing-reactjss-flux/).
 
@@ -31,7 +31,7 @@ Yahoo is converting Yahoo Mail to React and Flux and in the process, they open s
 </center>
 
 
-## React and Flux Interview
+## React and Flux Interview {#react-and-flux-interview}
 
 [Ian Obermiller](http://ianobermiller.com/), engineer at Facebook, [made a lengthy interview](http://ianobermiller.com/blog/2014/09/15/react-and-flux-interview/) on the experience of using React and Flux in order to build probably the biggest React application ever written so far.
 
@@ -42,7 +42,7 @@ Yahoo is converting Yahoo Mail to React and Flux and in the process, they open s
 > [Read the full interview...](http://ianobermiller.com/blog/2014/09/15/react-and-flux-interview/)
 
 
-## Adobe's Brackets Project Tree
+## Adobe's Brackets Project Tree {#adobes-brackets-project-tree}
 
 [Kevin Dangoor](http://www.kevindangoor.com/) is converting the project tree of [Adobe's Bracket text editor](http://brackets.io/) to React and Flux. He wrote about his experience [using Flux](http://www.kevindangoor.com/2014/09/intro-to-the-new-brackets-project-tree/).
 
@@ -51,7 +51,7 @@ Yahoo is converting Yahoo Mail to React and Flux and in the process, they open s
 </center>
 
 
-## Async Requests with Flux Revisited
+## Async Requests with Flux Revisited {#async-requests-with-flux-revisited}
 
 [Reto Schläpfer](http://www.code-experience.com/the-code-experience/) came back to a Flux project he hasn't worked on for a month and [saw many ways to improve the way he implemented Flux](http://www.code-experience.com/async-requests-with-react-js-and-flux-revisited/). He summarized his learnings in a blog post.
 
@@ -68,7 +68,7 @@ Yahoo is converting Yahoo Mail to React and Flux and in the process, they open s
 > [Read the full article...](http://www.code-experience.com/async-requests-with-react-js-and-flux-revisited/)
 
 
-## Undo-Redo with Immutable Data Structures
+## Undo-Redo with Immutable Data Structures {#undo-redo-with-immutable-data-structures}
 
 [Ameya Karve](https://github.com/ameyakarve) explained how to use [Mori](https://github.com/swannodette/mori), a library that provides immutable data structures, in order to [implement undo-redo](http://ameyakarve.com/jekyll/update/2014/02/06/Undo-React-Flux-Mori.html). This usually very challenging feature only takes a few lines of code with Flux!
 
@@ -89,7 +89,7 @@ undo: function() {
 ```
 
 
-## Flux in practice
+## Flux in practice {#flux-in-practice}
 
 [Gary Chambers](https://twitter.com/garychambers108) wrote a [guide to get started with Flux](https://medium.com/@garychambers108/flux-in-practice-ec08daa9041a). This is a very practical introduction to Flux.
 
@@ -98,14 +98,14 @@ undo: function() {
 > [Read the full guide...](https://medium.com/@garychambers108/flux-in-practice-ec08daa9041a)
 
 
-## Components, React and Flux
+## Components, React and Flux {#components-react-and-flux}
 
 [Dan Abramov](https://twitter.com/dan_abramov) working at Stampsy made a talk about React and Flux. It's a very good overview of the concepts at play.
 
 <iframe src="//slides.com/danabramov/components-react-flux-wip/embed"  width="100%" height="315" scrolling="no" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
 
 
-## React and Flux
+## React and Flux {#react-and-flux}
 
 [Christian Alfoni](https://github.com/christianalfoni) wrote an article where [he compares Backbone, Angular and Flux](https://christianalfoni.github.io/javascript/2014/08/20/react-js-and-flux.html) on a simple example that's representative of a real project he worked on.
 
@@ -117,7 +117,7 @@ undo: function() {
 
 
 
-## Flux: Step by Step approach
+## Flux: Step by Step approach {#flux-step-by-step-approach}
 
 [Nicola Paolucci](https://github.com/durdn) from Atlassian wrote a great guide to help your getting understand [Flux step by step](https://blogs.atlassian.com/2014/08/flux-architecture-step-by-step/).
 
@@ -126,7 +126,7 @@ undo: function() {
 </center>
 
 
-## DeLorean: Back to the future!
+## DeLorean: Back to the future! {#delorean-back-to-the-future}
 
 [DeLorean](https://github.com/deloreanjs/delorean) is a tiny Flux pattern implementation developed by [Fatih Kadir Akin](https://github.com/f).
 
@@ -139,13 +139,13 @@ undo: function() {
 > - Improve your UI/data consistency using rollbacks
 
 
-## Facebook's iOS Infrastructure
+## Facebook's iOS Infrastructure {#facebooks-ios-infrastructure}
 
 Last but not least, Flux and React ideas are not limited to JavaScript inside of the browser. The iOS team at Facebook re-implemented Newsfeed using very similar patterns.
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/XhXC4SKOGfQ" frameborder="0" allowfullscreen></iframe>
 
 
-## Random Tweet
+## Random Tweet {#random-tweet}
 
 <blockquote class="twitter-tweet" lang="en"><p>If you build your app with flux, you can swap out React for a canvas or svg view layer and keep 85% of your code. (or the thing after React)</p>&mdash; Ryan Florence (@ryanflorence) <a href="https://twitter.com/ryanflorence/status/507309645372076034">September 3, 2014</a></blockquote>
diff --git a/content/blog/2014-10-28-react-v0.12.md b/content/blog/2014-10-28-react-v0.12.md
index c61f07f822..824b2d6b06 100644
--- a/content/blog/2014-10-28-react-v0.12.md
+++ b/content/blog/2014-10-28-react-v0.12.md
@@ -21,7 +21,7 @@ The release is available for download:
 
 We've also published version `0.12.0` of the `react` and `react-tools` packages on npm and the `react` package on bower.
 
-## New Terminology & Updated APIs
+## New Terminology & Updated APIs {#new-terminology--updated-apis}
 
 v0.12 is bringing about some new terminology. [We introduced](/blog/2014/10/14/introducing-react-elements.html) this 2 weeks ago and we've also documented it in [a new section of the documentation](/docs/glossary.html). As a part of this, we also corrected many of our top-level APIs to align with the terminology. `Component` has been removed from all of our `React.render*` methods. While at one point the argument you passed to these functions was called a Component, it no longer is. You are passing ReactElements. To align with `render` methods in your component classes, we decided to keep the top-level functions short and sweet. `React.renderComponent` is now `React.render`.
 
@@ -29,7 +29,7 @@ We also corrected some other misnomers. `React.isValidComponent` actually determ
 
 The old methods will still work but will warn upon first use. They will be removed in v0.13.
 
-## JSX Changes
+## JSX Changes {#jsx-changes}
 
 [We talked more in depth about these before](/blog/2014/10/16/react-v0.12-rc1.html#jsx-changes), so here are the highlights.
 
@@ -38,13 +38,13 @@ The old methods will still work but will warn upon first use. They will be remov
 * DOM components don't make use of `React.DOM`, instead we pass the tag name directly. `<div/>` becomes `React.createElement('div')`
 * We introduced spread attributes as a quick way to transfer props.
 
-## DevTools Improvements, No More `__internals`
+## DevTools Improvements, No More `__internals` {#devtools-improvements-no-more-__internals}
 
 For months we've gotten complaints about the React DevTools message. It shouldn't have logged the up-sell message when you were already using the DevTools. Unfortunately this was because the way we implemented these tools resulted in the DevTools knowing about React, but not the reverse. We finally gave this some attention and enabled React to know if the DevTools are installed. We released an update to the devtools several weeks ago making this possible. Extensions in Chrome should auto-update so you probably already have the update installed!
 
 As a result of this update, we no longer need to expose several internal modules to the world. If you were taking advantage of this implementation detail, your code will break. `React.__internals` is no more.
 
-## License Change - BSD
+## License Change - BSD {#license-change---bsd}
 
 We updated the license on React to the BSD 3-Clause license with an explicit patent grant. Previously we used the Apache 2 license. These licenses are very similar and our extra patent grant is equivalent to the grant provided in the Apache license. You can still use React with the confidence that we have granted the use of any patents covering it. This brings us in line with the same licensing we use across the majority of our open source projects at Facebook.
 
@@ -52,11 +52,11 @@ You can read the full text of the [LICENSE](https://github.com/facebook/react/bl
 
 - - -
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes}
 
 * `key` and `ref` moved off props object, now accessible on the element directly
 * React is now BSD licensed with accompanying Patents grant
@@ -64,12 +64,12 @@ You can read the full text of the [LICENSE](https://github.com/facebook/react/bl
 * `React.__internals` is removed - it was exposed for DevTools which no longer needs access
 * Composite Component functions can no longer be called directly - they must be wrapped with `React.createFactory` first. This is handled for you when using JSX.
 
-#### New Features
+#### New Features {#new-features}
 
 * Spread operator (`{...}`) introduced to deprecate `this.transferPropsTo`
 * Added support for more HTML attributes: `acceptCharset`, `classID`, `manifest`
 
-#### Deprecations
+#### Deprecations {#deprecations}
 
 * `React.renderComponent` --> `React.render`
 * `React.renderComponentToString` --> `React.renderToString`
@@ -83,7 +83,7 @@ You can read the full text of the [LICENSE](https://github.com/facebook/react/bl
 * **DEPRECATED** Convenience Constructor usage as function, instead wrap with `React.createFactory`
 * **DEPRECATED** use of `key={null}` to assign implicit keys
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes}
 
 * Better handling of events and updates in nested results, fixing value restoration in "layered" controlled components
 * Correctly treat `event.getModifierState` as case sensitive
@@ -96,32 +96,32 @@ You can read the full text of the [LICENSE](https://github.com/facebook/react/bl
   * `scrollLeft`, `scrollTop` removed, these should not be specified as props
 * Improved error messages
 
-### React With Addons
+### React With Addons {#react-with-addons}
 
-#### New Features
+#### New Features {#new-features-1}
 
 * `React.addons.batchedUpdates` added to API for hooking into update cycle
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes-1}
 
 * `React.addons.update` uses `assign` instead of `copyProperties` which does `hasOwnProperty` checks. Properties on prototypes will no longer be updated correctly.
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes-1}
 
 * Fixed some issues with CSS Transitions
 
-### JSX
+### JSX {#jsx}
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes-2}
 
 * Enforced convention: lower case tag names are always treated as HTML tags, upper case tag names are always treated as composite components
 * JSX no longer transforms to simple function calls
 
-#### New Features
+#### New Features {#new-features-2}
 
 * `@jsx React.DOM` no longer required
 * spread (`{...}`) operator introduced to allow easier use of props
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes-2}
 
 * JSXTransformer: Make sourcemaps an option when using APIs directly (eg, for react-rails)
diff --git a/content/blog/2014-11-25-community-roundup-24.md b/content/blog/2014-11-25-community-roundup-24.md
index bf34f58f5a..42dcd82a41 100644
--- a/content/blog/2014-11-25-community-roundup-24.md
+++ b/content/blog/2014-11-25-community-roundup-24.md
@@ -4,7 +4,7 @@ layout: post
 author: [steveluscher]
 ---
 
-## Keep it Simple
+## Keep it Simple {#keep-it-simple}
 
 Pedro Nauck ([pedronauck](https://github.com/pedronauck)) delivered an impeccably illustrated deck at Brazil's _Front in Floripa_ conference. Watch him talk about how to keep delivering value as your app scales, by keeping your development process simple.
 
@@ -20,7 +20,7 @@ James Pearce ([jamesgpearce](https://github.com/jamesgpearce)) carried Big-Coffe
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/m2fuO2wl_3c" frameborder="0" allowfullscreen></iframe>
 
-## All About Isomorphism
+## All About Isomorphism {#all-about-isomorphism}
 
 Michael Ridgway ([mridgway](https://github.com/mridgway)) shows us how Yahoo! (who recently [moved Yahoo! Mail to React](http://www.slideshare.net/rmsguhan/react-meetup-mailonreact)) renders their React+Flux application, server-side.
 
@@ -30,11 +30,11 @@ Péter Márton ([hekike](https://github.com/hekike)) helps us brew a cold one (l
 
 And, lest you think that client-server isomorphism exists in pursuit of crawalable, indexable HTML alone, watch as Nate Hunzaker ([nhunzaker](https://github.com/nhunzaker)) [server renders data visualizations as SVG](http://viget.com/extend/visualization-is-for-sharing-using-react-for-portable-data-visualization) with React.
 
-## React Router Mows the Lawn
+## React Router Mows the Lawn {#react-router-mows-the-lawn}
 
 Ryan Florence ([rpflorence](https://github.com/rpflorence])) and Michael Jackson ([mjackson](https://github.com/mjackson)) unveiled a new API for [React Router](https://github.com/rackt/react-router) that solves some of its user's problems by eliminating the problems themselves. Read all about what React Router learned from its community of users, and how they've [rolled your ideas into their latest release](https://github.com/rackt/react-router/wiki/Announcements).
 
-## React in Practice
+## React in Practice {#react-in-practice}
 
 Jonathan Beebe ([somethingkindawierd](https://github.com/somethingkindawierd)) spoke about how he uses React to build tools that deliver hope to those trying to make the best of a bad situation. Watch his talk from this year's _Nodevember_ conference in Nashville
 
@@ -44,13 +44,13 @@ If you take a peek under the covers, you'll find that React powers [Carousel](ht
 
 We enjoyed a cinematic/narrative experience with this React-powered, interactive story by British author William Boyd. Dive into “[The Vanishing Game](https://thevanishinggame.wellstoried.com)” and see for yourself.
 
-## Be Kind, Rewind
+## Be Kind, Rewind {#be-kind-rewind}
 
 Spend the next 60 seconds watching Daniel Woelfel ([dwwoelfel](https://github.com/dwwoelfel)) serialize a React app's state as a string, then deserialize it to produce a working UI. Read about how he uses this technique to [reproduce bugs](http://blog.circleci.com/local-state-global-concerns/) reported to him by his users.
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/5yHFTN-_mOo" frameborder="0" allowfullscreen></iframe>
 
-## Community Components
+## Community Components {#community-components}
 
 Tom Chen ([tomchentw](https://github.com/tomchentw)) brings us a [react-google-maps](https://tomchentw.github.io/react-google-maps/) component, and a way to syntax highlight source code using Prism and the [react-prism](https://tomchentw.github.io/react-prism/) component, for good measure.
 
@@ -58,23 +58,23 @@ Jed Watson ([jedwatson](https://github.com/JedWatson)) helps you manage touch, t
 
 To find these, and more community-built components, consult the [React Components](http://react-components.com/) and [React Rocks](http://react.rocks) component directories. React Rocks recently exceeded one-hundred listed components and counting. See one missing? Add the keyword `react-component` to your `package.json` to get listed on React Components, and [submit a link to React Rocks](https://docs.google.com/forms/d/1TpnwJmLcmmGj-_TI68upu_bKBViYeiKx7Aj9uKmV6wY/viewform).
 
-## Waiter, There's a CSS In My JavaScript
+## Waiter, There's a CSS In My JavaScript {#waiter-theres-a-css-in-my-javascript}
 
 The internet is abuzz with talk of styling React components using JavaScript instead of CSS. Christopher Chedeau ([vjeux](https://github.com/vjeux)) talks about some of the [fundamental style management challenges](https://speakerdeck.com/vjeux/react-css-in-js) we grapple with, at Facebook scale. A number of implementations of JavaScript centric style management solutions have appeared in the wild, including the React-focused [react-style](https://github.com/js-next/react-style).
 
-## Test Isolation
+## Test Isolation {#test-isolation}
 
 Yahoo! shows us how they make use of `iframe` elements to [unit test React components in isolation](http://yahooeng.tumblr.com/post/102274727496/to-testutil-or-not-to-testutil).
 
-## You've Got The Hang of Flux, Now Let's Flow
+## You've Got The Hang of Flux, Now Let's Flow {#youve-got-the-hang-of-flux-now-lets-flow}
 
 Facebook Open Source released [Flow](https://code.facebook.com/posts/1505962329687926/flow-a-new-static-type-checker-for-javascript/) this month – a static type checker for JavaScript. Naturally, Flow supports JSX, and you can use it to [type check React applications](https://code.facebook.com/posts/1505962329687926/flow-a-new-static-type-checker-for-javascript/#compatibility). There's never been a better reason to start making use of `propTypes` in your component specifications!
 
-## Countdown to React.js Conf 2014
+## Countdown to React.js Conf 2014 {#countdown-to-reactjs-conf-2014}
 
 We're counting down the days until [React.js Conf](http://conf.reactjs.com) at Facebook's headquarters in Menlo Park, California, on January 28th & 29th, 2015. Thank you, to everyone who responded to the Call for Presenters. Mark the dates; tickets go on sale in three waves: at noon PST on November 28th, December 5th, and December 12th, 2014.
 
-## React Meetups Around the World
+## React Meetups Around the World {#react-meetups-around-the-world}
 
 <blockquote class="twitter-tweet" lang="en"><p>React JS meetup having pretty good turn up rate today <a href="https://twitter.com/hashtag/londonreact?src=hash">#londonreact</a> <a href="http://t.co/c360dlVVAe">pic.twitter.com/c360dlVVAe</a></p>&mdash; Alexander Savin (@karismafilms) <a href="https://twitter.com/karismafilms/status/535152580377468928">November 19, 2014</a></blockquote>
 
diff --git a/content/blog/2014-12-18-react-v0.12.2.md b/content/blog/2014-12-18-react-v0.12.2.md
index ef038fa5f2..75f78277f6 100644
--- a/content/blog/2014-12-18-react-v0.12.2.md
+++ b/content/blog/2014-12-18-react-v0.12.2.md
@@ -22,16 +22,16 @@ We've also published version `0.12.2` of the `react` and `react-tools` packages
 
 Please try these builds out and [file an issue on GitHub](https://github.com/facebook/react/issues/new) if you see anything awry.
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
 * Added support for more HTML attributes: `formAction`, `formEncType`, `formMethod`, `formTarget`, `marginHeight`, `marginWidth`
 * Added `strokeOpacity` to the list of unitless CSS properties
 * Removed trailing commas (allows npm module to be bundled and used in IE8)
 * Fixed bug resulting in error when passing `undefined` to `React.createElement` - now there is a useful warning
 
-### React Tools
+### React Tools {#react-tools}
 
 * JSX-related transforms now always use double quotes for props and `displayName`
 
diff --git a/content/blog/2014-12-19-react-js-conf-diversity-scholarship.md b/content/blog/2014-12-19-react-js-conf-diversity-scholarship.md
index bb7cd23fb3..6b6b85c13a 100644
--- a/content/blog/2014-12-19-react-js-conf-diversity-scholarship.md
+++ b/content/blog/2014-12-19-react-js-conf-diversity-scholarship.md
@@ -18,19 +18,19 @@ Facebook will make determinations on scholarship recipients in its sole discreti
 
 To apply for the scholarship, please visit the Application Page: <https://www.surveymonkey.com/s/XVJGK6R>
 
-## Award Includes
+## Award Includes {#award-includes}
 
 * Paid registration fee for the React.js Conf January 28 & 29th at Facebook’s Headquarters in Menlo Park, CA
 * Paid travel and lodging expenses
 * Additional $200 meal stipend
 
-## Important Dates
+## Important Dates {#important-dates}
 
 * Monday, January 5, 2015: Applications for the React.js Conf Scholarship must be submitted in full
 * Friday, January 9, 2015: Award recipients will be notified by email of their acceptance
 * Wednesday & Thursday, January 28 & 29, 2015: React.js Conf
 
-## Eligibility
+## Eligibility {#eligibility}
 
 * Must currently be studying or working in Computer Science or a related field
 * International applicants are welcome, but you will be responsible for securing your own visa to attend the conference
diff --git a/content/blog/2015-01-27-react-v0.13.0-beta-1.md b/content/blog/2015-01-27-react-v0.13.0-beta-1.md
index 76fea92da4..d6cdd6c5c4 100644
--- a/content/blog/2015-01-27-react-v0.13.0-beta-1.md
+++ b/content/blog/2015-01-27-react-v0.13.0-beta-1.md
@@ -12,7 +12,7 @@ We just published a beta version of React v0.13.0 to [npm](https://www.npmjs.com
 So what is that one feature I'm so excited about that I just couldn't wait to share?
 
 
-## Plain JavaScript Classes!!
+## Plain JavaScript Classes!! {#plain-javascript-classes}
 
 JavaScript originally didn't have a built-in class system. Every popular framework built their own, and so did we. This means that you have a learn slightly different semantics for each framework.
 
@@ -21,7 +21,7 @@ We figured that we're not in the business of designing a class system. We just w
 In React 0.13.0 you no longer need to use `React.createClass` to create React components. If you have a transpiler you can use ES6 classes today. You can use the transpiler we ship with `react-tools` by making use of the harmony option: `jsx --harmony`.
 
 
-### ES6 Classes
+### ES6 Classes {#es6-classes}
 
 ```javascript
 class HelloMessage extends React.Component {
@@ -56,7 +56,7 @@ Counter.propTypes = { initialCount: React.PropTypes.number };
 Counter.defaultProps = { initialCount: 0 };
 ```
 
-### ES7+ Property Initializers
+### ES7+ Property Initializers {#es7-property-initializers}
 
 Wait, assigning to properties seems like a very imperative way of defining classes! You're right, however, we designed it this way because it's idiomatic. We fully expect a more declarative syntax for property initialization to arrive in future version of JavaScript. It might look something like this:
 
@@ -81,7 +81,7 @@ export class Counter extends React.Component {
 
 This was inspired by TypeScript's property initializers.
 
-### Autobinding
+### Autobinding {#autobinding}
 
 `React.createClass` has a built-in magic feature that bound all methods to `this` automatically for you. This can be a little confusing for JavaScript developers that are not used to this feature in other classes, or it can be confusing when they move from React to other classes.
 
@@ -111,7 +111,7 @@ class Counter extends React.Component {
 }
 ```
 
-### Mixins
+### Mixins {#mixins}
 
 Unfortunately, we will not launch any mixin support for ES6 classes in React. That would defeat the purpose of only using idiomatic JavaScript concepts.
 
@@ -125,7 +125,7 @@ Luckily, if you want to keep using mixins, you can just keep using `React.create
 >
 > The classic `React.createClass` style of creating classes will continue to work just fine.
 
-## Other Languages!
+## Other Languages! {#other-languages}
 
 Since these classes are just plain old JavaScript classes, you can use other languages that compile to JavaScript classes, such as TypeScript.
 
diff --git a/content/blog/2015-02-18-react-conf-roundup-2015.md b/content/blog/2015-02-18-react-conf-roundup-2015.md
index 3f7d3dfc26..5adcf96b53 100644
--- a/content/blog/2015-02-18-react-conf-roundup-2015.md
+++ b/content/blog/2015-02-18-react-conf-roundup-2015.md
@@ -6,7 +6,7 @@ author: [steveluscher]
 
 It was a privilege to welcome the React community to Facebook HQ on January 28–29 for the first-ever React.js Conf, and a pleasure to be able to unveil three new technologies that we've been using internally at Facebook for some time: GraphQL, Relay, and React Native.
 
-## The talks
+## The talks {#the-talks}
 
 <div class="skinny-row">
   <div class="skinny-col">
@@ -241,7 +241,7 @@ It was a privilege to welcome the React community to Facebook HQ on January 28
   </div>
 </div>
 
-## Reactions
+## Reactions {#reactions}
 
 The conference is over, but the conversation has just begun.
 
diff --git a/content/blog/2015-02-20-introducing-relay-and-graphql.md b/content/blog/2015-02-20-introducing-relay-and-graphql.md
index 90ab3093f0..4bd8809ce5 100644
--- a/content/blog/2015-02-20-introducing-relay-and-graphql.md
+++ b/content/blog/2015-02-20-introducing-relay-and-graphql.md
@@ -4,7 +4,7 @@ layout: post
 author: [wincent]
 ---
 
-## Data fetching for React applications
+## Data fetching for React applications {#data-fetching-for-react-applications}
 
 There's more to building an application than creating a user interface. Data fetching is still a tricky problem, especially as applications become more complicated. At [React.js Conf](http://conf.reactjs.com/) we announced two projects we've created at Facebook to make data fetching simple for developers, even as a product grows to include dozens of contributors and the application becomes as complex as Facebook itself.
 
@@ -14,7 +14,7 @@ The two projects &mdash; Relay and GraphQL &mdash; have been in use in productio
 
 <script async class="speakerdeck-embed" data-id="7af7c2f33bf9451a892dcd91de55b7c2" data-ratio="1.29456384323641" src="//speakerdeck.com/assets/embed.js"></script>
 
-## What is Relay?
+## What is Relay? {#what-is-relay}
 
 Relay is a new framework from Facebook that provides data-fetching functionality for React applications. It was announced at React.js Conf (January 2015).
 
@@ -22,13 +22,13 @@ Each component specifies its own data dependencies declaratively using a query l
 
 Developers compose these React components naturally, and Relay takes care of composing the data queries into efficient batches, providing each component with exactly the data that it requested (and no more), updating those components when the data changes, and maintaining a client-side store (cache) of all data.
 
-## What is GraphQL?
+## What is GraphQL? {#what-is-graphql}
 
 GraphQL is a data querying language designed to describe the complex, nested data dependencies of modern applications. It's been in production use in Facebook's native apps for several years.
 
 On the server, we configure the GraphQL system to map queries to underlying data-fetching code. This configuration layer allows GraphQL to work with arbitrary underlying storage mechanisms. Relay uses GraphQL as its query language, but it is not tied to a specific implementation of GraphQL.
 
-## The value proposition
+## The value proposition {#the-value-proposition}
 
 Relay was born out of our experiences building large applications at Facebook. Our overarching goal is to enable developers to create correct, high-performance applications in a straightforward and obvious way. The design enables even large teams to make changes with a high degree of isolation and confidence. Fetching data is hard, dealing with ever-changing data is hard, and performance is hard. Relay aims to reduce these problems to simple ones, moving the tricky bits into the framework and freeing you to concentrate on building your application.
 
@@ -48,13 +48,13 @@ By handling all data-fetching via a single abstraction, we're able to handle a b
 - **Simplified server implementation:** Rather than having a proliferation of end-points (per action, per route), a single GraphQL endpoint can serve as a facade for any number of underlying resources.
 - **Uniform mutations:** There is one consistent pattern for performing mutations (writes), and it is conceptually baked into the data querying model itself. You can think of a mutation as a query with side-effects: you provide some parameters that describe the change to be made (eg. attaching a comment to a record) and a query that specifies the data you'll need to update your view of the world after the mutation completes (eg. the comment count on the record), and the data flows through the system using the normal flow. We can do an immediate "optimistic" update on the client (ie. update the view under the assumption that the write will succeed), and finally commit it, retry it or roll it back in the event of an error when the server payload comes back.
 
-## How does it relate to Flux?
+## How does it relate to Flux? {#how-does-it-relate-to-flux}
 
 In some ways Relay is inspired by Flux, but the mental model is much simpler. Instead of multiple stores, there is one central store that caches all GraphQL data. Instead of explicit subscriptions, the framework itself can track which data each component requests, and which components should be updated whenever the data change. Instead of actions, modifications take the form of mutations.
 
 At Facebook, we have apps built entirely using Flux, entirely using Relay, or with both. One pattern we see emerging is letting Relay manage the bulk of the data flow for an application, but using Flux stores on the side to handle a subset of application state.
 
-## Open source plans
+## Open source plans {#open-source-plans}
 
 We're working very hard right now on getting both GraphQL (a spec, and a reference implementation) and Relay ready for public release (no specific dates yet, but we are super excited about getting these out there).
 
diff --git a/content/blog/2015-02-24-react-v0.13-rc1.md b/content/blog/2015-02-24-react-v0.13-rc1.md
index 28ec58dbea..6bf6e84f5c 100644
--- a/content/blog/2015-02-24-react-v0.13-rc1.md
+++ b/content/blog/2015-02-24-react-v0.13-rc1.md
@@ -24,11 +24,11 @@ We've also published version `0.13.0-rc1` of the `react` and `react-tools` packa
 
 - - -
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes}
 
 * Mutating `props` after an element is created is deprecated and will cause warnings in development mode; future versions of React will incorporate performance optimizations assuming that props aren't mutated
 * Static methods (defined in `statics`) are no longer autobound to the component class
@@ -37,7 +37,7 @@ We've also published version `0.13.0-rc1` of the `react` and `react-tools` packa
 * `setState` and `forceUpdate` on an unmounted component now warns instead of throwing. That avoids a possible race condition with Promises.
 * Access to most internal properties has been completely removed, including `this._pendingState` and `this._rootNodeID`.
 
-#### New Features
+#### New Features {#new-features}
 
 * Support for using ES6 classes to build React components; see the [v0.13.0 beta 1 notes](/blog/2015/01/27/react-v0.13.0-beta-1.html) for details
 * Added new top-level API `React.findDOMNode(component)`, which should be used in place of `component.getDOMNode()`. The base class for ES6-based components will not have `getDOMNode`. This change will enable some more patterns moving forward.
@@ -45,26 +45,26 @@ We've also published version `0.13.0-rc1` of the `react` and `react-tools` packa
 * `this.setState()` can now take a function as the first argument for transactional state updates, such as `this.setState((state, props) => ({count: state.count + 1}));` -- this means that you no longer need to use `this._pendingState`, which is now gone.
 * Support for iterators and immutable-js sequences as children
 
-#### Deprecations
+#### Deprecations {#deprecations}
 
 * `ComponentClass.type` is deprecated. Just use `ComponentClass` (usually as `element.type === ComponentClass`)
 * Some methods that are available on `createClass`-based components are removed or deprecated from ES6 classes (for example, `getDOMNode`, `setProps`, `replaceState`).
 
 
-### React with Add-Ons
+### React with Add-Ons {#react-with-add-ons}
 
-#### Deprecations
+#### Deprecations {#deprecations-1}
 
 * `React.addons.classSet` is now deprecated. This functionality can be replaced with several freely available modules. [classnames](https://www.npmjs.com/package/classnames) is one such module.
 
 
-### React Tools
+### React Tools {#react-tools}
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes-1}
 
 * When transforming ES6 syntax, `class` methods are no longer enumerable by default, which requires `Object.defineProperty`; if you support browsers such as IE8, you can pass `--target es3` to mirror the old behavior
 
-#### New Features
+#### New Features {#new-features-1}
 
 * `--target` option is available on the jsx command, allowing users to specify and ECMAScript version to target.
   * `es5` is the default.
@@ -72,7 +72,7 @@ We've also published version `0.13.0-rc1` of the `react` and `react-tools` packa
 * The transform for the call spread operator has also been enabled.
 
 
-### JSX
+### JSX {#jsx}
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes-2}
 * A change was made to how some JSX was parsed, specifically around the use of `>` or `}` when inside an element. Previously it would be treated as a string but now it will be treated as a parse error. We will be releasing a standalone executable to find and fix potential issues in your JSX code.
diff --git a/content/blog/2015-02-24-streamlining-react-elements.md b/content/blog/2015-02-24-streamlining-react-elements.md
index aa76a70438..a5bb932778 100644
--- a/content/blog/2015-02-24-streamlining-react-elements.md
+++ b/content/blog/2015-02-24-streamlining-react-elements.md
@@ -8,7 +8,7 @@ React v0.13 is right around the corner and so we wanted to discuss some upcoming
 
 If you use React in an idiomatic way, chances are, you’ll never see any of these warnings. In that case, you can skip this blog post. You can just enjoy the benefits! These changes will unlock simplified semantics, better error messages, stack traces and compiler optimizations!
 
-## Immutable Props
+## Immutable Props {#immutable-props}
 
 In React 0.12, the props object was mutable. It allows you to do patterns like this:
 
@@ -22,7 +22,7 @@ if (shouldUseFoo) {
 
 The problem is that we don’t have a convenient way to tell when you’re done mutating.
 
-### Problem: Mutating Props You Don’t Own
+### Problem: Mutating Props You Don’t Own {#problem-mutating-props-you-dont-own}
 
 If you mutate something, you destroy the original value. Therefore, there is nothing to diff against. Imagine something like this:
 
@@ -40,13 +40,13 @@ Additionally, if this element is reused in other places or used to switch back a
 
 It has always been broken to mutate the props of something passed into you. The problem is that we can’t warn you about this special case if you accidentally do this.
 
-### Problem: Too Late Validation
+### Problem: Too Late Validation {#problem-too-late-validation}
 
 In React 0.12, we do PropType validation very deep inside React during mounting. This means that by the time you get an error, the debugger stack is long gone. This makes it difficult to find complex issues during debugging. We have to do this since it is fairly common for extra props to be added between the call to React.createElement and the mount time. So the type is incomplete until then.
 
 The static analysis in Flow is also impaired by this. There is no convenient place in the code where Flow can determine that the props are finalized.
 
-### Solution: Immutable Props
+### Solution: Immutable Props {#solution-immutable-props}
 
 Therefore, we would like to be able to freeze the element.props object so that it is immediately immutable at the JSX callsite (or createElement). In React 0.13 we will start warning you if you mutate `element.props` after this point.
 
@@ -79,7 +79,7 @@ return <Foo nestedObject={this.state.myModel} />;
 
 In this case it's still ok to mutate the myModel object in state. We recommend that you use fully immutable models. E.g. by using immutable-js. However, we realize that mutable models are still convenient in many cases. Therefore we're only considering shallow freezing the props object that belongs to the ReactElement itself. Not nested objects.
 
-### Solution: Early PropType Warnings
+### Solution: Early PropType Warnings {#solution-early-proptype-warnings}
 
 We will also start warning you for PropTypes at the JSX or createElement callsite. This will help debugging as you’ll have the stack trace right there. Similarly, Flow also validates PropTypes at this callsite.
 
@@ -90,7 +90,7 @@ var element1 = <Foo />; // extra prop is optional
 var element2 = React.addons.cloneWithProps(element1, { extra: 'prop' });
 ```
 
-## Owner
+## Owner {#owner}
 
 In React each child has both a "parent" and an “owner”. The owner is the component that created a ReactElement. I.e. the render method which contains the JSX or createElement callsite.
 
@@ -106,7 +106,7 @@ In this example, the owner of the `span` is `Foo` but the parent is the `div`.
 
 There is also an undocumented feature called "context" that also relies on the concept of an “owner” to pass hidden props down the tree.
 
-### Problem: The Semantics are Opaque and Confusing
+### Problem: The Semantics are Opaque and Confusing {#problem-the-semantics-are-opaque-and-confusing}
 
 The problem is that these are hidden artifacts attached to the ReactElement. In fact, you probably didn’t even know about it. It silently changes semantics. Take this for example:
 
@@ -121,7 +121,7 @@ class Component {
 
 These two inputs have different owners, therefore React will not keep its state when the conditional switches. There is nothing in the code to indicate that. Similarly, if you use `React.addons.cloneWithProps`, the owner changes.
 
-### Problem: Timing Matters
+### Problem: Timing Matters {#problem-timing-matters}
 
 The owner is tracked by the currently executing stack. This means that the semantics of a ReactElement varies depending on when it is executed. Take this example:
 
@@ -140,25 +140,25 @@ class B {
 
 The owner of the `span` is actually `B`, not `A` because of the timing of the callback. This all adds complexity and suffers from similar problems as mutation.
 
-### Problem: It Couples JSX to React
+### Problem: It Couples JSX to React {#problem-it-couples-jsx-to-react}
 
 Have you wondered why JSX depends on React? Couldn’t the transpiler have that built-in to its runtime? The reason you need to have `React.createElement` in scope is because we depend on internal state of React to capture the current "owner". Without this, you wouldn’t need to have React in scope.
 
-### Solution: Make Context Parent-Based Instead of Owner-Based
+### Solution: Make Context Parent-Based Instead of Owner-Based {#solution-make-context-parent-based-instead-of-owner-based}
 
 The first thing we’re doing is warning you if you’re using the "owner" feature in a way that relies on it propagating through owners. Instead, we’re planning on propagating it through parents to its children. In almost all cases, this shouldn’t matter. In fact, parent-based contexts is simply a superset.
 
-### Solution: Remove the Semantic Implications of Owner
+### Solution: Remove the Semantic Implications of Owner {#solution-remove-the-semantic-implications-of-owner}
 
 It turns out that there are very few cases where owners are actually important part of state-semantics. As a precaution, we’ll warn you if it turns out that the owner is important to determine state. In almost every case this shouldn’t matter. Unless you’re doing some weird optimizations, you shouldn’t see this warning.
 
-### Pending: Change the refs Semantics
+### Pending: Change the refs Semantics {#pending-change-the-refs-semantics}
 
 Refs are still based on "owner". We haven’t fully solved this special case just yet.
 
 In 0.13 we introduced a new callback-refs API that doesn’t suffer from these problems but we’ll keep on a nice declarative alternative to the current semantics for refs. As always, we won’t deprecate something until we’re sure that you’ll have a nice upgrade path.
 
-## Keyed Objects as Maps
+## Keyed Objects as Maps {#keyed-objects-as-maps}
 
 In React 0.12, and earlier, you could use keyed objects to provide an external key to an element or a set. This pattern isn’t actually widely used. It shouldn’t be an issue for most of you.
 
@@ -166,11 +166,11 @@ In React 0.12, and earlier, you could use keyed objects to provide an external k
 <div>{ {a: <span />, b: <span />} }</div>
 ```
 
-### Problem: Relies on Enumeration Order
+### Problem: Relies on Enumeration Order {#problem-relies-on-enumeration-order}
 
 The problem with this pattern is that it relies on enumeration order of objects. This is technically unspecified, even though implementations now agree to use insertion order. Except for the special case when numeric keys are used.
 
-### Problem: Using Objects as Maps is Bad
+### Problem: Using Objects as Maps is Bad {#problem-using-objects-as-maps-is-bad}
 
 It is generally accepted that using objects as maps screw up type systems, VM optimizations, compilers etc. It is much better to use a dedicated data structure like ES6 Maps.
 
@@ -184,13 +184,13 @@ return <div>{children}</div>;
 
 Imagine if `item.title === '__proto__'` for example.
 
-### Problem: Can’t be Differentiated from Arbitrary Objects
+### Problem: Can’t be Differentiated from Arbitrary Objects {#problem-cant-be-differentiated-from-arbitrary-objects}
 
 Since these objects can have any keys with almost any value, we can’t differentiate them from a mistake. If you put some random object, we will try our best to traverse it and render it, instead of failing with a helpful warning. In fact, this is one of the few places where you can accidentally get an infinite loop in React.
 
 To differentiate ReactElements from one of these objects, we have to tag them with `_isReactElement`. This is another issue preventing us from inlining ReactElements as simple object literals.
 
-### Solution: Just use an Array and key={…}
+### Solution: Just use an Array and key={…} {#solution-just-use-an-array-and-key}
 
 Most of the time you can just use an array with keyed ReactElements.
 
@@ -199,7 +199,7 @@ var children = items.map(item => <span key={item.title} />);
 <div>{children}</div>
 ```
 
-### Solution: React.addons.createFragment
+### Solution: React.addons.createFragment {#solution-reactaddonscreatefragment}
 
 However, this is not always possible if you’re trying to add a prefix key to an unknown set (e.g. this.props.children). It is also not always the easiest upgrade path. Therefore, we are adding a helper to `React.addons` called `createFragment()`. This accepts a keyed object and returns an opaque type.
 
@@ -211,7 +211,7 @@ The exact signature of this kind of fragment will be determined later. It will l
 
 Note: This will still not be valid as the direct return value of `render()`. Unfortunately, they still need to be wrapped in a `<div />` or some other element.
 
-## Compiler Optimizations: Unlocked!
+## Compiler Optimizations: Unlocked! {#compiler-optimizations-unlocked}
 
 These changes also unlock several possible compiler optimizations for static content in React 0.14. These optimizations were previously only available to template-based frameworks. They will now also be possible for React code! Both for JSX and `React.createElement/Factory`*!
 
@@ -223,7 +223,7 @@ See these GitHub Issues for a deep dive into compiler optimizations:
 
 \* If you use the recommended pattern of explicit React.createFactory calls on the consumer side - since they are easily statically analyzed.
 
-## Rationale
+## Rationale {#rationale}
 
 I thought that these changes were particularly important because the mere existence of these patterns means that even components that DON’T use these patterns have to pay the price. There are other problematic patterns such as mutating state, but they’re at least localized to a component subtree so they don’t harm the ecosystem.
 
diff --git a/content/blog/2015-03-03-react-v0.13-rc2.md b/content/blog/2015-03-03-react-v0.13-rc2.md
index 76e6ec25cd..10ab150a4f 100644
--- a/content/blog/2015-03-03-react-v0.13-rc2.md
+++ b/content/blog/2015-03-03-react-v0.13-rc2.md
@@ -25,7 +25,7 @@ We've also published version `0.13.0-rc2` of the `react` and `react-tools` packa
 
 - - -
 
-## React.cloneElement
+## React.cloneElement {#reactcloneelement}
 
 In React v0.13 RC2 we will introduce a new API, similar to `React.addons.cloneWithProps`, with this signature:
 
diff --git a/content/blog/2015-03-04-community-roundup-25.md b/content/blog/2015-03-04-community-roundup-25.md
index c1f4e04bca..c5a23249c4 100644
--- a/content/blog/2015-03-04-community-roundup-25.md
+++ b/content/blog/2015-03-04-community-roundup-25.md
@@ -4,7 +4,7 @@ layout: post
 author: [matthewjohnston4]
 ---
 
-## React 101
+## React 101 {#react-101}
 
 Interest in React has been exploding recently, so it's a good time to explore some great recent tutorials and videos that cover getting started.
 
@@ -22,7 +22,7 @@ Our own [Sebastian Markbåge](https://github.com/sebmarkbage) was on the [Web Pl
 
 <iframe style="border: none" src="//html5-player.libsyn.com/embed/episode/id/3370114/height/75/width/200/theme/standard-mini/direction/no/autoplay/no/autonext/no/thumbnail/yes/preload/no/no_addthis/no/" height="26" width="100%" scrolling="no" allowfullscreen="" webkitallowfullscreen="" mozallowfullscreen="" oallowfullscreen="" msallowfullscreen=""></iframe>
 
-## Community Additions
+## Community Additions {#community-additions}
 
 [Formidable Labs](https://github.com/FormidableLabs) have been busy, as they've also[ just launched Radium](http://projects.formidablelabs.com/radium/), a React component that provides you with the ability to use inline styles instead of CSS. They're also [looking for some help](http://projects.formidablelabs.com/radium-bootstrap/) contributing to a Radium Bootstrap implementation.
 
@@ -34,7 +34,7 @@ Our own [Sebastian Markbåge](https://github.com/sebmarkbage) was on the [Web Pl
 
 [react-meteor](https://github.com/reactjs/react-meteor), a package that replaces the default templating system of the Meteor platform with React, recently received a big update.
 
-## Rebuilding with React
+## Rebuilding with React {#rebuilding-with-react}
 
 [Rich Manalang](https://github.com/rmanalan) from Atlassian [explains why](https://developer.atlassian.com/blog/2015/02/rebuilding-hipchat-with-react/) they rebuilt their HipChat web client from scratch using React, and how they're already using it to rebuild their native desktop clients.
 
@@ -46,11 +46,11 @@ A team from New Zealand called [Atomic](https://atomic.io/) is [building web and
 
 <center><a href="http://polarrist.tumblr.com/post/111290422225/polarr-photo-editor-2-0-alpha-is-here"><img src="../images/blog/polarr.jpg"></a></center>
 
-## It's F8!
+## It's F8! {#its-f8}
 
 F8 2015 is just around the corner, and you can [sign up for the video streams](https://www.fbf8.com/stream.html) in advance because we're sure to be covering all things React.
 
-## Meetups
+## Meetups {#meetups}
 
 <table><tr><td width="50%" valign="top">
 <blockquote class="twitter-tweet" lang="en"><p>Our <a href="https://twitter.com/reactjs">@reactjs</a> meetup is in full effect <a href="https://twitter.com/hashtag/ReactJS?src=hash">#ReactJS</a> &#10;&#10;btw bathroom code is 6012 lol <a href="http://t.co/7iUpvmm3zz">pic.twitter.com/7iUpvmm3zz</a></p>&mdash; littleBits (@littleBits) <a href="https://twitter.com/littleBits/status/570373833028472832">February 25, 2015</a></blockquote>
diff --git a/content/blog/2015-03-10-react-v0.13.md b/content/blog/2015-03-10-react-v0.13.md
index 76d1ca0253..47a450d2e5 100644
--- a/content/blog/2015-03-10-react-v0.13.md
+++ b/content/blog/2015-03-10-react-v0.13.md
@@ -29,11 +29,11 @@ We've also published version `0.13.0` of the `react` and `react-tools` packages
 
 - - -
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes}
 
 * Deprecated patterns that warned in 0.12 no longer work: most prominently, calling component classes without using JSX or React.createElement and using non-component functions with JSX or createElement
 * Mutating `props` after an element is created is deprecated and will cause warnings in development mode; future versions of React will incorporate performance optimizations assuming that props aren't mutated
@@ -43,7 +43,7 @@ We've also published version `0.13.0` of the `react` and `react-tools` packages
 * `setState` and `forceUpdate` on an unmounted component now warns instead of throwing. That avoids a possible race condition with Promises.
 * Access to most internal properties has been completely removed, including `this._pendingState` and `this._rootNodeID`.
 
-#### New Features
+#### New Features {#new-features}
 
 * Support for using ES6 classes to build React components; see the [v0.13.0 beta 1 notes](/blog/2015/01/27/react-v0.13.0-beta-1.html) for details.
 * Added new top-level API `React.findDOMNode(component)`, which should be used in place of `component.getDOMNode()`. The base class for ES6-based components will not have `getDOMNode`. This change will enable some more patterns moving forward.
@@ -52,31 +52,31 @@ We've also published version `0.13.0` of the `react` and `react-tools` packages
 * `this.setState()` can now take a function as the first argument for transactional state updates, such as `this.setState((state, props) => ({count: state.count + 1}));` – this means that you no longer need to use `this._pendingState`, which is now gone.
 * Support for iterators and immutable-js sequences as children.
 
-#### Deprecations
+#### Deprecations {#deprecations}
 
 * `ComponentClass.type` is deprecated. Just use `ComponentClass` (usually as `element.type === ComponentClass`).
 * Some methods that are available on `createClass`-based components are removed or deprecated from ES6 classes (`getDOMNode`, `replaceState`, `isMounted`, `setProps`, `replaceProps`).
 
 
-### React with Add-Ons
+### React with Add-Ons {#react-with-add-ons}
 
-#### New Features
+#### New Features {#new-features-1}
 
 * [`React.addons.createFragment` was added](/docs/create-fragment.html) for adding keys to entire sets of children.
 
-#### Deprecations
+#### Deprecations {#deprecations-1}
 
 * `React.addons.classSet` is now deprecated. This functionality can be replaced with several freely available modules. [classnames](https://www.npmjs.com/package/classnames) is one such module.
 * Calls to `React.addons.cloneWithProps` can be migrated to use `React.cloneElement` instead – make sure to merge `style` and `className` manually if desired.
 
 
-### React Tools
+### React Tools {#react-tools}
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes-1}
 
 * When transforming ES6 syntax, `class` methods are no longer enumerable by default, which requires `Object.defineProperty`; if you support browsers such as IE8, you can pass `--target es3` to mirror the old behavior
 
-#### New Features
+#### New Features {#new-features-2}
 
 * `--target` option is available on the jsx command, allowing users to specify and ECMAScript version to target.
   * `es5` is the default.
@@ -84,7 +84,7 @@ We've also published version `0.13.0` of the `react` and `react-tools` packages
 * The transform for the call spread operator has also been enabled.
 
 
-### JSX
+### JSX {#jsx}
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes-2}
 * A change was made to how some JSX was parsed, specifically around the use of `>` or `}` when inside an element. Previously it would be treated as a string but now it will be treated as a parse error. The [`jsx_orphaned_brackets_transformer`](https://www.npmjs.com/package/jsx_orphaned_brackets_transformer) package on npm can be used to find and fix potential issues in your JSX code.
diff --git a/content/blog/2015-03-16-react-v0.13.1.md b/content/blog/2015-03-16-react-v0.13.1.md
index 16b2e1bc0d..89243418a4 100644
--- a/content/blog/2015-03-16-react-v0.13.1.md
+++ b/content/blog/2015-03-16-react-v0.13.1.md
@@ -22,26 +22,26 @@ We've also published version `0.13.1` of the `react` and `react-tools` packages
 
 - - -
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes}
 
 * Don't throw when rendering empty `<select>` elements
 * Ensure updating `style` works when transitioning from `null`
 
-### React with Add-Ons
+### React with Add-Ons {#react-with-add-ons}
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes-1}
 
 * TestUtils: Don't warn about `getDOMNode` for ES6 classes
 * TestUtils: Ensure wrapped full page components (`<html>`, `<head>`, `<body>`) are treated as DOM components
 * Perf: Stop double-counting DOM components
 
-### React Tools
+### React Tools {#react-tools}
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes-2}
 
 * Fix option parsing for `--non-strict-es6module`
 
diff --git a/content/blog/2015-03-19-building-the-facebook-news-feed-with-relay.md b/content/blog/2015-03-19-building-the-facebook-news-feed-with-relay.md
index 18933939ab..ffc443ae0f 100644
--- a/content/blog/2015-03-19-building-the-facebook-news-feed-with-relay.md
+++ b/content/blog/2015-03-19-building-the-facebook-news-feed-with-relay.md
@@ -9,7 +9,7 @@ We're working hard to prepare GraphQL and Relay for public release. In the meant
 
 <br/>
 
-## The Relay Architecture
+## The Relay Architecture {#the-relay-architecture}
 
 The diagram below shows the main parts of the Relay architecture on the client and the server:
 
@@ -26,7 +26,7 @@ This post will focus on **Relay components** that describe encapsulated units of
 
 <br/>
 
-## A Relay Application
+## A Relay Application {#a-relay-application}
 
 To see how components work and can be composed, let's implement a basic version of the Facebook News Feed in Relay. Our application will have two components: a `<NewsFeed>` that renders a list of `<Story>` items. We'll introduce the plain React version of each component first and then convert it to a Relay component. The goal is something like the following:
 
@@ -34,7 +34,7 @@ To see how components work and can be composed, let's implement a basic version
 
 <br/>
 
-## The `<Story>` Begins
+## The `<Story>` Begins {#the-story-begins}
 
 The first step is a React `<Story>` component that accepts a `story` prop with the story's text and author information. Note that all examples uses ES6 syntax and elide presentation details to focus on the pattern of data access.
 
@@ -56,7 +56,7 @@ export default class Story extends React.Component {
 
 <br/>
 
-## What's the `<Story>`?
+## What's the `<Story>`? {#whats-the-story}
 
 Relay automates the process of fetching data for components by wrapping existing React components in Relay containers (themselves React components):
 
@@ -102,7 +102,7 @@ Queries use ES6 template literals tagged with the `Relay.QL` function. Similar t
 
 <br/>
 
-## `<Story>`s on Demand
+## `<Story>`s on Demand {#storys-on-demand}
 
 We can render a Relay component by providing Relay with the component (`<Story>`) and the ID of the data (a story ID). Given this information, Relay will first fetch the results of the query and then `render()` the component. The value of `props.story` will be a plain JavaScript object such as the following:
 
@@ -126,7 +126,7 @@ The diagram below shows how Relay containers make data available to our React co
 
 <br/>
 
-## `<NewsFeed>` Worthy
+## `<NewsFeed>` Worthy {#newsfeed-worthy}
 
 Now that the `<Story>` is over we can continue with the `<NewsFeed>` component. Again, we'll start with a React version:
 
@@ -153,7 +153,7 @@ module.exports = NewsFeed;
 
 <br/>
 
-## All the News Fit to be Relayed
+## All the News Fit to be Relayed {#all-the-news-fit-to-be-relayed}
 
 `<NewsFeed>` has two new requirements: it composes `<Story>` and requests more data at runtime.
 
@@ -207,7 +207,7 @@ Now when `loadMore()` is called, Relay will send a GraphQL request for the addit
 
 <br/>
 
-## In Conclusion
+## In Conclusion {#in-conclusion}
 
 These two components form a solid core for our application. With the use of Relay containers and GraphQL queries, we've enabled the following benefits:
 
diff --git a/content/blog/2015-03-30-community-roundup-26.md b/content/blog/2015-03-30-community-roundup-26.md
index 1ad461ad65..ae2dc49792 100644
--- a/content/blog/2015-03-30-community-roundup-26.md
+++ b/content/blog/2015-03-30-community-roundup-26.md
@@ -9,14 +9,14 @@ We open sourced React Native last week and the community reception blew away all
 <blockquote class="twitter-tweet" lang="en"><p><a href="https://twitter.com/hashtag/reactnative?src=hash">#reactnative</a> is like when you get a new expansion pack, and everybody is running around clueless about which NPC to talk to for the quests</p>&mdash; Ryan Florence (@ryanflorence) <a href="https://twitter.com/ryanflorence/status/581810423554543616">March 28, 2015</a></blockquote>
 
 
-## When is React Native Android coming?
+## When is React Native Android coming? {#when-is-react-native-android-coming}
 
 **Give us 6 months**. At Facebook, we strive to only open-source projects that we are using in production. While the Android backend for React Native is starting to work (see video below at 37min), it hasn't been shipped to any users yet. There's a lot of work that goes into open-sourcing a project, and we want to do it right so that you have a great experience when using it.
 
 <iframe width="650" height="315" src="https://www.youtube-nocookie.com/embed/X6YbAKiLCLU?start=2220" frameborder="0" allowfullscreen></iframe>
 
 
-## Ray Wenderlich - Property Finder
+## Ray Wenderlich - Property Finder {#ray-wenderlich---property-finder}
 
 If you are getting started with React Native, you should absolutely [use this tutorial](http://www.raywenderlich.com/99473/introducing-react-native-building-apps-javascript) from Colin Eberhardt. It goes through all the steps to make a reasonably complete app.
 
@@ -25,59 +25,59 @@ If you are getting started with React Native, you should absolutely [use this tu
 Colin also [blogged about his experience using React Native](http://blog.scottlogic.com/2015/03/26/react-native-retrospective.html) for a few weeks and gives his thoughts on why you would or wouldn't use it.
 
 
-## The Changelog
+## The Changelog {#the-changelog}
 
 Spencer Ahrens and I had the great pleasure to talk about React Native on [The Changelog](https://thechangelog.com/149/) podcast. It was really fun to chat for an hour, I hope that you'll enjoy listening to it. :)
 
 <audio src="http://fdlyr.co/d/changelog/cdn.5by5.tv/audio/broadcasts/changelog/2015/changelog-149.mp3" controls="controls" style="width: 100%"></audio>
 
 
-## Hacker News
+## Hacker News {#hacker-news}
 
 Less than 24 hours after React Native was open sourced, Simarpreet Singh built an [Hacker News reader app from scratch](https://github.com/iSimar/HackerNews-React-Native). It's unbelievable how fast he was able to pull it off!
 
 [![](../images/blog/hacker-news-react-native.png)](https://github.com/iSimar/HackerNews-React-Native)
 
 
-## Parse + React
+## Parse + React {#parse--react}
 
 There's a huge ecosystem of JavaScript modules on npm and React Native was designed to work well with the ones that don't have DOM dependencies. Parse is a great example; you can `npm install parse` on your React Native project and it'll work as is. :) We still have [a](https://github.com/facebook/react-native/issues/406) [few](https://github.com/facebook/react-native/issues/370) [issues](https://github.com/facebook/react-native/issues/316) to solve; please create an issue if your favorite library doesn't work out of the box.
 
 [![](../images/blog/parse-react.jpg)](http://blog.parse.com/2015/03/25/parse-and-react-shared-chemistry/)
 
 
-## tcomb-form-native
+## tcomb-form-native {#tcomb-form-native}
 
 Giulio Canti is the author of the [tcomb-form library](https://github.com/gcanti/tcomb-form) for React. He already [ported it to React Native](https://github.com/gcanti/tcomb-form-native) and it looks great!
 
 [![](../images/blog/tcomb-react-native.png)](https://github.com/gcanti/tcomb-form-native)
 
 
-## Facebook Login with React Native
+## Facebook Login with React Native {#facebook-login-with-react-native}
 
 One of the reason we built React Native is to be able to use all the libraries in the native ecosystem. Brent Vatne leads the way and explains [how to use Facebook Login with React Native](http://brentvatne.ca/facebook-login-with-react-native/).
 
 
-## Modus Create
+## Modus Create {#modus-create}
 
 Jay Garcia spent a lot of time during the beta working on a NES music player with React Native. He wrote a blog post to share his experience and explains some code snippets.
 
 [![](../images/blog/modus-create.gif)](http://moduscreate.com/react-native-has-landed/)
 
 
-## React Native with Babel and webpack
+## React Native with Babel and webpack {#react-native-with-babel-and-webpack}
 
 React Native ships with a custom packager and custom ES6 transforms instead of using what the open source community settled on such as [webpack](https://webpack.js.org/) and [Babel](https://babeljs.io/). The main reason for this is performance – we couldn't get those tools to have sub-second reload time on a large codebase.
 
 Roman Liutikov found a way to [use webpack and Babel to run on React Native](https://github.com/roman01la/react-native-babel)! In the future, we want to work with those projects to provide cleaner extension mechanisms.
 
 
-## A Dynamic, Crazy, Native Mobile Future—Powered by JavaScript
+## A Dynamic, Crazy, Native Mobile Future—Powered by JavaScript {#a-dynamic-crazy-native-mobile-futurepowered-by-javascript}
 
 Clay Allsopp wrote a post about [all the crazy things you could do with a JavaScript engine that renders native views](https://medium.com/@clayallsopp/a-dynamic-crazy-native-mobile-future-powered-by-javascript-70f2d56b1987). What about native embeds, seamless native browser, native search engine or even app generation...
 
 
-## Random Tweet
+## Random Tweet {#random-tweet}
 
 We've spent a lot of efforts getting the onboarding as easy as possible and we're really happy that people noticed. We still have a lot of work to do on documentation, stay tuned!
 
diff --git a/content/blog/2015-04-17-react-native-v0.4.md b/content/blog/2015-04-17-react-native-v0.4.md
index 00fef05944..6b3a2a627a 100644
--- a/content/blog/2015-04-17-react-native-v0.4.md
+++ b/content/blog/2015-04-17-react-native-v0.4.md
@@ -8,7 +8,7 @@ It's been three weeks since we open sourced React Native and there's been some i
 
 I'd especially like to thank community members Brent Vatne and James Ide who have both already contributed meaningfully to the project and have been extremely helpful on IRC and with issues and pull requests
 
-## Changelog
+## Changelog {#changelog}
 
 The main focus of the past few weeks has been to make React Native the best possible experience for people outside of Facebook. Here's a high level summary of what's happened since we open sourced:
 
@@ -20,6 +20,6 @@ The main focus of the past few weeks has been to make React Native the best poss
 * **Patent Grant**: Many of you had concerns and questions around the PATENTS file. We pushed [a new version of the grant](https://code.facebook.com/posts/1639473982937255/updating-our-open-source-patent-grant/).
 * **Per commit history**: In order to synchronize from Facebook to GitHub, we used to do one giant commit every few days. We improved our tooling and now have per commit history that maintains author information (both internal and external from pull requests), and we retroactively applied this to historical diffs to provide proper attribution.
 
-## Where are we going?
+## Where are we going? {#where-are-we-going}
 
 In addition to supporting pull requests, issues, and general improvements, we're also working hard on our internal React Native integrations and on React Native for Android.
diff --git a/content/blog/2015-04-18-react-v0.13.2.md b/content/blog/2015-04-18-react-v0.13.2.md
index c0acbccf0f..c188fc3780 100644
--- a/content/blog/2015-04-18-react-v0.13.2.md
+++ b/content/blog/2015-04-18-react-v0.13.2.md
@@ -20,11 +20,11 @@ We've also published version `0.13.2` of the `react` and `react-tools` packages
 
 - - -
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### New Features
+#### New Features {#new-features}
 
 * Added `strokeDashoffset`, `flexPositive`, `flexNegative` to the list of unitless CSS properties
 * Added support for more DOM properties:
@@ -32,20 +32,20 @@ We've also published version `0.13.2` of the `react` and `react-tools` packages
   * `high`, `low`, `optimum` - for `<meter>` elements
   * `unselectable` - IE-specific property to prevent user selection
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes}
 
 * Fixed a case where re-rendering after rendering null didn't properly pass context
 * Fixed a case where re-rendering after rendering with `style={null}` didn't properly update `style`
 * Update `uglify` dependency to prevent a bug in IE8
 * Improved warnings
 
-### React with Add-Ons
+### React with Add-Ons {#react-with-add-ons}
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes-1}
 
 * Immutabilty Helpers: Ensure it supports `hasOwnProperty` as an object key
 
-### React Tools
+### React Tools {#react-tools}
 
 * Improve documentation for new options
 
diff --git a/content/blog/2015-05-01-graphql-introduction.md b/content/blog/2015-05-01-graphql-introduction.md
index ff6759dac6..e90ffc4df6 100644
--- a/content/blog/2015-05-01-graphql-introduction.md
+++ b/content/blog/2015-05-01-graphql-introduction.md
@@ -12,7 +12,7 @@ GraphQL was not invented to enable Relay. In fact, GraphQL predates Relay by nea
 We plan to open-source a reference implementation of a GraphQL server and publish a language specification in the coming months. Our goal is to evolve GraphQL to adapt to a wide range of backends, so that projects and companies can use this technology to access their own data. We believe that this is a compelling way to structure servers and to provide powerful abstractions, frameworks and tools – including, but not exclusively, Relay – for product developers.
 
 
-## What is GraphQL?
+## What is GraphQL? {#what-is-graphql}
 
 A GraphQL query is a string interpreted by a server that returns data in a specified format. Here is an example query: 
 
@@ -62,12 +62,12 @@ We will dig into the syntax and semantics of GraphQL in a later post, but even a
 * **Introspective:** GraphQL is introspective. Clients and tools can query the type system using the GraphQL syntax itself. This is a powerful platform for building tools and client software, such as automatic parsing of incoming data into strongly-typed interfaces. It is especially useful in statically typed languages such as Swift, Objective-C and Java, as it obviates the need for repetitive and error-prone code to shuffle raw, untyped JSON into strongly-typed business objects.
 
 
-## Why invent something new?
+## Why invent something new? {#why-invent-something-new}
 
 Obviously GraphQL is not the first system to manage client-server interactions. In today's world there are two dominant architectural styles for client-server interaction: REST and *ad hoc* endpoints. 
 
 
-### REST
+### REST {#rest}
 
 REST, an acronym for Representational State Transfer, is an architectural style rather than a formal protocol. There is actually much debate about what exactly REST is and is not. We wish to avoid such debates. We are interested in the typical attributes of systems that *self-identify* as REST, rather than systems which are formally REST.
 
@@ -85,7 +85,7 @@ Nearly all externally facing REST APIs we know of trend or end up in these non-i
 Because of multiple round-trips and over-fetching, applications built in the REST style inevitably end up building *ad hoc* endpoints that are superficially in the REST style. These actually couple the data to a particular view which explicitly violates one of REST's major goals. Most REST systems of any complexity end up as a continuum of endpoints that span from “traditional” REST to *ad hoc* endpoints.
 
 
-### Ad Hoc Endpoints
+### Ad Hoc Endpoints {#ad-hoc-endpoints}
 
 Many applications have no formalized client-server contract. Product developers access server capabilities through *ad hoc* endpoints and write custom code to fetch the data they need. Servers define procedures, and they return data. This approach has the virtue of simplicity, but can often become untenable as systems age.
 
@@ -101,7 +101,7 @@ This is a liberating platform for product developers. With GraphQL, no more cont
 Product developers are free to focus on their client software and requirements while rarely leaving their development environment; they can more confidently support shipped clients as a system evolves; and they are using a protocol designed to operate well within the constraints of mobile applications. Product developers can query for exactly what they want, in the way they think about it, across their entire application's data model. 
 
 
-## What's next?
+## What's next? {#whats-next}
 
 Over the coming months, we will share more technical details about GraphQL, including additional language features, tools that support it, and how it is built and used at Facebook. These posts will culminate in a formal specification of GraphQL to guide implementors across various languages and platforms. We also plan on releasing a reference implementation in the summer, in order to provide a basis for custom deployments and a platform for experimentation. We're incredibly excited to share this system and work with the open source community to improve it.
 
diff --git a/content/blog/2015-05-08-react-v0.13.3.md b/content/blog/2015-05-08-react-v0.13.3.md
index 05467d48bd..00c72feded 100644
--- a/content/blog/2015-05-08-react-v0.13.3.md
+++ b/content/blog/2015-05-08-react-v0.13.3.md
@@ -20,23 +20,23 @@ We've also published version `0.13.3` of the `react` and `react-tools` packages
 
 - - -
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### New Features
+#### New Features {#new-features}
 
 * Added `clipPath` element and attribute for SVG
 * Improved warnings for deprecated methods in plain JS classes
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes}
 
 * Loosened `dangerouslySetInnerHTML` restrictions so `{__html: undefined}` will no longer throw
 * Fixed extraneous context warning with non-pure `getChildContext`
 * Ensure `replaceState(obj)` retains prototype of `obj`
 
-### React with Add-ons
+### React with Add-ons {#react-with-add-ons}
 
-### Bug Fixes
+### Bug Fixes {#bug-fixes-1}
 
 * Test Utils: Ensure that shallow rendering works when components define `contextTypes`
diff --git a/content/blog/2015-06-12-deprecating-jstransform-and-react-tools.md b/content/blog/2015-06-12-deprecating-jstransform-and-react-tools.md
index b3c371d87b..07b092fec1 100644
--- a/content/blog/2015-06-12-deprecating-jstransform-and-react-tools.md
+++ b/content/blog/2015-06-12-deprecating-jstransform-and-react-tools.md
@@ -9,21 +9,21 @@ As many people have noticed already, React and React Native have both switched t
 
 react-tools has always been a very thin wrapper around JSTransform. It has served as a great tool for the community to get up and running, but at this point we're ready to [let it go](https://www.youtube.com/watch?v=moSFlvxnbgk). We won't ship a new version for v0.14.
 
-## Migrating to Babel
+## Migrating to Babel {#migrating-to-babel}
 
 Many people in the React and broader JavaScript community have already adopted Babel. It has [integrations with a number of tools](http://babeljs.io/docs/setup/). Depending on your tool, you'll want to read up on the instructions.
 
 We've been working with the Babel team as we started making use of it and we're confident that it will be the right tool to use with React.
 
-## Other Deprecations
+## Other Deprecations {#other-deprecations}
 
-### esprima-fb
+### esprima-fb {#esprima-fb}
 
 As a result of no longer maintaining JSTransform, we no longer have a need to maintain our Esprima fork ([esprima-fb](https://github.com/facebook/esprima/)). The upstream Esprima and other esprima-based forks, like Espree, have been doing an excellent job of supporting new language features recently. If you have a need of an esprima-based parser, we encourage you to look into using one of those.
 
 Alternatively, if you need to parse JSX, take a look at [acorn](https://github.com/marijnh/acorn) parser in combination with [acorn-jsx](https://github.com/RReverser/acorn-jsx) plugin which is used inside of Babel and thus always supports the latest syntax.
 
-### JSXTransformer
+### JSXTransformer {#jsxtransformer}
 JSXTransformer is another tool we built specifically for consuming JSX in the browser. It was always intended as a quick way to prototype code before setting up a build process. It would look for `<script>` tags with `type="text/jsx"` and then transform and run. This ran the same code that react-tools ran on the server. Babel ships with [a nearly identical tool](https://babeljs.io/docs/usage/browser/), which has already been integrated into [JS Bin](https://jsbin.com/).
 
 We'll be deprecating JSXTransformer, however the current version will still be available from various CDNs and Bower.
diff --git a/content/blog/2015-07-03-react-v0.14-beta-1.md b/content/blog/2015-07-03-react-v0.14-beta-1.md
index 4f1450556a..e4171f0774 100644
--- a/content/blog/2015-07-03-react-v0.14-beta-1.md
+++ b/content/blog/2015-07-03-react-v0.14-beta-1.md
@@ -9,7 +9,7 @@ With React 0.14, we're continuing to let React mature and to make minor changes
 
 You can install the new beta with `npm install react@0.14.0-beta1` and `npm install react-dom@0.14.0-beta1`. As mentioned in [Deprecating react-tools](/blog/2015/06/12/deprecating-jstransform-and-react-tools.html), we're no longer updating the react-tools package so this release doesn't include a new version of it. Please try the new version out and let us know what you think, and please do file issues on our GitHub repo if you run into any problems.
 
-## Two Packages
+## Two Packages {#two-packages}
 
 As we look at packages like [react-native](https://github.com/facebook/react-native), [react-art](https://github.com/reactjs/react-art), [react-canvas](https://github.com/Flipboard/react-canvas), and [react-three](https://github.com/Izzimach/react-three), it's become clear that the beauty and essence of React has nothing to do with browsers or the DOM.
 
@@ -42,7 +42,7 @@ The addons have moved to separate packages as well: `react-addons-clone-with-pro
 
 For now, please use the same version of `react` and `react-dom` in your apps to avoid versioning problems -- but we plan to remove this requirement later. (This release includes the old methods in the `react` package with a deprecation warning, but they'll be removed completely in 0.15.)
 
-## DOM node refs
+## DOM node refs {#dom-node-refs}
 
 The other big change we're making in this release is exposing refs to DOM components as the DOM node itself. That means: we looked at what you can do with a `ref` to a DOM component and realized that the only useful thing you can do with it is call `this.refs.giraffe.getDOMNode()` to get the underlying DOM node. In this release, `this.refs.giraffe` _is_ the actual DOM node.
 
diff --git a/content/blog/2015-08-03-new-react-devtools-beta.md b/content/blog/2015-08-03-new-react-devtools-beta.md
index 8f7565cc0f..97e60181f4 100644
--- a/content/blog/2015-08-03-new-react-devtools-beta.md
+++ b/content/blog/2015-08-03-new-react-devtools-beta.md
@@ -8,7 +8,7 @@ out!
 
 ![The full devtools gif](../images/blog/devtools-full.gif)
 
-## Why entirely new?
+## Why entirely new? {#why-entirely-new}
 
 Perhaps the biggest reason was to create a defined API for dealing with
 internals, so that other tools could benefit as well and not have to depend on
@@ -20,18 +20,18 @@ is imperative, mutation-driven, and tightly integrated with Chrome-specific
 APIs. The new devtools are much less coupled to Chrome, and easier to reason
 about thanks to React.
 
-## What are the benefits?
+## What are the benefits? {#what-are-the-benefits}
 
 - 100% React
 - Firefox compatible
 - React Native compatible
 - more extensible & hackable
 
-## Are there any new features?
+## Are there any new features? {#are-there-any-new-features}
 
 Yeah!
 
-### The Tree View
+### The Tree View {#the-tree-view}
 
 ![The new tree view of the devtools](../images/blog/devtools-tree-view.png)
 
@@ -47,21 +47,21 @@ Yeah!
   - Show the source for a component in the "Sources" pane
   - Show the element in the "Elements" pane
 
-### Searching
+### Searching {#searching}
 
 Select the search bar (or press "/"), and start searching for a component by
 name.
 
 ![](../images/blog/devtools-search.gif)
 
-### The Side Pane
+### The Side Pane {#the-side-pane}
 
 - Now shows the `context` for a component
 - Right-click to store a prop/state value as a global variable
 
 ![](../images/blog/devtools-side-pane.gif)
 
-## How do I install it?
+## How do I install it? {#how-do-i-install-it}
 
 First, disable the Chrome web store version, or it will break things. Then
 [download the .crx](https://github.com/facebook/react-devtools/releases) and
@@ -72,19 +72,19 @@ there.
 Once we've determined that there aren't any major regressions, we'll update
 the official web store version, and everyone will be automatically upgraded.
 
-### Also Firefox!
+### Also Firefox! {#also-firefox}
 
 We also have an initial version of the devtools for Firefox, which you can
 download from the same [release page](https://github.com/facebook/react-devtools/releases).
 
-## Feedback welcome
+## Feedback welcome {#feedback-welcome}
 
 Let us know what issues you run into
 [on GitHub](https://github.com/facebook/react-devtools/issues), and check out
 [the README](https://github.com/facebook/react-devtools/tree/devtools-next)
 for more info.
 
-## Update
+## Update {#update}
 *August 12, 2015*
 
 A second beta is out, with a number of bugfixes. It is also listed on the
diff --git a/content/blog/2015-08-11-relay-technical-preview.md b/content/blog/2015-08-11-relay-technical-preview.md
index c3ee61c974..c574ccce25 100644
--- a/content/blog/2015-08-11-relay-technical-preview.md
+++ b/content/blog/2015-08-11-relay-technical-preview.md
@@ -3,11 +3,11 @@ title: "Relay Technical Preview"
 author: [josephsavona]
 ---
 
-# Relay
+# Relay {#relay}
 
 Today we're excited to share an update on Relay - the technical preview is now open-source and [available on GitHub](http://github.com/facebook/relay).
 
-## Why Relay
+## Why Relay {#why-relay}
 
 While React simplified the process of developing complex user-interfaces, it left open the question of how to interact with data on the server. It turns out that this was a significant source of friction for our developers; fragile coupling between client and server caused data-related bugs and made iteration harder. Furthermore, developers were forced to constantly re-implement complex async logic instead of focusing on their apps. Relay addresses these concerns by borrowing important lessons from React: it provides *declarative, component-oriented data fetching for React applications*.
 
@@ -17,13 +17,13 @@ Relay is also component-oriented, extending the notion of a React component to i
 
 Relay is in use at Facebook in production apps, and we're using it more and more because *Relay lets developers focus on their products and move fast*. It's working for us and we'd like to share it with the community.
 
-## What's Included
+## What's Included {#whats-included}
 
 We're open-sourcing a technical preview of Relay - the core framework that we use internally, with some modifications for use outside Facebook. As this is the first release, it's good to keep in mind that there may be some incomplete or missing features. We'll continue to develop Relay and are working closely with the GraphQL community to ensure that Relay tracks updates during GraphQL's RFC period. But we couldn't wait any longer to get this in your hands, and we're looking forward to your feedback and contributions.
 
 Relay is available on [GitHub](http://github.com/facebook/relay) and [npm](https://www.npmjs.com/package/react-relay).
 
-## What's Next
+## What's Next {#whats-next}
 
 The team is super excited to be releasing Relay - and just as excited about what's next. Here are some of the things we'll be focusing on:
 
diff --git a/content/blog/2015-09-02-new-react-developer-tools.md b/content/blog/2015-09-02-new-react-developer-tools.md
index cf92d647a9..1651cf2157 100644
--- a/content/blog/2015-09-02-new-react-developer-tools.md
+++ b/content/blog/2015-09-02-new-react-developer-tools.md
@@ -18,7 +18,7 @@ It contains a handful of new features, including:
 * Right-click any props or state value to make it available as `$tmp` from the console
 * Full React Native support
 
-## Installation
+## Installation {#installation}
 
 Download the new devtools from the [Chrome Web Store](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi) and on [Mozilla Add-ons](https://addons.mozilla.org/en-US/firefox/addon/react-devtools/) for Firefox. If you're developing using React, we highly recommend installing these devtools.
 
diff --git a/content/blog/2015-09-10-react-v0.14-rc1.md b/content/blog/2015-09-10-react-v0.14-rc1.md
index 1992e3271b..e69c93ab48 100644
--- a/content/blog/2015-09-10-react-v0.14-rc1.md
+++ b/content/blog/2015-09-10-react-v0.14-rc1.md
@@ -7,7 +7,7 @@ We’re happy to announce our first release candidate for React 0.14! We gave yo
 
 Let us know if you run into any problems by filing issues on our [GitHub repo](https://github.com/facebook/react).
 
-## Installation
+## Installation {#installation}
 
 We recommend using React from `npm` and using a tool like browserify or webpack to build your code into a single package:
 
@@ -30,9 +30,9 @@ If you can’t use `npm` yet, we also provide pre-built browser builds for your
 
 These builds are also available in the `react` package on bower.
 
-## Changelog
+## Changelog {#changelog}
 
-### Major changes
+### Major changes {#major-changes}
 
 - #### Two Packages: React and React DOM
 
@@ -118,7 +118,7 @@ These builds are also available in the `react` package on bower.
     **Constant hoisting for React elements:** The `optimisation.react.constantElements` transform hoists element creation to the top level for subtrees that are fully static, which reduces calls to `React.createElement` and the resulting allocations. More importantly, it tells React that the subtree hasn’t changed so React can completely skip it when reconciling.
 
 
-### Breaking changes
+### Breaking changes {#breaking-changes}
 
 As always, we have a few breaking changes in this release. Whenever we make large changes, we warn for at least one release so you have time to update your code. The Facebook codebase has over 15,000 React components, so on the React team, we always try to minimize the pain of breaking changes.
 
@@ -133,7 +133,7 @@ And these two changes did not warn in 0.13 but should be easy to find and clean
 - `React.initializeTouchEvents` is no longer necessary and has been removed completely. Touch events now work automatically.
 - Add-Ons: Due to the DOM node refs change mentioned above, `TestUtils.findAllInRenderedTree` and related helpers are no longer able to take a DOM component, only a custom component.
 
-### New deprecations, introduced with a warning
+### New deprecations, introduced with a warning {#new-deprecations-introduced-with-a-warning}
 
 - Due to the DOM node refs change mentioned above, `this.getDOMNode()` is now deprecated and `ReactDOM.findDOMNode(this)` can be used instead. Note that in most cases, calling `findDOMNode` is now unnecessary – see the example above in the “DOM node refs” section.
 
@@ -145,7 +145,7 @@ And these two changes did not warn in 0.13 but should be easy to find and clean
 - Add-Ons: `cloneWithProps` is now deprecated. Use [`React.cloneElement`](/docs/top-level-api.html#react.cloneelement) instead (unlike `cloneWithProps`, `cloneElement` does not merge `className` or `style` automatically; you can merge them manually if needed).
 - Add-Ons: To improve reliability, `CSSTransitionGroup` will no longer listen to transition events. Instead, you should specify transition durations manually using props such as `transitionEnterTimeout={500}`.
 
-### Notable enhancements
+### Notable enhancements {#notable-enhancements}
 
 - Added `React.Children.toArray` which takes a nested children object and returns a flat array with keys assigned to each child. This helper makes it easier to manipulate collections of children in your `render` methods, especially if you want to reorder or slice `this.props.children` before passing it down. In addition, `React.Children.map` now returns plain arrays too.
 - React uses `console.error` instead of `console.warn` for warnings so that browsers show a full stack trace in the console. (Our warnings appear when you use patterns that will break in future releases and for code that is likely to behave unexpectedly, so we do consider our warnings to be “must-fix” errors.)
@@ -161,13 +161,13 @@ And these two changes did not warn in 0.13 but should be easy to find and clean
 - Add-Ons: A [`shallowCompare`](https://github.com/facebook/react/pull/3355) add-on has been added as a migration path for `PureRenderMixin` in ES6 classes.
 - Add-Ons: `CSSTransitionGroup` can now use [custom class names](https://github.com/facebook/react/blob/48942b85/docs/docs/10.1-animation.md#custom-classes) instead of appending `-enter-active` or similar to the transition name.
 
-### New helpful warnings
+### New helpful warnings {#new-helpful-warnings}
 
 - React DOM now warns you when nesting HTML elements invalidly, which helps you avoid surprising errors during updates.
 - Passing `document.body` directly as the container to `ReactDOM.render` now gives a warning as doing so can cause problems with browser extensions that modify the DOM.
 - Using multiple instances of React together is not supported, so we now warn when we detect this case to help you avoid running into the resulting problems.
 
-### Notable bug fixes
+### Notable bug fixes {#notable-bug-fixes}
 
 - Click events are handled by React DOM more reliably in mobile browsers, particularly in Mobile Safari.
 - SVG elements are created with the correct namespace in more cases.
diff --git a/content/blog/2015-09-14-community-roundup-27.md b/content/blog/2015-09-14-community-roundup-27.md
index e2b832a97c..01e4b394a4 100644
--- a/content/blog/2015-09-14-community-roundup-27.md
+++ b/content/blog/2015-09-14-community-roundup-27.md
@@ -6,7 +6,7 @@ author: [steveluscher]
 
 In the weeks following the [open-source release](/blog/2015/08/11/relay-technical-preview.html) of the Relay technical preview, the community has been abuzz with activity. We are honored to have been able to enjoy a steady stream of ideas and contributions from such a talented group of individuals. Let's take a look at some of the things we've achieved, together!
 
-## Teaching servers to speak GraphQL
+## Teaching servers to speak GraphQL {#teaching-servers-to-speak-graphql}
 
 Every great Relay app starts by finding a GraphQL server to talk to. The community has spent the past few weeks teaching GraphQL to a few backend systems.
 
@@ -24,7 +24,7 @@ Espen Hovlandsdal ([rexxars](https://github.com/rexxars)) built a [sql-to-graphq
 
 Mick Hansen ([mickhansen](https://github.com/mickhansen)) offers a set of [schema-building helpers](https://github.com/mickhansen/graphql-sequelize) for use with the [Sequelize ORM](http://docs.sequelizejs.com/en/latest/) for MySQL, PostgreSQL, SQLite, and MSSQL.
 
-## GraphQL beyond JavaScript
+## GraphQL beyond JavaScript {#graphql-beyond-javascript}
 
 Robert Mosolgo ([rmosolgo](https://github.com/rmosolgo)) brought the full set of schema-building and query execution tools to Ruby, in the form of [graphql-ruby](https://github.com/rmosolgo/graphql-ruby) and [graphql-relay-ruby](https://github.com/rmosolgo/graphql-relay-ruby). Check out his [Rails-based demo](https://github.com/rmosolgo/graphql-ruby-demo).
 
@@ -38,7 +38,7 @@ Oleg Ilyenko ([OlegIlyenko](https://github.com/OlegIlyenko)) made a beautiful an
 
 Joe McBride ([joemcbride](https://github.com/joemcbride)) has an up-and-running example of GraphQL for .NET, [graphql-dotnet](https://github.com/joemcbride/graphql-dotnet).
 
-## Show me, don't tell me
+## Show me, don't tell me {#show-me-dont-tell-me}
 
 Interact with this [visual tour of Relay's architecture](http://sgwilym.github.io/relay-visual-learners/) by Sam Gwilym ([sgwilym](https://github.com/sgwilym)).
 
@@ -48,19 +48,19 @@ Interact with this [visual tour of Relay's architecture](http://sgwilym.github.i
 
 Sam has already launched a product that leverages Relay's data-fetching, optimistic responses, pagination, and mutations &ndash; all atop a Ruby GraphQL server: [new.comique.co](http://new.comique.co/)
 
-## Skeletons in the closet
+## Skeletons in the closet {#skeletons-in-the-closet}
 
 Joseph Rollins ([fortruce](https://github.com/fortruce)) created a hot-reloading, auto schema-regenerating, [Relay skeleton](https://github.com/fortruce/relay-skeleton) that you can use to get up and running quickly.
 
 Michael Hart ([mhart](https://mhart)) built a [simple-relay-starter](https://github.com/mhart/simple-relay-starter) kit using Browserify.
 
-## Routing around
+## Routing around {#routing-around}
 
 Jimmy Jia ([taion](@taion)) and Gerald Monaco ([devknoll](@devknoll)) have been helping lost URLs find their way to Relay apps through their work on [react-router-relay](relay-tools/react-router-relay). Check out Christoph Nakazawa's ([cpojer](@cpojer)) [blog post](medium.com/@cpojer/relay-and-routing-36b5439bad9) on the topic. Jimmy completed the Relay TodoMVC example with routing, which you can check out at [taion/relay-todomvc](taion/relay-todomvc).
 
 Chen Hung-Tu ([transedward](https://github.com/transedward)) built a chat app atop the above mentioned router, with threaded conversations and pagination. Check it out at [transedward/relay-chat](https://github.com/transedward/relay-chat).
 
-## In your words
+## In your words {#in-your-words}
 
 <div class="skinny-row">
   <div class="skinny-col">
diff --git a/content/blog/2015-10-01-react-render-and-top-level-api.md b/content/blog/2015-10-01-react-render-and-top-level-api.md
index 4d7cdc22cc..10d8e94a5f 100644
--- a/content/blog/2015-10-01-react-render-and-top-level-api.md
+++ b/content/blog/2015-10-01-react-render-and-top-level-api.md
@@ -24,7 +24,7 @@ This is important and often forgotten. Forgetting to call `unmountComponentAtNod
 
 It is not unique to the DOM. If you want to insert a React Native view in the middle of an existing iOS app you will hit similar issues.
 
-## Helpers
+## Helpers {#helpers}
 
 If you have multiple React roots, or a single root that gets deleted over time, we recommend that you always create your own wrapper API. These will all look slightly different depending on what your outer system looks like. For example, at Facebook we have a system that automatically ties into our page transition router to automatically call `unmountComponentAtNode`.
 
@@ -32,7 +32,7 @@ Rather than calling `ReactDOM.render()` directly everywhere, consider writing/us
 
 In your environment you may want to always configure internationalization, routers, user data etc. If you have many different React roots it can be a pain to set up configuration nodes all over the place. By creating your own wrapper you can unify that configuration into one place.
 
-## Object Oriented Updates
+## Object Oriented Updates {#object-oriented-updates}
 
 If you call `ReactDOM.render` a second time to update properties, all your props are completely replaced.
 
diff --git a/content/blog/2015-10-07-react-v0.14.md b/content/blog/2015-10-07-react-v0.14.md
index 3db41a7ad9..fd539f9158 100644
--- a/content/blog/2015-10-07-react-v0.14.md
+++ b/content/blog/2015-10-07-react-v0.14.md
@@ -9,7 +9,7 @@ If you tried the release candidate, thank you – your support is invaluable and
 
 As with all of our releases, we consider this version to be stable enough to use in production and recommend that you upgrade in order to take advantage of our latest improvements.
 
-## Upgrade Guide
+## Upgrade Guide {#upgrade-guide}
 
 Like always, we have a few breaking changes in this release. We know changes can be painful (the Facebook codebase has over 15,000 React components), so we always try to make changes gradually in order to minimize the pain.
 
@@ -19,7 +19,7 @@ For the two major changes which require significant code changes, we've included
 
 See the changelog below for more details.
 
-## Installation
+## Installation {#installation}
 
 We recommend using React from `npm` and using a tool like browserify or webpack to build your code into a single bundle. To install the two packages:
 
@@ -39,9 +39,9 @@ If you can’t use `npm` yet, we provide pre-built browser builds for your conve
   Dev build with warnings: <https://fb.me/react-dom-0.14.0.js>  
   Minified build for production: <https://fb.me/react-dom-0.14.0.min.js>  
 
-## Changelog
+## Changelog {#changelog}
 
-### Major changes
+### Major changes {#major-changes}
 
 - #### Two Packages: React and React DOM
 
@@ -142,7 +142,7 @@ If you can’t use `npm` yet, we provide pre-built browser builds for your conve
     **Constant hoisting for React elements:** The `optimisation.react.constantElements` transform hoists element creation to the top level for subtrees that are fully static, which reduces calls to `React.createElement` and the resulting allocations. More importantly, it tells React that the subtree hasn’t changed so React can completely skip it when reconciling.
 
 
-### Breaking changes
+### Breaking changes {#breaking-changes}
 
 In almost all cases, we change our APIs gradually and warn for at least one release to give you time to clean up your code. These two breaking changes did not have a warning in 0.13 but should be easy to find and clean up:
 
@@ -155,7 +155,7 @@ These three breaking changes had a warning in 0.13, so you shouldn’t have to d
 - Plain objects are no longer supported as React children; arrays should be used instead. You can use the [`createFragment`](/docs/create-fragment.html) helper to migrate, which now returns an array.
 - Add-Ons: `classSet` has been removed. Use [classnames](https://github.com/JedWatson/classnames) instead.
 
-### New deprecations, introduced with a warning
+### New deprecations, introduced with a warning {#new-deprecations-introduced-with-a-warning}
 
 Each of these changes will continue to work as before with a new warning until the release of 0.15 so you can upgrade your code gradually.
 
@@ -169,7 +169,7 @@ Each of these changes will continue to work as before with a new warning until t
 - Add-Ons: `cloneWithProps` is now deprecated. Use [`React.cloneElement`](/docs/top-level-api.html#react.cloneelement) instead (unlike `cloneWithProps`, `cloneElement` does not merge `className` or `style` automatically; you can merge them manually if needed).
 - Add-Ons: To improve reliability, `CSSTransitionGroup` will no longer listen to transition events. Instead, you should specify transition durations manually using props such as `transitionEnterTimeout={500}`.
 
-### Notable enhancements
+### Notable enhancements {#notable-enhancements}
 
 - Added `React.Children.toArray` which takes a nested children object and returns a flat array with keys assigned to each child. This helper makes it easier to manipulate collections of children in your `render` methods, especially if you want to reorder or slice `this.props.children` before passing it down. In addition, `React.Children.map` now returns plain arrays too.
 - React uses `console.error` instead of `console.warn` for warnings so that browsers show a full stack trace in the console. (Our warnings appear when you use patterns that will break in future releases and for code that is likely to behave unexpectedly, so we do consider our warnings to be “must-fix” errors.)
@@ -185,13 +185,13 @@ Each of these changes will continue to work as before with a new warning until t
 - Add-Ons: A [`shallowCompare`](https://github.com/facebook/react/pull/3355) add-on has been added as a migration path for `PureRenderMixin` in ES6 classes.
 - Add-Ons: `CSSTransitionGroup` can now use [custom class names](https://github.com/facebook/react/blob/48942b85/docs/docs/10.1-animation.md#custom-classes) instead of appending `-enter-active` or similar to the transition name.
 
-### New helpful warnings
+### New helpful warnings {#new-helpful-warnings}
 
 - React DOM now warns you when nesting HTML elements invalidly, which helps you avoid surprising errors during updates.
 - Passing `document.body` directly as the container to `ReactDOM.render` now gives a warning as doing so can cause problems with browser extensions that modify the DOM.
 - Using multiple instances of React together is not supported, so we now warn when we detect this case to help you avoid running into the resulting problems.
 
-### Notable bug fixes
+### Notable bug fixes {#notable-bug-fixes}
 
 - Click events are handled by React DOM more reliably in mobile browsers, particularly in Mobile Safari.
 - SVG elements are created with the correct namespace in more cases.
diff --git a/content/blog/2015-10-19-reactiflux-is-moving-to-discord.md b/content/blog/2015-10-19-reactiflux-is-moving-to-discord.md
index 00234b3b73..522ac658f5 100644
--- a/content/blog/2015-10-19-reactiflux-is-moving-to-discord.md
+++ b/content/blog/2015-10-19-reactiflux-is-moving-to-discord.md
@@ -5,45 +5,45 @@ author: [benigeri]
 
 TL;DR: Slack decided that Reactiflux had too many members and disabled new invites. Reactiflux is moving to Discord. Join us: [http://join.reactiflux.com](http://join.reactiflux.com/)
 
-## What happened with Slack?
+## What happened with Slack? {#what-happened-with-slack}
 
 A few weeks ago, Reactiflux reached 7,500 members on Slack. Shortly after, Slack decided we were too big and disabled invites. There was no way for new users to join. Many of us were sad and upset. We loved Slack.  Our community was built around it.
 
 We reached out to Slack several times, but their decision was firm. Our large community caused performance issues. Slack wants to focus on building a great product for teams, not necessarily large open communities. Losing focus and building for too many use cases always leads to product bloat, and eventually a decrease in quality.
 
-## So… why Discord?
+## So… why Discord? {#so-why-discord}
 
 After a [long and thorough debate](https://github.com/reactiflux/volunteers/issues/25), Discord quickly emerged as the most promising service. After just a few days, 400 members had joined the Discord server, and many already loved it.
 
-### Easiest to join
+### Easiest to join {#easiest-to-join}
 
 Discord is the easiest platform to join. New users can immediately join our conversations without having to create an account. All they need to do is provide a name. No permission granting, no password, no email confirmation.
 
 This is critically useful for us, and will make Reactiflux even more open and accessible.
 
-### Great apps
+### Great apps {#great-apps}
 
 Out of all of the services we’ve tried, Discord’s apps are by far the most polished. They are well designed, easy to use, and surprisingly fast. In addition to the web app, they have mobile apps on both iOS and Android as well as desktop apps for OS X and Windows, with Linux support coming soon.
 
 Their desktop apps are built with React and Electron, and their iOS app is built with React Native.
 
-### Moderation tools
+### Moderation tools {#moderation-tools}
 
 So far, we’ve been fortunate not to have to deal with spammers and trolls. As our community continues to grow, that might change. Unsurprisingly, Discord is the only app we’ve seen with legitimate moderation tools. It was built for gaming communities, after all.
 
-### Great multiple Server support
+### Great multiple Server support {#great-multiple-server-support}
 
 Your  Discord account works with every Discord server, which is the equivalent of a Slack team. You don’t need to create a new account every time you join a new team. You can join new servers in one click, and it’s very easy to switch between them. Discord messages also work across servers, so your personal conversations are not scoped to a single server.
 
 Instead of having one huge, crowded Reactiflux server, we can branch off closely related channels into sub-servers. Communities will start overlapping, and it will be easy to interact with non-Reactiflux channels.
 
-### It’s hosted
+### It’s hosted {#its-hosted}
 
 Self-hosted apps require maintenance. We’re all busy, and we can barely find the time to keep our landing page up to date and running smoothly. More than anything, we need a stable platform, and we don’t have the resources to guarantee that right now.
 
 It’s a much safer bet to offload the hosting to Discord, who is already keeping the lights on for all their users.
 
-### We like the team
+### We like the team {#we-like-the-team}
 
 And they seem to like us back. They are excited for us to join them, and they’ve been very responsive to our feedback and suggestions.
 
@@ -51,11 +51,11 @@ They implemented code syntax highlighting just a few days after we told them we
 
 Discord’s team has already built a solid suite of apps, and they have shown us how much they care about their users. We’re excited to see how they will continue to improve their product.
 
-## And what’s the catch?
+## And what’s the catch? {#and-whats-the-catch}
 
 Choosing the best chat service is subjective. There are a million reasons why Discord *might be* a terrible idea. Here are the ones that we’re most worried about:
 
-### Difficult channel management
+### Difficult channel management {#difficult-channel-management}
 
 Channel management seems to be the biggest issue. There is no way to opt out of channels; you can only mute them. And you can only mute channels one by one. There is no way to star channels, and channels can only be sorted on the server level. Each user will see the list of channels in the same order.
 
@@ -63,23 +63,23 @@ As the number of channels grow, it will be challenging to keep things in order.
 
 We can build simple tools to make channel lookup easier, and the Discord team is working on improvements that should make this more manageable.
 
-### No Search
+### No Search {#no-search}
 
 Lack of search is clearly a bummer, but Discord is working on it. Search is coming!
 
-### Firewall
+### Firewall {#firewall}
 
 A couple of users aren’t able to access Discord at work since other corporate filters classify it as a gaming application. This sucks, but it seems to be a  rare case. So far, it seems only to affect 0.6% of our current community (3/500).
 
 We hope that these users can get Discord's domains whitelisted, and we’ll try to find a solution if this is a widespread issue. The Discord team is aware of the issue as well.
 
-## Is Discord going to disappear tomorrow?
+## Is Discord going to disappear tomorrow? {#is-discord-going-to-disappear-tomorrow}
 
 Probably not tomorrow. They have 14 people [full time](https://discordapp.com/company), and they’ve raised money from some of the best investors in Silicon Valley, including [Benchmark](http://www.benchmark.com/) and [Accel](http://www.accel.com/companies/).
 
 By focusing on gaming communities, Discord has differentiated itself from the many other communication apps. Discord is well received and has a rapidly growing user base.  They plan to keep their basic offerings free for unlimited users and hope to make money with premium offerings (themes, add-ons, content, and more).
 
-## Join us!
+## Join us! {#join-us}
 
 More than 500 of us have already migrated to the new Reactiflux.  Join us, we're one click away: [http://join.reactiflux.com](http://join.reactiflux.com/)
 
diff --git a/content/blog/2015-10-28-react-v0.14.1.md b/content/blog/2015-10-28-react-v0.14.1.md
index b63897b0f6..cf7fc27137 100644
--- a/content/blog/2015-10-28-react-v0.14.1.md
+++ b/content/blog/2015-10-28-react-v0.14.1.md
@@ -21,20 +21,20 @@ We've also published version `0.14.1` of the `react`, `react-dom`, and addons pa
 
 - - -
 
-## Changelog
+## Changelog {#changelog}
 
-### React DOM
+### React DOM {#react-dom}
 - Fixed bug where events wouldn't fire in old browsers when using React in development mode
 - Fixed bug preventing use of `dangerouslySetInnerHTML` with Closure Compiler Advanced mode
 - Added support for `srcLang`, `default`, and `kind` attributes for `<track>` elements
 - Added support for `color` attribute
 - Ensured legacy `.props` access on DOM nodes is updated on re-renders
 
-### React TestUtils Add-on
+### React TestUtils Add-on {#react-testutils-add-on}
 - Fixed `scryRenderedDOMComponentsWithClass` so it works with SVG
 
-### React CSSTransitionGroup Add-on
+### React CSSTransitionGroup Add-on {#react-csstransitiongroup-add-on}
 - Fix bug preventing `0` to be used as a timeout value
 
-### React on Bower
+### React on Bower {#react-on-bower}
 - Added `react-dom.js` to `main` to improve compatibility with tooling
diff --git a/content/blog/2015-11-02-react-v0.14.2.md b/content/blog/2015-11-02-react-v0.14.2.md
index 85a7f2a34c..abc2df4af3 100644
--- a/content/blog/2015-11-02-react-v0.14.2.md
+++ b/content/blog/2015-11-02-react-v0.14.2.md
@@ -21,9 +21,9 @@ We've also published version `0.14.2` of the `react`, `react-dom`, and addons pa
 
 - - -
 
-## Changelog
+## Changelog {#changelog}
 
-### React DOM
+### React DOM {#react-dom}
 - Fixed bug with development build preventing events from firing in some versions of Internet Explorer & Edge
 - Fixed bug with development build when using es5-sham in older versions of Internet Explorer
 - Added support for `integrity` attribute
diff --git a/content/blog/2015-11-18-react-v0.14.3.md b/content/blog/2015-11-18-react-v0.14.3.md
index 03f3c39b5e..19efc7576d 100644
--- a/content/blog/2015-11-18-react-v0.14.3.md
+++ b/content/blog/2015-11-18-react-v0.14.3.md
@@ -24,17 +24,17 @@ We've also published version `0.14.3` of the `react`, `react-dom`, and addons pa
 
 - - -
 
-## Changelog
+## Changelog {#changelog}
 
-### React DOM
+### React DOM {#react-dom}
 - Added support for `nonce` attribute for `<script>` and `<style>` elements
 - Added support for `reversed` attribute for `<ol>` elements
 
-### React TestUtils Add-on
+### React TestUtils Add-on {#react-testutils-add-on}
 - Fixed bug with shallow rendering and function refs
 
-### React CSSTransitionGroup Add-on
+### React CSSTransitionGroup Add-on {#react-csstransitiongroup-add-on}
 - Fixed bug resulting in timeouts firing incorrectly when mounting and unmounting rapidly
 
-### React on Bower
+### React on Bower {#react-on-bower}
 - Added `react-dom-server.js` to expose `renderToString` and `renderToStaticMarkup` for usage in the browser
diff --git a/content/blog/2015-12-04-react-js-conf-2016-diversity-scholarship.md b/content/blog/2015-12-04-react-js-conf-2016-diversity-scholarship.md
index 5ff3d0020a..7f0da6aa0b 100644
--- a/content/blog/2015-12-04-react-js-conf-2016-diversity-scholarship.md
+++ b/content/blog/2015-12-04-react-js-conf-2016-diversity-scholarship.md
@@ -26,18 +26,18 @@ At Facebook, we believe that anyone anywhere can make a positive impact by devel
 
 To apply for the scholarship, please visit the application page: **<http://goo.gl/forms/PEmKj8oUp4>**
 
-## Award Includes
+## Award Includes {#award-includes}
 
 * Paid registration fee for the React.js Conf February 22 & 23 in downtown San Francisco, CA
 * Paid lodging expenses for February 21, 22, 23
 
-## Important Dates
+## Important Dates {#important-dates}
 
 * Sunday December 13th 2015 - 11:59 PST: Applications for the React.js Conf Scholarship must be submitted in full
 * Wednesday, December 16th, 2015: Award recipients will be notified by email of their acceptance
 * Monday & Tuesday, February 22 & 23, 2016: React.js Conf
 
-## Eligibility
+## Eligibility {#eligibility}
 
 * Must currently be studying or working in Computer Science or a related field
 * International applicants are welcome, but you will be responsible for securing your own visa to attend the conference
diff --git a/content/blog/2015-12-18-react-components-elements-and-instances.md b/content/blog/2015-12-18-react-components-elements-and-instances.md
index 45e7ed217b..dd71836d09 100644
--- a/content/blog/2015-12-18-react-components-elements-and-instances.md
+++ b/content/blog/2015-12-18-react-components-elements-and-instances.md
@@ -5,7 +5,7 @@ author: [gaearon]
 
 The difference between **components, their instances, and elements** confuses many React beginners. Why are there three different terms to refer to something that is painted on screen?
 
-## Managing the Instances
+## Managing the Instances {#managing-the-instances}
 
 If you’re new to React, you probably only worked with component classes and instances before. For example, you may declare a `Button` *component* by creating a class. When the app is running, you may have several *instances* of this component on screen, each with its own properties and local state. This is the traditional object-oriented UI programming. Why introduce *elements*?
 
@@ -53,13 +53,13 @@ Each component instance has to keep references to its DOM node and to the instan
 
 So how is React different?
 
-## Elements Describe the Tree
+## Elements Describe the Tree {#elements-describe-the-tree}
 
 In React, this is where the *elements* come to rescue. **An element is a plain object *describing* a component instance or DOM node and its desired properties.** It contains only information about the component type (for example, a `Button`), its properties (for example, its `color`), and any child elements inside it.
 
 An element is not an actual instance. Rather, it is a way to tell React what you *want* to see on the screen. You can’t call any methods on the element. It’s just an immutable description object with two fields: `type: (string | ReactClass)` and `props: Object`[^1].
 
-### DOM Elements
+### DOM Elements {#dom-elements}
 
 When an element’s `type` is a string, it represents a DOM node with that tag name, and `props` correspond to its attributes. This is what React will render. For example:
 
@@ -94,7 +94,7 @@ What’s important is that both child and parent elements are *just descriptions
 
 React elements are easy to traverse, don’t need to be parsed, and of course they are much lighter than the actual DOM elements—they’re just objects!
 
-### Component Elements
+### Component Elements {#component-elements}
 
 However, the `type` of an element can also be a function or a class corresponding to a React component:
 
@@ -168,7 +168,7 @@ This mix and matching helps keep components decoupled from each other, as they c
 * `DangerButton` is a `Button` with specific properties.
 * `DeleteAccount` contains a `Button` and a `DangerButton` inside a `<div>`.
 
-### Components Encapsulate Element Trees
+### Components Encapsulate Element Trees {#components-encapsulate-element-trees}
 
 When React sees an element with a function or class `type`, it knows to ask *that* component what element it renders to, given the corresponding `props`.
 
@@ -236,7 +236,7 @@ That’s it! For a React component, props are the input, and an element tree is
 
 We let React create, update, and destroy instances. We *describe* them with elements we return from the components, and React takes care of managing the instances.
 
-### Components Can Be Classes or Functions
+### Components Can Be Classes or Functions {#components-can-be-classes-or-functions}
 
 In the code above, `Form`, `Message`, and `Button` are React components. They can either be written as functions, like above, or as classes descending from `React.Component`. These three ways to declare a component are mostly equivalent:
 
@@ -300,7 +300,7 @@ A function component is less powerful but is simpler, and acts like a class comp
 
 **However, whether functions or classes, fundamentally they are all components to React. They take the props as their input, and return the elements as their output.**
 
-### Top-Down Reconciliation
+### Top-Down Reconciliation {#top-down-reconciliation}
 
 When you call:
 
@@ -360,7 +360,7 @@ Only components declared as classes have instances, and you never create them di
 
 React takes care of creating an instance for every class component, so you can write components in an object-oriented way with methods and local state, but other than that, instances are not very important in the React’s programming model and are managed by React itself.
 
-## Summary
+## Summary {#summary}
 
 An *element* is a plain object describing what you want to appear on the screen in terms of the DOM nodes or other components. Elements can contain other elements in their props. Creating a React element is cheap. Once an element is created, it is never mutated.
 
@@ -374,7 +374,7 @@ Function components don’t have instances at all. Class components have instanc
 
 Finally, to create elements, use [`React.createElement()`](/docs/top-level-api.html#react.createelement), [JSX](/docs/jsx-in-depth.html), or an [element factory helper](/docs/top-level-api.html#react.createfactory). Don’t write elements as plain objects in the real code—just know that they are plain objects under the hood.
 
-## Further Reading
+## Further Reading {#further-reading}
 
 * [Introducing React Elements](/blog/2014/10/14/introducing-react-elements.html)
 * [Streamlining React Elements](/blog/2015/02/24/streamlining-react-elements.html)
diff --git a/content/blog/2015-12-29-react-v0.14.4.md b/content/blog/2015-12-29-react-v0.14.4.md
index d2acefd9a1..38161766af 100644
--- a/content/blog/2015-12-29-react-v0.14.4.md
+++ b/content/blog/2015-12-29-react-v0.14.4.md
@@ -24,14 +24,14 @@ We've also published version `0.14.4` of the `react`, `react-dom`, and addons pa
 
 - - -
 
-## Changelog
+## Changelog {#changelog}
 
-### React
+### React {#react}
 - Minor internal changes for better compatibility with React Native
 
-### React DOM
+### React DOM {#react-dom}
 - The `autoCapitalize` and `autoCorrect` props are now set as attributes in the DOM instead of properties to improve cross-browser compatibility
 - Fixed bug with controlled `<select>` elements not handling updates properly
 
-### React Perf Add-on
+### React Perf Add-on {#react-perf-add-on}
 - Some DOM operation names have been updated for clarity in the output of `.printDOM()`
diff --git a/content/blog/2016-02-19-new-versioning-scheme.md b/content/blog/2016-02-19-new-versioning-scheme.md
index dec47e9ee4..375854eb0a 100644
--- a/content/blog/2016-02-19-new-versioning-scheme.md
+++ b/content/blog/2016-02-19-new-versioning-scheme.md
@@ -9,7 +9,7 @@ This change shouldn't materially affect most of you. Moving to major semver vers
 
 The core of the React API has been stable for years. Our business as well as many of yours all depend heavily on the use of React as a core piece of our infrastructure. We're committed to the stability as well as the progress of React going forward.
 
-## Bring Everyone Along
+## Bring Everyone Along {#bring-everyone-along}
 
 React isn't just a library but an ecosystem. We know that your applications and ours are not just isolated islands of code. It is a network of your own application code, your own open source components and third party libraries that all depend on React.
 
@@ -19,7 +19,7 @@ Therefore it is important that we don't just upgrade our own codebases but that
 
 <img src="../images/blog/versioning-poll.png" width="596">
 
-## Introducing Minor Releases
+## Introducing Minor Releases {#introducing-minor-releases}
 
 Ideally everyone could just depend on the latest version of React all the time.
 
@@ -31,11 +31,11 @@ We know that in practice that is not possible. In the future, we expect more new
 
 That means that if one component needs a new API, there is no need for any of the other components to do any further work. They remain compatible.
 
-## What Happened to 1.0.0?
+## What Happened to 1.0.0? {#what-happened-to-100}
 
 Part of React's growth and popularity is that it is stable and performant in production. People have long asked what React v1.0 will look. Technically some breaking changes are important to avoid stagnating, but we still achieve stability by making it easy to upgrade. If major version numbers indicate API stability and engender trust that it can be used in production, then we got there a long time ago. There are too many preconceived notions of what v1.0 is. We're still following semver. We're just communicating stability by moving the 0 from the beginning to the end.
 
-## Breaking Changes
+## Breaking Changes {#breaking-changes}
 
 Minor revision releases will include deprecation warnings and tips for how to upgrade an API or pattern that will be removed or changed in the future.
 
@@ -43,7 +43,7 @@ We will continue to release [codemods](https://www.youtube.com/watch?v=d0pOgY8__
 
 Once we've reached the end of life for a particular major version, we'll release a new major version where all deprecated APIs have been removed.
 
-## Avoiding The Major Cliff
+## Avoiding The Major Cliff {#avoiding-the-major-cliff}
 
 If you try to upgrade your component to 16.0.0 you might find that your application no longer works if you still have other dependencies. E.g. if Ryan's and Jed's components are only compatible with 15.x.x.
 
diff --git a/content/blog/2016-03-07-react-v15-rc1.md b/content/blog/2016-03-07-react-v15-rc1.md
index 5fa53e2aa7..49066ef0c6 100644
--- a/content/blog/2016-03-07-react-v15-rc1.md
+++ b/content/blog/2016-03-07-react-v15-rc1.md
@@ -9,7 +9,7 @@ But now we're ready, so without further ado, we're shipping a release candidate
 
 Please try it out before we publish the final release. Let us know if you run into any problems by filing issues on our [GitHub repo](https://github.com/facebook/react).
 
-## Upgrade Guide
+## Upgrade Guide {#upgrade-guide}
 
 Like always, we have a few breaking changes in this release. We know changes can be painful (the Facebook codebase has over 15,000 React components), so we always try to make changes gradually in order to minimize the pain.
 
@@ -17,7 +17,7 @@ If your code is free of warnings when running under React 0.14, upgrading should
 
 See the changelog below for more details.
 
-## Installation
+## Installation {#installation}
 
 We recommend using React from `npm` and using a tool like browserify or webpack to build your code into a single bundle. To install the two packages:
 
@@ -37,9 +37,9 @@ If you can’t use `npm` yet, we provide pre-built browser builds for your conve
   Dev build with warnings: <https://fb.me/react-dom-15.0.0-rc.1.js>  
   Minified build for production: <https://fb.me/react-dom-15.0.0-rc.1.min.js>  
 
-## Changelog
+## Changelog {#changelog}
 
-### Major changes
+### Major changes {#major-changes}
 
 - #### `document.createElement` is in and `data-reactid` is out
 
@@ -59,7 +59,7 @@ If you can’t use `npm` yet, we provide pre-built browser builds for your conve
 
 
 
-### Breaking changes
+### Breaking changes {#breaking-changes}
 
 It's worth calling out the DOM structure changes above again, in particular the change from `<span>`s. In the course of updating the Facebook codebase, we found a very small amount of code that was depending on the markup that React generated. Some of these cases were integration tests like WebDriver which were doing very specific XPath queries to target nodes. Others were simply tests using `ReactDOM.renderToStaticMarkup` and comparing markup. Again, there were a very small number of changes that had to be made, but we don't want anybody to be blindsided. We encourage everybody to run their test suites when upgrading and consider alternative approaches when possible. One approach that will work for some cases is to explicitly use `<span>`s in your `render` method.
 
@@ -69,14 +69,14 @@ These deprecations were introduced in v0.14 with a warning and the APIs are now
 - Deprecated APIs removed from `React.addons`, specifically `batchedUpdates` and `cloneWithProps`.
 - Deprecated APIs removed from component instances, specifically `setProps`, `replaceProps`, and `getDOMNode`.
 
-### New deprecations, introduced with a warning
+### New deprecations, introduced with a warning {#new-deprecations-introduced-with-a-warning}
 
 Each of these changes will continue to work as before with a new warning until the release of React 16 so you can upgrade your code gradually.
 
 - `LinkedStateMixin` and `valueLink` are now deprecated due to very low popularity. If you need this, you can use a wrapper component that implements the same behavior: [react-linked-input](https://www.npmjs.com/package/react-linked-input).
 
 
-### New helpful warnings
+### New helpful warnings {#new-helpful-warnings}
 
 - If you use a minified copy of the _development_ build, React DOM kindly encourages you to use the faster production build instead.
 - React DOM: When specifying a unit-less CSS value as a string, a future version will not add `px` automatically. This version now warns in this case (ex: writing `style={{width: '300'}}`. (Unitless *number* values like `width: 300` are unchanged.)
@@ -84,7 +84,7 @@ Each of these changes will continue to work as before with a new warning until t
 - Elements will now warn when attempting to read `ref` and `key` from the props.
 - React DOM now attempts to warn for mistyped event handlers on DOM elements (ex: `onclick` which should be `onClick`)
 
-### Notable bug fixes
+### Notable bug fixes {#notable-bug-fixes}
 
 - Fixed multiple small memory leaks
 - Input events are handled more reliably in IE 10 and IE 11; spurious events no longer fire when using a placeholder.
diff --git a/content/blog/2016-03-16-react-v15-rc2.md b/content/blog/2016-03-16-react-v15-rc2.md
index 73030e9a45..c6711dca25 100644
--- a/content/blog/2016-03-16-react-v15-rc2.md
+++ b/content/blog/2016-03-16-react-v15-rc2.md
@@ -11,7 +11,7 @@ The other change is to our SVG code. In RC1 we had made the decision to pass thr
 
 Thanks again to everybody who has tried the RC1 and reported issues. It has been extremely important and we wouldn't be able to do this without your help!
 
-## Installation
+## Installation {#installation}
 
 We recommend using React from `npm` and using a tool like browserify or webpack to build your code into a single bundle. To install the two packages:
 
diff --git a/content/blog/2016-03-29-react-v0.14.8.md b/content/blog/2016-03-29-react-v0.14.8.md
index 2a5bc763fa..1e1cf6310e 100644
--- a/content/blog/2016-03-29-react-v0.14.8.md
+++ b/content/blog/2016-03-29-react-v0.14.8.md
@@ -26,7 +26,7 @@ We've also published version `0.14.8` of the `react`, `react-dom`, and addons pa
 
 - - -
 
-## Changelog
+## Changelog {#changelog}
 
-### React
+### React {#react}
 - Fixed memory leak when rendering on the server
diff --git a/content/blog/2016-04-07-react-v15.md b/content/blog/2016-04-07-react-v15.md
index 1731d11a00..c847aa9d5a 100644
--- a/content/blog/2016-04-07-react-v15.md
+++ b/content/blog/2016-04-07-react-v15.md
@@ -19,7 +19,7 @@ While this isn’t directly related to the release, we understand that in order
 
 We are also experimenting with a new changelog format in this post. Every change now links to the corresponding pull request and mentions the author. Let us know whether you find this useful!
 
-## Upgrade Guide
+## Upgrade Guide {#upgrade-guide}
 
 As usual with major releases, React 15 will remove support for some of the patterns deprecated nine months ago in React 0.14. We know changes can be painful (the Facebook codebase has over 20,000 React components, and that’s not even counting React Native), so we always try to make changes gradually in order to minimize the pain.
 
@@ -27,7 +27,7 @@ If your code is free of warnings when running under React 0.14, upgrading should
 
 See the changelog below for more details.
 
-## Installation
+## Installation {#installation}
 
 We recommend using React from `npm` and using a tool like browserify or webpack to build your code into a single bundle. To install the two packages:
 
@@ -47,9 +47,9 @@ If you can’t use `npm` yet, we provide pre-built browser builds for your conve
   Dev build with warnings: <https://fb.me/react-dom-15.0.0.js>  
   Minified build for production: <https://fb.me/react-dom-15.0.0.min.js>  
 
-## Changelog
+## Changelog {#changelog}
 
-### Major changes
+### Major changes {#major-changes}
 
 - #### `document.createElement` is in and `data-reactid` is out
 
@@ -83,7 +83,7 @@ If you can’t use `npm` yet, we provide pre-built browser builds for your conve
 
     <small>[@zpao](https://github.com/zpao) in [#6243](https://github.com/facebook/react/pull/6243)</small>
 
-### Breaking changes
+### Breaking changes {#breaking-changes}
 
 - #### No more extra `<span>`s
 
@@ -125,7 +125,7 @@ If you can’t use `npm` yet, we provide pre-built browser builds for your conve
     - React-specific properties on DOM `refs` (e.g. `this.refs.div.props`) were deprecated, and are removed now.  
     <small>[@jimfb](https://github.com/jimfb) in [#5495](https://github.com/facebook/react/pull/5495)</small>
 
-### New deprecations, introduced with a warning
+### New deprecations, introduced with a warning {#new-deprecations-introduced-with-a-warning}
 
 Each of these changes will continue to work as before with a new warning until the release of React 16 so you can upgrade your code gradually.
 
@@ -138,7 +138,7 @@ Each of these changes will continue to work as before with a new warning until t
 - `ReactPerf.printDOM()` was renamed to `ReactPerf.printOperations()`, and `ReactPerf.getMeasurementsSummaryMap()` was renamed to `ReactPerf.getWasted()`.  
 <small>[@gaearon](https://github.com/gaearon) in [#6287](https://github.com/facebook/react/pull/6287)</small>
 
-### New helpful warnings
+### New helpful warnings {#new-helpful-warnings}
 
 - If you use a minified copy of the _development_ build, React DOM kindly encourages you to use the faster production build instead.  
 <small>[@sophiebits](https://github.com/sophiebits) in [#5083](https://github.com/facebook/react/pull/5083)</small>
@@ -182,7 +182,7 @@ Each of these changes will continue to work as before with a new warning until t
 - PropTypes: `arrayOf()` and `objectOf()` provide better error messages for invalid arguments.  
 <small>[@chicoxyzzy](https://github.com/chicoxyzzy) in [#5390](https://github.com/facebook/react/pull/5390)</small>
 
-### Notable bug fixes
+### Notable bug fixes {#notable-bug-fixes}
 
 - Fixed multiple small memory leaks.  
 <small>[@sophiebits](https://github.com/sophiebits) in [#4983](https://github.com/facebook/react/pull/4983) and [@victor-homyakov](https://github.com/victor-homyakov) in [#6309](https://github.com/facebook/react/pull/6309)</small>
@@ -235,7 +235,7 @@ Each of these changes will continue to work as before with a new warning until t
 - Add-Ons: ReactPerf no longer instruments adding or removing an event listener because they don’t really touch the DOM due to event delegation.  
 <small>[@antoaravinth](https://github.com/antoaravinth) in [#5209](https://github.com/facebook/react/pull/5209)</small>
 
-### Other improvements
+### Other improvements {#improvements}
 
 - React now uses `loose-envify` instead of `envify` so it installs fewer transitive dependencies.  
 <small>[@qerub](https://github.com/qerub) in [#6303](https://github.com/facebook/react/pull/6303)</small>
diff --git a/content/blog/2016-04-08-react-v15.0.1.md b/content/blog/2016-04-08-react-v15.0.1.md
index 2f1b14bd07..6db9cc4225 100644
--- a/content/blog/2016-04-08-react-v15.0.1.md
+++ b/content/blog/2016-04-08-react-v15.0.1.md
@@ -23,12 +23,12 @@ As usual, you can get install the `react` package via npm or download a browser
   Dev build with warnings: <https://fb.me/react-dom-15.0.1.js>  
   Minified build for production: <https://fb.me/react-dom-15.0.1.min.js>  
 
-## Changelog
+## Changelog {#changelog}
 
-### React
+### React {#react}
 - Restore `React.__spread` API to unbreak code compiled with some tools making use of this undocumented API. It is now officially deprecated.  
   <small>[@zpao](https://github.com/zpao) in [#6444](https://github.com/facebook/react/pull/6444)</small>
 
-### ReactDOM
+### ReactDOM {#reactdom}
 - Fixed issue resulting in loss of cursor position in controlled inputs.  
   <small>[@sophiebits](https://github.com/sophiebits) in [#6449](https://github.com/facebook/react/pull/6449)</small>
diff --git a/content/blog/2016-07-13-mixins-considered-harmful.md b/content/blog/2016-07-13-mixins-considered-harmful.md
index 957bd71ad1..2ea907ea8a 100644
--- a/content/blog/2016-07-13-mixins-considered-harmful.md
+++ b/content/blog/2016-07-13-mixins-considered-harmful.md
@@ -13,7 +13,7 @@ Three years passed since React was released. The landscape has changed. Multiple
 
 In this post, we will consider the problems commonly caused by mixins. Then we will suggest several alternative patterns for the same use cases. We have found those patterns to scale better with the complexity of the codebase than mixins.
 
-## Why Mixins are Broken
+## Why Mixins are Broken {#why-mixins-are-broken}
 
 At Facebook, React usage has grown from a few components to thousands of them. This gives us a window into how people use React. Thanks to declarative rendering and top-down data flow, many teams were able to fix a bunch of bugs while shipping new features as they adopted React.
 
@@ -21,7 +21,7 @@ However it’s inevitable that some of our code using React gradually became inc
 
 This doesn’t mean that mixins themselves are bad. People successfully employ them in different languages and paradigms, including some functional languages. At Facebook, we extensively use traits in Hack which are fairly similar to mixins. Nevertheless, we think that mixins are unnecessary and problematic in React codebases. Here’s why.
 
-### Mixins introduce implicit dependencies
+### Mixins introduce implicit dependencies {#mixins-introduce-implicit-dependencies}
 
 Sometimes a component relies on a certain method defined in the mixin, such as `getClassName()`. Sometimes it’s the other way around, and mixin calls a method like `renderHeader()` on the component. JavaScript is a dynamic language so it’s hard to enforce or document these dependencies.
 
@@ -31,7 +31,7 @@ These implicit dependencies make it hard for new team members to contribute to a
 
 Often, mixins come to depend on other mixins, and removing one of them breaks the other. In these situations it is very tricky to tell how the data flows in and out of mixins, and what their dependency graph looks like. Unlike components, mixins don’t form a hierarchy: they are flattened and operate in the same namespace.
 
-### Mixins cause name clashes
+### Mixins cause name clashes {#mixins-cause-name-clashes}
 
 There is no guarantee that two particular mixins can be used together. For example, if `FluxListenerMixin` defines `handleChange()` and `WindowSizeMixin` defines `handleChange()`, you can’t use them together. You also can’t define a method with this name on your own component.
 
@@ -41,7 +41,7 @@ If you have a name conflict with a mixin from a third party package, you can’t
 
 The situation is no better for mixin authors. Even adding a new method to a mixin is always a potentially breaking change because a method with the same name might already exist on some of the components using it, either directly or through another mixin. Once written, mixins are hard to remove or change. Bad ideas don’t get refactored away because refactoring is too risky.
 
-### Mixins cause snowballing complexity
+### Mixins cause snowballing complexity {#mixins-cause-snowballing-complexity}
 
 Even when mixins start out simple, they tend to become complex over time. The example below is based on a real scenario I’ve seen play out in a codebase.
 
@@ -55,7 +55,7 @@ Every new requirement makes the mixins harder to understand. Components using th
 
 These are the same problems we faced building apps before React. We found that they are solved by declarative rendering, top-down data flow, and encapsulated components. At Facebook, we have been migrating our code to use alternative patterns to mixins, and we are generally happy with the results. You can read about those patterns below.
 
-## Migrating from Mixins
+## Migrating from Mixins {#migrating-from-mixins}
 
 Let’s make it clear that mixins are not technically deprecated. If you use `React.createClass()`, you may keep using them. We only say that they didn’t work well for us, and so we won’t recommend using them in the future.
 
@@ -63,7 +63,7 @@ Every section below corresponds to a mixin usage pattern that we found in the Fa
 
 We hope that you find this list helpful. Please let us know if we missed important use cases so we can either amend the list or be proven wrong!
 
-### Performance Optimizations
+### Performance Optimizations {#performance-optimizations}
 
 One of the most commonly used mixins is [`PureRenderMixin`](/docs/pure-render-mixin.html). You might be using it in some components to [prevent unnecessary re-renders](/docs/advanced-performance.html#shouldcomponentupdate-in-action) when the props and state are shallowly equal to the previous props and state:
 
@@ -78,7 +78,7 @@ var Button = React.createClass({
 });
 ```
 
-#### Solution
+#### Solution {#solution}
 
 To express the same without mixins, you can use the [`shallowCompare`](/docs/shallow-compare.html) function directly instead:
 
@@ -99,7 +99,7 @@ If you use a custom mixin implementing a `shouldComponentUpdate` function with d
 
 We understand that more typing can be annoying. For the most common case, we plan to [introduce a new base class](https://github.com/facebook/react/pull/7195) called `React.PureComponent` in the next minor release. It uses the same shallow comparison as `PureRenderMixin` does today.
 
-### Subscriptions and Side Effects
+### Subscriptions and Side Effects {#subscriptions-and-side-effects}
 
 The second most common type of mixins that we encountered are mixins that subscribe a React component to a third-party data source. Whether this data source is a Flux Store, an Rx Observable, or something else, the pattern is very similar: the subscription is created in `componentDidMount`, destroyed in `componentWillUnmount`, and the change handler calls `this.setState()`.
 
@@ -145,13 +145,13 @@ var CommentList = React.createClass({
 module.exports = CommentList;
 ```
 
-#### Solution
+#### Solution {#solution-1}
 
 If there is just one component subscribed to this data source, it is fine to embed the subscription logic right into the component. Avoid premature abstractions.
 
 If several components used this mixin to subscribe to a data source, a nice way to avoid repetition is to use a pattern called [“higher-order components”](https://medium.com/@dan_abramov/mixins-are-dead-long-live-higher-order-components-94a0d2f9e750). It can sound intimidating so we will take a closer look at how this pattern naturally emerges from the component model.
 
-#### Higher-Order Components Explained
+#### Higher-Order Components Explained {#higher-order-components-explained}
 
 Let’s forget about React for a second. Consider these two functions that add and multiply numbers, logging the results as they do that:
 
@@ -339,7 +339,7 @@ var CommentListWithSubscription = withSubscription(CommentList);
 module.exports = CommentListWithSubscription;
 ```
 
-#### Solution, Revisited
+#### Solution, Revisited {#solution-revisited}
 
 Now that we understand higher-order components better, let’s take another look at the complete solution that doesn’t involve mixins. There are a few minor changes that are annotated with inline comments:
 
@@ -395,7 +395,7 @@ Higher-order components are a powerful pattern. You can pass additional argument
 
 Like any solution, higher-order components have their own pitfalls. For example, if you heavily use [refs](/docs/more-about-refs.html), you might notice that wrapping something into a higher-order component changes the ref to point to the wrapping component. In practice we discourage using refs for component communication so we don’t think it’s a big issue. In the future, we might consider adding [ref forwarding](https://github.com/facebook/react/issues/4213) to React to solve this annoyance.
 
-### Rendering Logic
+### Rendering Logic {#rendering-logic}
 
 The next most common use case for mixins that we discovered in our codebase is sharing rendering logic between components.
 
@@ -436,7 +436,7 @@ var UserRow = React.createClass({
 
 Multiple components may be sharing `RowMixin` to render the header, and each of them would need to define `getHeaderText()`.
 
-#### Solution
+#### Solution {#solution-2}
 
 If you see rendering logic inside a mixin, it’s time to extract a component!
 
@@ -469,7 +469,7 @@ Props keep component dependencies explicit, easy to replace, and enforceable wit
 >
 > Defining components as functions is not required. There is also nothing wrong with using lifecycle methods and state—they are first-class React features. We use function components in this example because they are easier to read and we didn’t need those extra features, but classes would work just as fine.
 
-### Context
+### Context {#context}
 
 Another group of mixins we discovered were helpers for providing and consuming [React context](/docs/context.html). Context is an experimental unstable feature, has [certain issues](https://github.com/facebook/react/issues/2517), and will likely change its API in the future. We don’t recommend using it unless you’re confident there is no other way of solving your problem.
 
@@ -510,7 +510,7 @@ var Link = React.createClass({
 module.exports = Link;
 ```
 
-#### Solution
+#### Solution {#solution-3}
 
 We agree that hiding context usage from consuming components is a good idea until the context API stabilizes. However, we recommend using higher-order components instead of mixins for this.
 
@@ -555,7 +555,7 @@ module.exports = withRouter(Link);
 
 If you’re using a third party library that only provides a mixin, we encourage you to file an issue with them linking to this post so that they can provide a higher-order component instead. In the meantime, you can create a higher-order component around it yourself in exactly the same way.
 
-### Utility Methods
+### Utility Methods {#utility-methods}
 
 Sometimes, mixins are used solely to share utility functions between components:
 
@@ -584,7 +584,7 @@ var Button = React.createClass({
 });
 ```
 
-#### Solution
+#### Solution {#solution-4}
 
 Put utility functions into regular JavaScript modules and import them. This also makes it easier to test them or use them outside of your components:
 
@@ -603,7 +603,7 @@ var Button = React.createClass({
 });
 ```
 
-### Other Use Cases
+### Other Use Cases {#other-use-cases}
 
 Sometimes people use mixins to selectively add logging to lifecycle methods in some components. In the future, we intend to provide an [official DevTools API](https://github.com/facebook/react/issues/5306) that would let you implement something similar without touching the components. However it’s still very much a work in progress. If you heavily depend on logging mixins for debugging, you might want to keep using those mixins for a little longer.
 
diff --git a/content/blog/2016-07-22-create-apps-with-no-configuration.md b/content/blog/2016-07-22-create-apps-with-no-configuration.md
index 3c09e321f4..f7ae427308 100644
--- a/content/blog/2016-07-22-create-apps-with-no-configuration.md
+++ b/content/blog/2016-07-22-create-apps-with-no-configuration.md
@@ -5,9 +5,9 @@ author: [gaearon]
 
 **[Create React App](https://github.com/facebookincubator/create-react-app)** is a new officially supported way to create single-page React applications. It offers a modern build setup with no configuration.
 
-## Getting Started
+## Getting Started {#getting-started}
 
-### Installation
+### Installation {#installation}
 
 First, install the global package:
 
@@ -17,7 +17,7 @@ npm install -g create-react-app
 
 Node.js 4.x or higher is required.
 
-### Creating an App
+### Creating an App {#creating-an-app}
 
 Now you can use it to create a new app:
 
@@ -29,7 +29,7 @@ This will take a while as npm installs the transitive dependencies, but once it
 
 ![created folder](../images/blog/create-apps-with-no-configuration/created-folder.png)
 
-### Starting the Server
+### Starting the Server {#starting-the-server}
 
 Run `npm start` to launch the development server. The browser will open automatically with the created app’s URL.
 
@@ -46,7 +46,7 @@ ESLint is also integrated so lint warnings are displayed right in the console:
 
 We only picked a small subset of lint rules that often lead to bugs.
 
-### Building for Production
+### Building for Production {#building-for-production}
 
 To build an optimized bundle, run `npm run build`:
 
@@ -54,7 +54,7 @@ To build an optimized bundle, run `npm run build`:
 
 It is minified, correctly envified, and the assets include content hashes for caching.
 
-### One Dependency
+### One Dependency {#one-dependency}
 
 Your `package.json` contains only a single build dependency and a few scripts:
 
@@ -78,7 +78,7 @@ Your `package.json` contains only a single build dependency and a few scripts:
 
 We take care of updating Babel, ESLint, and webpack to stable compatible versions so you can update a single dependency to get them all.
 
-### Zero Configuration
+### Zero Configuration {#zero-configuration}
 
 It is worth repeating: there are no configuration files or complicated folder structures. The tool only generates the files you need to build your app.
 
@@ -99,7 +99,7 @@ hello-world/
 
 All the build settings are preconfigured and can’t be changed. Some features, such as testing, are currently missing. This is an intentional limitation, and we recognize it might not work for everybody. And this brings us to the last point.
 
-### No Lock-In
+### No Lock-In {#no-lock-in}
 
 We first saw this feature in [Enclave](https://github.com/eanplatter/enclave), and we loved it. We talked to [Ean](https://twitter.com/EanPlatter), and he was excited to collaborate with us. He already sent a few pull requests!
 
@@ -107,7 +107,7 @@ We first saw this feature in [Enclave](https://github.com/eanplatter/enclave), a
 
 We expect that at early stages, many people will “eject” for one reason or another, but as we learn from them, we will make the default setup more and more compelling while still providing no configuration.
 
-## Try It Out!
+## Try It Out! {#try-it-out}
 
 You can find [**Create React App**](https://github.com/facebookincubator/create-react-app) with additional instructions on GitHub.
 
@@ -115,7 +115,7 @@ This is an experiment, and only time will tell if it becomes a popular way of cr
 
 We welcome you to participate in this experiment. Help us build the React tooling that more people can use. We are always [open to feedback](https://github.com/facebookincubator/create-react-app/issues/11).
 
-## The Backstory
+## The Backstory {#the-backstory}
 
 React was one of the first libraries to embrace transpiling JavaScript. As a result, even though you can [learn React without any tooling](https://github.com/facebook/react/blob/3fd582643ef3d222a00a0c756292c15b88f9f83c/examples/basic-jsx/index.html), the React ecosystem has commonly become associated with an overwhelming explosion of tools.
 
@@ -135,7 +135,7 @@ This doesn’t mean those tools aren’t great. To many of us, they have become
 
 Still, we knew it was frustrating to spend days setting up a project when all you wanted was to learn React. We wanted to fix this.
 
-## Could We Fix This?
+## Could We Fix This? {#could-we-fix-this}
 
 We found ourselves in an unusual dilemma.
 
@@ -145,7 +145,7 @@ However, tooling at Facebook is different than at many smaller companies. Lintin
 
 The React community is very important to us. We knew that we couldn’t fix the problem within the limits of our open source philosophy. This is why we decided to make an exception, and to ship something that we didn’t use ourselves, but that we thought would be useful to the community.
 
-## The Quest for a React <abbr title="Command Line Interface">CLI</abbr>
+## The Quest for a React <abbr title="Command Line Interface">CLI</abbr> {#the-quest-for-a-react-abbr-titlecommand-line-interfacecliabbr}
 
 Having just attended [EmberCamp](http://embercamp.com/) a week ago, I was excited about [Ember CLI](https://ember-cli.com/). Ember users have a great “getting started” experience thanks to a curated set of tools united under a single command-line interface. I have heard similar feedback about [Elm Reactor](https://github.com/elm-lang/elm-reactor).
 
diff --git a/content/blog/2016-08-05-relay-state-of-the-state.md b/content/blog/2016-08-05-relay-state-of-the-state.md
index 3248738fee..7ed34e9c0a 100644
--- a/content/blog/2016-08-05-relay-state-of-the-state.md
+++ b/content/blog/2016-08-05-relay-state-of-the-state.md
@@ -5,7 +5,7 @@ author: [josephsavona]
 
 This month marks a year since we released Relay and we'd like to share an update on the project and what's next.
 
-## A Year In Review
+## A Year In Review {#a-year-in-review}
 
 A year after launch, we're incredibly excited to see an active community forming around Relay and that companies such as Twitter are [using Relay in production](https://fabric.io/blog/building-fabric-mission-control-with-graphql-and-relay):
 
@@ -28,11 +28,11 @@ We've also seen some great open-source projects spring up around Relay:
 
 This is just a small sampling of the community's contributions. So far we've merged over 300 PRs - about 25% of our commits - from over 80 of you. These PRs have improved everything from the website and docs down the very core of the framework. We're humbled by these outstanding contributions and excited to keep working with each of you!
 
-# Retrospective & Roadmap
+# Retrospective & Roadmap {#retrospective--roadmap}
 
 Earlier this year we paused to reflect on the state of the project. What was working well? What could be improved? What features should we add, and what could we remove? A few themes emerged: performance on mobile, developer experience, and empowering the community.
 
-## Mobile Perf
+## Mobile Perf {#mobile-perf}
 
 First, Relay was built to serve the needs of product developers at Facebook. In 2016, that means helping developers to build apps that work well on [mobile devices connecting on slower networks](https://newsroom.fb.com/news/2015/10/news-feed-fyi-building-for-all-connectivity/). For example, people in developing markets commonly use [2011 year-class phones](https://code.facebook.com/posts/307478339448736/year-class-a-classification-system-for-android/) and connect via [2G class networks](https://code.facebook.com/posts/952628711437136/classes-performance-and-network-segmentation-on-android/). These scenarios present their own challenges.
 
@@ -44,17 +44,17 @@ Ideally, though, we could begin fetching data as soon as the native code had loa
 
 The key is that GraphQL is already static - we just need to fully embrace this fact. More on this later.
 
-## Developer Experience
+## Developer Experience {#developer-experience}
 
 Next, we've paid attention to the community's feedback and know that, to put it simply, Relay could be "easier" to use (and "simpler" too). This isn't entirely surprising to us - Relay was originally designed as a routing library and gradually morphed into a data-fetching library. Concepts like Relay "routes", for example, no longer serve as critical a role and are just one more concept that developers have to learn about. Another example is mutations: while writes *are* inherently more complex than reads, our API doesn't make the simple things simple enough.
 
 Alongside our focus on mobile performance, we've also kept the developer experience in mind as we evolve Relay core.
 
-## Empowering the Community
+## Empowering the Community {#empowering-the-community}
 
 Finally, we want to make it easier for people in the community to develop useful libraries that work with Relay. By comparison, React's small surface area - components - allows developers to build cool things like routing, higher-order components, or reusable text editors. For Relay, this would mean having the framework provide core primitives that users can build upon. We want it to be possible for the community to integrate Relay with view libraries other than React, or to build real-time subscriptions as a complementary library.
 
-# What's Next
+# What's Next {#whats-next}
 
 These were big goals, and also a bit scary; we knew that incremental improvements would only allow us to move so fast. So in April we started a project to build a new implementation of Relay core targeting low-end mobile devices from the start.
 
@@ -71,7 +71,7 @@ Stepping back, we recognize that any API changes will require an investment on y
 
 Ultimately, we're making these changes because we believe they make Relay better all around: simpler for developers building apps and faster for the people using them.
 
-# Conclusion
+# Conclusion {#conclusion}
 
 If you made it this far, congrats and thanks for reading! We'll be sharing more information about these changes in some upcoming talks:
 
diff --git a/content/blog/2016-09-28-our-first-50000-stars.md b/content/blog/2016-09-28-our-first-50000-stars.md
index 07d78020d0..de9f9c8225 100644
--- a/content/blog/2016-09-28-our-first-50000-stars.md
+++ b/content/blog/2016-09-28-our-first-50000-stars.md
@@ -5,7 +5,7 @@ author: [vjeux]
 
 Just three and a half years ago we open sourced a little JavaScript library called React. The journey since that day has been incredibly exciting.
 
-## Commemorative T-Shirt
+## Commemorative T-Shirt {#commemorative-t-shirt}
 
 In order to celebrate 50,000 GitHub stars, [Maggie Appleton](http://www.maggieappleton.com/) from [egghead.io](http://egghead.io/) has designed us a special T-shirt, which will be available for purchase from Teespring **only for a week** through Thursday, October 6. Maggie also wrote [a blog post](https://www.behance.net/gallery/43269677/Reacts-50000-Stars-Shirt) showing all the different concepts she came up with before settling on the final design.
 
@@ -20,7 +20,7 @@ The T-shirts are super soft using American Apparel's tri-blend fabric; we also h
 
 Proceeds from the shirts will be donated to [CODE2040](http://www.code2040.org/), a nonprofit that creates access, awareness, and opportunities in technology for underrepresented minorities with a specific focus on Black and Latinx talent.
 
-## Archeology
+## Archeology {#archeology}
 
 We've spent a lot of time trying to explain the concepts behind React and the problems it attempts to solve, but we haven't talked much about how React evolved before being open sourced. This milestone seemed like as good a time as any to dig through the earliest commits and share some of the more important moments and fun facts.
 
@@ -81,7 +81,7 @@ TestProject.PersonDisplayer = {
 };
 ```
 
-## FBolt is Born
+## FBolt is Born {#fbolt-is-born}
 
 Through his FaxJS experiment, Jordan became convinced that functional APIs  — which discouraged mutation —  offered a better, more scalable way to build user interfaces. He imported his library into Facebook's codebase in March of 2012 and renamed it “FBolt”, signifying an extension of Bolt where components are written in a functional programming style. Or maybe “FBolt” was a nod to FaxJS – he didn't tell us! ;)
 
@@ -96,7 +96,7 @@ I might add for the sake of discussion, that many systems advertise some kind of
 
 Most of Tom's other commits at the time were on the first version of [GraphiQL](https://github.com/graphql/graphiql), a project which was recently open sourced.
 
-## Adding JSX
+## Adding JSX {#adding-jsx}
 
 Since about 2010 Facebook has been using an extension of PHP called [XHP](https://www.facebook.com/notes/facebook-engineering/xhp-a-new-way-to-write-php/294003943919/), which enables engineers to create UIs using XML literals right inside their PHP code. It was first introduced to help prevent XSS holes but ended up being an excellent way to structure applications with custom components.
 
@@ -180,7 +180,7 @@ Adam made a very insightful comment, which is now the default way we write lists
 
 React didn't end up using Adam's implementation directly. Instead, we created JSX by forking [js-xml-literal](https://github.com/laverdet/js-xml-literal), a side project by XHP creator Marcel Laverdet. JSX took its name from js-xml-literal, which Jordan modified to just be syntactic sugar for deeply nested function calls.
 
-## API Churn
+## API Churn {#api-churn}
 
 During the first year of React, internal adoption was growing quickly but there was quite a lot of churn in the component APIs and naming conventions:
 
@@ -214,7 +214,7 @@ As the project was about to be open sourced, [Lee Byron](https://twitter.com/lee
     * objectWillAction
     * objectDidAction
 
-## Instagram
+## Instagram {#instagram}
 
 In 2012, Instagram got acquired by Facebook. [Pete Hunt](https://twitter.com/floydophone), who was working on Facebook photos and videos at the time, joined their newly formed web team. He wanted to build their website completely in React, which was in stark contrast with the incremental adoption model that had been used at Facebook.
 
diff --git a/content/blog/2016-11-16-react-v15.4.0.md b/content/blog/2016-11-16-react-v15.4.0.md
index f1322c7c08..4c92845956 100644
--- a/content/blog/2016-11-16-react-v15.4.0.md
+++ b/content/blog/2016-11-16-react-v15.4.0.md
@@ -7,7 +7,7 @@ Today we are releasing React 15.4.0.
 
 We didn't announce the [previous](https://github.com/facebook/react/blob/master/CHANGELOG.md#1510-may-20-2016) [minor](https://github.com/facebook/react/blob/master/CHANGELOG.md#1520-july-1-2016) [releases](https://github.com/facebook/react/blob/master/CHANGELOG.md#1530-july-29-2016) on the blog because most of the changes were bug fixes. However, 15.4.0 is a special release, and we would like to highlight a few notable changes in it.
 
-### Separating React and React DOM
+### Separating React and React DOM {#separating-react-and-react-dom}
 
 [More than a year ago](/blog/2015/09/10/react-v0.14-rc1.html#two-packages-react-and-react-dom), we started separating React and React DOM into separate packages. We deprecated `React.render()` in favor of `ReactDOM.render()` in React 0.14, and removed DOM-specific APIs from `React` completely in React 15. However, the React DOM implementation still [secretly lived inside the React package](https://www.reddit.com/r/javascript/comments/3m6wyu/found_this_line_in_the_react_codebase_made_me/cvcyo4a/).
 
@@ -21,7 +21,7 @@ However, there is a possibility that you imported private APIs from `react/lib/*
 
 Another thing to watch out for is that React DOM Server is now about the same size as React DOM since it contains its own copy of the React reconciler. We don't recommend using React DOM Server on the client in most cases.
 
-### Profiling Components with Chrome Timeline
+### Profiling Components with Chrome Timeline {#profiling-components-with-chrome-timeline}
 
 You can now visualize React components in the Chrome Timeline. This lets you see which components exactly get mounted, updated, and unmounted, how much time they take relative to each other.
 
@@ -43,7 +43,7 @@ Note that the numbers are relative so components will render faster in productio
 
 Currently Chrome, Edge, and IE are the only browsers supporting this feature, but we use the standard [User Timing API](https://developer.mozilla.org/en-US/docs/Web/API/User_Timing_API) so we expect more browsers to add support for it.
 
-### Mocking Refs for Snapshot Testing
+### Mocking Refs for Snapshot Testing {#mocking-refs-for-snapshot-testing}
 
 If you're using Jest [snapshot testing](https://facebook.github.io/jest/blog/2016/07/27/jest-14.html), you might have had [issues](https://github.com/facebook/react/issues/7371) with components that rely on refs. With React 15.4.0, we introduce a way to provide mock refs to the test renderer. For example, consider this component using a ref in `componentDidMount`:
 
@@ -94,7 +94,7 @@ You can learn more about snapshot testing in [this Jest blog post](https://faceb
 
 ---
 
-## Installation
+## Installation {#installation}
 
 We recommend using [Yarn](https://yarnpkg.com/) or [npm](https://www.npmjs.com/) for managing front-end dependencies. If you're new to package managers, the [Yarn documentation](https://yarnpkg.com/en/docs/getting-started) is a good place to get started.
 
@@ -133,9 +133,9 @@ We've also published version `15.4.0` of the `react`, `react-dom`, and addons pa
 
 - - -
 
-## Changelog
+## Changelog {#changelog}
 
-### React
+### React {#react}
 * React package and browser build no longer "secretly" includes React DOM.  
   <small>([@sebmarkbage](https://github.com/sebmarkbage) in [#7164](https://github.com/facebook/react/pull/7164) and [#7168](https://github.com/facebook/react/pull/7168))</small>
 * Required PropTypes now fail with specific messages for null and undefined.  
@@ -143,7 +143,7 @@ We've also published version `15.4.0` of the `react`, `react-dom`, and addons pa
 * Improved development performance by freezing children instead of copying.  
   <small>([@keyanzhang](https://github.com/keyanzhang) in [#7455](https://github.com/facebook/react/pull/7455))</small>
 
-### React DOM
+### React DOM {#react-dom}
 * Fixed occasional test failures when React DOM is used together with shallow renderer.  
   <small>([@goatslacker](https://github.com/goatslacker) in [#8097](https://github.com/facebook/react/pull/8097))</small>
 * Added a warning for invalid `aria-` attributes.  
@@ -159,15 +159,15 @@ We've also published version `15.4.0` of the `react`, `react-dom`, and addons pa
 * Fixed a bug with updating text in IE 8.  
   <small>([@mnpenner](https://github.com/mnpenner) in [#7832](https://github.com/facebook/react/pull/7832))</small>
 
-### React Perf
+### React Perf {#react-perf}
 * When ReactPerf is started, you can now view the relative time spent in components as a chart in Chrome Timeline.  
   <small>([@gaearon](https://github.com/gaearon) in [#7549](https://github.com/facebook/react/pull/7549))</small>
 
-### React Test Utils
+### React Test Utils {#react-test-utils}
 * If you call `Simulate.click()` on a `<input disabled onClick={foo} />` then `foo` will get called whereas it didn't before.  
   <small>([@nhunzaker](https://github.com/nhunzaker) in [#7642](https://github.com/facebook/react/pull/7642))</small>
 
-### React Test Renderer
+### React Test Renderer {#react-test-renderer}
 * Due to packaging changes, it no longer crashes when imported together with React DOM in the same file.  
   <small>([@sebmarkbage](https://github.com/sebmarkbage) in [#7164](https://github.com/facebook/react/pull/7164) and [#7168](https://github.com/facebook/react/pull/7168))</small>
 * `ReactTestRenderer.create()` now accepts `{createNodeMock: element => mock}` as an optional argument so you can mock refs with snapshot testing.  
diff --git a/content/blog/2017-04-07-react-v15.5.0.md b/content/blog/2017-04-07-react-v15.5.0.md
index 9446f0e834..b5741f9ab9 100644
--- a/content/blog/2017-04-07-react-v15.5.0.md
+++ b/content/blog/2017-04-07-react-v15.5.0.md
@@ -7,7 +7,7 @@ It's been exactly one year since the last breaking change to React. Our next maj
 
 To that end, today we're releasing React 15.5.0.
 
-### New Deprecation Warnings
+### New Deprecation Warnings {#new-deprecation-warnings}
 
 The biggest change is that we've extracted `React.PropTypes` and `React.createClass` into their own packages. Both are still accessible via the main `React` object, but using either will log a one-time deprecation warning to the console when in development mode. This will enable future code size optimizations.
 
@@ -19,7 +19,7 @@ So while the warnings may cause frustration in the short-term, we believe **prod
 
 For each of these new deprecations, we've provided a codemod to automatically migrate your code. They are available as part of the [react-codemod](https://github.com/reactjs/react-codemod) project.
 
-### Migrating from React.PropTypes
+### Migrating from React.PropTypes {#migrating-from-reactproptypes}
 
 Prop types are a feature for runtime validation of props during development. We've extracted the built-in prop types to a separate package to reflect the fact that not everybody uses them.
 
@@ -65,7 +65,7 @@ The `propTypes`, `contextTypes`, and `childContextTypes` APIs will work exactly
 
 You may also consider using [Flow](https://flow.org/) to statically type check your JavaScript code, including [React components](https://flow.org/en/docs/react/components/).
 
-### Migrating from React.createClass
+### Migrating from React.createClass {#migrating-from-reactcreateclass}
 
 When React was initially released, there was no idiomatic way to create classes in JavaScript, so we provided our own: `React.createClass`.
 
@@ -106,7 +106,7 @@ Basic usage:
 jscodeshift -t react-codemod/transforms/class.js path/to/components
 ```
 
-### Discontinuing support for React Addons
+### Discontinuing support for React Addons {#discontinuing-support-for-react-addons}
 
 We're discontinuing active maintenance of React Addons packages. In truth, most of these packages haven't been actively maintained in a long time. They will continue to work indefinitely, but we recommend migrating away as soon as you can to prevent future breakages.
 
@@ -121,7 +121,7 @@ We're discontinuing active maintenance of React Addons packages. In truth, most
 
 We're also discontinuing support for the `react-with-addons` UMD build. It will be removed in React 16.
 
-### React Test Utils
+### React Test Utils {#react-test-utils}
 
 Currently, the React Test Utils live inside `react-addons-test-utils`. As of 15.5, we're deprecating that package and moving them to `react-dom/test-utils` instead:
 
@@ -147,7 +147,7 @@ import { createRenderer } from 'react-test-renderer/shallow';
 
 ---
 
-## Acknowledgements
+## Acknowledgements {#acknowledgements}
 
 A special thank you to these folks for transferring ownership of npm package names:
 
@@ -157,7 +157,7 @@ A special thank you to these folks for transferring ownership of npm package nam
 
 ---
 
-## Installation
+## Installation {#installation}
 
 We recommend using [Yarn](https://yarnpkg.com/) or [npm](https://www.npmjs.com/) for managing front-end dependencies. If you're new to package managers, the [Yarn documentation](https://yarnpkg.com/en/docs/getting-started) is a good place to get started.
 
@@ -196,11 +196,11 @@ We've also published version `15.5.0` of the `react`, `react-dom`, and addons pa
 
 ---
 
-## Changelog
+## Changelog {#changelog}
 
-## 15.5.0 (April 7, 2017)
+## 15.5.0 (April 7, 2017) {#1550-april-7-2017}
 
-### React
+### React {#react}
 
 * Added a deprecation warning for `React.createClass`. Points users to create-react-class instead. ([@acdlite](https://github.com/acdlite) in [d9a4fa4](https://github.com/facebook/react/commit/d9a4fa4f51c6da895e1655f32255cf72c0fe620e))
 * Added a deprecation warning for `React.PropTypes`. Points users to prop-types instead. ([@acdlite](https://github.com/acdlite) in [043845c](https://github.com/facebook/react/commit/043845ce75ea0812286bbbd9d34994bb7e01eb28))
@@ -209,17 +209,17 @@ We've also published version `15.5.0` of the `react`, `react-dom`, and addons pa
 * Another fix for Closure Compiler. ([@Shastel](https://github.com/Shastel) in [#8882](https://github.com/facebook/react/pull/8882))
 * Added component stack info to invalid element type warning. ([@n3tr](https://github.com/n3tr) in [#8495](https://github.com/facebook/react/pull/8495))
 
-### React DOM
+### React DOM {#react-dom}
 
 * Fixed Chrome bug when backspacing in number inputs. ([@nhunzaker](https://github.com/nhunzaker) in [#7359](https://github.com/facebook/react/pull/7359))
 * Added `react-dom/test-utils`, which exports the React Test Utils. ([@bvaughn](https://github.com/bvaughn))
 
-### React Test Renderer
+### React Test Renderer {#react-test-renderer}
 
 * Fixed bug where `componentWillUnmount` was not called for children. ([@gre](https://github.com/gre) in [#8512](https://github.com/facebook/react/pull/8512))
 * Added `react-test-renderer/shallow`, which exports the shallow renderer. ([@bvaughn](https://github.com/bvaughn))
 
-### React Addons
+### React Addons {#react-addons}
 
 * Last release for addons; they will no longer be actively maintained.
 * Removed `peerDependencies` so that addons continue to work indefinitely. ([@acdlite](https://github.com/acdlite) and [@bvaughn](https://github.com/bvaughn) in [8a06cd7](https://github.com/facebook/react/commit/8a06cd7a786822fce229197cac8125a551e8abfa) and [67a8db3](https://github.com/facebook/react/commit/67a8db3650d724a51e70be130e9008806402678a))
diff --git a/content/blog/2017-05-18-whats-new-in-create-react-app.md b/content/blog/2017-05-18-whats-new-in-create-react-app.md
index dce35748e6..9446de7e9e 100644
--- a/content/blog/2017-05-18-whats-new-in-create-react-app.md
+++ b/content/blog/2017-05-18-whats-new-in-create-react-app.md
@@ -11,7 +11,7 @@ As usual with Create React App, **you can enjoy these improvements in your exist
 
 Newly created apps will get these improvements automatically.
 
-### webpack 2
+### webpack 2 {#webpack-2}
 
 >*This change was contributed by [@Timer](https://github.com/Timer) in [#1291](https://github.com/facebookincubator/create-react-app/pull/1291).*
 
@@ -27,7 +27,7 @@ The biggest notable webpack 2 feature is the ability to write and import [ES6 mo
 
 In the future, as the ecosystem around ES6 modules matures, you can expect more improvements to your app's bundle size thanks to [tree shaking](https://webpack.js.org/guides/tree-shaking/).
 
-### Runtime Error Overlay
+### Runtime Error Overlay {#error-overlay}
 
 >*This change was contributed by [@Timer](https://github.com/Timer) and [@nicinabox](https://github.com/nicinabox) in [#1101](https://github.com/facebookincubator/create-react-app/pull/1101), [@bvaughn](https://github.com/bvaughn) in [#2201](https://github.com/facebookincubator/create-react-app/pull/2201).*
 
@@ -44,7 +44,7 @@ A GIF is worth a thousand words:
 In the future, we plan to teach the runtime error overlay to understand more about your React app. For example, after React 16 we plan to show React component stacks in addition to the JavaScript stacks when an error is thrown.
 
 
-### Progressive Web Apps by Default
+### Progressive Web Apps by Default {#progressive-web-apps-by-default}
 
 >*This change was contributed by [@jeffposnick](https://github.com/jeffposnick) in [#1728](https://github.com/facebookincubator/create-react-app/pull/1728).*
 
@@ -57,7 +57,7 @@ New apps automatically have these features, but you can easily convert an existi
 We will be adding [more documentation](https://github.com/facebookincubator/create-react-app/blob/master/packages/react-scripts/template/README.md#making-a-progressive-web-app) on this topic in the coming weeks. Please feel free to [ask any questions](https://github.com/facebookincubator/create-react-app/issues/new) on the issue tracker!
 
 
-### Jest 20
+### Jest 20 {#jest-20}
 
 >*This change was contributed by [@rogeliog](https://github.com/rogeliog) in [#1614](https://github.com/facebookincubator/create-react-app/pull/1614) and [@gaearon](https://github.com/gaearon) in [#2171](https://github.com/facebookincubator/create-react-app/pull/2171).*
    
@@ -69,7 +69,7 @@ Highlights include a new [immersive watch mode](https://facebook.github.io/jest/
 
 Additionally, Create React App now support configuring a few Jest options related to coverage reporting.
 
-### Code Splitting with Dynamic import()
+### Code Splitting with Dynamic import() {#code-splitting-with-dynamic-import}
 
 >*This change was contributed by [@Timer](https://github.com/Timer) in [#1538](https://github.com/facebookincubator/create-react-app/pull/1538) and [@tharakawj](https://github.com/tharakawj) in [#1801](https://github.com/facebookincubator/create-react-app/pull/1801).*
    
@@ -79,7 +79,7 @@ In this release, we are adding support for the [dynamic `import()` proposal](htt
 
 ![Creating chunks with dynamic import](../images/blog/cra-dynamic-import.gif)
 
-### Better Console Output
+### Better Console Output {#better-console-output}
 
 >*This change was contributed by [@gaearon](https://github.com/gaearon) in [#2120](https://github.com/facebookincubator/create-react-app/pull/2120), [#2125](https://github.com/facebookincubator/create-react-app/pull/2125), and [#2161](https://github.com/facebookincubator/create-react-app/pull/2161).*
 
@@ -91,13 +91,13 @@ For example, when you start the development server, we now display the LAN addre
 
 When lint errors are reported, we no longer show the warnings so that you can concentrate on more critical issues. Errors and warnings in the production build output are better formatted, and the build error overlay font size now matches the browser font size more closely.
 
-### But Wait... There's More!
+### But Wait... There's More! {#but-wait-theres-more}
 
 You can only fit so much in a blog post, but there are other long-requested features in this release, such as [environment-specific and local `.env` files](https://github.com/facebookincubator/create-react-app/pull/1344), [a lint rule against confusingly named globals](https://github.com/facebookincubator/create-react-app/pull/2130), [support for multiple proxies in development](https://github.com/facebookincubator/create-react-app/pull/1790), [a customizable browser launch script](https://github.com/facebookincubator/create-react-app/pull/1590), and many bugfixes.
 
 You can read the full changelog and the migration guide in the [v1.0.0 release notes](https://github.com/facebookincubator/create-react-app/releases/tag/v1.0.0).
 
-### Acknowledgements
+### Acknowledgements {#acknowledgements}
 
 This release is a result of months of work from many people in the React community. It is focused on improving both developer and end user experience, as we believe they are complementary and go hand in hand.
 
diff --git a/content/blog/2017-06-13-react-v15.6.0.md b/content/blog/2017-06-13-react-v15.6.0.md
index f2f697b95e..55aeccd514 100644
--- a/content/blog/2017-06-13-react-v15.6.0.md
+++ b/content/blog/2017-06-13-react-v15.6.0.md
@@ -5,7 +5,7 @@ author: [flarnie]
 
 Today we are releasing React 15.6.0. As we prepare for React 16.0, we have been fixing and cleaning up many things. This release continues to pave the way.
 
-## Improving Inputs
+## Improving Inputs {#improving-inputs}
 
 In React 15.6.0 the `onChange` event for inputs is a little bit more reliable and handles more edge cases, including the following:
 
@@ -18,7 +18,7 @@ In React 15.6.0 the `onChange` event for inputs is a little bit more reliable an
 
 Thanks to [Jason Quense](https://github.com/jquense) and everyone who helped out on those issues and PRs.
 
-## Less Noisy Deprecation Warnings
+## Less Noisy Deprecation Warnings {#less-noisy-deprecation-warnings}
 
 We are also including a couple of new warnings for upcoming deprecations. These should not affect most users, and for more details see the changelog below.
 
@@ -26,7 +26,7 @@ After the last release, we got valuable community feedback that deprecation warn
 
 ---
 
-## Installation
+## Installation {#installation}
 
 We recommend using [Yarn](https://yarnpkg.com/) or [npm](https://www.npmjs.com/) for managing front-end dependencies. If you're new to package managers, the [Yarn documentation](https://yarnpkg.com/en/docs/getting-started) is a good place to get started.
 
@@ -65,18 +65,18 @@ We've also published version `15.6.0` of `react` and `react-dom` on npm, and the
 
 ---
 
-## Changelog
+## Changelog {#changelog}
 
-## 15.6.0 (June 13, 2017)
+## 15.6.0 (June 13, 2017) {#1560-june-13-2017}
 
-### React
+### React {#react}
 
 * Downgrade deprecation warnings to use `console.warn` instead of `console.error`. ([@flarnie](https://github.com/flarnie) in [#9753](https://github.com/facebook/react/pull/9753))
 * Add a deprecation warning for `React.createClass`. Points users to `create-react-class` instead. ([@flarnie](https://github.com/flarnie) in [#9771](https://github.com/facebook/react/pull/9771))
 * Add deprecation warnings and separate module for `React.DOM` factory helpers. ([@nhunzaker](https://github.com/nhunzaker) in [#8356](https://github.com/facebook/react/pull/8356))
 * Warn for deprecation of `React.createMixin` helper, which was never used. ([@aweary](https://github.com/aweary) in [#8853](https://github.com/facebook/react/pull/8853))
 
-### React DOM
+### React DOM {#react-dom}
 
 * Add support for CSS variables in `style` attribute. ([@aweary](https://github.com/aweary) in [#9302](https://github.com/facebook/react/pull/9302))
 * Add support for CSS Grid style properties. ([@ericsakmar](https://github.com/ericsakmar) in [#9185](https://github.com/facebook/react/pull/9185))
@@ -85,7 +85,7 @@ We've also published version `15.6.0` of `react` and `react-dom` on npm, and the
 * Fix bug where controlled number input mistakenly allowed period. ([@nhunzaker](https://github.com/nhunzaker) in [#9584](https://github.com/facebook/react/pull/9584))
 * Fix bug where performance entries were being cleared. ([@chrisui](https://github.com/chrisui) in [#9451](https://github.com/facebook/react/pull/9451))
 
-### React Addons
+### React Addons {#react-addons}
 
 * Fix AMD support for addons depending on `react`. ([@flarnie](https://github.com/flarnie) in [#9919](https://github.com/facebook/react/issues/9919))
 * Fix `isMounted()` to return `true` in `componentWillUnmount`. ([@mridgway](https://github.com/mridgway) in [#9638](https://github.com/facebook/react/issues/9638))
diff --git a/content/blog/2017-07-26-error-handling-in-react-16.md b/content/blog/2017-07-26-error-handling-in-react-16.md
index 0fd496ee44..7625de7b4a 100644
--- a/content/blog/2017-07-26-error-handling-in-react-16.md
+++ b/content/blog/2017-07-26-error-handling-in-react-16.md
@@ -7,11 +7,11 @@ As React 16 release is getting closer, we would like to announce a few changes t
 
 **By the way, [we just released the first beta of React 16 for you to try!](https://github.com/facebook/react/issues/10294)**
 
-## Behavior in React 15 and Earlier
+## Behavior in React 15 and Earlier {#behavior-in-react-15-and-earlier}
 
 In the past, JavaScript errors inside components used to corrupt React’s internal state and cause it to [emit](https://github.com/facebook/react/issues/4026) [cryptic](https://github.com/facebook/react/issues/6895) [errors](https://github.com/facebook/react/issues/8579) on next renders. These errors were always caused by an earlier error in the application code, but React did not provide a way to handle them gracefully in components, and could not recover from them.
 
-## Introducing Error Boundaries
+## Introducing Error Boundaries {#introducing-error-boundaries}
 
 A JavaScript error in a part of the UI shouldn’t break the whole app. To solve this problem for React users, React 16 introduces a new concept of an “error boundary”.
 
@@ -55,15 +55,15 @@ The `componentDidCatch()` method works like a JavaScript `catch {}` block, but f
 
 Note that **error boundaries only catch errors in the components below them in the tree**. An error boundary can’t catch an error within itself. If an error boundary fails trying to render the error message, the error will propagate to the closest error boundary above it. This, too, is similar to how `catch {}` block works in JavaScript.
 
-## Live Demo
+## Live Demo {#live-demo}
 
 Check out [this example of declaring and using an error boundary](https://codepen.io/gaearon/pen/wqvxGa?editors=0010) with [React 16 beta](https://github.com/facebook/react/issues/10294).
 
-## Where to Place Error Boundaries
+## Where to Place Error Boundaries {#where-to-place-error-boundaries}
 
 The granularity of error boundaries is up to you. You may wrap top-level route components to display a “Something went wrong” message to the user, just like server-side frameworks often handle crashes. You may also wrap individual widgets in an error boundary to protect them from crashing the rest of the application.
 
-## New Behavior for Uncaught Errors
+## New Behavior for Uncaught Errors {#new-behavior-for-uncaught-errors}
 
 This change has an important implication. **As of React 16, errors that were not caught by any error boundary will result in unmounting of the whole React component tree.**
 
@@ -75,7 +75,7 @@ For example, Facebook Messenger wraps content of the sidebar, the info panel, th
 
 We also encourage you to use JS error reporting services (or build your own) so that you can learn about unhandled exceptions as they happen in production, and fix them.
 
-## Component Stack Traces
+## Component Stack Traces {#component-stack-traces}
 
 React 16 prints all errors that occurred during rendering to the console in development, even if the application accidentally swallows them. In addition to the error message and the JavaScript stack, it also provides component stack traces. Now you can see where exactly in the component tree the failure has happened:
 
@@ -87,7 +87,7 @@ You can also see the filenames and line numbers in the component stack trace. Th
 
 If you don’t use Create React App, you can add [this plugin](https://www.npmjs.com/package/babel-plugin-transform-react-jsx-source) manually to your Babel configuration. Note that it’s intended only for development and **must be disabled in production**.
 
-## Why Not Use `try` / `catch`?
+## Why Not Use `try` / `catch`? {#why-not-use-try--catch}
 
 `try` / `catch` is great but it only works for imperative code:
 
@@ -107,7 +107,7 @@ However, React components are declarative and specify *what* should be rendered:
 
 Error boundaries preserve the declarative nature of React, and behave as you would expect. For example, even if an error occurs in a `componentDidUpdate` method caused by a `setState` somewhere deep in the tree, it will still correctly propagate to the closest error boundary.
 
-## Naming Changes from React 15
+## Naming Changes from React 15 {#naming-changes-from-react-15}
 
 React 15 included a very limited support for error boundaries under a different method name: `unstable_handleError`. This method no longer works, and you will need to change it to `componentDidCatch` in your code starting from the first 16 beta release.
 
diff --git a/content/blog/2017-09-08-dom-attributes-in-react-16.md b/content/blog/2017-09-08-dom-attributes-in-react-16.md
index b8953997cf..31c66e53e6 100644
--- a/content/blog/2017-09-08-dom-attributes-in-react-16.md
+++ b/content/blog/2017-09-08-dom-attributes-in-react-16.md
@@ -24,7 +24,7 @@ In React 16, we are making a change. Now, any unknown attributes will end up in
 <div mycustomattribute="something" />
 ```
 
-## Why Are We Changing This?
+## Why Are We Changing This? {#why-are-we-changing-this}
 
 React has always provided a JavaScript-centric API to the DOM. Since React components often take both custom and DOM-related props, it makes sense for React to use the `camelCase` convention just like the DOM APIs:
 
@@ -63,13 +63,13 @@ With the new approach, both of these problems are solved. With React 16, you can
 
 In other words, the way you use DOM components in React hasn't changed, but now you have some new capabilities.
 
-## Should I Keep Data in Custom Attributes?
+## Should I Keep Data in Custom Attributes? {#should-i-keep-data-in-custom-attributes}
 
 No. We don't encourage you to keep data in DOM attributes. Even if you have to, `data-` attributes are probably a better approach, but in most cases data should be kept in React component state or external stores.
 
 However, the new feature is handy if you need to use a non-standard or a new DOM attribute, or if you need to integrate with a third-party library that relies on such attributes.
 
-## Data and ARIA Attributes
+## Data and ARIA Attributes {#data-and-aria-attributes}
 
 Just like before, React lets you pass `data-` and `aria-` attributes freely:
 
@@ -82,7 +82,7 @@ This has not changed.
 
 [Accessibility](/docs/accessibility.html) is very important, so even though React 16 passes any attributes through, it still validates that `aria-` props have correct names in development mode, just like React 15 did.
 
-## Migration Path
+## Migration Path {#migration-path}
 
 We have included [a warning about unknown attributes](/warnings/unknown-prop.html) since [React 15.2.0](https://github.com/facebook/react/releases/tag/v15.2.0) which came out more than a year ago. The vast majority of third-party libraries have already updated their code. If your app doesn't produce warnings with React 15.2.0 or higher, this change should not require modifications in your application code.
 
@@ -96,7 +96,7 @@ This is somewhat safe (the browser will just ignore them) but we recommend to fi
 
 To avoid these problems, we suggest to fix the warnings you see in React 15 before upgrading to React 16.
 
-## Changes in Detail
+## Changes in Detail {#changes-in-detail}
 
 We've made a few other changes to make the behavior more predictable and help ensure you're not making mistakes. We don't anticipate that these changes are likely to break real-world applications.
 
@@ -167,12 +167,12 @@ Below is a detailed list of them.
 
 While testing this release, we have also [created an automatically generated table](https://github.com/facebook/react/blob/master/fixtures/attribute-behavior/AttributeTableSnapshot.md) for all known attributes to track potential regressions.
 
-## Try It!
+## Try It! {#try-it}
 
 You can try the change in [this CodePen](https://codepen.io/gaearon/pen/gxNVdP?editors=0010).  
 It uses React 16 RC, and you can [help us by testing the RC in your project!](https://github.com/facebook/react/issues/10294)
 
-## Thanks
+## Thanks {#thanks}
 
 This effort was largely driven by [Nathan Hunzaker](https://github.com/nhunzaker) who has been a [prolific outside contributor to React](https://github.com/facebook/react/pulls?q=is:pr+author:nhunzaker+is:closed).
 
@@ -182,6 +182,6 @@ Major changes in a popular project can take a lot of time and research. Nathan d
 
 We would also like to thank [Brandon Dail](https://github.com/aweary) and [Jason Quense](https://github.com/jquense) for their invaluable help maintaining React this year.
 
-## Future Work
+## Future Work {#future-work}
 
 We are not changing how [custom elements](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Custom_Elements) work in React 16, but there are [existing discussions](https://github.com/facebook/react/issues/7249) about setting properties instead of attributes, and we might revisit this in React 17. Feel free to chime in if you'd like to help!
diff --git a/content/blog/2017-09-25-react-v15.6.2.md b/content/blog/2017-09-25-react-v15.6.2.md
index d9b3e974c3..71ddd7346b 100644
--- a/content/blog/2017-09-25-react-v15.6.2.md
+++ b/content/blog/2017-09-25-react-v15.6.2.md
@@ -7,7 +7,7 @@ Today we're sending out React 15.6.2. In 15.6.1, we shipped a few fixes for chan
 
 Additionally, 15.6.2 adds support for the [`controlList`](https://developers.google.com/web/updates/2017/03/chrome-58-media-updates#controlslist) attribute, and CSS columns are no longer appended with a `px` suffix.
 
-## Installation
+## Installation {#installation}
 
 We recommend using [Yarn](https://yarnpkg.com/) or [npm](https://www.npmjs.com/) for managing front-end dependencies. If you're new to package managers, the [Yarn documentation](https://yarnpkg.com/en/docs/getting-started) is a good place to get started.
 
@@ -46,14 +46,14 @@ We've also published version `15.6.2` of `react` and `react-dom` on npm, and the
 
 ---
 
-## Changelog
+## Changelog {#changelog}
 
-## 15.6.2 (September 25, 2017)
+## 15.6.2 (September 25, 2017) {#1562-september-25-2017}
 
-### All Packages
+### All Packages {#all-packages}
 * Switch from BSD + Patents to MIT license
 
-### React DOM
+### React DOM {#react-dom}
 
 * Fix a bug where modifying `document.documentMode` would trigger IE detection in other browsers, breaking change events. ([@aweary](https://github.com/aweary) in [#10032](https://github.com/facebook/react/pull/10032))
 * CSS Columns are treated as unitless numbers. ([@aweary](https://github.com/aweary) in [#10115](https://github.com/facebook/react/pull/10115))
diff --git a/content/blog/2017-09-26-react-v16.0.md b/content/blog/2017-09-26-react-v16.0.md
index 1e3a41942a..b9f3778514 100644
--- a/content/blog/2017-09-26-react-v16.0.md
+++ b/content/blog/2017-09-26-react-v16.0.md
@@ -5,7 +5,7 @@ author: [acdlite]
 
 We're excited to announce the release of React v16.0! Among the changes are some long-standing feature requests, including [**fragments**](#new-render-return-types-fragments-and-strings), [**error boundaries**](#better-error-handling), [**portals**](#portals), support for [**custom DOM attributes**](#support-for-custom-dom-attributes), improved [**server-side rendering**](#better-server-side-rendering), and [**reduced file size**](#reduced-file-size).
 
-### New render return types: fragments and strings
+### New render return types: fragments and strings {#new-render-return-types-fragments-and-strings}
 
 You can now return an array of elements from a component's `render` method. Like with other arrays, you'll need to add a key to each element to avoid the key warning:
 
@@ -33,7 +33,7 @@ render() {
 
 [See the full list of supported return types](/docs/react-component.html#render).
 
-### Better error handling
+### Better error handling {#better-error-handling}
 
 Previously, runtime errors during rendering could put React in a broken state, producing cryptic error messages and requiring a page refresh to recover. To address this problem, React 16 uses a more resilient error-handling strategy. By default, if an error is thrown inside a component's render or lifecycle methods, the whole component tree is unmounted from the root. This prevents the display of corrupted data. However, it's probably not the ideal user experience.
 
@@ -42,7 +42,7 @@ Instead of unmounting the whole app every time there's an error, you can use err
 For more details, check out our [previous post on error handling in React 16](/blog/2017/07/26/error-handling-in-react-16.html).
 
 
-### Portals
+### Portals {#portals}
 
 Portals provide a first-class way to render children into a DOM node that exists outside the DOM hierarchy of the parent component.
 
@@ -59,7 +59,7 @@ render() {
 
 See a full example in the [documentation for portals](/docs/portals.html).
 
-### Better server-side rendering
+### Better server-side rendering {#better-server-side-rendering}
 
 React 16 includes a completely rewritten server renderer. It's really fast. It supports **streaming**, so you can start sending bytes to the client faster. And thanks to a [new packaging strategy](#reduced-file-size) that compiles away `process.env` checks (Believe it or not, reading `process.env` in Node is really slow!), you no longer need to bundle React to get good server-rendering performance.
 
@@ -69,11 +69,11 @@ In addition, React 16 is better at hydrating server-rendered HTML once it reache
 
 See the [documentation for `ReactDOMServer`](/docs/react-dom-server.html) for more details.
 
-### Support for custom DOM attributes
+### Support for custom DOM attributes {#support-for-custom-dom-attributes}
 
 Instead of ignoring unrecognized HTML and SVG attributes, React will now [pass them through to the DOM](/blog/2017/09/08/dom-attributes-in-react-16.html). This has the added benefit of allowing us to get rid of most of React's attribute whitelist, resulting in reduced file sizes.
 
-### Reduced file size
+### Reduced file size {#reduced-file-size}
 
 Despite all these additions, React 16 is actually **smaller** compared to 15.6.1!
 
@@ -85,11 +85,11 @@ That amounts to a combined **32% size decrease compared to the previous version
 
 The size difference is partly attributable to a change in packaging. React now uses [Rollup](https://rollupjs.org/) to create flat bundles for each of its different target formats, resulting in both size and runtime performance wins. The flat bundle format also means that React's impact on bundle size is roughly consistent regardless of how you ship your app, whether it's with Webpack, Browserify, the pre-built UMD bundles, or any other system.
 
-### MIT licensed
+### MIT licensed {#mit-licensed}
 
 [In case you missed it](https://code.facebook.com/posts/300798627056246/relicensing-react-jest-flow-and-immutable-js/), React 16 is available under the MIT license. We've also published React 15.6.2 under MIT, for those who are unable to upgrade immediately.
 
-### New core architecture
+### New core architecture {#new-core-architecture}
 
 React 16 is the first version of React built on top of a new core architecture, codenamed "Fiber." You can read all about this project over on [Facebook's engineering blog](https://code.facebook.com/posts/1716776591680069/react-16-a-look-inside-an-api-compatible-rewrite-of-our-frontend-ui-library/). (Spoiler: we rewrote React!)
 
@@ -105,7 +105,7 @@ This demo provides an early peek at the types of problems async rendering can so
 
 We think async rendering is a big deal, and represents the future of React. To make migration to v16.0 as smooth as possible, we're not enabling any async features yet, but we're excited to start rolling them out in the coming months. Stay tuned!
 
-## Installation
+## Installation {#installation}
 
 React v16.0.0 is available on the npm registry.
 
@@ -130,18 +130,18 @@ We also provide UMD builds of React via a CDN:
 
 Refer to the documentation for [detailed installation instructions](/docs/installation.html).
 
-## Upgrading
+## Upgrading {#upgrading}
 
 Although React 16 includes significant internal changes, in terms of upgrading, you can think of this like any other major React release. We've been serving React 16 to Facebook and Messenger.com users since earlier this year, and we released several beta and release candidate versions to flush out additional issues. With minor exceptions, **if your app runs in 15.6 without any warnings, it should work in 16.**
 
 For deprecations listed in [packaging](#packaging) below, codemods are provided to automatically transform your deprecated code.
 See the [15.5.0](/blog/2017/04/07/react-v15.5.0.html) blog post for more information, or browse the codemods in the [react-codemod](https://github.com/reactjs/react-codemod) project.
 
-### New deprecations
+### New deprecations {#new-deprecations}
 
 Hydrating a server-rendered container now has an explicit API. If you're reviving server-rendered HTML, use [`ReactDOM.hydrate`](/docs/react-dom.html#hydrate) instead of `ReactDOM.render`. Keep using `ReactDOM.render` if you're just doing client-side rendering.
 
-### React Addons
+### React Addons {#react-addons}
 
 As previously announced, we've [discontinued support for React Addons](/blog/2017/04/07/react-v15.5.0.html#discontinuing-support-for-react-addons). We expect the latest version of each addon (except `react-addons-perf`; see below) to work for the foreseeable future, but we won't publish additional updates.
 
@@ -149,7 +149,7 @@ Refer to the previous announcement for [suggestions on how to migrate](/blog/201
 
 `react-addons-perf` no longer works at all in React 16. It's likely that we'll release a new version of this tool in the future. In the meantime, you can [use your browser's performance tools to profile React components](/docs/optimizing-performance.html#profiling-components-with-the-chrome-performance-tab).
 
-### Breaking changes
+### Breaking changes {#breaking-changes}
 
 React 16 includes a number of small breaking changes. These only affect uncommon use cases and we don't expect them to break most apps.
 
@@ -167,7 +167,7 @@ React 16 includes a number of small breaking changes. These only affect uncommon
 * Shallow renderer does not implement `unstable_batchedUpdates` anymore.
 * `ReactDOM.unstable_batchedUpdates` now only takes one extra argument after the callback.
 
-### Packaging
+### Packaging {#packaging}
 
 * There is no `react/lib/*` and `react-dom/lib/*` anymore. Even in CommonJS environments, React and ReactDOM are precompiled to single files (“flat bundles”). If you previously relied on undocumented React internals, and they don’t work anymore, let us know about your specific case in a new issue, and we’ll try to figure out a migration strategy for you.
 * There is no `react-with-addons.js` build anymore. All compatible addons are published separately on npm, and have single-file browser versions if you need them.
@@ -178,7 +178,7 @@ React 16 includes a number of small breaking changes. These only affect uncommon
     * `react-dom/dist/react-dom.js` → `react-dom/umd/react-dom.development.js`
     * `react-dom/dist/react-dom.min`.js → `react-dom/umd/react-dom.production.min.js`
 
-## JavaScript Environment Requirements
+## JavaScript Environment Requirements {#javascript-environment-requirements}
 
 React 16 depends on the collection types [Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) and [Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set). If you support older browsers and devices which may not yet provide these natively (e.g. IE < 11), consider including a global polyfill in your bundled application, such as [core-js](https://github.com/zloirock/core-js) or [babel-polyfill](https://babeljs.io/docs/usage/polyfill/).
 
@@ -204,7 +204,7 @@ You can use the [raf](https://www.npmjs.com/package/raf) package to shim `reques
 import 'raf/polyfill';
 ```
 
-## Acknowledgments
+## Acknowledgments {#acknowledgments}
 
 As always, this release would not have been possible without our open source contributors. Thanks to everyone who filed bugs, opened PRs, responded to issues, wrote documentation, and more!
 
diff --git a/content/blog/2017-11-28-react-v16.2.0-fragment-support.md b/content/blog/2017-11-28-react-v16.2.0-fragment-support.md
index 3d612d67aa..a8db2b0bd7 100644
--- a/content/blog/2017-11-28-react-v16.2.0-fragment-support.md
+++ b/content/blog/2017-11-28-react-v16.2.0-fragment-support.md
@@ -21,7 +21,7 @@ render() {
 
 This exciting new feature is made possible by additions to both React and JSX.
 
-## What Are Fragments?
+## What Are Fragments? {#what-are-fragments}
 
 A common pattern is for a component to return a list of children. Take this example HTML:
 
@@ -107,7 +107,7 @@ const Fragment = React.Fragment;
 </React.Fragment>
 ```
 
-## JSX Fragment Syntax
+## JSX Fragment Syntax {#jsx-fragment-syntax}
 
 Fragments are a common pattern in our codebases at Facebook. We anticipate they'll be widely adopted by other teams, too. To make the authoring experience as convenient as possible, we're adding syntactical support for fragments to JSX:
 
@@ -129,7 +129,7 @@ In React, this desugars to a `<React.Fragment/>` element, as in the example from
 
 Fragment syntax in JSX was inspired by prior art such as the `XMLList() <></>` constructor in [E4X](https://developer.mozilla.org/en-US/docs/Archive/Web/E4X/E4X_for_templating). Using a pair of empty tags is meant to represent the idea it won't add an actual element to the DOM.
 
-### Keyed Fragments
+### Keyed Fragments {#keyed-fragments}
 
 Note that the `<></>` syntax does not accept attributes, including keys.
 
@@ -153,19 +153,19 @@ function Glossary(props) {
 
 `key` is the only attribute that can be passed to `Fragment`. In the future, we may add support for additional attributes, such as event handlers.
 
-### Live Demo
+### Live Demo {#live-demo}
 
 You can experiment with JSX fragment syntax with this [CodePen](https://codepen.io/reactjs/pen/VrEbjE?editors=1000).
 
-## Support for Fragment Syntax
+## Support for Fragment Syntax {#support-for-fragment-syntax}
 
 Support for fragment syntax in JSX will vary depending on the tools you use to build your app. Please be patient as the JSX community works to adopt the new syntax. We've been working closely with maintainers of the most popular projects:
 
-### Create React App
+### Create React App {#create-react-app}
 
 Experimental support for fragment syntax will be added to Create React App within the next few days. A stable release may take a bit longer as we await adoption by upstream projects.
 
-### Babel
+### Babel {#babel}
 
 Support for JSX fragments is available in [Babel v7.0.0-beta.31](https://github.com/babel/babel/releases/tag/v7.0.0-beta.31) and above! If you are already on Babel 7, simply update to the latest Babel and plugin transform:
 
@@ -189,15 +189,15 @@ Note that Babel 7 is technically still in beta, but a [stable release is coming
 
 Unfortunately, support for Babel 6.x is not available, and there are currently no plans to backport.
 
-#### Babel with Webpack (babel-loader)
+#### Babel with Webpack (babel-loader) {#babel-with-webpack-babel-loader}
 
 If you are using Babel with [Webpack](https://webpack.js.org/), no additional steps are needed because [babel-loader](https://github.com/babel/babel-loader) will use your peer-installed version of Babel.
 
-#### Babel with Other Frameworks
+#### Babel with Other Frameworks {#babel-with-other-frameworks}
 
 If you use JSX with a non-React framework like Inferno or Preact, there is a [pragma option available in babel-plugin-transform-react-jsx](https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-react-jsx#pragmafrag) that configures the Babel compiler to de-sugar the `<></>` syntax to a custom identifier.
 
-### TypeScript
+### TypeScript {#typescript}
 
 TypeScript has full support for fragment syntax! Please upgrade to [version 2.6.2](https://github.com/Microsoft/TypeScript/releases/tag/v2.6.2). (Note that this is important even if you are already on version 2.6.1, since support was added as patch release in 2.6.2.)
 
@@ -210,7 +210,7 @@ yarn upgrade typescript
 npm update typescript
 ```
 
-### Flow
+### Flow {#flow}
 
 [Flow](https://flow.org/) support for JSX fragments is available starting in [version 0.59](https://github.com/facebook/flow/releases/tag/v0.59.0)! Simply run
 
@@ -223,11 +223,11 @@ npm update flow-bin
 
 to update Flow to the latest version.
 
-### Prettier
+### Prettier {#prettier}
 
 [Prettier](https://github.com/prettier/prettier) added support for fragments in their [1.9 release](https://prettier.io/blog/2017/12/05/1.9.0.html#jsx-fragment-syntax-3237-https-githubcom-prettier-prettier-pull-3237-by-duailibe-https-githubcom-duailibe).
 
-### ESLint
+### ESLint {#eslint}
 
 JSX Fragments are supported by [ESLint](https://eslint.org/) 3.x when it is used together with [babel-eslint](https://github.com/babel/babel-eslint):
 
@@ -257,19 +257,19 @@ That's it!
 
 Note that `babel-eslint` is not officially supported by ESLint. We'll be looking into adding support for fragments to ESLint 4.x itself in the coming weeks (see [issue #9662](https://github.com/eslint/eslint/issues/9662)).
 
-### Editor Support
+### Editor Support {#editor-support}
 
 It may take a while for fragment syntax to be supported in your text editor. Please be patient as the community works to adopt the latest changes. In the meantime, you may see errors or inconsistent highlighting if your editor does not yet support fragment syntax. Generally, these errors can be safely ignored.
 
-#### TypeScript Editor Support
+#### TypeScript Editor Support {#typescript-editor-support}
 
 If you're a TypeScript user -- great news! Editor support for JSX fragments is already available in [Visual Studio 2015](https://www.microsoft.com/en-us/download/details.aspx?id=48593), [Visual Studio 2017](https://www.microsoft.com/en-us/download/details.aspx?id=55258), [Visual Studio Code](https://code.visualstudio.com/updates/v1_19#_jsx-fragment-syntax) and [Sublime Text via Package Control](https://packagecontrol.io/packages/TypeScript).
 
-### Other Tools
+### Other Tools {#other-tools}
 
 For other tools, please check with the corresponding documentation to check if there is support available. However, if you're blocked by your tooling, you can always start with using the `<Fragment>` component and perform a codemod later to replace it with the shorthand syntax when the appropriate support is available.
 
-## Installation
+## Installation {#installation}
 
 React v16.2.0 is available on the npm registry.
 
@@ -294,31 +294,31 @@ We also provide UMD builds of React via a CDN:
 
 Refer to the documentation for [detailed installation instructions](/docs/installation.html).
 
-## Changelog
+## Changelog {#changelog}
 
-### React
+### React {#react}
 
 * Add `Fragment` as named export to React. ([@clemmy](https://github.com/clemmy) in [#10783](https://github.com/facebook/react/pull/10783))
 * Support experimental Call/Return types in `React.Children` utilities. ([@MatteoVH](https://github.com/MatteoVH) in [#11422](https://github.com/facebook/react/pull/11422))
 
-### React DOM
+### React DOM {#react-dom}
 
 * Fix radio buttons not getting checked when using multiple lists of radios. ([@landvibe](https://github.com/landvibe) in [#11227](https://github.com/facebook/react/pull/11227))
 * Fix radio buttons not receiving the `onChange` event in some cases. ([@jquense](https://github.com/jquense) in [#11028](https://github.com/facebook/react/pull/11028))
 
-### React Test Renderer
+### React Test Renderer {#react-test-renderer}
 
 * Fix `setState()` callback firing too early when called from `componentWillMount`. ([@accordeiro](https://github.com/accordeiro) in [#11507](https://github.com/facebook/react/pull/11507))
 
-### React Reconciler
+### React Reconciler {#react-reconciler}
 
 * Expose `react-reconciler/reflection` with utilities useful to custom renderers. ([@rivenhk](https://github.com/rivenhk) in [#11683](https://github.com/facebook/react/pull/11683))
 
-### Internal Changes
+### Internal Changes {#internal-changes}
 
 * Many tests were rewritten against the public API. Big thanks to [everyone who contributed](https://github.com/facebook/react/issues/11299)!
 
-## Acknowledgments
+## Acknowledgments {#acknowledgments}
 
 This release was made possible by our open source contributors. A big thanks to everyone who filed issues, contributed to syntax discussions, reviewed pull requests, added support for JSX fragments in third party libraries, and more!
 
diff --git a/content/blog/2017-12-07-introducing-the-react-rfc-process.md b/content/blog/2017-12-07-introducing-the-react-rfc-process.md
index 595b7f37c9..349b0e5d67 100644
--- a/content/blog/2017-12-07-introducing-the-react-rfc-process.md
+++ b/content/blog/2017-12-07-introducing-the-react-rfc-process.md
@@ -15,13 +15,13 @@ Inspired by [Yarn](https://github.com/yarnpkg/rfcs), [Ember](https://github.com/
 
 RFCs are accepted when they are approved for implementation in React. A more thorough description of the process is available in the repository's [README](https://github.com/reactjs/rfcs/blob/master/README.md). The exact details may be refined in the future.
 
-## Who Can Submit RFCs?
+## Who Can Submit RFCs? {#who-can-submit-rfcs}
 
 Anyone! No knowledge of React's internals is required, nor are you expected to implement the proposal yourself.
 
 As with our other repositories, we do ask that you complete a [Contributor License Agreement](https://github.com/reactjs/rfcs#contributor-license-agreement-cla) before we can accept your PR.
 
-## What Types of Changes Should Be Submitted As RFCs?
+## What Types of Changes Should Be Submitted As RFCs? {#what-types-of-changes-should-be-submitted-as-rfcs}
 
 Generally, any idea that would benefit from additional review or design before being implemented is a good candidate for an RFC. As a rule of thumb, this means any proposal that adds, changes, or removes a React API.
 
@@ -33,7 +33,7 @@ We now have several repositories where you can submit contributions to React:
 - **Website and documentation**: [reactjs/reactjs.org](https://github.com/reactjs/reactjs.org)
 - **Ideas for changes that need additional review before being implemented**: [reactjs/rfcs](https://github.com/reactjs/rfcs)
 
-## RFC for A New Context API
+## RFC for A New Context API {#rfc-for-a-new-context-api}
 
 Coinciding with the launch of our RFC process, we've submitted a [proposal for a new version of context](https://github.com/reactjs/rfcs/pull/2). The proposal has already received many valuable comments from the community that we will incorporate into the design of the new API.
 
diff --git a/content/blog/2017-12-15-improving-the-repository-infrastructure.md b/content/blog/2017-12-15-improving-the-repository-infrastructure.md
index 938a530570..ae3cad65ce 100644
--- a/content/blog/2017-12-15-improving-the-repository-infrastructure.md
+++ b/content/blog/2017-12-15-improving-the-repository-infrastructure.md
@@ -7,7 +7,7 @@ As we worked on [React 16](/blog/2017/09/26/react-v16.0.html), we revamped the f
 
 While these changes helped us make React better, they don't affect most React users directly. However, we hope that blogging about them might help other library authors solve similar problems. Our contributors might also find these notes helpful!
 
-## Formatting Code with Prettier
+## Formatting Code with Prettier {#formatting-code-with-prettier}
 
 React was one of the first large repositories to [fully embrace](https://github.com/facebook/react/pull/9101) opinionated automatic code formatting with [Prettier](https://prettier.io/). Our current Prettier setup consists of:
 
@@ -16,11 +16,11 @@ React was one of the first large repositories to [fully embrace](https://github.
 
 Some team members have also set up the [editor integrations](https://prettier.io/docs/en/editors.html). Our experience with Prettier has been fantastic, and we recommend it to any team that writes JavaScript.
 
-## Restructuring the Monorepo
+## Restructuring the Monorepo {#restructuring-the-monorepo}
 
 Ever since React was split into packages, it has been a [monorepo](https://danluu.com/monorepo/): a set of packages under the umbrella of a single repository. This made it easier to coordinate changes and share the tooling, but our folder structure was deeply nested and difficult to understand. It was not clear which files belonged to which package. After releasing React 16, we've decided to completely reorganize the repository structure. Here is how we did it.
 
-### Migrating to Yarn Workspaces
+### Migrating to Yarn Workspaces {#migrating-to-yarn-workspaces}
 
 The Yarn package manager [introduced a feature called Workspaces](https://yarnpkg.com/blog/2017/08/02/introducing-workspaces/) a few months ago. This feature lets you tell Yarn where your monorepo's packages are located in the source tree. Every time you run `yarn`, in addition to installing your dependencies it also sets up the symlinks that point from your project's `node_modules` to the source folders of your packages.
 
@@ -32,7 +32,7 @@ Each package is structured in a similar way. For every public API entry point su
 
 Not all packages have to be published on npm. For example, we keep some utilities that are tiny enough and can be safely duplicated in a [pseudo-package called `shared`](https://github.com/facebook/react/tree/cc52e06b490e0dc2482b345aa5d0d65fae931095/packages/shared). Our bundler is configured to [only treat `dependencies` declared from `package.json` as externals](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/rollup/build.js#L326-L329) so it happily bundles the `shared` code into `react` and `react-dom` without leaving any references to `shared/` in the build artifacts. So you can use Yarn Workspaces even if you don't plan to publish actual npm packages!
 
-### Removing the Custom Module System
+### Removing the Custom Module System {#removing-the-custom-module-system}
 
 In the past, we used a non-standard module system called "Haste" that lets you import any file from any other file by its unique `@providesModule` directive no matter where it is in the tree. It neatly avoids the problem of deep relative imports with paths like `../../../../` and is great for the product code. However, this makes it hard to understand the dependencies between packages. We also had to resort to hacks to make it work with different tools.
 
@@ -55,7 +55,7 @@ This way, the relative paths can only contain one `./` or `../` followed by the
 
 In practice, we still have [some cross-package "internal" imports](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/packages/react-dom/src/client/ReactDOMFiberComponent.js#L10-L11) that violate this principle, but they're explicit, and we plan to gradually get rid of them.
 
-## Compiling Flat Bundles
+## Compiling Flat Bundles {#compiling-flat-bundles}
 
 Historically, React was distributed in two different formats: as a single-file build that you can add as a `<script>` tag in the browser, and as a collection of CommonJS modules that you can bundle with a tool like webpack or Browserify. 
 
@@ -89,7 +89,7 @@ For example, [`react.development.js`](https://unpkg.com/react@16/cjs/react.devel
 
 Note how this is essentially the same strategy that we've been using for the single-file browser builds (which now reside in the [`umd` directory](https://unpkg.com/react@16/umd/), short for [Universal Module Definition](https://www.davidbcalhoun.com/2014/what-is-amd-commonjs-and-umd/)). Now we just apply the same strategy to the CommonJS builds as well.
 
-### Migrating to Rollup
+### Migrating to Rollup {#migrating-to-rollup}
 
 Just compiling CommonJS modules into single-file bundles doesn't solve all of the above problems. The really significant wins came from [migrating our build system](https://github.com/facebook/react/pull/9327) from Browserify to [Rollup](https://rollupjs.org/).
 
@@ -99,7 +99,7 @@ Rollup currently doesn't support some features that are important to application
 
 You can find our Rollup build configuration [here](https://github.com/facebook/react/blob/8ec146c38ee4f4c84b6ecf59f52de3371224e8bd/scripts/rollup/build.js#L336-L362), with a [list of plugins we currently use](https://github.com/facebook/react/blob/8ec146c38ee4f4c84b6ecf59f52de3371224e8bd/scripts/rollup/build.js#L196-L273).
 
-### Migrating to Google Closure Compiler
+### Migrating to Google Closure Compiler {#migrating-to-google-closure-compiler}
 
 After migrating to flat bundles, we [started](https://github.com/facebook/react/pull/10236) using [the JavaScript version of the Google Closure Compiler](https://github.com/google/closure-compiler-js) in its "simple" mode. In our experience, even with the advanced optimizations disabled, it still provided a significant advantage over Uglify, as it was able to better eliminate dead code and automatically inline small functions when appropriate.
 
@@ -107,7 +107,7 @@ At first, we could only use Google Closure Compiler for the React bundles we shi
 
 Currently, all production React bundles [run through Google Closure Compiler in simple mode](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/rollup/build.js#L235-L248), and we may look into enabling advanced optimizations in the future.
 
-### Protecting Against Weak Dead Code Elimination
+### Protecting Against Weak Dead Code Elimination {#protecting-against-weak-dead-code-elimination}
 
 While we use an efficient [dead code elimination](https://en.wikipedia.org/wiki/Dead_code_elimination) solution in React itself, we can't make a lot of assumptions about the tools used by the React consumers.
 
@@ -129,7 +129,7 @@ if ("production" !== "production") {
 
 However, if the bundler is misconfigured, you can accidentally ship development code into production. We can't completely prevent this, but we took a few steps to mitigate the common cases when it happens.
 
-#### Protecting Against Late Envification
+#### Protecting Against Late Envification {#protecting-against-late-envification}
 
 As mentioned above, our entry points now look like this:
 
@@ -161,7 +161,7 @@ This way, even if the application bundle includes both the development and the p
 
 The additional [IIFE](https://en.wikipedia.org/wiki/Immediately-invoked_function_expression) wrapper is necessary because some declarations (e.g. functions) can't be placed inside an `if` statement in JavaScript.
 
-#### Detecting Misconfigured Dead Code Elimination
+#### Detecting Misconfigured Dead Code Elimination {#detecting-misconfigured-dead-code-elimination}
 
 Even though [the situation is changing](https://twitter.com/iamakulov/status/941336777188696066), many popular bundlers don't yet force the users to specify the development or production mode. In this case `process.env.NODE_ENV` is typically provided by a runtime polyfill, but the dead code elimination doesn't work.
 
@@ -179,11 +179,11 @@ We can write a function that contains a [development-only branch](https://github
 
 We recognize this approach is somewhat fragile. The `toString()` method is not reliable and may change its behavior in future browser versions. This is why we put that logic into React DevTools itself rather than into React. This allows us to remove it later if it becomes problematic. We also warn only if we *found* the special string literal rather than if we *didn't* find it. This way, if the `toString()` output becomes opaque, or is overridden, the warning just won't fire.
 
-## Catching Mistakes Early
+## Catching Mistakes Early {#catching-mistakes-early}
 
 We want to catch bugs as early as possible. However, even with our extensive test coverage, occasionally we make a blunder. We made several changes to our build and test infrastructure this year to make it harder to mess up.
 
-### Migrating to ES Modules
+### Migrating to ES Modules {#migrating-to-es-modules}
 
 With the CommonJS `require()` and `module.exports`, it is easy to import a function that doesn't really exist, and not realize that until you call it. However, tools like Rollup that natively support [`import`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import) and [`export`](https://developer.mozilla.org/en-US/docs/web/javascript/reference/statements/export) syntax fail the build if you mistype a named import. After releasing React 16, [we have converted the entire React source code](https://github.com/facebook/react/pull/11389) to the ES Modules syntax.
 
@@ -191,13 +191,13 @@ Not only did this provide some extra protection, but it also helped improve the
 
 For now, have decided to only convert the source code to ES Modules, but not the tests. We use powerful utilities like `jest.resetModules()` and want to retain tighter control over when the modules get initialized in tests. In order to consume ES Modules from our tests, we enabled the [Babel CommonJS transform](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/jest/preprocessor.js#L28-L29), but only for the test environment.
 
-### Running Tests in Production Mode
+### Running Tests in Production Mode {#running-tests-in-production-mode}
 
 Historically, we've been running all tests in a development environment. This let us assert on the warning messages produced by React, and seemed to make general sense. However, even though we try to keep the differences between the development and production code paths minimal, occasionally we would make a mistake in production-only code branches that weren't covered by tests, and cause an issue at Facebook.
 
 To solve this problem, we have added a new [`yarn test-prod`](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/package.json#L110) command that runs on CI for every pull request, and [executes all React test cases in the production mode](https://github.com/facebook/react/pull/11616). We wrapped any assertions about warning messages into development-only conditional blocks in all tests so that they can still check the rest of the expected behavior in both environments. Since we have a custom Babel transform that replaces production error messages with the [error codes](/blog/2016/07/11/introducing-reacts-error-code-system.html), we also added a [reverse transformation](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/jest/setupTests.js#L91-L126) as part of the production test run.
 
-### Using Public API in Tests
+### Using Public API in Tests {#using-public-api-in-tests}
 
 When we were [rewriting the React reconciler](https://code.facebook.com/posts/1716776591680069/react-16-a-look-inside-an-api-compatible-rewrite-of-our-frontend-ui-library/), we recognized the importance of writing tests against the public API instead of internal modules. If the test is written against the public API, it is clear what is being tested from the user's perspective, and you can run it even if you rewrite the implementation from scratch.
 
@@ -205,7 +205,7 @@ We reached out to the wonderful React community [asking for help](https://github
 
 We would like to give our deepest thanks to [everyone who contributed to this effort](https://github.com/facebook/react/issues?q=is%3Apr+11299+is%3Aclosed).
 
-### Running Tests on Compiled Bundles
+### Running Tests on Compiled Bundles {#running-tests-on-compiled-bundles}
 
 There is also one more benefit to writing tests against the public API: now we can [run them against the compiled bundles](https://github.com/facebook/react/pull/11633).
 
@@ -221,17 +221,17 @@ There are still some test files that we intentionally don't run against the bund
 
 Currently, over 93% out of 2,650 React tests run against the compiled bundles.
 
-### Linting Compiled Bundles
+### Linting Compiled Bundles {#linting-compiled-bundles}
 
 In addition to linting our source code, we run a much more limited set of lint rules (really, [just two of them](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/rollup/validate/eslintrc.cjs.js#L26-L27)) on the compiled bundles. This gives us an extra layer of protection against regressions in the underlying tools and [ensures](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/rollup/validate/eslintrc.cjs.js#L22) that the bundles don't use any language features that aren't supported by older browsers.
 
-### Simulating Package Publishing
+### Simulating Package Publishing {#simulating-package-publishing}
 
 Even running the tests on the built packages is not enough to avoid shipping a broken update. For example, we use the `files` field in our `package.json` files to specify a whitelist of folders and files that should be published on npm. However, it is easy to add a new entry point to a package but forget to add it to the whitelist. Even the bundle tests would pass, but after publishing the new entry point would be missing.
 
 To avoid situations like this, we are now simulating the npm publish by [running `npm pack` and then immediately unpacking the archive](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/rollup/packaging.js#L129-L134) after the build. Just like `npm publish`, this command filters out anything that isn't in the `files` whitelist. With this approach, if we were to forget adding an entry point to the list, it would be missing in the build folder, and the bundle tests relying on it would fail.
 
-### Creating Manual Test Fixtures
+### Creating Manual Test Fixtures {#creating-manual-test-fixtures}
 
 Our unit tests run only in the Node environment, but not in the browsers. This was an intentional decision because browser-based testing tools were flaky in our experience, and didn't catch many issues anyway.
 
@@ -255,7 +255,7 @@ In some cases, a change proved to be so complex that it necessitated a standalon
 
 Going through the fixtures is still a lot of work, and we are considering automating some of it. Still, the fixture app is invaluable even as documentation for the existing behavior and all the edge cases and browser bugs that React currently handles. Having it gives us confidence in making significant changes to the logic without breaking important use cases. Another improvement we're considering is to have a GitHub bot build and deploy the fixtures automatically for every pull request that touches the relevant files so anyone can help with browser testing.
 
-### Preventing Infinite Loops
+### Preventing Infinite Loops {#preventing-infinite-loops}
 
 The React 16 codebase contains many `while` loops. They let us avoid the dreaded deep stack traces that occurred with earlier versions of React, but can make development of React really difficult. Every time there is a mistake in an exit condition our tests would just hang, and it took a while to figure out which of the loops is causing the issue.
 
@@ -263,11 +263,11 @@ Inspired by the [strategy adopted by Repl.it](https://repl.it/site/blog/infinite
 
 This approach has a pitfall. If an error thrown from the Babel plugin gets caught and ignored up the call stack, the test will pass even though it has an infinite loop. This is really, really bad. To solve this problem, we [set a global field](https://github.com/facebook/react/blob/d906de7f602df810c38aa622c83023228b047db6/scripts/babel/transform-prevent-infinite-loops.js#L26-L30) before throwing the error. Then, after every test run, we [rethrow that error if the global field has been set](https://github.com/facebook/react/blob/d906de7f602df810c38aa622c83023228b047db6/scripts/jest/setupTests.js#L42-L56). This way any infinite loop will cause a test failure, no matter whether the error from the Babel plugin was caught or not.
 
-## Customizing the Build
+## Customizing the Build {#customizing-the-build}
 
 There were a few things that we had to fine-tune after introducing our new build process. It took us a while to figure them out, but we're moderately happy with the solutions that we arrived at.
 
-### Dead Code Elimination
+### Dead Code Elimination {#dead-code-elimination}
 
 The combination of Rollup and Google Closure Compiler already gets us pretty far in terms of stripping development-only code in production bundles. We [replace](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/rollup/build.js#L223-L226) the `__DEV__` literal with a boolean constant during the build, and both Rollup together and Google Closure Compiler can strip out the `if (false) {}` code branches and even some more sophisticated patterns. However, there is one particularly nasty case:
 
@@ -285,7 +285,7 @@ To solve this problem, we use the [`treeshake.pureExternalModules` Rollup option
 
 When we optimize something, we need to ensure it doesn't regress in the future. What if somebody introduces a new development-only import of an external module, and not realize they also need to add it to `pureExternalModules`? Rollup prints a warning in such cases but we've [decided to fail the build completely](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/rollup/build.js#L395-L412) instead. This forces the person adding a new external development-only import to [explicitly specify whether it has side effects or not](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/rollup/modules.js#L10-L22) every time.
 
-### Forking Modules
+### Forking Modules {#forking-modules}
 
 In some cases, different bundles need to contain slightly different code. For example, React Native bundles have a different error handling mechanism that shows a redbox instead of printing a message to the console. However, it can be very inconvenient to thread these differences all the way through the calling modules.
 
@@ -330,7 +330,7 @@ This works by essentially forcing Flow to verify that two types are assignable t
 
 To conclude this section, it is important to note that you can't specify your own module forks if you consume React from npm. This is intentional because none of these files are public API, and they are not covered by the [semver](https://semver.org/) guarantees. However, you are always welcome to build React from master or even fork it if you don't mind the instability and the risk of divergence. We hope that this writeup was still helpful in documenting one possible approach to targeting different environments from a single JavaScript library.
 
-### Tracking Bundle Size
+### Tracking Bundle Size {#tracking-bundle-size}
 
 As a final build step, we now [record build sizes for all bundles](https://github.com/facebook/react/blob/d906de7f602df810c38aa622c83023228b047db6/scripts/rollup/build.js#L264-L272) and write them to a file that [looks like this](https://github.com/facebook/react/blob/d906de7f602df810c38aa622c83023228b047db6/scripts/rollup/results.json). When you run `yarn build`, it prints a table with the results:
 
@@ -344,17 +344,17 @@ Keeping the file sizes committed for everyone to see was helpful for tracking si
 
 We haven't been entirely happy with this strategy because the JSON file often causes merge conflicts on larger branches. Updating it is also not currently enforced so it gets out of date. In the future, we're considering integrating a bot that would comment on pull requests with the size changes.
 
-## Simplifying the Release Process
+## Simplifying the Release Process {#simplifying-the-release-process}
 
 We like to release updates to the open source community often. Unfortunately, the old process of creating a release was slow and would typically take an entire day. After some changes to this process, we're now able to do a full release in less than an hour. Here's what we changed.
 
-### Branching Strategy
+### Branching Strategy {#branching-strategy}
 
 Most of the time spent in the old release process was due to our branching strategy. The `master` branch was assumed to be unstable and would often contain breaking changes. Releases were done from a `stable` branch, and changes were manually cherry-picked into this branch prior to a release. We had [tooling to help automate](https://github.com/facebook/react/pull/7330) some of this process, but it was still [pretty complicated to use](https://github.com/facebook/react/blob/b5a2a1349d6e804d534f673612357c0be7e1d701/scripts/release-manager/Readme.md).
 
 As of version 16, we now release from the `master` branch. Experimental features and breaking changes are allowed, but must be hidden behind [feature flags](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/packages/shared/ReactFeatureFlags.js) so they can be removed during the build process. The new flat bundles and dead code elimination make it possible for us to do this without fear of leaking unwanted code into open source builds.
 
-### Automated Scripts
+### Automated Scripts {#automated-scripts}
 
 After changing to a stable `master`, we created a new [release process checklist](https://github.com/facebook/react/issues/10620). Although much simpler than the previous process, this still involved dozens of steps and forgetting one could result in a broken release.
 
@@ -372,13 +372,13 @@ All that's left is to tag and publish the release to NPM using the _publish_ scr
 
 (You may have noticed a `--dry` flag in the screenshots above. This flag allows us to run a release, end-to-end, without actually publishing to NPM. This is useful when working on the release script itself.)
 
-## In Conclusion
+## In Conclusion {#in-conclusion}
 
 Did this post inspire you to try some of these ideas in your own projects? We certainly hope so! If you have other ideas about how React build, test, or contribution workflow could be improved, please let us know on [our issue tracker](https://github.com/facebook/react/issues).
 
 You can find the related issues by the [build infrastructure label](https://github.com/facebook/react/labels/Component%3A%20Build%20Infrastructure). These are often great first contribution opportunities!
 
-## Acknowledgements
+## Acknowledgements {#acknowledgements}
 
 We would like to thank:
 
diff --git a/content/blog/2018-03-01-sneak-peek-beyond-react-16.md b/content/blog/2018-03-01-sneak-peek-beyond-react-16.md
index 1ab9f4db7f..cc853aec60 100644
--- a/content/blog/2018-03-01-sneak-peek-beyond-react-16.md
+++ b/content/blog/2018-03-01-sneak-peek-beyond-react-16.md
@@ -13,7 +13,7 @@ Here's the video courtesy of JSConf Iceland:
 
 I think you'll enjoy the talk more if you stop reading here and just watch the video. If you don't have time to watch, a (very) brief summary follows.
 
-## About the Two Demos
+## About the Two Demos {#about-the-two-demos}
 
 On the first demo, Dan says: "We've built a generic way to ensure that high-priority updates don't get blocked by a low-priority update, called **time slicing**. If my device is fast enough, it feels almost like it's synchronous; if my device is slow, the app still feels responsive. It adapts to the device thanks to the [requestIdleCallback](https://developers.google.com/web/updates/2015/08/using-requestidlecallback) API. Notice that only the final state was displayed; the rendered screen is always consistent and we don't see visual artifacts of slow rendering causing a janky user experience."
 
diff --git a/content/blog/2018-03-27-update-on-async-rendering.md b/content/blog/2018-03-27-update-on-async-rendering.md
index f557e89c06..de19850eea 100644
--- a/content/blog/2018-03-27-update-on-async-rendering.md
+++ b/content/blog/2018-03-27-update-on-async-rendering.md
@@ -13,7 +13,7 @@ One of the biggest lessons we've learned is that some of our legacy component li
 
 These lifecycle methods have often been misunderstood and subtly misused; furthermore, we anticipate that their potential misuse may be more problematic with async rendering. Because of this, we will be adding an "UNSAFE_" prefix to these lifecycles in an upcoming release. (Here, "unsafe" refers not to security but instead conveys that code using these lifecycles will be more likely to have bugs in future versions of React, especially once async rendering is enabled.)
 
-## Gradual Migration Path
+## Gradual Migration Path {#gradual-migration-path}
 
 [React follows semantic versioning](/blog/2016/02/19/new-versioning-scheme.html), so this change will be gradual. Our current plan is:
 
@@ -27,7 +27,7 @@ We maintain over 50,000 React components at Facebook, and we don't plan to rewri
 
 ---
 
-## Migrating from Legacy Lifecycles
+## Migrating from Legacy Lifecycles {#migrating-from-legacy-lifecycles}
 
 If you'd like to start using the new component APIs introduced in React 16.3 (or if you're a maintainer looking to update your library in advance) here are a few examples that we hope will help you to start thinking about components a bit differently. Over time, we plan to add additional "recipes" to our documentation that show how to perform common tasks in a way that avoids the problematic lifecycles.
 
@@ -35,7 +35,7 @@ Before we begin, here's a quick overview of the lifecycle changes planned for ve
 * We are **adding the following lifecycle aliases**: `UNSAFE_componentWillMount`, `UNSAFE_componentWillReceiveProps`, and `UNSAFE_componentWillUpdate`. (Both the old lifecycle names and the new aliases will be supported.)
 * We are **introducing two new lifecycles**, static `getDerivedStateFromProps` and `getSnapshotBeforeUpdate`.
 
-### New lifecycle: `getDerivedStateFromProps`
+### New lifecycle: `getDerivedStateFromProps` {#new-lifecycle-getderivedstatefromprops}
 
 `embed:update-on-async-rendering/definition-getderivedstatefromprops.js`
 
@@ -47,7 +47,7 @@ Together with `componentDidUpdate`, this new lifecycle should cover all use case
 >
 >Both the older `componentWillReceiveProps` and the new `getDerivedStateFromProps` methods add significant complexity to components. This often leads to [bugs](/blog/2018/06/07/you-probably-dont-need-derived-state.html#common-bugs-when-using-derived-state). Consider **[simpler alternatives to derived state](/blog/2018/06/07/you-probably-dont-need-derived-state.html)** to make components predictable and maintainable.
 
-### New lifecycle: `getSnapshotBeforeUpdate`
+### New lifecycle: `getSnapshotBeforeUpdate` {#new-lifecycle-getsnapshotbeforeupdate}
 
 `embed:update-on-async-rendering/definition-getsnapshotbeforeupdate.js`
 
@@ -59,7 +59,7 @@ You can find their type signatures [in this gist](https://gist.github.com/gaearo
 
 We'll look at examples of how both of these lifecycles can be used below.
 
-## Examples
+## Examples {#examples}
 - [Initializing state](#initializing-state)
 - [Fetching external data](#fetching-external-data)
 - [Adding event listeners (or subscriptions)](#adding-event-listeners-or-subscriptions)
@@ -73,7 +73,7 @@ We'll look at examples of how both of these lifecycles can be used below.
 >
 > For brevity, the examples below are written using the experimental class properties transform, but the same migration strategies apply without it.
 
-### Initializing state
+### Initializing state {#initializing-state}
 
 This example shows a component with `setState` calls inside of `componentWillMount`:
 `embed:update-on-async-rendering/initializing-state-before.js`
@@ -81,7 +81,7 @@ This example shows a component with `setState` calls inside of `componentWillMou
 The simplest refactor for this type of component is to move state initialization to the constructor or to a property initializer, like so:
 `embed:update-on-async-rendering/initializing-state-after.js`
 
-### Fetching external data
+### Fetching external data {#fetching-external-data}
 
 Here is an example of a component that uses `componentWillMount` to fetch external data:
 `embed:update-on-async-rendering/fetching-external-data-before.js`
@@ -101,7 +101,7 @@ There is a common misconception that fetching in `componentWillMount` lets you a
 >
 > When supporting server rendering, it's currently necessary to provide the data synchronously – `componentWillMount` was often used for this purpose but the constructor can be used as a replacement. The upcoming suspense APIs will make async data fetching cleanly possible for both client and server rendering.
 
-### Adding event listeners (or subscriptions)
+### Adding event listeners (or subscriptions) {#adding-event-listeners-or-subscriptions}
 
 Here is an example of a component that subscribes to an external event dispatcher when mounting:
 `embed:update-on-async-rendering/adding-event-listeners-before.js`
@@ -123,7 +123,7 @@ Rather than passing a subscribable `dataSource` prop as we did in the example ab
 > 
 > Libraries like Relay/Apollo should manage subscriptions manually with the same techniques as `create-subscription` uses under the hood (as referenced [here](https://gist.github.com/bvaughn/d569177d70b50b58bff69c3c4a5353f3)) in a way that is most optimized for their library usage.
 
-### Updating `state` based on `props`
+### Updating `state` based on `props` {#updating-state-based-on-props}
 
 >Note:
 >
@@ -147,7 +147,7 @@ You may wonder why we don't just pass previous props as a parameter to `getDeriv
 >
 > If you're writing a shared component, the [`react-lifecycles-compat`](https://github.com/reactjs/react-lifecycles-compat) polyfill enables the new `getDerivedStateFromProps` lifecycle to be used with older versions of React as well. [Learn more about how to use it below.](#open-source-project-maintainers)
 
-### Invoking external callbacks
+### Invoking external callbacks {#invoking-external-callbacks}
 
 Here is an example of a component that calls an external function when its internal state changes:
 `embed:update-on-async-rendering/invoking-external-callbacks-before.js`
@@ -157,7 +157,7 @@ Sometimes people use `componentWillUpdate` out of a misplaced fear that by the t
 Either way, it is unsafe to use `componentWillUpdate` for this purpose in async mode, because the external callback might get called multiple times for a single update. Instead, the `componentDidUpdate` lifecycle should be used since it is guaranteed to be invoked only once per update:
 `embed:update-on-async-rendering/invoking-external-callbacks-after.js`
 
-### Side effects on props change
+### Side effects on props change {#side-effects-on-props-change}
 
 Similar to the [example above](#invoking-external-callbacks), sometimes components have side effects when `props` change.
 
@@ -167,7 +167,7 @@ Like `componentWillUpdate`, `componentWillReceiveProps` might get called multipl
 
 `embed:update-on-async-rendering/side-effects-when-props-change-after.js`
 
-### Fetching external data when `props` change
+### Fetching external data when `props` change {#fetching-external-data-when-props-change}
 
 Here is an example of a component that fetches external data based on `props` values:
 `embed:update-on-async-rendering/updating-external-data-when-props-change-before.js`
@@ -179,7 +179,7 @@ The recommended upgrade path for this component is to move data updates into `co
 >
 > If you're using an HTTP library that supports cancellation, like [axios](https://www.npmjs.com/package/axios), then it's simple to cancel an in-progress request when unmounting. For native Promises, you can use an approach like [the one shown here](https://gist.github.com/bvaughn/982ab689a41097237f6e9860db7ca8d6).
 
-### Reading DOM properties before an update
+### Reading DOM properties before an update {#reading-dom-properties-before-an-update}
 
 Here is an example of a component that reads a property from the DOM before an update in order to maintain scroll position within a list:
 `embed:update-on-async-rendering/react-dom-properties-before-update-before.js`
@@ -196,11 +196,11 @@ The two lifecycles can be used together like this:
 >
 > If you're writing a shared component, the [`react-lifecycles-compat`](https://github.com/reactjs/react-lifecycles-compat) polyfill enables the new `getSnapshotBeforeUpdate` lifecycle to be used with older versions of React as well. [Learn more about how to use it below.](#open-source-project-maintainers)
 
-## Other scenarios
+## Other scenarios {#other-scenarios}
 
 While we tried to cover the most common use cases in this post, we recognize that we might have missed some of them. If you are using `componentWillMount`, `componentWillUpdate`, or `componentWillReceiveProps` in ways that aren't covered by this blog post, and aren't sure how to migrate off these legacy lifecycles, please [file a new issue against our documentation](https://github.com/reactjs/reactjs.org/issues/new) with your code examples and as much background information as you can provide. We will update this document with new alternative patterns as they come up.
 
-## Open source project maintainers
+## Open source project maintainers {#open-source-project-maintainers}
 
 Open source maintainers might be wondering what these changes mean for shared components. If you implement the above suggestions, what happens with components that depend on the new static `getDerivedStateFromProps` lifecycle? Do you also have to release a new major version and drop compatibility for React 16.2 and older?
 
diff --git a/content/blog/2018-03-29-react-v-16-3.md b/content/blog/2018-03-29-react-v-16-3.md
index 23ea0f54a5..9d43b68f6b 100644
--- a/content/blog/2018-03-29-react-v-16-3.md
+++ b/content/blog/2018-03-29-react-v-16-3.md
@@ -7,7 +7,7 @@ A few days ago, we [wrote a post about upcoming changes to our legacy lifecycle
 
 Read on to learn more about the release.
 
-## Official Context API
+## Official Context API {#official-context-api}
 
 For many years, React has offered an experimental API for context. Although it was a powerful tool, its use was discouraged because of inherent problems in the API, and because we always intended to replace the experimental API with a better one.
 
@@ -22,7 +22,7 @@ Here is an example illustrating how you might inject a "theme" using the new con
 
 [Learn more about the new context API here.](/docs/context.html)
 
-## `createRef` API
+## `createRef` API {#createref-api}
 
 Previously, React provided two ways of managing refs: the legacy string ref API and the callback API. Although the string ref API was the more convenient of the two, it had [several downsides](https://github.com/facebook/react/issues/1373) and so our official recommendation was to use the callback form instead.
 
@@ -37,7 +37,7 @@ Version 16.3 adds a new option for managing refs that offers the convenience of
 
 [Learn more about the new `createRef` API here.](/docs/refs-and-the-dom.html)
 
-## `forwardRef` API
+## `forwardRef` API {#forwardref-api}
 
 Generally, React components are declarative, but sometimes imperative access to the component instances and the underlying DOM nodes is necessary. This is common for use cases like managing focus, selection, or animations. React provides [refs](/docs/refs-and-the-dom.html) as a way to solve this problem. However, component encapsulation poses some challenges with refs.
 
@@ -53,7 +53,7 @@ Ref forwarding is not limited to "leaf" components that render DOM nodes. If you
 
 [Learn more about the forwardRef API here.](/docs/forwarding-refs.html)
 
-## Component Lifecycle Changes
+## Component Lifecycle Changes {#component-lifecycle-changes}
 
 React's class component API has been around for years with little change. However, as we add support for more advanced features (such as [error boundaries](/docs/react-component.html#componentdidcatch) and the upcoming [async rendering mode](/blog/2018/03/01/sneak-peek-beyond-react-16.html)) we stretch this model in ways that it was not originally intended.
 
@@ -75,7 +75,7 @@ In addition to deprecating unsafe lifecycles, we are also adding a couple of new
 
 [Learn more about these lifecycle changes here.](/blog/2018/03/27/update-on-async-rendering.html)
 
-## `StrictMode` Component
+## `StrictMode` Component {#strictmode-component}
 
 `StrictMode` is a tool for highlighting potential problems in an application. Like `Fragment`, `StrictMode` does not render any visible UI. It activates additional checks and warnings for its descendants.
 
diff --git a/content/blog/2018-05-23-react-v-16-4.md b/content/blog/2018-05-23-react-v-16-4.md
index b6bb523871..dd1edf4caf 100644
--- a/content/blog/2018-05-23-react-v-16-4.md
+++ b/content/blog/2018-05-23-react-v-16-4.md
@@ -7,7 +7,7 @@ The latest minor release adds support for an oft-requested feature: pointer even
 
 It also includes a bugfix for `getDerivedStateFromProps`. Check out the full [changelog](#changelog) below.
 
-## Pointer Events
+## Pointer Events {#pointer-events}
 
 The following event types are now available in React DOM:
 
@@ -28,19 +28,19 @@ Please note that these events will only work in browsers that support the [Point
 
 Huge thanks to [Philipp Spiess](https://github.com/philipp-spiess) for contributing this change!
 
-## Bugfix for `getDerivedStateFromProps`
+## Bugfix for `getDerivedStateFromProps` {#bugfix-for-getderivedstatefromprops}
 
 `getDerivedStateFromProps` is now called every time a component is rendered, regardless of the cause of the update. Previously, it was only called if the component was re-rendered by its parent, and would not fire as the result of a local `setState`. This was an oversight in the initial implementation that has now been corrected. The previous behavior was more similar to `componentWillReceiveProps`, but the improved behavior ensures compatibility with React's upcoming asynchronous rendering mode.
 
 **This bug fix will not affect most apps**, but it may cause issues with a small fraction of components. The rare cases where it does matter fall into one of two categories:
 
-### 1. Avoid Side Effects in `getDerivedStateFromProps`
+### 1. Avoid Side Effects in `getDerivedStateFromProps` {#1-avoid-side-effects-in-getderivedstatefromprops}
 
 Like the render method, `getDerivedStateFromProps` should be a pure function of props and state. Side effects in `getDerivedStateFromProps` were never supported, but since it now fires more often than it used to, the recent change may expose previously undiscovered bugs.
 
 Side effectful code should be moved to other methods: for example, Flux dispatches typically belong inside the originating event handler, and manual DOM mutations belong inside componentDidMount or componentDidUpdate. You can read more about this in our recent post about [preparing for asynchronous rendering](/blog/2018/03/27/update-on-async-rendering.html).
 
-### 2. Compare Incoming Props to Previous Props When Computing Controlled Values
+### 2. Compare Incoming Props to Previous Props When Computing Controlled Values {#2-compare-incoming-props-to-previous-props-when-computing-controlled-values}
 
 The following code assumes `getDerivedStateFromProps` only fires on prop changes:
 
@@ -78,7 +78,7 @@ static getDerivedStateFromProps(props, state) {
 
 However, **code that "mirrors" props in state usually contains bugs**, whether you use the newer `getDerivedStateFromProps` or the legacy `componentWillReceiveProps`. We published a follow-up blog post that explains these problems in more detail, and suggests [simpler solutions that don't involve `getDerivedStateFromProps()`](/blog/2018/06/07/you-probably-dont-need-derived-state.html).
 
-## Installation
+## Installation {#installation}
 
 React v16.4.0 is available on the npm registry.
 
@@ -103,13 +103,13 @@ We also provide UMD builds of React via a CDN:
 
 Refer to the documentation for [detailed installation instructions](/docs/installation.html).
 
-## Changelog
+## Changelog {#changelog}
 
-### React
+### React {#react}
 
 * Add a new [experimental](https://github.com/reactjs/rfcs/pull/51) `React.unstable_Profiler` component for measuring performance. ([@bvaughn](https://github.com/bvaughn) in [#12745](https://github.com/facebook/react/pull/12745))
 
-### React DOM
+### React DOM {#react-dom}
 
 * Add support for the Pointer Events specification. ([@philipp-spiess](https://github.com/philipp-spiess) in [#12507](https://github.com/facebook/react/pull/12507))
 * Properly call `getDerivedStateFromProps()` regardless of the reason for re-rendering. ([@acdlite](https://github.com/acdlite) in [#12600](https://github.com/facebook/react/pull/12600) and [#12802](https://github.com/facebook/react/pull/12802))
@@ -123,21 +123,21 @@ Refer to the documentation for [detailed installation instructions](/docs/instal
 * Improve how `forwardRef()` and context consumers are displayed in the component stack. ([@sophiebits](https://github.com/sophiebits) in [#12777](https://github.com/facebook/react/pull/12777))
 * Change internal event names. This can break third-party packages that rely on React internals in unsupported ways. ([@philipp-spiess](https://github.com/philipp-spiess) in [#12629](https://github.com/facebook/react/pull/12629))
 
-### React Test Renderer
+### React Test Renderer {#react-test-renderer}
 
 * Fix the `getDerivedStateFromProps()` support to match the new React DOM behavior. ([@koba04](https://github.com/koba04) in [#12676](https://github.com/facebook/react/pull/12676))
 * Fix a `testInstance.parent` crash when the parent is a fragment or another special node. ([@gaearon](https://github.com/gaearon) in [#12813](https://github.com/facebook/react/pull/12813))
 * `forwardRef()` components are now discoverable by the test renderer traversal methods. ([@gaearon](https://github.com/gaearon) in [#12725](https://github.com/facebook/react/pull/12725))
 * Shallow renderer now ignores `setState()` updaters that return `null` or `undefined`. ([@koba04](https://github.com/koba04) in [#12756](https://github.com/facebook/react/pull/12756))
 
-### React ART
+### React ART {#react-art}
 
 * Fix reading context provided from the tree managed by React DOM. ([@acdlite](https://github.com/acdlite) in [#12779](https://github.com/facebook/react/pull/12779))
 
-### React Call Return (Experimental)
+### React Call Return (Experimental) {#react-call-return-experimental}
 
 * This experiment was deleted because it was affecting the bundle size and the API wasn't good enough. It's likely to come back in the future in some other form. ([@gaearon](https://github.com/gaearon) in [#12820](https://github.com/facebook/react/pull/12820))
 
-### React Reconciler (Experimental)
+### React Reconciler (Experimental) {#react-reconciler-experimental}
 
 * The [new host config shape](https://github.com/facebook/react/blob/c601f7a64640290af85c9f0e33c78480656b46bc/packages/react-noop-renderer/src/createReactNoop.js#L82-L285) is flat and doesn't use nested objects. ([@gaearon](https://github.com/gaearon) in [#12792](https://github.com/facebook/react/pull/12792))
diff --git a/content/blog/2018-06-07-you-probably-dont-need-derived-state.md b/content/blog/2018-06-07-you-probably-dont-need-derived-state.md
index 6e71ef8384..7709054b8a 100644
--- a/content/blog/2018-06-07-you-probably-dont-need-derived-state.md
+++ b/content/blog/2018-06-07-you-probably-dont-need-derived-state.md
@@ -19,7 +19,7 @@ For a long time, the lifecycle `componentWillReceiveProps` was the only way to u
 * [Preferred solutions](#preferred-solutions)
 * [What about memoization?](#what-about-memoization)
 
-## When to Use Derived State
+## When to Use Derived State {#when-to-use-derived-state}
 
 `getDerivedStateFromProps` exists for only one purpose. It enables a component to update its internal state as the result of **changes in props**. Our previous blog post provided some examples, like [recording the current scroll direction based on a changing offset prop](/blog/2018/03/27/update-on-async-rendering.html#updating-state-based-on-props) or [loading external data specified by a source prop](/blog/2018/03/27/update-on-async-rendering.html#fetching-external-data-when-props-change).
 
@@ -28,7 +28,7 @@ We did not provide many examples, because as a general rule, **derived state sho
 * If you're using derived state to memoize some computation based only on the current props, you don't need derived state. See [What about memoization?](#what-about-memoization) below.
 * If you're updating derived state unconditionally or updating it whenever props and state don't match, your component likely resets its state too frequently. Read on for more details.
 
-## Common Bugs When Using Derived State
+## Common Bugs When Using Derived State {#common-bugs-when-using-derived-state}
 
 The terms ["controlled"](/docs/forms.html#controlled-components) and ["uncontrolled"](/docs/uncontrolled-components.html) usually refer to form inputs, but they can also describe where any component's data lives. Data passed in as props can be thought of as **controlled** (because the parent component _controls_ that data). Data that exists only in internal state can be thought of as **uncontrolled** (because the parent can't directly change it).
 
@@ -36,7 +36,7 @@ The most common mistake with derived state is mixing these two; when a derived s
 
 Problems arise when any of these constraints are changed. This typically comes in two forms. Let's take a look at both.
 
-### Anti-pattern: Unconditionally copying props to state
+### Anti-pattern: Unconditionally copying props to state {#anti-pattern-unconditionally-copying-props-to-state}
 
 A common misconception is that `getDerivedStateFromProps` and `componentWillReceiveProps` are only called when props "change". These lifecycles are called any time a parent component rerenders, regardless of whether the props are "different" from before. Because of this, it has always been unsafe to _unconditionally_ override state using either of these lifecycles. **Doing so will cause state updates to be lost.**
 
@@ -67,7 +67,7 @@ In this simple example, adding `shouldComponentUpdate` to rerender only when the
 
 Hopefully it's clear by now why **it is a bad idea to unconditionally copy props to state**. Before reviewing possible solutions, let's look at a related problematic pattern: what if we were to only update the state when the email prop changes?
 
-### Anti-pattern: Erasing state when props change
+### Anti-pattern: Erasing state when props change {#anti-pattern-erasing-state-when-props-change}
 
 Continuing the example above, we could avoid accidentally erasing state by only updating it when `props.email` changes:
 
@@ -100,9 +100,9 @@ There is still a subtle problem. Imagine a password manager app using the above
 
 This design is fundamentally flawed, but it's also an easy mistake to make. ([I've made it myself!](https://twitter.com/brian_d_vaughn/status/959600888242307072)) Fortunately there are two alternatives that work better. The key to both is that **for any piece of data, you need to pick a single component that owns it as the source of truth, and avoid duplicating it in other components.** Let's take a look at each of the alternatives.
 
-## Preferred Solutions
+## Preferred Solutions {#preferred-solutions}
 
-### Recommendation: Fully controlled component
+### Recommendation: Fully controlled component {#recommendation-fully-controlled-component}
 
 One way to avoid the problems mentioned above is to remove state from our component entirely. If the email address only exists as a prop, then we don't have to worry about conflicts with state. We could even convert `EmailInput` to a lighter-weight function component:
 ```js
@@ -113,7 +113,7 @@ function EmailInput(props) {
 
 This approach simplifies the implementation of our component, but if we still want to store a draft value, the parent form component will now need to do that manually. ([Click here to see a demo of this pattern.](https://codesandbox.io/s/7154w1l551))
 
-### Recommendation: Fully uncontrolled component with a `key`
+### Recommendation: Fully uncontrolled component with a `key` {#recommendation-fully-uncontrolled-component-with-a-key}
 
 Another alternative would be for our component to fully own the "draft" email state. In that case, our component could still accept a prop for the _initial_ value, but it would ignore subsequent changes to that prop:
 
@@ -148,7 +148,7 @@ In most cases, this is the best way to handle state that needs to be reset.
 >
 > While this may sound slow, the performance difference is usually insignificant. Using a key can even be faster if the components have heavy logic that runs on updates since diffing gets bypassed for that subtree.
 
-#### Alternative 1: Reset uncontrolled component with an ID prop
+#### Alternative 1: Reset uncontrolled component with an ID prop {#alternative-1-reset-uncontrolled-component-with-an-id-prop}
 
 If `key` doesn't work for some reason (perhaps the component is very expensive to initialize), a workable but cumbersome solution would be to watch for changes to "userID" in `getDerivedStateFromProps`:
 
@@ -182,7 +182,7 @@ This also provides the flexibility to only reset parts of our component's intern
 >
 > Even though the example above shows `getDerivedStateFromProps`, the same technique can be used with `componentWillReceiveProps`.
 
-#### Alternative 2: Reset uncontrolled component with an instance method
+#### Alternative 2: Reset uncontrolled component with an instance method {#alternative-2-reset-uncontrolled-component-with-an-instance-method}
 
 More rarely, you may need to reset state even if there's no appropriate ID to use as `key`. One solution is to reset the key to a random value or autoincrementing number each time you want to reset. One other viable alternative is to expose an instance method to imperatively reset the internal state:
 
@@ -206,7 +206,7 @@ Refs can be useful in certain cases like this one, but generally we recommend yo
 
 -----
 
-### Recap
+### Recap {#recap}
 
 To recap, when designing a component, it is important to decide whether its data will be controlled or uncontrolled.
 
@@ -217,7 +217,7 @@ For **uncontrolled** components, if you're trying to reset state when a particul
 * Alternative 1: To reset _only certain state fields_, watch for changes in a special property (e.g. `props.userID`).
 * Alternative 2: You can also consider fall back to an imperative instance method using refs.
 
-## What about memoization?
+## What about memoization? {#what-about-memoization}
 
 We've also seen derived state used to ensure an expensive value used in `render` is recomputed only when the inputs change. This technique is known as [memoization](https://en.wikipedia.org/wiki/Memoization).
 
@@ -340,7 +340,7 @@ When using memoization, remember a couple of constraints:
 1. Typically you'll want to use a memoization helper with a **limited cache size** in order to prevent memory leaks over time. (In the example above, we used `memoize-one` because it only caches the most recent arguments and result.)
 1. None of the implementations shown in this section will work if `props.list` is recreated each time the parent component renders. But in most cases, this setup is appropriate.
 
-## In closing
+## In closing {#in-closing}
 
 In real world applications, components often contain a mix of controlled and uncontrolled behaviors. This is okay! If each value has a clear source of truth, you can avoid the anti-patterns mentioned above.
 
diff --git a/content/blog/2018-08-01-react-v-16-4-2.md b/content/blog/2018-08-01-react-v-16-4-2.md
index 2ae8baf5eb..9514b2700d 100644
--- a/content/blog/2018-08-01-react-v-16-4-2.md
+++ b/content/blog/2018-08-01-react-v-16-4-2.md
@@ -5,7 +5,7 @@ author: [gaearon]
 
 We discovered a minor vulnerability that might affect some apps using ReactDOMServer. We are releasing a patch version for every affected React minor release so that you can upgrade with no friction. Read on for more details.
 
-## Short Description
+## Short Description {#short-description}
 
 Today, we are releasing a fix for a vulnerability we discovered in the `react-dom/server` implementation. It was introduced with the version 16.0.0 and has existed in all subsequent releases until today.
 
@@ -13,11 +13,11 @@ This vulnerability **can only affect some server-rendered React apps.** Purely c
 
 While we were investigating this vulnerability, we found similar vulnerabilities in a few other popular front-end libraries. We have coordinated this release together with [Vue](https://github.com/vuejs/vue/releases/tag/v2.5.17) and [Preact](https://github.com/developit/preact-render-to-string/releases/tag/3.7.1) releases fixing the same issue. The tracking number for this vulnerability is `CVE-2018-6341`.
 
-## Mitigation
+## Mitigation {#mitigation}
 
 **We have prepared a patch release with a fix for every affected minor version.**
 
-### 16.0.x
+### 16.0.x {#160x}
 
 If you're using `react-dom/server` with this version:
 
@@ -27,7 +27,7 @@ Update to this version instead:
 
 - `react-dom@16.0.1` **(contains the mitigation)**
 
-### 16.1.x
+### 16.1.x {#161x}
 
 If you're using `react-dom/server` with one of these versions:
 
@@ -38,7 +38,7 @@ Update to this version instead:
 
 - `react-dom@16.1.2` **(contains the mitigation)**
 
-### 16.2.x
+### 16.2.x {#162x}
 
 If you're using `react-dom/server` with this version:
 
@@ -48,7 +48,7 @@ Update to this version instead:
 
 - `react-dom@16.2.1` **(contains the mitigation)**
 
-### 16.3.x
+### 16.3.x {#163x}
 
 If you're using `react-dom/server` with one of these versions:
 
@@ -60,7 +60,7 @@ Update to this version instead:
 
 - `react-dom@16.3.3` **(contains the mitigation)**
 
-### 16.4.x
+### 16.4.x {#164x}
 
 If you're using `react-dom/server` with one of these versions:
 
@@ -75,7 +75,7 @@ If you're using a newer version of `react-dom`, no action is required.
 
 Note that only the `react-dom` package needs to be updated.
 
-## Detailed Description
+## Detailed Description {#detailed-description}
 
 Your app might be affected by this vulnerability only if both of these two conditions are true:
 
@@ -113,7 +113,7 @@ You would also see a warning about an invalid attribute name.
 
 Note that **we expect attribute names based on user input to be very rare in practice.** It doesn't serve any common practical use case, and has other potential security implications that React can't guard against.
 
-## Installation
+## Installation {#installation}
 
 React v16.4.2 is available on the npm registry.
 
@@ -138,9 +138,9 @@ We also provide UMD builds of React via a CDN:
 
 Refer to the documentation for [detailed installation instructions](/docs/installation.html).
 
-## Changelog
+## Changelog {#changelog}
 
-### React DOM Server
+### React DOM Server {#react-dom-server}
 
 * Fix a potential XSS vulnerability when the attacker controls an attribute name (`CVE-2018-6341`). This fix is available in the latest `react-dom@16.4.2`, as well as in previous affected minor versions: `react-dom@16.0.1`, `react-dom@16.1.2`, `react-dom@16.2.1`, and `react-dom@16.3.3`. ([@gaearon](https://github.com/gaearon) in [#13302](https://github.com/facebook/react/pull/13302))
 
diff --git a/content/blog/2018-09-10-introducing-the-react-profiler.md b/content/blog/2018-09-10-introducing-the-react-profiler.md
index d73131fcb0..725a22076b 100644
--- a/content/blog/2018-09-10-introducing-the-react-profiler.md
+++ b/content/blog/2018-09-10-introducing-the-react-profiler.md
@@ -20,7 +20,7 @@ This blog post covers the following topics:
   * [No timing data to display for the selected commit](#no-timing-data-to-display-for-the-selected-commit)
 * [Deep dive video](#deep-dive-video)
 
-## Profiling an application
+## Profiling an application {#profiling-an-application}
 
 DevTools will show a "Profiler" tab for applications that support the new profiling API:
 
@@ -45,9 +45,9 @@ When you are finished profiling, click the "Stop" button.
 Assuming your application rendered at least once while profiling, DevTools will show several ways to view the performance data.
 We'll [take a look at each of these below](#reading-performance-data).
 
-## Reading performance data
+## Reading performance data {#reading-performance-data}
 
-### Browsing commits
+### Browsing commits {#browsing-commits}
 Conceptually, React does work in two phases:
 
 * The **render** phase determines what changes need to be made to e.g. the DOM. During this phase, React calls `render` and then compares the result to the previous render.
@@ -64,7 +64,7 @@ You can click on a bar (or the left/right arrow buttons) to select a different
 The color and height of each bar corresponds to how long that commit took to render.
 (Taller, yellow bars took longer than shorter, blue bars.)
 
-### Filtering commits
+### Filtering commits {#filtering-commits}
 
 The longer you profile, the more times your application will render.
 In some cases you may end up with _too many commits_ to easily process.
@@ -73,7 +73,7 @@ Use it to specify a threshold and the profiler will hide all commits that were _
 
 ![Filtering commits by time](../images/blog/introducing-the-react-profiler/filtering-commits.gif)
 
-### Flame chart
+### Flame chart {#flame-chart}
 
 The flame chart view represents the state of your application for a particular commit.
 Each bar in the chart represents a React component (e.g. `App`, `Nav`).
@@ -111,7 +111,7 @@ In some cases, selecting a component and stepping between commits may also provi
 The above image shows that `state.scrollOffset` changed between commits.
 This is likely what caused the `List` component to re-render.
 
-### Ranked chart
+### Ranked chart {#ranked-chart}
 
 The ranked chart view represents a single commit.
 Each bar in the chart represents a React component (e.g. `App`, `Nav`).
@@ -126,7 +126,7 @@ The chart is ordered so that the components which took the longest to render are
 
 As with the flame chart, you can zoom in or out on a ranked chart by clicking on components.
 
-### Component chart
+### Component chart {#component-chart}
 
 Sometimes it's useful to see how many times a particular component rendered while you were profiling.
 The component chart provides this information in the form of a bar chart.
@@ -148,7 +148,7 @@ If the selected component did not render at all during the profiling session, th
 
 ![No render times for the selected component](../images/blog/introducing-the-react-profiler/no-render-times-for-selected-component.png)
 
-### Interactions
+### Interactions {#interactions}
 
 React recently added another [experimental API](https://fb.me/react-interaction-tracing) for tracing the _cause_ of an update.
 "Interactions" traced with this API will also be shown in the profiler:
@@ -169,9 +169,9 @@ You can navigate between interactions and commits by clicking on them:
 
 The tracing API is still new and we will cover it in more detail in a future blog post.
 
-## Troubleshooting
+## Troubleshooting {#troubleshooting}
 
-### No profiling data has been recorded for the selected root
+### No profiling data has been recorded for the selected root {#no-profiling-data-has-been-recorded-for-the-selected-root}
 
 If your application has multiple "roots", you may see the following message after profiling:
 ![No profiling data has been recorded for the selected root](../images/blog/introducing-the-react-profiler/no-profiler-data-multi-root.png)
@@ -181,14 +181,14 @@ In this case, try selecting a different root in that panel to view profiling inf
 
 ![Select a root in the "Elements" panel to view its performance data](../images/blog/introducing-the-react-profiler/select-a-root-to-view-profiling-data.gif)
 
-### No timing data to display for the selected commit
+### No timing data to display for the selected commit {#no-timing-data-to-display-for-the-selected-commit}
 
 Sometimes a commit may be so fast that `performance.now()` doesn't give DevTools any meaningful timing information.
 In this case, the following message will be shown:
 
 ![No timing data to display for the selected commit](../images/blog/introducing-the-react-profiler/no-timing-data-for-commit.png)
 
-## Deep dive video
+## Deep dive video {#deep-dive-video}
 
 The following video demonstrates how the React profiler can be used to detect and improve performance bottlenecks in an actual React application.
 
diff --git a/content/blog/2018-10-01-create-react-app-v2.md b/content/blog/2018-10-01-create-react-app-v2.md
index 164f76d7b8..31a7e16b90 100644
--- a/content/blog/2018-10-01-create-react-app-v2.md
+++ b/content/blog/2018-10-01-create-react-app-v2.md
@@ -15,7 +15,7 @@ Now that Create React App 2.0 is out of beta, let's see what's new and how you c
 >
 >Don't feel pressured to upgrade anything. If you're satisfied with the current feature set, its performance, and reliability, you can keep using the version you're currently at! It might also be a good idea to let the 2.0 release stabilize a little bit before switching to it in production.
 
-## What's New
+## What's New {#whats-new}
 
 Here's a short summary of what's new in this release:
 
@@ -34,13 +34,13 @@ Here's a short summary of what's new in this release:
 
 **All of these features work out of the box** -- to enable them, follow the below instructions.
 
-## Starting a Project with Create React App 2.0
+## Starting a Project with Create React App 2.0 {#starting-a-project-with-create-react-app-20}
 
 You don't need to update anything special. Starting from today, when you run `create-react-app` it will use the 2.0 version of the template by default. Have fun!
 
 If you want to **use the old 1.x template** for some reason, you can do that by passing `--scripts-version=react-scripts@1.x` as an argument to `create-react-app`.
 
-## Updating a Project to Create React App 2.0
+## Updating a Project to Create React App 2.0 {#updating-a-project-to-create-react-app-20}
 
 Upgrading a non-ejected project to Create React App 2.0 should usually be straightforward. Open `package.json` in the root of your project and find `react-scripts` there.
 
@@ -67,7 +67,7 @@ Here are a few more tips to get you started.
 >
 >Due to a possible bug in npm, you might see warnings about unsatisfied peer dependencies. You should be able to ignore them. As far as we're aware, this issue isn't present with Yarn.
 
-## Breaking Changes
+## Breaking Changes {#breaking-changes}
 
 Here's a short list of breaking changes in this release:
 
@@ -81,7 +81,7 @@ Here's a short list of breaking changes in this release:
 
 If either of these points affects you, [2.0.3 release notes](https://github.com/facebook/create-react-app/releases/tag/v2.0.3) contain more detailed instructions.
 
-## Learn More
+## Learn More {#learn-more}
 
 You can find the full changelog in the [release notes](https://github.com/facebook/create-react-app/releases/tag/v2.0.3). This was a large release, and we may have missed something. Please report any problems to our [issue tracker](https://github.com/facebook/create-react-app/issues/new) and we'll try to help.
 
@@ -89,6 +89,6 @@ You can find the full changelog in the [release notes](https://github.com/facebo
 >
 >If you've been using 2.x alpha versions, we provide [separate migration instructions](https://gist.github.com/gaearon/8650d1c70e436e5eff01f396dffc4114) for them.
 
-## Thanks
+## Thanks {#thanks}
 
 This release wouldn't be possible without our wonderful community of contributors. We'd like to thank [Andreas Cederström](https://github.com/andriijas), [Clement Hoang](https://github.com/clemmy), [Brian Ng](https://github.com/existentialism), [Kent C. Dodds](https://github.com/kentcdodds), [Ade Viankakrisna Fadlil](https://github.com/viankakrisna), [Andrey Sitnik](https://github.com/ai), [Ro Savage](https://github.com/ro-savage), [Fabiano Brito](https://github.com/Fabianopb), [Ian Sutherland](https://github.com/iansu), [Pete Nykänen](https://github.com/petetnt), [Jeffrey Posnick](https://github.com/jeffposnick), [Jack Zhao](https://github.com/bugzpodder), [Tobias Koppers](https://github.com/sokra), [Henry Zhu](https://github.com/hzoo), [Maël Nison](https://github.com/arcanis), [XiaoYan Li](https://github.com/lixiaoyan), [Marko Trebizan](https://github.com/themre), [Marek Suscak](https://github.com/mareksuscak), [Mikhail Osher](https://github.com/miraage), and many others who provided feedback and testing for this release.
diff --git a/content/blog/2018-10-23-react-v-16-6.md b/content/blog/2018-10-23-react-v-16-6.md
index d66d44cbd3..eb8cf39bf0 100644
--- a/content/blog/2018-10-23-react-v-16-6.md
+++ b/content/blog/2018-10-23-react-v-16-6.md
@@ -7,7 +7,7 @@ Today we're releasing React 16.6 with a few new convenient features. A form of P
 
 Check out the full [changelog](#changelog) below.
 
-## [`React.memo`](/docs/react-api.html#reactmemo)
+## [`React.memo`](/docs/react-api.html#reactmemo) {#reactmemodocsreact-apihtmlreactmemo}
 
 Class components can bail out from rendering when their input props are the same using [`PureComponent`](/docs/react-api.html#reactpurecomponent) or [`shouldComponentUpdate`](/docs/react-component.html#shouldcomponentupdate). Now you can do the same with function components by wrapping them in [`React.memo`](/docs/react-api.html#reactmemo).
 
@@ -17,7 +17,7 @@ const MyComponent = React.memo(function MyComponent(props) {
 });
 ```
 
-## [`React.lazy`](/docs/code-splitting.html#reactlazy): Code-Splitting with `Suspense`
+## [`React.lazy`](/docs/code-splitting.html#reactlazy): Code-Splitting with `Suspense` {#reactlazydocscode-splittinghtmlreactlazy-code-splitting-with-suspense}
 
 You may have seen [Dan's talk about React Suspense at JSConf Iceland](/blog/2018/03/01/sneak-peek-beyond-react-16.html). Now you can use the Suspense component to do [code-splitting](/docs/code-splitting.html#reactlazy) by wrapping a dynamic import in a call to `React.lazy()`.
 
@@ -38,7 +38,7 @@ The Suspense component will also allow library authors to start building data fe
 
 > Note: This feature is not yet available for server-side rendering. Suspense support will be added in a later release.
 
-## [`static contextType`](/docs/context.html#classcontexttype)
+## [`static contextType`](/docs/context.html#classcontexttype) {#static-contexttypedocscontexthtmlclasscontexttype}
 
 In [React 16.3](/blog/2018/03/29/react-v-16-3.html) we introduced the official Context API as a replacement to the previous [Legacy Context](/docs/legacy-context.html) API.
 
@@ -70,7 +70,7 @@ class MyClass extends React.Component {
 }
 ```
 
-## [`static getDerivedStateFromError()`](/docs/react-component.html#static-getderivedstatefromerror)
+## [`static getDerivedStateFromError()`](/docs/react-component.html#static-getderivedstatefromerror) {#static-getderivedstatefromerrordocsreact-componenthtmlstatic-getderivedstatefromerror}
 
 React 16 introduced [Error Boundaries](/blog/2017/07/26/error-handling-in-react-16.html) for handling errors thrown in React renders. We already had the `componentDidCatch` lifecycle method which gets fired after an error has already happened. It's great for logging errors to the server. It also lets you show a different UI to the user by calling `setState`.
 
@@ -80,7 +80,7 @@ We're adding another error method that lets you render the fallback UI before th
 
 > Note: `getDerivedStateFromError()` is not yet available for server-side rendering. It is designed to work with server-side rendering in a future release. We're releasing it early so that you can start preparing to use it.
 
-## Deprecations in StrictMode
+## Deprecations in StrictMode {#deprecations-in-strictmode}
 
 In [16.3](/blog/2018/03/29/react-v-16-3.html#strictmode-component) we introduced the [`StrictMode`](/docs/strict-mode.html) component. It lets you opt-in to early warnings for patterns that might cause problems in the future.
 
@@ -91,7 +91,7 @@ We've added two more APIs to the list of deprecated APIs in `StrictMode`. If you
 
 If you're having trouble upgrading, we'd like to hear your feedback.
 
-## Installation
+## Installation {#installation}
 
 React v16.6.0 is available on the npm registry.
 
@@ -116,9 +116,9 @@ We also provide UMD builds of React via a CDN:
 
 Refer to the documentation for [detailed installation instructions](/docs/installation.html).
 
-## Changelog
+## Changelog {#changelog}
 
-### React
+### React {#react}
 
 * Add `React.memo()` as an alternative to `PureComponent` for functions. ([@acdlite](https://github.com/acdlite) in [#13748](https://github.com/facebook/react/pull/13748))
 * Add `React.lazy()` for code splitting components. ([@acdlite](https://github.com/acdlite) in [#13885](https://github.com/facebook/react/pull/13885))
@@ -127,7 +127,7 @@ Refer to the documentation for [detailed installation instructions](/docs/instal
 * Rename `unstable_AsyncMode` to `unstable_ConcurrentMode`. ([@trueadm](https://github.com/trueadm) in [#13732](https://github.com/facebook/react/pull/13732))
 * Rename `unstable_Placeholder` to `Suspense`, and `delayMs` to `maxDuration`. ([@gaearon](https://github.com/gaearon) in [#13799](https://github.com/facebook/react/pull/13799) and [@sebmarkbage](https://github.com/sebmarkbage) in [#13922](https://github.com/facebook/react/pull/13922))
 
-### React DOM
+### React DOM {#react-dom}
 
 * Add `contextType` as a more ergonomic way to subscribe to context from a class. ([@bvaughn](https://github.com/bvaughn) in [#13728](https://github.com/facebook/react/pull/13728))
 * Add `getDerivedStateFromError` lifecycle method for catching errors in a future asynchronous server-side renderer. ([@bvaughn](https://github.com/bvaughn) in [#13746](https://github.com/facebook/react/pull/13746))
@@ -135,12 +135,12 @@ Refer to the documentation for [detailed installation instructions](/docs/instal
 * Fix gray overlay on iOS Safari. ([@philipp-spiess](https://github.com/philipp-spiess) in [#13778](https://github.com/facebook/react/pull/13778))
 * Fix a bug caused by overwriting `window.event` in development. ([@sergei-startsev](https://github.com/sergei-startsev) in [#13697](https://github.com/facebook/react/pull/13697))
 
-### React DOM Server
+### React DOM Server {#react-dom-server}
 
 * Add support for `React.memo()`. ([@alexmckenley](https://github.com/alexmckenley) in [#13855](https://github.com/facebook/react/pull/13855))
 * Add support for `contextType`. ([@alexmckenley](https://github.com/alexmckenley) and [@sebmarkbage](https://github.com/sebmarkbage) in [#13889](https://github.com/facebook/react/pull/13889))
 
-### Scheduler (Experimental)
+### Scheduler (Experimental) {#scheduler-experimental}
 
 * Rename the package to `scheduler`. ([@gaearon](https://github.com/gaearon) in [#13683](https://github.com/facebook/react/pull/13683))
 * Support priority levels, continuations, and wrapped callbacks. ([@acdlite](https://github.com/acdlite) in [#13720](https://github.com/facebook/react/pull/13720) and [#13842](https://github.com/facebook/react/pull/13842))
diff --git a/content/blog/2018-11-27-react-16-roadmap.md b/content/blog/2018-11-27-react-16-roadmap.md
index f7c4088f1a..26cb101fb5 100644
--- a/content/blog/2018-11-27-react-16-roadmap.md
+++ b/content/blog/2018-11-27-react-16-roadmap.md
@@ -5,7 +5,7 @@ author: [gaearon]
 
 You might have heard about features like "Hooks", "Suspense", and "Concurrent Rendering" in the previous blog posts and talks. In this post, we'll look at how they fit together and the expected timeline for their availability in a stable release of React.
  
-## tl;dr
+## tl;dr {#tldr}
 
 We plan to split the rollout of new React features into the following milestones:
 
@@ -28,13 +28,13 @@ We expect to get more clarity on their timeline in the coming months.
 >
 >This post is just a roadmap -- there is nothing in it that requires your immediate attention. When each of these features are released, we'll publish a full blog post announcing them.
 
-## Release Timeline
+## Release Timeline {#release-timeline}
 
 We have a single vision for how all of these features fit together, but we're releasing each part as soon as it is ready so that you can test and start using them sooner. The API design doesn't always make sense when looking at one piece in isolation; this post lays out the major parts of our plan to help you see the whole picture. (See our [versioning policy](/docs/faq-versioning.html) to learn more about our commitment to stability.)
 
 The gradual release strategy helps us refine the APIs, but the transitional period when some things aren't ready can be confusing. Let's look at what these different features mean for your app, how they relate to each other, and when you can expect to start learning and using them.
 
-### [React 16.6](/blog/2018/10/23/react-v-16-6.html) (shipped): The One with Suspense for Code Splitting
+### [React 16.6](/blog/2018/10/23/react-v-16-6.html) (shipped): The One with Suspense for Code Splitting {#react-166blog20181023react-v-16-6html-shipped-the-one-with-suspense-for-code-splitting}
 
 *Suspense* refers to React's new ability to "suspend" rendering while components are waiting for something, and display a loading indicator. In React 16.6, Suspense supports only one use case: lazy loading components with `React.lazy()` and `<React.Suspense>`.
 
@@ -67,7 +67,7 @@ Code splitting is just the first step for Suspense. Our longer term vision for S
 
 **Recommendation:** If you only do client rendering, we recommend widely adopting `React.lazy()` and `<React.Suspense>` for code splitting React components. If you do server rendering, you'll have to wait with adoption until the new server renderer is ready.
 
-### React 16.x (~Q1 2019): The One with Hooks
+### React 16.x (~Q1 2019): The One with Hooks {#react-16x-q1-2019-the-one-with-hooks}
 
 *Hooks* let you use features like state and lifecycle from function components. They also let you reuse stateful logic between components without introducing extra nesting in your tree.
 
@@ -101,7 +101,7 @@ Hooks represent our vision for the future of React. They solve both problems tha
 
 **Recommendation:** When you’re ready, we encourage you to start trying Hooks in new components you write. Make sure everyone on your team is on board with using them and familiar with this documentation. We don’t recommend rewriting your existing classes to Hooks unless you planned to rewrite them anyway (e.g. to fix bugs). Read more about the adoption strategy [here](/docs/hooks-faq.html#adoption-strategy).
 
-### React 16.x (~Q2 2019): The One with Concurrent Mode
+### React 16.x (~Q2 2019): The One with Concurrent Mode {#react-16x-q2-2019-the-one-with-concurrent-mode}
 
 *Concurrent Mode* lets React apps be more responsive by rendering component trees without blocking the main thread. It is opt-in and allows React to interrupt a long-running render (for example, rendering a new feed story) to handle a high-priority event (for example, text input or hover). Concurrent Mode also improves the user experience of Suspense by skipping unnecessary loading states on fast connections.
 
@@ -135,7 +135,7 @@ Concurrent Mode is a big part of our vision for React. For CPU-bound work, it al
 
 **Recommendation:** If you wish to adopt Concurrent Mode in the future, wrapping some component subtrees in [`<React.StrictMode>`](https://reactjs.org/docs/strict-mode.html) and fixing the resulting warnings is a good first step. In general it's not expected that legacy code would immediately be compatible. For example, at Facebook we mostly intend to use the Concurrent Mode in the more recently developed codebases, and keep the legacy ones running in the synchronous mode for the near future.
 
-### React 16.x (~mid 2019): The One with Suspense for Data Fetching
+### React 16.x (~mid 2019): The One with Suspense for Data Fetching {#react-16x-mid-2019-the-one-with-suspense-for-data-fetching}
 
 As mentioned earlier, *Suspense* refers to React's ability to "suspend" rendering while components are waiting for something, and display a loading indicator. In the already shipped React 16.6, the only supported use case for Suspense is code splitting. In this future minor release, we'd like to provide officially supported ways to use it for data fetching too. We'll provide a reference implementation of a basic "React Cache" that's compatible with Suspense, but you can also write your own. Data fetching libraries like Apollo and Relay will be able to integrate with Suspense by following a simple specification that we'll document.
 
@@ -182,13 +182,13 @@ Eventually we'd like most data fetching to happen through Suspense but it will t
 
 **Recommendation:** Wait for this minor React release in order to use Suspense for data fetching. Don’t try to use Suspense features in 16.6 for it; it’s not supported. However, your existing `<Suspense>` components for code splitting will be able to show loading states for data too when Suspense for Data Fetching becomes officially supported.
 
-## Other Projects
+## Other Projects {#other-projects}
 
-### Modernizing React DOM
+### Modernizing React DOM {#modernizing-react-dom}
 
 We started an investigation into [simplifying and modernizing](https://github.com/facebook/react/issues/13525) ReactDOM, with a goal of reduced bundle size and aligning closer with the browser behavior. It is still early to say which specific bullet points will "make it" because the project is in an exploratory phase. We will communicate our progress on that issue.
 
-### Suspense for Server Rendering
+### Suspense for Server Rendering {#suspense-for-server-rendering}
 
 We started designing a new server renderer that supports Suspense (including waiting for asynchronous data on the server without double rendering) and progressively loading and hydrating page content in chunks for best user experience. You can watch an overview of its early prototype in [this talk](https://www.youtube.com/watch?v=z-6JC0_cOns). The new server renderer is going to be our major focus in 2019, but it's too early to say anything about its release schedule. Its development, as always, [will happen on GitHub](https://github.com/facebook/react/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aopen+fizz).
 
diff --git a/content/blog/2018-12-19-react-v-16-7.md b/content/blog/2018-12-19-react-v-16-7.md
index 2f66cb743e..e6e4f8a344 100644
--- a/content/blog/2018-12-19-react-v-16-7.md
+++ b/content/blog/2018-12-19-react-v-16-7.md
@@ -5,13 +5,13 @@ author: [acdlite]
 
 Our latest release includes an important performance bugfix for `React.lazy`. Although there are no API changes, we're releasing it as a minor instead of a patch.
 
-## Why Is This Bugfix a Minor Instead of a Patch?
+## Why Is This Bugfix a Minor Instead of a Patch? {#why-is-this-bugfix-a-minor-instead-of-a-patch}
 
 React follows [semantic versioning](/docs/faq-versioning.html). Typically, this means that we use patch versions for bugfixes, and minors for new (non-breaking) features. However, we reserve the option to release minor versions even if they do not include new features. The motivation is to reserve patches for changes that have a very low chance of breaking. Patches are the most important type of release because they sometimes contain critical bugfixes. That means patch releases have a higher bar for reliability. It's unacceptable for a patch to introduce additional bugs, because if people come to distrust patches, it compromises our ability to fix critical bugs when they arise — for example, to fix a security vulnerability.
 
 We never intend to ship bugs. React has a hard-earned reputation for stability, and we intend to keep it that way. We thoroughly test every version of React before releasing. This includes unit tests, generative (fuzzy) tests, integration tests, and internal dogfooding across tens of thousands of components. However, sometimes we make mistakes. That's why, going forward, our policy will be that if a release contains non-trivial changes, we will bump the minor version, even if the external behavior is the same. We'll also bump the minor when changing `unstable_`-prefixed APIs.
 
-## Can I Use Hooks Yet?
+## Can I Use Hooks Yet? {#can-i-use-hooks-yet}
 
 Not yet, but soon!
 
@@ -28,7 +28,7 @@ We've heard from many people who want to start using Hooks in their apps. We als
 Learn more about [our roadmap](/blog/2018/11/27/react-16-roadmap.html) in our previous post.
 
 
-## Installation
+## Installation {#installation}
 
 React v16.7.0 is available on the npm registry.
 
@@ -53,16 +53,16 @@ We also provide UMD builds of React via a CDN:
 
 Refer to the documentation for [detailed installation instructions](/docs/installation.html).
 
-## Changelog
+## Changelog {#changelog}
 
-### React DOM
+### React DOM {#react-dom}
 
 * Fix performance of `React.lazy` for large numbers of lazily-loaded components. ([@acdlite](http://github.com/acdlite) in [#14429](https://github.com/facebook/react/pull/14429))
 * Clear fields on unmount to avoid memory leaks. ([@trueadm](http://github.com/trueadm) in [#14276](https://github.com/facebook/react/pull/14276))
 * Fix bug with SSR and context when mixing `react-dom/server@16.6` and `react@<16.6`. ([@gaearon](http://github.com/gaearon) in [#14291](https://github.com/facebook/react/pull/14291))
 * Fix a performance regression in profiling mode. ([@bvaughn](http://github.com/bvaughn) in [#14383](https://github.com/facebook/react/pull/14383))
 
-### Scheduler (Experimental)
+### Scheduler (Experimental) {#scheduler-experimental}
 
 * Post to MessageChannel instead of window. ([@acdlite](http://github.com/acdlite) in [#14234](https://github.com/facebook/react/pull/14234))
 * Reduce serialization overhead. ([@developit](http://github.com/developit) in [#14249](https://github.com/facebook/react/pull/14249))
diff --git a/content/blog/2019-02-06-react-v16.8.0.md b/content/blog/2019-02-06-react-v16.8.0.md
index 9fe33e8f43..3af12da7d4 100644
--- a/content/blog/2019-02-06-react-v16.8.0.md
+++ b/content/blog/2019-02-06-react-v16.8.0.md
@@ -5,7 +5,7 @@ author: [gaearon]
 
 With React 16.8, [React Hooks](/docs/hooks-intro.html) are available in a stable release!
 
-## What Are Hooks?
+## What Are Hooks? {#what-are-hooks}
 
 Hooks let you use state and other React features without writing a class. You can also **build your own Hooks** to share reusable stateful logic between components.
 
@@ -19,11 +19,11 @@ If you've never heard of Hooks before, you might find these resources interestin
 
 **You don't have to learn Hooks right now.** Hooks have no breaking changes, and we have no plans to remove classes from React. The [Hooks FAQ](/docs/hooks-faq.html) describes the gradual adoption strategy.
 
-## No Big Rewrites
+## No Big Rewrites {#no-big-rewrites}
 
 We don't recommend rewriting your existing applications to use Hooks overnight. Instead, try using Hooks in some of the new components, and let us know what you think. Code using Hooks will work [side by side](/docs/hooks-intro.html#gradual-adoption-strategy) with existing code using classes.
 
-## Can I Use Hooks Today?
+## Can I Use Hooks Today? {#can-i-use-hooks-today}
 
 Yes! Starting with 16.8.0, React includes a stable implementation of React Hooks for:
 
@@ -36,11 +36,11 @@ Note that **to enable Hooks, all React packages need to be 16.8.0 or higher**. H
 
 **React Native will support Hooks in the [0.59 release](https://github.com/react-native-community/react-native-releases/issues/79#issuecomment-457735214).**
 
-## Tooling Support
+## Tooling Support {#tooling-support}
 
 React Hooks are now supported by React DevTools. They are also supported in the latest Flow and TypeScript definitions for React. We strongly recommend enabling a new [lint rule called `eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks) to enforce best practices with Hooks. It will soon be included into Create React App by default.
 
-## What's Next
+## What's Next {#whats-next}
 
 We described our plan for the next months in the recently published [React Roadmap](/blog/2018/11/27/react-16-roadmap.html).
 
@@ -48,7 +48,7 @@ Note that React Hooks don't cover *all* use cases for classes yet but they're [v
 
 Even while Hooks were in alpha, the React community created many interesting [examples](https://codesandbox.io/react-hooks) and [recipes](https://usehooks.com) using Hooks for animations, forms, subscriptions, integrating with other libraries, and so on. We're excited about Hooks because they make code reuse easier, helping you write your components in a simpler way and make great user experiences. We can't wait to see what you'll create next!
 
-## Testing Hooks
+## Testing Hooks {#testing-hooks}
 
 We have added a new API called `ReactTestUtils.act()` in this release. It ensures that the behavior in your tests matches what happens in the browser more closely. We recommend to wrap any code rendering and triggering updates to your components into `act()` calls. Testing libraries can also wrap their APIs with it (for example, [`react-testing-library`](https://github.com/kentcdodds/react-testing-library)'s `render` and `fireEvent` utilities do this).
 
@@ -97,13 +97,13 @@ If you need to test a custom Hook, you can do so by creating a component in your
 
 To reduce the boilerplate, we recommend using [`react-testing-library`](https://git.io/react-testing-library) which is designed to encourage writing tests that use your components as the end users do.
 
-## Thanks
+## Thanks {#thanks}
 
 We'd like to thank everybody who commented on the [Hooks RFC](https://github.com/reactjs/rfcs/pull/68) for sharing their feedback. We've read all of your comments and made some adjustments to the final API based on them.
 
-## Installation
+## Installation {#installation}
 
-### React
+### React {#react}
 
 React v16.8.0 is available on the npm registry.
 
@@ -128,7 +128,7 @@ We also provide UMD builds of React via a CDN:
 
 Refer to the documentation for [detailed installation instructions](/docs/installation.html).
 
-### ESLint Plugin for React Hooks
+### ESLint Plugin for React Hooks {#eslint-plugin-for-react-hooks}
 
 >Note
 >
@@ -161,14 +161,14 @@ Then add it to your ESLint configuration:
 }
 ```
 
-## Changelog
+## Changelog {#changelog}
 
-### React
+### React {#react-1}
 
 * Add [Hooks](https://reactjs.org/docs/hooks-intro.html) — a way to use state and other React features without writing a class. ([@acdlite](https://github.com/acdlite) et al. in [#13968](https://github.com/facebook/react/pull/13968))
 * Improve the `useReducer` Hook lazy initialization API. ([@acdlite](https://github.com/acdlite) in [#14723](https://github.com/facebook/react/pull/14723))
 
-### React DOM
+### React DOM {#react-dom}
 
 * Bail out of rendering on identical values for `useState` and `useReducer` Hooks. ([@acdlite](https://github.com/acdlite) in [#14569](https://github.com/facebook/react/pull/14569))
 * Don’t compare the first argument passed to `useEffect`/`useMemo`/`useCallback` Hooks. ([@acdlite](https://github.com/acdlite) in [#14594](https://github.com/facebook/react/pull/14594))
@@ -178,19 +178,19 @@ Then add it to your ESLint configuration:
 * Warn about mismatching Hook order in development. ([@threepointone](https://github.com/threepointone) in [#14585](https://github.com/facebook/react/pull/14585) and [@acdlite](https://github.com/acdlite) in [#14591](https://github.com/facebook/react/pull/14591))
 * Effect clean-up functions must return either `undefined` or a function. All other values, including `null`, are not allowed. [@acdlite](https://github.com/acdlite) in [#14119](https://github.com/facebook/react/pull/14119)
 
-### React Test Renderer
+### React Test Renderer {#react-test-renderer}
 
 * Support Hooks in the shallow renderer. ([@trueadm](https://github.com/trueadm) in [#14567](https://github.com/facebook/react/pull/14567))
 * Fix wrong state in `shouldComponentUpdate` in the presence of `getDerivedStateFromProps` for Shallow Renderer. ([@chenesan](https://github.com/chenesan) in [#14613](https://github.com/facebook/react/pull/14613))
 * Add `ReactTestRenderer.act()` and `ReactTestUtils.act()` for batching updates so that tests more closely match real behavior. ([@threepointone](https://github.com/threepointone) in [#14744](https://github.com/facebook/react/pull/14744))
 
-### ESLint Plugin: React Hooks
+### ESLint Plugin: React Hooks {#eslint-plugin-react-hooks}
 
 * Initial [release](https://www.npmjs.com/package/eslint-plugin-react-hooks). ([@calebmer](https://github.com/calebmer) in [#13968](https://github.com/facebook/react/pull/13968))
 * Fix reporting after encountering a loop. ([@calebmer](https://github.com/calebmer) and [@Yurickh](https://github.com/Yurickh) in [#14661](https://github.com/facebook/react/pull/14661))
 * Don't consider throwing to be a rule violation. ([@sophiebits](https://github.com/sophiebits) in [#14040](https://github.com/facebook/react/pull/14040))
 
-## Hooks Changelog Since Alpha Versions
+## Hooks Changelog Since Alpha Versions {#hooks-changelog-since-alpha-versions}
 
 The above changelog contains all notable changes since our last **stable** release (16.7.0). [As with all our minor releases](/docs/faq-versioning.html), none of the changes break backwards compatibility.
 
diff --git a/content/community/conferences.it-IT.md b/content/community/conferences.it-IT.md
index 8cd3facb16..f45c9e3d7b 100644
--- a/content/community/conferences.it-IT.md
+++ b/content/community/conferences.it-IT.md
@@ -6,14 +6,14 @@ prev: thinking-in-react-it-IT.html
 next: videos-it-IT.html
 ---
 
-### React.js Conf 2015
+### React.js Conf 2015 {#reactjs-conf-2015}
 28 e 29 Gennaio
 
 [Sito web](http://conf.reactjs.com/) - [Agenda](http://conf.reactjs.com/schedule.html) - [Video](https://www.youtube-nocookie.com/playlist?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr)
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
 
-### ReactEurope 2015
+### ReactEurope 2015 {#reacteurope-2015}
 2 e 3 Luglio
 
 [Sito web](http://www.react-europe.org/) - [Agenda](http://www.react-europe.org/#schedule)
diff --git a/content/community/conferences.ko-KR.md b/content/community/conferences.ko-KR.md
index 210ab3b525..e1c13171b5 100644
--- a/content/community/conferences.ko-KR.md
+++ b/content/community/conferences.ko-KR.md
@@ -6,14 +6,14 @@ prev: thinking-in-react-ko-KR.html
 next: videos-ko-KR.html
 ---
 
-### React.js Conf 2015
+### React.js Conf 2015 {#reactjs-conf-2015}
 1월 28일 & 29일
 
 [웹사이트](http://conf.reactjs.com/) - [스케줄](http://conf.reactjs.com/schedule.html) - [비디오들](https://www.youtube-nocookie.com/playlist?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr)
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
 
-### ReactEurope 2015
+### ReactEurope 2015 {#reacteurope-2015}
 7월 2일 & 3일
 
 [웹사이트](http://www.react-europe.org/) - [스케줄](http://www.react-europe.org/#schedule)
diff --git a/content/community/conferences.md b/content/community/conferences.md
index 415b66d4fb..78f868d7fd 100644
--- a/content/community/conferences.md
+++ b/content/community/conferences.md
@@ -10,316 +10,316 @@ redirect_from:
 
 Do you know of a local React.js conference? Add it here! (Please keep the list chronological)
 
-## Upcoming Conferences
+## Upcoming Conferences {#upcoming-conferences}
 
-### React Iran 2019
+### React Iran 2019 {#react-iran-2019}
 January 31, 2019 in Tehran, Iran
 [Website](http://reactiran.com) - [Instagram](https://www.instagram.com/reactiran/)
 
-### App.js Conf 2019
+### App.js Conf 2019 {#appjs-conf-2019}
 April 4-5, 2019 in Kraków, Poland
 
 [Website](https://appjs.co) - [Twitter](https://twitter.com/appjsconf)
 
-### React Amsterdam 2019
+### React Amsterdam 2019 {#react-amsterdam-2019}
 April 12, 2019 in Amsterdam, The Netherlands
 
 [Website](https://react.amsterdam) - [Twitter](https://twitter.com/reactamsterdam) - [Facebook](https://www.facebook.com/reactamsterdam)
 
-### ReactEurope 2019
+### ReactEurope 2019 {#reacteurope-2019}
 May 23-24, 2019 in Paris, France
 
 [Website](https://www.react-europe.org) - [Twitter](https://twitter.com/ReactEurope) - [Facebook](https://www.facebook.com/ReactEurope) - [Videos](https://www.youtube.com/c/ReacteuropeOrgConf)
 
-### React Norway 2019
+### React Norway 2019 {#react-norway-2019}
 June 12, 2019. Larvik, Norway
 
 [Website](https://reactnorway.com) - [Twitter](https://twitter.com/ReactNorway)
 
-### ComponentsConf 2019
+### ComponentsConf 2019 {#componentsconf-2019}
 September 6, 2019 in Melbourne, Australia
 [Website](https://www.componentsconf.com.au/) - [Twitter](https://twitter.com/componentsconf)
 
-### React Native EU 2019
+### React Native EU 2019 {#react-native-eu-2019}
 September 5-6 in Wrocław, Poland
 
 [Website](https://react-native.eu) - [Twitter](https://twitter.com/react_native_eu) - [Facebook](https://www.facebook.com/reactnativeeu)
 
-### React New York 2019
+### React New York 2019 {#react-new-york-2019}
 September 13th, 2019. New York, USA
 
 [Website](https://reactnewyork.com/) - [Twitter](https://twitter.com/reactnewyork)
 
-### React India 2019
+### React India 2019 {#react-india-2019}
 September 26-28, 2019 in Goa, India
 
 [Website](https://www.reactindia.io/) - [Twitter](https://twitter.com/react_india) - [Facebook](https://www.facebook.com/ReactJSIndia)
 
-## Past Conferences
+## Past Conferences {#past-conferences}
 
-### React.js Conf 2015
+### React.js Conf 2015 {#reactjs-conf-2015}
 January 28 & 29 in Facebook HQ, CA
 
 [Website](http://conf2015.reactjs.org/) - [Schedule](http://conf2015.reactjs.org/schedule.html) - [Videos](https://www.youtube.com/playlist?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr)
 
 <iframe title="React.js Conf 2015 Keynote" width="650" height="315" src="//www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
 
-### ReactEurope 2015
+### ReactEurope 2015 {#reacteurope-2015}
 July 2 & 3 in Paris, France
 
 [Website](http://www.react-europe.org/) - [Schedule](http://www.react-europe.org/#schedule) - [Videos](https://www.youtube.com/channel/UCorlLn2oZfgOJ-FUcF2eZ1A/playlists)
 
-### Reactive 2015
+### Reactive 2015 {#reactive-2015}
 November 2-4 in Bratislava, Slovakia
 
 [Website](https://reactive2015.com/) - [Schedule](https://reactive2015.com/schedule_speakers.html#schedule)
 
-### React.js Conf 2016
+### React.js Conf 2016 {#reactjs-conf-2016}
 February 22 & 23 in San Francisco, CA
 
 [Website](http://conf.reactjs.com/) - [Schedule](http://conf.reactjs.com/schedule.html) - [Videos](https://www.youtube.com/playlist?list=PLb0IAmt7-GS0M8Q95RIc2lOM6nc77q1IY)
 
-### React Amsterdam 2016
+### React Amsterdam 2016 {#react-amsterdam-2016}
 April 16 in Amsterdam, The Netherlands
 
 [Website](https://react.amsterdam/2016) - [Videos](https://youtu.be/sXDZBxbRRag?list=PLNBNS7NRGKMG3uLrm5fgY02hJ87Wzb4IU)
 
-### ReactEurope 2016
+### ReactEurope 2016 {#reacteurope-2016}
 June 2 & 3 in Paris, France
 
 [Website](http://www.react-europe.org/) - [Schedule](http://www.react-europe.org/#schedule) - [Videos](https://www.youtube.com/channel/UCorlLn2oZfgOJ-FUcF2eZ1A/playlists)
 
-### ReactRally 2016
+### ReactRally 2016 {#reactrally-2016}
 August 25-26 in Salt Lake City, UT
 
 [Website](http://www.reactrally.com/) - [Schedule](http://www.reactrally.com/#/schedule) - [Videos](https://www.youtube.com/playlist?list=PLUD4kD-wL_zYSfU3tIYsb4WqfFQzO_EjQ)
 
-### ReactNext 2016
+### ReactNext 2016 {#reactnext-2016}
 September 15 in Tel Aviv, Israel
 
 [Website](http://react-next.com/) - [Schedule](http://react-next.com/#schedule) - [Videos](https://www.youtube.com/channel/UC3BT8hh3yTTYxbLQy_wbk2w)
 
-### ReactNL 2016
+### ReactNL 2016 {#reactnl-2016}
 October 13 in Amsterdam, The Netherlands - [Schedule](http://reactnl.org/#program)
 
 [Website](http://reactnl.org/)
 
-### Reactive 2016
+### Reactive 2016 {#reactive-2016}
 October 26-28 in Bratislava, Slovakia
 
 [Website](https://reactiveconf.com/)
 
-### React Remote Conf 2016
+### React Remote Conf 2016 {#react-remote-conf-2016}
 October 26-28 online
 
 [Website](https://allremoteconfs.com/react-2016) - [Schedule](https://allremoteconfs.com/react-2016#schedule)
 
-### Agent Conference 2017
+### Agent Conference 2017 {#agent-conference-2017}
 January 20-21 in Dornbirn, Austria
 
 [Website](http://agent.sh/)
 
-### React Conf 2017
+### React Conf 2017 {#react-conf-2017}
 March 13-14 in Santa Clara, CA
 
 [Website](http://conf.reactjs.org/) - [Videos](https://www.youtube.com/watch?v=7HSd1sk07uU&list=PLb0IAmt7-GS3fZ46IGFirdqKTIxlws7e0)
 
-### React London 2017
+### React London 2017 {#react-london-2017}
 March 28th at the [QEII Centre, London](http://qeiicentre.london/)
 
 [Website](http://react.london/) - [Videos](https://www.youtube.com/watch?v=2j9rSur_mnk&list=PLW6ORi0XZU0CFjdoYeC0f5QReBG-NeNKJ)
 
-### React Amsterdam 2017
+### React Amsterdam 2017 {#react-amsterdam-2017}
 April 21st in Amsterdam, The Netherlands
 
 [Website](https://react.amsterdam) - [Twitter](https://twitter.com/reactamsterdam) - [Videos](https://www.youtube.com/watch?v=NQyL-Dm7Kig&list=PLNBNS7NRGKMHxfm0CcYNuINLdRw7r4a9M)
 
-### ReactEurope 2017
+### ReactEurope 2017 {#reacteurope-2017}
 May 18th & 19th in Paris, France
 
 [Website](http://www.react-europe.org/) - [Schedule](http://www.react-europe.org/#schedule) - [Videos](https://www.youtube.com/channel/UCorlLn2oZfgOJ-FUcF2eZ1A/playlists)
 
-### Chain React 2017
+### Chain React 2017 {#chain-react-2017}
 July 10-11 in Portland, Oregon USA
 
 [Website](https://infinite.red/ChainReactConf) - [Twitter](https://twitter.com/chainreactconf) - [Videos](https://www.youtube.com/watch?v=cz5BzwgATpc&list=PLFHvL21g9bk3RxJ1Ut5nR_uTZFVOxu522)
 
-### React Rally 2017
+### React Rally 2017 {#react-rally-2017}
 August 24-25 in Salt Lake City, Utah USA
 
 [Website](http://www.reactrally.com) - [Twitter](https://twitter.com/reactrally) - [Videos](https://www.youtube.com/watch?v=f4KnHNCZcH4&list=PLUD4kD-wL_zZUhvAIHJjueJDPr6qHvkni)
 
-### React Native EU 2017
+### React Native EU 2017 {#react-native-eu-2017}
 September 6-7 in Wroclaw, Poland
 
 [Website](http://react-native.eu/) - [Videos](https://www.youtube.com/watch?v=453oKJAqfy0&list=PLzUKC1ci01h_hkn7_KoFA-Au0DXLAQZR7)
 
-### ReactNext 2017
+### ReactNext 2017 {#reactnext-2017}
 September 8-10 in Tel Aviv, Israel
 
 [Website](http://react-next.com/) - [Twitter](https://twitter.com/ReactNext) - [Videos (Hall A)](https://www.youtube.com/watch?v=eKXQw5kR86c&list=PLMYVq3z1QxSqq6D7jxVdqttOX7H_Brq8Z), [Videos (Hall B)](https://www.youtube.com/watch?v=1InokWxYGnE&list=PLMYVq3z1QxSqCZmaqgTXLsrcJ8mZmBF7T)
 
-### ReactFoo 2017
+### ReactFoo 2017 {#reactfoo-2017}
 September 14 in Bangalore, India
 
 [Website](https://reactfoo.in/2017/) - [Videos](https://www.youtube.com/watch?v=3G6tMg29Wnw&list=PL279M8GbNsespKKm1L0NAzYLO6gU5LvfH)
 
-### React Boston 2017
+### React Boston 2017 {#react-boston-2017}
 September 23-24 in Boston, Massachusetts USA
 
 [Website](http://www.reactboston.com/) - [Twitter](https://twitter.com/ReactBoston) - [Videos](https://www.youtube.com/watch?v=2iPE5l3cl_s&list=PL-fCkV3wv4ub8zJMIhmrrLcQqSR5XPlIT)
 
-### React Alicante 2017
+### React Alicante 2017 {#react-alicante-2017}
 September 28-30 in Alicante, Spain
 
 [Website](http://reactalicante.es) - [Twitter](https://twitter.com/ReactAlicante) - [Videos](https://www.youtube.com/watch?v=UMZvRCWo6Dw&list=PLd7nkr8mN0sWvBH_s0foCE6eZTX8BmLUM)
 
-### ReactJS Day 2017
+### ReactJS Day 2017 {#reactjs-day-2017}
 October 6 in Verona, Italy
 
 [Website](http://2017.reactjsday.it) - [Twitter](https://twitter.com/reactjsday) - [Videos](https://www.youtube.com/watch?v=bUqqJPIgjNU&list=PLWK9j6ps_unl293VhhN4RYMCISxye3xH9)
 
-### React Conf Brasil 2017
+### React Conf Brasil 2017 {#react-conf-brasil-2017}
 October 7 in Sao Paulo, Brazil
 
 [Website](http://reactconfbr.com.br) - [Twitter](https://twitter.com/reactconfbr) - [Facebook](https://www.facebook.com/reactconf/)
 
-### State.js Conference 2017
+### State.js Conference 2017 {#statejs-conference-2017}
 October 13 in Stockholm, Sweden
 
 [Website](https://statejs.com/)
 
-### React Summit 2017
+### React Summit 2017 {#react-summit-2017}
 October 21 in Lagos, Nigeria
 
 [Website](https://reactsummit2017.splashthat.com/) - [Twitter](https://twitter.com/DevCircleLagos/) - [Facebook](https://www.facebook.com/groups/DevCLagos/)
 
-### ReactiveConf 2017
+### ReactiveConf 2017 {#reactiveconf-2017}
 October 25–27, Bratislava, Slovakia
 
 [Website](https://reactiveconf.com) - [Videos](https://www.youtube.com/watch?v=BOKxSFB2hOE&list=PLa2ZZ09WYepMB-I7AiDjDYR8TjO8uoNjs)
 
-### React Seoul 2017
+### React Seoul 2017 {#react-seoul-2017}
 November 4 in Seoul, South Korea
 
 [Website](http://seoul.reactjs.kr/en)
 
-### React Day Berlin 2017
+### React Day Berlin 2017 {#react-day-berlin-2017}
 December 2, Berlin, Germany
 
 [Website](https://reactday.berlin) - [Twitter](https://twitter.com/reactdayberlin) - [Facebook](https://www.facebook.com/reactdayberlin/) - [Videos](https://www.youtube.com/watch?v=UnNLJvHKfSY&list=PL-3BrJ5CiIx5GoXci54-VsrO6GwLhSHEK)
 
-### ReactFoo Pune
+### ReactFoo Pune {#reactfoo-pune}
 January 19-20, Pune, India
 
 [Website](https://reactfoo.in/2018-pune/) - [Twitter](https://twitter.com/ReactFoo)
 
-### AgentConf 2018
+### AgentConf 2018 {#agentconf-2018}
 January 25-28 in Dornbirn, Austria
 
 [Website](http://agent.sh/)
 
-### ReactFest 2018
+### ReactFest 2018 {#reactfest-2018}
 March 8-9 in London, UK
 
 [Website](https://reactfest.uk/) - [Twitter](https://twitter.com/ReactFest) - [Videos](https://www.youtube.com/watch?v=YOCrJ5vRCnw&list=PLRgweB8YtNRt-Sf-A0y446wTJNUaAAmle)
 
-### Reactathon 2018
+### Reactathon 2018 {#reactathon-2018}
 March 20-22 in San Francisco, USA
 
 [Website](https://www.reactathon.com/) - [Twitter](https://twitter.com/reactathon) - [Videos (fundamentals)](https://www.youtube.com/watch?v=knn364bssQU&list=PLRvKvw42Rc7OWK5s-YGGFSmByDzzgC0HP), [Videos (advanced day1)](https://www.youtube.com/watch?v=57hmk4GvJpk&list=PLRvKvw42Rc7N0QpX2Rc5CdrqGuxzwD_0H), [Videos (advanced day2)](https://www.youtube.com/watch?v=1hvQ8p8q0a0&list=PLRvKvw42Rc7Ne46QAjWNWFo1Jf0mQdnIW)
 
-### React Native Camp UA 2018
+### React Native Camp UA 2018 {#react-native-camp-ua-2018}
 March 31 in Kiev, Ukraine
 
 [Website](http://reactnative.com.ua/) - [Twitter](https://twitter.com/reactnativecamp) - [Facebook](https://www.facebook.com/reactnativecamp/)
 
-### React Amsterdam 2018
+### React Amsterdam 2018 {#react-amsterdam-2018}
 April 13 in Amsterdam, The Netherlands
 
 [Website](https://react.amsterdam) - [Twitter](https://twitter.com/reactamsterdam) - [Facebook](https://www.facebook.com/reactamsterdam)
 
-### React Finland 2018
+### React Finland 2018 {#react-finland-2018}
 April 24-26 in Helsinki, Finland
 
 [Website](https://react-finland.fi/) - [Twitter](https://twitter.com/ReactFinland)
 
-### <React.NotAConf /> 2018
+### <React.NotAConf /> 2018 {#reactnotaconf--2018}
 April 28 in Sofia, Bulgaria
 
 [Website](http://react-not-a-conf.com/) - [Twitter](https://twitter.com/reactnotaconf) - [Facebook](https://www.facebook.com/groups/1614950305478021/)
 
-### ReactEurope 2018
+### ReactEurope 2018 {#reacteurope-2018}
 May 17-18 in Paris, France
 
 [Website](https://www.react-europe.org) - [Twitter](https://twitter.com/ReactEurope) - [Facebook](https://www.facebook.com/ReactEurope)
 
-### ReactFoo Mumbai
+### ReactFoo Mumbai {#reactfoo-mumbai}
 May 26 in Mumbai, India
 
 [Website](https://reactfoo.in/2018-mumbai/) - [Twitter](https://twitter.com/reactfoo) - [Past talks](https://hasgeek.tv)
 
-### Chain React 2018
+### Chain React 2018 {#chain-react-2018}
 July 11-13 in Portland, Oregon USA
 
 [Website](https://infinite.red/ChainReactConf) - [Twitter](https://twitter.com/chainreactconf)
 
-### React Rally
+### React Rally {#react-rally}
 August 16-17 in Salt Lake City, Utah USA
 
 [Website](http://www.reactrally.com) - [Twitter](https://twitter.com/reactrally)
 
-### React DEV Conf China
+### React DEV Conf China {#react-dev-conf-china}
 August 18 in Guangzhou, China
 
 [Website](https://react.w3ctech.com)
 
-### ReactFoo Delhi 
+### ReactFoo Delhi {#reactfoo-delhi}
 August 18 in Delhi, India
 
 [Website](https://reactfoo.in/2018-delhi/) - [Twitter](https://twitter.com/reactfoo) - [Past talks](https://hasgeek.tv)
 
-### Byteconf React 2018
+### Byteconf React 2018 {#byteconf-react-2018}
 August 31 streamed online, via Twitch
 
 [Website](https://byteconf.com) - [Twitch](https://twitch.tv/byteconf) - [Twitter](https://twitter.com/byteconf)
 
-### React Native EU 2018
+### React Native EU 2018 {#react-native-eu-2018}
 September 5-6 in Wrocław, Poland
 
 [Website](https://react-native.eu) - [Twitter](https://twitter.com/react_native_eu) - [Facebook](https://www.facebook.com/reactnativeeu)
 
-### React Alicante 2018
+### React Alicante 2018 {#react-alicante-2018}
 September 13-15 in Alicante, Spain
 
 [Website](http://reactalicante.es) - [Twitter](https://twitter.com/ReactAlicante)
 
-### React Boston 2018
+### React Boston 2018 {#react-boston-2018}
 September 29-30 in Boston, Massachusetts USA
 
 [Website](http://www.reactboston.com/) - [Twitter](https://twitter.com/ReactBoston)
 
-### ReactJS Day 2018
+### ReactJS Day 2018 {#reactjs-day-2018}
 October 5 in Verona, Italy
 
 [Website](http://2018.reactjsday.it) - [Twitter](https://twitter.com/reactjsday)
 
-### React Conf Brasil 2018
+### React Conf Brasil 2018 {#react-conf-brasil-2018}
 October 20 in Sao Paulo, Brazil
 
 [Website](http://reactconfbr.com.br) - [Twitter](https://twitter.com/reactconfbr) - [Facebook](https://www.facebook.com/reactconf)
 
-### React Conf 2018
+### React Conf 2018 {#react-conf-2018}
 October 25-26 in Henderson, Nevada USA
 
 [Website](https://conf.reactjs.org/)
 
-### ReactNext 2018
+### ReactNext 2018 {#reactnext-2018}
 November 4 in Tel Aviv, Israel
 
 [Website](https://react-next.com) - [Twitter](https://twitter.com/ReactNext) - [Facebook](https://facebook.com/ReactNext2016)
 
-### React Day Berlin 2018
+### React Day Berlin 2018 {#react-day-berlin-2018}
 November 30, Berlin, Germany
 
 [Website](https://reactday.berlin) - [Twitter](https://twitter.com/reactdayberlin) - [Facebook](https://www.facebook.com/reactdayberlin/) - [Videos](https://www.youtube.com/channel/UC1EYHmQYBUJjkmL6OtK4rlw)
diff --git a/content/community/conferences.zh-CN.md b/content/community/conferences.zh-CN.md
index 5d58aaed6b..e256941392 100644
--- a/content/community/conferences.zh-CN.md
+++ b/content/community/conferences.zh-CN.md
@@ -6,24 +6,24 @@ prev: thinking-in-react-zh-CN.html
 next: videos-zh-CN.html
 ---
 
-### React.js Conf 2015
+### React.js Conf 2015 {#reactjs-conf-2015}
 一月 28 & 29
 
 [Website](http://conf.reactjs.com/) - [Schedule](http://conf.reactjs.com/schedule.html) - [Videos](https://www.youtube-nocookie.com/playlist?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr)
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
 
-### ReactEurope 2015
+### ReactEurope 2015 {#reacteurope-2015}
 七月 2 & 3
 
 [Website](http://www.react-europe.org/) - [Schedule](http://www.react-europe.org/#schedule)
 
-### Reactive 2015
+### Reactive 2015 {#reactive-2015}
 十一月 2-4
 
 [Website](https://reactive2015.com/) - [Schedule](https://reactive2015.com/schedule_speakers.html#schedule)
 
-### ReactEurope 2016
+### ReactEurope 2016 {#reacteurope-2016}
 六月 2 & 3
 
 [Website](http://www.react-europe.org/) - [Schedule](http://www.react-europe.org/#schedule)
diff --git a/content/community/courses.md b/content/community/courses.md
index 5da83fe511..cd05adea04 100644
--- a/content/community/courses.md
+++ b/content/community/courses.md
@@ -6,7 +6,7 @@ sectionid: community
 permalink: community/courses.html
 ---
 
-## Free Courses
+## Free Courses {#free-courses}
 
 - [Codecademy: React 101](https://www.codecademy.com/learn/react-101) - Codecademy's introductory course for React.
 
@@ -22,7 +22,7 @@ permalink: community/courses.html
 
 - [Free React Bootcamp](https://tylermcginnis.com/free-react-bootcamp/) - Recordings from three days of a free online React bootcamp.
 
-## Paid Courses
+## Paid Courses {#paid-courses}
 
 - [Egghead.io](https://egghead.io/browse/frameworks/react) - Short instructional videos on React and many other topics.
 
diff --git a/content/community/meetups.md b/content/community/meetups.md
index 149f3411d3..d397a4535e 100644
--- a/content/community/meetups.md
+++ b/content/community/meetups.md
@@ -8,50 +8,50 @@ permalink: community/meetups.html
 
 Do you have a local React.js meetup? Add it here! (Please keep the list alphabetical)
 
-## Australia
+## Australia {#australia}
 * [Brisbane](https://www.meetup.com/reactbris/)
 * [Melbourne](https://www.meetup.com/React-Melbourne/)
 * [Sydney](https://www.meetup.com/React-Sydney/)
 
-## Austria
+## Austria {#austria}
 * [Vienna](https://www.meetup.com/Vienna-ReactJS-Meetup/)
 
-## Belgium
+## Belgium {#belgium}
 * [Belgium](https://www.meetup.com/ReactJS-Belgium/)
 
-## Brazil
+## Brazil {#brazil}
 * [Belo Horizonte](https://www.meetup.com/reactbh/)
 * [Curitiba](https://www.meetup.com/pt-br/ReactJS-CWB/)
 * [Rio de Janeiro](https://www.meetup.com/pt-BR/React-Rio-de-Janeiro/)
 * [São Paulo](https://www.meetup.com/pt-BR/ReactJS-SP/)
 
-## Bolivia
+## Bolivia {#bolivia}
 * [Bolivia](https://www.meetup.com/ReactBolivia/)
 
-## Canada
+## Canada {#canada}
 * [Montreal, QC - ReactJS](https://www.meetup.com/fr-FR/ReactMontreal/)
 * [Montreal, QC - React Native](https://www.meetup.com/fr-FR/React-Native-MTL/)
 * [Vancouver, BC](https://www.meetup.com/ReactJS-Vancouver-Meetup/)
 * [Ottawa, ON](https://www.meetup.com/Ottawa-ReactJS-Meetup/)
 
-## China
+## China {#china}
 * [Beijing](https://www.meetup.com/Beijing-ReactJS-Meetup/)
 
-## Colombia
+## Colombia {#colombia}
 * [Medellin](https://www.meetup.com/React-Medellin/)
 
-## Denmark
+## Denmark {#denmark}
 * [Aalborg](https://www.meetup.com/Aalborg-React-React-Native-Meetup/)
 * [Aarhus](https://www.meetup.com/Aarhus-ReactJS-Meetup/)
 
-## England (UK)
+## England (UK) {#england-uk}
 * [Manchester](https://www.meetup.com/Manchester-React-User-Group/)
 * [React.JS Girls London](https://www.meetup.com/ReactJS-Girls-London/)
 
-## France
+## France {#france}
 * [Paris](https://www.meetup.com/ReactJS-Paris/)
 
-## Germany
+## Germany {#germany}
 * [Düsseldorf](https://www.meetup.com/de-DE/ReactJS-Meetup-Dusseldorf/)
 * [Hamburg](https://www.meetup.com/Hamburg-React-js-Meetup/)
 * [Karlsruhe](https://www.meetup.com/react_ka/)
@@ -59,61 +59,61 @@ Do you have a local React.js meetup? Add it here! (Please keep the list alphabet
 * [React Berlin](https://www.meetup.com/React-Berlin/)
 * [React.JS Girls Berlin](https://www.meetup.com/ReactJS-Girls-Berlin/)
 
-## Greece
+## Greece {#greece}
 * [Thessaloniki](https://www.meetup.com/Thessaloniki-ReactJS-Meetup/)
 
-## Hungary
+## Hungary {#hungary}
 * [Budapest](https://www.meetup.com/React-Budapest/)
 
-## India
+## India {#india}
 * [Bangalore](https://www.meetup.com/ReactJS-Bangalore/)
 * [Chennai](https://www.meetup.com/React-Chennai/)
 * [Delhi NCR](https://www.meetup.com/React-Delhi-NCR/)
 
-## Ireland
+## Ireland {#ireland}
 * [Dublin](https://www.meetup.com/ReactJS-Dublin/)
 
-## Israel
+## Israel {#israel}
 * [Tel Aviv](https://www.meetup.com/ReactJS-Israel/)
 
-## Netherlands
+## Netherlands {#netherlands}
 * [Amsterdam](https://www.meetup.com/React-Amsterdam/)
 
-## New Zealand
+## New Zealand {#new-zealand}
 * [Wellington](https://www.meetup.com/React-Wellington/)
 
-## Norway
+## Norway {#norway}
 * [Norway](https://reactjs-norway.webflow.io/)
 * [Oslo](https://www.meetup.com/ReactJS-Oslo-Meetup/)
 
-## Pakistan
+## Pakistan {#pakistan}
 * [Karachi](https://www.facebook.com/groups/902678696597634/)
 
-## Peru
+## Peru {#peru}
 * [Lima](https://www.meetup.com/ReactJS-Peru/)
 
-## Philippines
+## Philippines {#philippines}
 * [Manila](https://www.meetup.com/reactjs-developers-manila/)
 
-## Poland
+## Poland {#poland}
 * [Warsaw](https://www.meetup.com/React-js-Warsaw/)
 
-## Portugal
+## Portugal {#portugal}
 * [Lisbon](https://www.meetup.com/JavaScript-Lisbon/)
 
-## Scotland (UK)
+## Scotland (UK) {#scotland-uk}
 * [Edinburgh](https://www.meetup.com/React-Scotland/)
 
-## Spain
+## Spain {#spain}
 * [Barcelona](https://www.meetup.com/ReactJS-Barcelona/)
 
-## Sweden
+## Sweden {#sweden}
 * [Goteborg](https://www.meetup.com/ReactJS-Goteborg/)
 
-## Ukraine
+## Ukraine {#ukraine}
 * [Kyiv](https://www.meetup.com/Kyiv-ReactJS-Meetup)
 
-## US
+## US {#us}
 * [Atlanta, GA - ReactJS](https://www.meetup.com/React-ATL/)
 * [Austin, TX - ReactJS](https://www.meetup.com/ReactJS-Austin-Meetup/)
 * [Boston, MA - ReactJS](https://www.meetup.com/ReactJS-Boston/)
diff --git a/content/community/podcasts.md b/content/community/podcasts.md
index 60923965f2..233c7df124 100644
--- a/content/community/podcasts.md
+++ b/content/community/podcasts.md
@@ -8,7 +8,7 @@ permalink: community/podcasts.html
 
 Podcasts dedicated to React and individual podcast episodes with React discussions.
 
-## Podcasts
+## Podcasts {#podcasts}
 
 - [The React Podcast](https://reactpodcast.simplecast.fm/) - The podcast about everything React.js, hosted by [React Training](https://reacttraining.com)
 
@@ -18,7 +18,7 @@ Podcasts dedicated to React and individual podcast episodes with React discussio
 
 - [React Native Radio](https://devchat.tv/react-native-radio)
 
-## Episodes
+## Episodes {#episodes}
 
 - [CodeWinds Episode 4](https://codewinds.com/podcast/004.html) - Pete Hunt talks with Jeff Barczewski about React.
 
diff --git a/content/community/support.md b/content/community/support.md
index 3887e2090a..65ce8b3b0a 100644
--- a/content/community/support.md
+++ b/content/community/support.md
@@ -12,11 +12,11 @@ React has a community of millions of developers.
 
 On this page we've listed some React-related communities that you can be a part of; see the other pages in this section for additional online and in-person learning materials.
 
-## Stack Overflow
+## Stack Overflow {#stack-overflow}
 
 Stack Overflow is a popular forum to ask code-level questions or if you're stuck with a specific error. Read through the [existing questions](https://stackoverflow.com/questions/tagged/reactjs) tagged with **reactjs** or [ask your own](https://stackoverflow.com/questions/ask?tags=reactjs)!
 
-## Popular Discussion Forums
+## Popular Discussion Forums {#popular-discussion-forums}
 
 There are many online forums which are a great place for discussion about best practices and application architecture as well as the future of React. If you have an answerable code-level question, Stack Overflow is usually a better fit.
 
@@ -28,6 +28,6 @@ Each community consists of many thousands of React users.
 * [Reddit's React community](https://www.reddit.com/r/reactjs/)
 * [Spectrum's React community](https://spectrum.chat/react)
 
-## News
+## News {#news}
 
 For the latest news about React, [follow **@reactjs** on Twitter](https://twitter.com/reactjs) and the [official React blog](/blog/) on this website.
diff --git a/content/community/tools-jsx.md b/content/community/tools-jsx.md
index 7b7951dc5e..7c2bfc4758 100644
--- a/content/community/tools-jsx.md
+++ b/content/community/tools-jsx.md
@@ -5,7 +5,7 @@ layout: community
 permalink: community/jsx-integrations.html
 ---
 
-## Editor Integrations
+## Editor Integrations {#editor-integrations}
 * **[Sublime Text: babel-sublime](https://github.com/babel/babel-sublime):** Snippets, syntax highlighting and optimized color schemes for Sublime Text
 * **[Atom: language-babel](https://atom.io/packages/language-babel)** Support for es2016, JSX and Flow.
 * **[Visual Studio Code](https://code.visualstudio.com/updates/vFebruary#_languages-javascript)** Visual Studio Code supports JSX directly.
@@ -15,7 +15,7 @@ permalink: community/jsx-integrations.html
 * **[web-mode.el](http://web-mode.org):** An autonomous emacs major mode that indents and highlights JSX.  No support for Automatic Semicolon Insertion.
 * **[vim-jsx](https://github.com/mxw/vim-jsx):** Syntax highlighting and indenting for JSX
 
-## Build Tools
+## Build Tools {#build-tools}
 
 * **[Create React App](https://github.com/facebookincubator/create-react-app):** An **officially supported** way to create React apps with no configuration.
 * **[nwb](https://github.com/insin/nwb)**: A toolkit for React, Preact & Inferno apps, React libraries and other npm modules for the web, with no configuration (until you need it)
diff --git a/content/community/tools-starter-kits.md b/content/community/tools-starter-kits.md
index c15fcf04bc..a4e6b8150a 100644
--- a/content/community/tools-starter-kits.md
+++ b/content/community/tools-starter-kits.md
@@ -5,7 +5,7 @@ layout: community
 permalink: community/starter-kits.html
 ---
 
-## Recommended by the React Team
+## Recommended by the React Team {#recommended-by-the-react-team}
 
 * **[Create React App](https://github.com/facebook/create-react-app)** - An officially supported way to start a client-side React project with no configuration
 * **[Next.js](https://nextjs.org/)** - Framework for server-rendered or statically-exported React apps
@@ -15,7 +15,7 @@ permalink: community/starter-kits.html
 * **[Neutrino](https://neutrino.js.org/)** - Create and build modern JavaScript applications with zero initial configuration
 * **[Parcel](https://parceljs.org)** - Fast, zero configuration web application bundler
 
-## Other Starter Kits
+## Other Starter Kits {#other-starter-kits}
 
 * **[kyt](https://github.com/nytimes/kyt)** - The framework that the New York Times uses to develop and build their web properties. It's somewhat opinionated but configurable, and includes starter kits with options to build full-stack or static/client-side apps with the following tools: Express, React, static assets, latest ES, CSS/Sass Modules, Jest, code-splitting, ESLint/Prettier, StyleLint, PostCSS, and inline SVGs.
 * **[React Redux Boilerplate](https://github.com/iroy2000/react-redux-boilerplate):** React Redux Boilerplate is a workflow boilerplate providing a virtual development environment and production ready build workflow out of the box. (React, Redux, Reselect, Redux Actions, ES6, ESLint, Webpack with integrated environment config support)
diff --git a/content/community/tools-ui-components.md b/content/community/tools-ui-components.md
index 196bbc7220..4179597e16 100644
--- a/content/community/tools-ui-components.md
+++ b/content/community/tools-ui-components.md
@@ -5,7 +5,7 @@ layout: community
 permalink: community/ui-components.html
 ---
 
-## Free Components
+## Free Components {#free-components}
 * **[Amaze UI React](https://github.com/amazeui/amazeui-react) (in Chinese):** [Amaze UI](https://github.com/allmobilize/amazeui) components built with React.
 * **[Ant Design of React](https://github.com/ant-design/ant-design)** An enterprise-class UI design language and React-based implementation.
 * **[Belle](https://github.com/nikgraf/belle/):** Configurable React Components with great UX.
@@ -69,7 +69,7 @@ permalink: community/ui-components.html
 * **[video-react](https://github.com/video-react/video-react)**: A web video player built for the HTML5 world using React library.
 * **[Winterfell](https://github.com/andrewhathaway/Winterfell):** Generate complex, validated and extendable JSON-based forms in React
 
-## Fee Based Components
+## Fee Based Components {#fee-based-components}
 
 * **[ag-Grid](https://www.ag-grid.com)** Advanced data grid / data table for React.
 * **[ExtReact components](https://www.sencha.com/products/extreact//)**: 115+ Ready-to-Use UI Components.
diff --git a/content/community/videos.it-IT.md b/content/community/videos.it-IT.md
index 4e32b370f5..44548b3a09 100644
--- a/content/community/videos.it-IT.md
+++ b/content/community/videos.it-IT.md
@@ -6,7 +6,7 @@ prev: conferences-it-IT.html
 next: complementary-tools-it-IT.html
 ---
 
-### Riconsiderare le best practice - JSConf.eu
+### Riconsiderare le best practice - JSConf.eu {#riconsiderare-le-best-practice---jsconfeu}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/x7cQ3mrcKaY" frameborder="0" allowfullscreen></iframe>
 
@@ -14,14 +14,14 @@ next: complementary-tools-it-IT.html
 
 * * *
 
-### Pensare in react - tagtree.tv
+### Pensare in react - tagtree.tv {#pensare-in-react---tagtreetv}
 
 Un video di [tagtree.tv](http://tagtree.tv/) che espone i principi di [Pensare in React](/docs/thinking-in-react.html) mentre costruisci una semplice applicazione
 <figure><a href="http://tagtree.tv/thinking-in-react"><img src="../images/docs/thinking-in-react-tagtree.png"></a></figure>
 
 * * *
 
-### I Segreti del DOM Virtuale - MtnWest JS
+### I Segreti del DOM Virtuale - MtnWest JS {#i-segreti-del-dom-virtuale---mtnwest-js}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/h3KksH8gfcQ" frameborder="0" allowfullscreen></iframe>
 
@@ -29,14 +29,14 @@ Un video di [tagtree.tv](http://tagtree.tv/) che espone i principi di [Pensare i
 
 * * *
 
-### Pensare in grande con React
+### Pensare in grande con React {#pensare-in-grande-con-react}
 
 "Sulla carta, tutti questi framework JS sembrano promettenti: implementazioni pulite, design veloce del codice, esecuzione perfetta. Ma che succede quando metti JavaScript sotto stress? Che succede se gli dài in pasto 6 megabyte di codice? In questo talk investigheremo come si comporta React in situazioni di stress elevato, e come ha aiutato il nostro team a costruire codice sicuro ad una scala enorme."
 <figure><a href="https://skillsmatter.com/skillscasts/5429-going-big-with-react#video"><img src="https://i.vimeocdn.com/video/481670116_650.jpg"></a></figure>
 
 * * *
 
-### CodeWinds
+### CodeWinds {#codewinds}
 
 [Pete Hunt](http://www.petehunt.net/) ha parlato con [Jeff Barczewski](http://jeff.barczewski.com/) a proposito di React nell'Episodio 4 di CodeWinds.
 <figure><a href="http://codewinds.com/4"><img src="../images/docs/codewinds-004.png"></a></figure>
@@ -69,7 +69,7 @@ Un video di [tagtree.tv](http://tagtree.tv/) che espone i principi di [Pensare i
 
 * * *
 
-### JavaScript Jabber
+### JavaScript Jabber {#javascript-jabber}
 
 [Pete Hunt](http://www.petehunt.net/) e [Jordan Walke](https://github.com/jordwalke) hanno parlato di React in JavaScript Jabber 73.
 <figure><a href="http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/#content"><img src="../images/docs/javascript-jabber.png"></a></figure>
@@ -97,7 +97,7 @@ Un video di [tagtree.tv](http://tagtree.tv/) che espone i principi di [Pensare i
 
 * * *
 
-### Introduzione a React.js - Facebook Seattle
+### Introduzione a React.js - Facebook Seattle {#introduzione-a-reactjs---facebook-seattle}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/XxVg_s8xAms" frameborder="0" allowfullscreen></iframe>
 
@@ -105,14 +105,14 @@ Di [Tom Occhino](http://tomocchino.com/) e [Jordan Walke](https://github.com/jor
 
 * * *
 
-### Backbone + React + Middleman Screencast
+### Backbone + React + Middleman Screencast {#backbone--react--middleman-screencast}
 <iframe width="650" height="488" src="https://www.youtube-nocookie.com/embed/iul1fWHVU6A" frameborder="0" allowfullscreen></iframe>
 
 Backbone è una grande maniera di interfacciare una API REST con React. Questo screencast mostra come integrare i due usando [Backbone-React-Component](https://github.com/magalhas/backbone-react-component). Middleman è il framework utilizzato in questo esempio, ma può essere facilmente sostituito con altri framework. Si può trovare un template supportato per questo esempio [qui](https://github.com/jbhatab/middleman-backbone-react-template). -- [Open Minded Innovations](http://www.openmindedinnovations.com/)
 
 * * *
 
-### Sviluppare Interfacce Utente Con React - Super VanJS
+### Sviluppare Interfacce Utente Con React - Super VanJS {#sviluppare-interfacce-utente-con-react---super-vanjs}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/1OeXsL5mr4g" frameborder="0" allowfullscreen></iframe>
 
@@ -120,7 +120,7 @@ Di [Steven Luscher](https://github.com/steveluscher)
 
 * * *
 
-### Introduzione a React - LAWebSpeed meetup
+### Introduzione a React - LAWebSpeed meetup {#introduzione-a-react---lawebspeed-meetup}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/SMMRJif5QW0" frameborder="0" allowfullscreen></iframe>
 
@@ -128,7 +128,7 @@ Di [Stoyan Stefanov](http://www.phpied.com/)
 
 * * *
 
-### React, o come rendere la vita più semplice - FrontEnd Dev Conf '14
+### React, o come rendere la vita più semplice - FrontEnd Dev Conf '14 {#react-o-come-rendere-la-vita-più-semplice---frontend-dev-conf-14}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/YJNUK0EA_Jo" frameborder="0" allowfullscreen></iframe>
 
@@ -136,19 +136,19 @@ Di [Stoyan Stefanov](http://www.phpied.com/)
 
 * * *
 
-### "Programmazione funzionale del DOM" - Meteor DevShop 11
+### "Programmazione funzionale del DOM" - Meteor DevShop 11 {#programmazione-funzionale-del-dom---meteor-devshop-11}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/qqVbr_LaCIo" frameborder="0" allowfullscreen></iframe>
 
 * * *
 
-### "Ripensare lo Sviluppo di Applicazioni Web a Facebook" - Facebook F8 Conference 2014
+### "Ripensare lo Sviluppo di Applicazioni Web a Facebook" - Facebook F8 Conference 2014 {#ripensare-lo-sviluppo-di-applicazioni-web-a-facebook---facebook-f8-conference-2014}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/nYkdrAPrdcw" frameborder="0" allowfullscreen></iframe>
 
 * * *
 
-### React e Flux: Costruire Applicazioni con un Flusso Dati Unidirezionale - Forward JS 2014
+### React e Flux: Costruire Applicazioni con un Flusso Dati Unidirezionale - Forward JS 2014 {#react-e-flux-costruire-applicazioni-con-un-flusso-dati-unidirezionale---forward-js-2014}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/i__969noyAM" frameborder="0" allowfullscreen></iframe>
 
@@ -156,7 +156,7 @@ Gli ingegneri di Facebook [Bill Fisher](https://twitter.com/fisherwebdev) e [Jin
 
 * * *
 
-### Rendering Lato Server di Applicazioni Isomorfiche a SoundCloud
+### Rendering Lato Server di Applicazioni Isomorfiche a SoundCloud {#rendering-lato-server-di-applicazioni-isomorfiche-a-soundcloud}
 
 <iframe src="https://player.vimeo.com/video/108488724" width="100%" height="365" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
 
@@ -166,7 +166,7 @@ Gli ingegneri di Facebook [Bill Fisher](https://twitter.com/fisherwebdev) e [Jin
 
 * * *
 
-### Introduzione a React Native (+Playlist) - React.js Conf 2015
+### Introduzione a React Native (+Playlist) - React.js Conf 2015 {#introduzione-a-react-native-playlist---reactjs-conf-2015}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
 
diff --git a/content/community/videos.ko-KR.md b/content/community/videos.ko-KR.md
index 171c4c5c10..4e9d0058f3 100644
--- a/content/community/videos.ko-KR.md
+++ b/content/community/videos.ko-KR.md
@@ -6,7 +6,7 @@ prev: conferences-ko-KR.html
 next: complementary-tools-ko-KR.html
 ---
 
-### Rethinking best practices - JSConf.eu
+### Rethinking best practices - JSConf.eu {#rethinking-best-practices---jsconfeu}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/x7cQ3mrcKaY" frameborder="0" allowfullscreen></iframe>
 
@@ -14,14 +14,14 @@ next: complementary-tools-ko-KR.html
 
 * * *
 
-### Thinking in react - tagtree.tv
+### Thinking in react - tagtree.tv {#thinking-in-react---tagtreetv}
 
 [tagtree.tv](http://tagtree.tv/)의 비디오는 간단한 어플리케이션을 구성하면서 [Thinking in React](/docs/thinking-in-react-ko-KR.html)의 원리들을 전달합니다.
 <figure><a href="http://tagtree.tv/thinking-in-react"><img src="../images/docs/thinking-in-react-tagtree.png"></a></figure>
 
 * * *
 
-### Secrets of the Virtual DOM - MtnWest JS
+### Secrets of the Virtual DOM - MtnWest JS {#secrets-of-the-virtual-dom---mtnwest-js}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/h3KksH8gfcQ" frameborder="0" allowfullscreen></iframe>
 
@@ -29,14 +29,14 @@ next: complementary-tools-ko-KR.html
 
 * * *
 
-### Going big with React
+### Going big with React {#going-big-with-react}
 
 "이 발표에서, 이 모든 JS 프레임워크가 다음을 약속하는것처럼 보입니다: 깨끗한 구현들, 빠른 코드 디자인, 완전한 수행. 그런데 당신이 JavaScript 스트레스 테스트를 할때, 어떤 일이 발생합니까? 혹은 6MB의 코드를 던지면 무슨일이 발생합니까? 이번에는 높은 스트레스 환경에서 React가 어떻게 작동하는지, 그리고 이것이 우리 팀이 방대한 크기의 코드를 안전하게 구성하는데 어떻게 도움이 되어줄지를 조사해 볼겁니다."
 [![](https://i.vimeocdn.com/video/481670116_650.jpg)](https://skillsmatter.com/skillscasts/5429-going-big-with-react#video)
 
 * * *
 
-### CodeWinds
+### CodeWinds {#codewinds}
 
 CodeWinds Episode 4 에서 [Pete Hunt](http://www.petehunt.net/)와 [Jeff Barczewski](http://jeff.barczewski.com/)가 React에 대해서 이야기 합니다.
 
@@ -70,7 +70,7 @@ CodeWinds Episode 4 에서 [Pete Hunt](http://www.petehunt.net/)와 [Jeff Barcze
 
 * * *
 
-### JavaScript Jabber
+### JavaScript Jabber {#javascript-jabber}
 
 JavaScript Jabber 73에서 [Pete Hunt](http://www.petehunt.net/)와 [Jordan Walke](https://github.com/jordwalke)가 React에 대해서 이야기했습니다.
 
@@ -99,7 +99,7 @@ JavaScript Jabber 73에서 [Pete Hunt](http://www.petehunt.net/)와 [Jordan Walk
 
 * * *
 
-### Introduction to React.js - Facebook Seattle
+### Introduction to React.js - Facebook Seattle {#introduction-to-reactjs---facebook-seattle}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/XxVg_s8xAms" frameborder="0" allowfullscreen></iframe>
 
@@ -107,14 +107,14 @@ By [Tom Occhino](http://tomocchino.com/), [Jordan Walke](https://github.com/jord
 
 * * *
 
-### Backbone + React + Middleman Screencast
+### Backbone + React + Middleman Screencast {#backbone--react--middleman-screencast}
 <iframe width="650" height="488" src="https://www.youtube-nocookie.com/embed/iul1fWHVU6A" frameborder="0" allowfullscreen></iframe>
 
 Backbone은 React로 REST API를 제공하기 위한 아주 좋은 방법입니다. 이 화면중개는 [Backbone-React-Component](https://github.com/magalhas/backbone-react-component)을 이용해서 어떻게 이 두가지를 연동하는지 보여줍니다. Middleman은 이 예제에서 사용되는 프레임워크이지만, 쉽게 다른 프레임워크로 대체하실 수 있습니다. 지원되는 템플릿은 [이곳](https://github.com/jbhatab/middleman-backbone-react-template)에서 찾으실 수 있습니다. -- [열린 마음의 혁명들](http://www.openmindedinnovations.com/)
 
 * * *
 
-### Developing User Interfaces With React - Super VanJS
+### Developing User Interfaces With React - Super VanJS {#developing-user-interfaces-with-react---super-vanjs}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/1OeXsL5mr4g" frameborder="0" allowfullscreen></iframe>
 
@@ -122,7 +122,7 @@ By [Steven Luscher](https://github.com/steveluscher)
 
 * * *
 
-### Introduction to React - LAWebSpeed meetup
+### Introduction to React - LAWebSpeed meetup {#introduction-to-react---lawebspeed-meetup}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/SMMRJif5QW0" frameborder="0" allowfullscreen></iframe>
 
@@ -130,7 +130,7 @@ by [Stoyan Stefanov](http://www.phpied.com/)
 
 * * *
 
-### React, or how to make life simpler - FrontEnd Dev Conf '14
+### React, or how to make life simpler - FrontEnd Dev Conf '14 {#react-or-how-to-make-life-simpler---frontend-dev-conf-14}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/YJNUK0EA_Jo" frameborder="0" allowfullscreen></iframe>
 
@@ -138,19 +138,19 @@ by [Stoyan Stefanov](http://www.phpied.com/)
 
 * * *
 
-### "Functional DOM programming" - Meteor DevShop 11
+### "Functional DOM programming" - Meteor DevShop 11 {#functional-dom-programming---meteor-devshop-11}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/qqVbr_LaCIo" frameborder="0" allowfullscreen></iframe>
 
 * * *
 
-### "Rethinking Web App Development at Facebook" - Facebook F8 Conference 2014
+### "Rethinking Web App Development at Facebook" - Facebook F8 Conference 2014 {#rethinking-web-app-development-at-facebook---facebook-f8-conference-2014}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/nYkdrAPrdcw" frameborder="0" allowfullscreen></iframe>
 
 * * *
 
-### React and Flux: Building Applications with a Unidirectional Data Flow - Forward JS 2014
+### React and Flux: Building Applications with a Unidirectional Data Flow - Forward JS 2014 {#react-and-flux-building-applications-with-a-unidirectional-data-flow---forward-js-2014}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/i__969noyAM" frameborder="0" allowfullscreen></iframe>
 
@@ -158,7 +158,7 @@ Facebook 개발자 [Bill Fisher](https://twitter.com/fisherwebdev)와 [Jing Chen
 
 * * *
 
-### Server-Side Rendering of Isomorphic Apps at SoundCloud
+### Server-Side Rendering of Isomorphic Apps at SoundCloud {#server-side-rendering-of-isomorphic-apps-at-soundcloud}
 
 <iframe src="https://player.vimeo.com/video/108488724" width="100%" height="365" frameborder="0" allowfullscreen></iframe>
 
@@ -167,7 +167,7 @@ Server-side rendering을 위해 [SoundCloud](https://developers.soundcloud.com/b
 
 * * *
 
-### Introducing React Native (+Playlist) - React.js Conf 2015
+### Introducing React Native (+Playlist) - React.js Conf 2015 {#introducing-react-native-playlist---reactjs-conf-2015}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/v/KVZ-P-ZI6W4&index=1&list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
 
diff --git a/content/community/videos.md b/content/community/videos.md
index 55585db32b..d50312231e 100644
--- a/content/community/videos.md
+++ b/content/community/videos.md
@@ -10,67 +10,67 @@ redirect_from:
 
 Videos dedicated to the discussion of React and the React ecosystem.
 
-### React.js Conf 2017
+### React.js Conf 2017 {#reactjs-conf-2017}
 
 A playlist of videos from React.js Conf 2017.
 <iframe title="React.js Conf 2017" width="650" height="366" src="https://www.youtube-nocookie.com/embed/playlist?list=PLb0IAmt7-GS3fZ46IGFirdqKTIxlws7e0" frameborder="0" allowfullscreen></iframe>
 
-### React.js Conf 2016
+### React.js Conf 2016 {#reactjs-conf-2016}
 
 A playlist of videos from React.js Conf 2016.
 <iframe title="React.js Conf 2016" width="650" height="366" src="https://www.youtube-nocookie.com/embed/playlist?list=PLb0IAmt7-GS0M8Q95RIc2lOM6nc77q1IY" frameborder="0" allowfullscreen></iframe>
 
-### React.js Conf 2015
+### React.js Conf 2015 {#reactjs-conf-2015}
 
 A playlist of videos from React.js Conf 2015.
 <iframe title="React.js Conf 2015" width="650" height="366" src="https://www.youtube-nocookie.com/embed/playlist?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
 
-### Secrets of the Virtual DOM
+### Secrets of the Virtual DOM {#secrets-of-the-virtual-dom}
 
 Pete Hunt at Mountain West JavaScript 2014 discusses why a virtual DOM was built for React, how it compares to other systems, and its relevance to the future of browser technologies - (2014 - 0h44m).
 <iframe title="Mountain West JavaScript 2014 - Be Predictable, Not Correct. by Pete Hunt" width="650" height="366" src="https://www.youtube-nocookie.com/embed/h3KksH8gfcQ" frameborder="0" allowfullscreen></iframe>
 
-### Flux and Server-side Rendering
+### Flux and Server-side Rendering {#flux-and-server-side-rendering}
 
 Pete Hunt discusses flux and server-side rendering in React - (2014 - 0h55m).
 <iframe title="YUI Open Roundtable with Pete Hunt" width="650" height="366" src="https://www.youtube-nocookie.com/embed/ZLfe0i2RDtY" frameborder="0" allowfullscreen></iframe>
 
-### Rethinking Web App Development at Facebook
+### Rethinking Web App Development at Facebook {#rethinking-web-app-development-at-facebook}
 
 Facebook F8 2014 talk to learn how we abandoned the traditional MVC paradigm in favor of a more functional application architecture - (2014 - 0h44m).
 <iframe title="Hacker Way: Rethinking Web App Development at Facebook" width="650" height="366" src="https://www.youtube-nocookie.com/embed/nYkdrAPrdcw" frameborder="0" allowfullscreen></iframe>
 
-### Introduction to React
+### Introduction to React {#introduction-to-react}
 
 Stoyan Stefanov gives an introduction to React at LAWebSpeed meetup - (2014 - 0h51m).
 <iframe title="Joe Dev on Tech - Stoyan Stefanov - Introduction to React" width="650" height="366" src="https://www.youtube-nocookie.com/embed/SMMRJif5QW0" frameborder="0" allowfullscreen></iframe>
 
-### React and Flux: Building Applications with a Unidirectional Data Flow
+### React and Flux: Building Applications with a Unidirectional Data Flow {#react-and-flux-building-applications-with-a-unidirectional-data-flow}
 
 Facebook engineers Bill Fisher and Jing Chen talk about Flux and React at Forward JS 2014, and how using an application architecture with a unidirectional data flow cleans up a lot of their code.
 <iframe title="React and Flux: Building Applications with a Unidirectional Data Flow" width="650" height="366" src="https://www.youtube-nocookie.com/embed/i__969noyAM" frameborder="0" allowfullscreen></iframe>
 
-### Going Big with React
+### Going Big with React {#going-big-with-react}
 
 Areeb Malik investigates how React performs in a high stress situation, and how it helped his team build safe code on a massive scale - (2014 - 0h31m).
 [![going big with React](https://i.vimeocdn.com/video/481670116_650.jpg)]
 
 
-### Rethinking Best Practices
+### Rethinking Best Practices {#rethinking-best-practices}
 
 Pete Hunt's talk at JSConf EU 2013 covers three topics: throwing out the notion of templates and building views with JavaScript, “re-rendering” your entire application when your data changes, and a lightweight implementation of the DOM and events - (2013 - 0h30m).
 <iframe title="Pete Hunt: React: Rethinking Best Practices - JSConf EU 2013" width="650" height="366" src="https://www.youtube-nocookie.com/embed/x7cQ3mrcKaY" frameborder="0" allowfullscreen></iframe>
 
-### High Performance Functional DOM Programming
+### High Performance Functional DOM Programming {#high-performance-functional-dom-programming}
 Pete Hunt discusses high performance functional programming with React at Meteor DevShop 11 - (2013 - 0h31m).
 <iframe title="Pete Hunt: High performance functional programming with React and Meteor" width="650" height="366" src="https://www.youtube-nocookie.com/embed/qqVbr_LaCIo" frameborder="0" allowfullscreen></iframe>
 
-### Developing User Interfaces With React
+### Developing User Interfaces With React {#developing-user-interfaces-with-react}
 
 Steven Luscher discusses developing user interfaces at Super VanJS 2013 - (2013 - 0h29m).
 <iframe title="SuperVanJS 2013: Steven Luscher - Developing User Interfaces with Facebook's React" width="650" height="366" src="https://www.youtube-nocookie.com/embed/1OeXsL5mr4g" frameborder="0" allowfullscreen></iframe>
 
-### Introduction to React
+### Introduction to React {#introduction-to-react-1}
 
 Tom Occhino and Jordan Walke introduce React at Facebook Seattle - (2013 - 1h20m).
 <iframe title="Tom Occhino and Jordan Walke introduce React at Facebook Seattle" width="650" height="366" src="https://www.youtube-nocookie.com/embed/XxVg_s8xAms" frameborder="0" allowfullscreen></iframe>
diff --git a/content/community/videos.zh-CN.md b/content/community/videos.zh-CN.md
index 173b4e5bd8..f5a360e1f2 100644
--- a/content/community/videos.zh-CN.md
+++ b/content/community/videos.zh-CN.md
@@ -6,7 +6,7 @@ prev: conferences-zh-CN.html
 next: complementary-tools-zh-CN.html
 ---
 
-### Rethinking best practices - JSConf.eu
+### Rethinking best practices - JSConf.eu {#rethinking-best-practices---jsconfeu}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/x7cQ3mrcKaY" frameborder="0" allowfullscreen></iframe>
 
@@ -14,14 +14,14 @@ next: complementary-tools-zh-CN.html
 
 * * *
 
-### Thinking in react - tagtree.tv
+### Thinking in react - tagtree.tv {#thinking-in-react---tagtreetv}
 
 一个 [tagtree.tv](http://tagtree.tv/) 传达 [Thinking in React](/docs/thinking-in-react.html) 原则的视频  在构建一个简单app时。
 <figure><a href="http://tagtree.tv/thinking-in-react"><img src="../images/docs/thinking-in-react-tagtree.png"></a></figure>
 
 * * *
 
-### Secrets of the Virtual DOM - MtnWest JS
+### Secrets of the Virtual DOM - MtnWest JS {#secrets-of-the-virtual-dom---mtnwest-js}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/h3KksH8gfcQ" frameborder="0" allowfullscreen></iframe>
 
@@ -29,14 +29,14 @@ next: complementary-tools-zh-CN.html
 
 * * *
 
-### Going big with React
+### Going big with React {#going-big-with-react}
 
 "理论上,所有的JS框架都大有可为:干净的实现,快速的代码设计,完美的执行。但是当你压力测试时Javascript会怎样?当你丢进6MB的代码时会怎样?在这次演讲中,我们会探究React在高压环境下如何表现,以及它如何帮助我们的团队在大规模时构建安全代码。 "
 <figure><a href="https://skillsmatter.com/skillscasts/5429-going-big-with-react#video"><img src="https://i.vimeocdn.com/video/481670116_650.jpg"></a></figure>
 
 * * *
 
-### CodeWinds
+### CodeWinds {#codewinds}
 
 [Pete Hunt](http://www.petehunt.net/) 与 [Jeff Barczewski](http://jeff.barczewski.com/) 在 CodeWinds Episode 4 上关于 React 的谈话.
 <figure><a href="http://codewinds.com/4"><img src="../images/docs/codewinds-004.png"></a></figure>
@@ -69,7 +69,7 @@ next: complementary-tools-zh-CN.html
 
 * * *
 
-### JavaScript Jabber
+### JavaScript Jabber {#javascript-jabber}
 
 [Pete Hunt](http://www.petehunt.net/) 和 [Jordan Walke](https://github.com/jordwalke) 在 JavaScript Jabber 73 上关于React的谈话.
 <figure><a href="http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/#content"><img src="../images/docs/javascript-jabber.png"></a></figure>
@@ -97,7 +97,7 @@ next: complementary-tools-zh-CN.html
 
 * * *
 
-### Introduction to React.js - Facebook Seattle
+### Introduction to React.js - Facebook Seattle {#introduction-to-reactjs---facebook-seattle}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/XxVg_s8xAms" frameborder="0" allowfullscreen></iframe>
 
@@ -105,14 +105,14 @@ next: complementary-tools-zh-CN.html
 
 * * *
 
-### Backbone + React + Middleman Screencast
+### Backbone + React + Middleman Screencast {#backbone--react--middleman-screencast}
 <iframe width="650" height="488" src="https://www.youtube-nocookie.com/embed/iul1fWHVU6A" frameborder="0" allowfullscreen></iframe>
 
 Backbone 是一个在用React实现 REST API 接口的极好方法。这个屏博展示了用 [Backbone-React-Component](https://github.com/magalhas/backbone-react-component)如何整合两者. Middleman 是在本例中使用的框架但很容易被替换成其他框架。对此可支持的template可以在[这里](https://github.com/jbhatab/middleman-backbone-react-template) 找到. -- [Open Minded Innovations](http://www.openmindedinnovations.com/)
 
 * * *
 
-### Developing User Interfaces With React - Super VanJS
+### Developing User Interfaces With React - Super VanJS {#developing-user-interfaces-with-react---super-vanjs}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/1OeXsL5mr4g" frameborder="0" allowfullscreen></iframe>
 
@@ -120,7 +120,7 @@ Backbone 是一个在用React实现 REST API 接口的极好方法。这个屏
 
 * * *
 
-### Introduction to React - LAWebSpeed meetup
+### Introduction to React - LAWebSpeed meetup {#introduction-to-react---lawebspeed-meetup}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/SMMRJif5QW0" frameborder="0" allowfullscreen></iframe>
 
@@ -128,7 +128,7 @@ Backbone 是一个在用React实现 REST API 接口的极好方法。这个屏
 
 * * *
 
-### React, or how to make life simpler - FrontEnd Dev Conf '14
+### React, or how to make life simpler - FrontEnd Dev Conf '14 {#react-or-how-to-make-life-simpler---frontend-dev-conf-14}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/YJNUK0EA_Jo" frameborder="0" allowfullscreen></iframe>
 
@@ -136,19 +136,19 @@ Backbone 是一个在用React实现 REST API 接口的极好方法。这个屏
 
 * * *
 
-### "Functional DOM programming" - Meteor DevShop 11
+### "Functional DOM programming" - Meteor DevShop 11 {#functional-dom-programming---meteor-devshop-11}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/qqVbr_LaCIo" frameborder="0" allowfullscreen></iframe>
 
 * * *
 
-### "Rethinking Web App Development at Facebook" - Facebook F8 Conference 2014
+### "Rethinking Web App Development at Facebook" - Facebook F8 Conference 2014 {#rethinking-web-app-development-at-facebook---facebook-f8-conference-2014}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/nYkdrAPrdcw" frameborder="0" allowfullscreen></iframe>
 
 * * *
 
-### React and Flux: Building Applications with a Unidirectional Data Flow - Forward JS 2014
+### React and Flux: Building Applications with a Unidirectional Data Flow - Forward JS 2014 {#react-and-flux-building-applications-with-a-unidirectional-data-flow---forward-js-2014}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/i__969noyAM" frameborder="0" allowfullscreen></iframe>
 
@@ -156,7 +156,7 @@ Facebook 工程师 [Bill Fisher](https://twitter.com/fisherwebdev) 和 [Jing Che
 
 * * *
 
-### Server-Side Rendering of Isomorphic Apps at SoundCloud
+### Server-Side Rendering of Isomorphic Apps at SoundCloud {#server-side-rendering-of-isomorphic-apps-at-soundcloud}
 
 <iframe src="https://player.vimeo.com/video/108488724" width="100%" height="365" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
 
@@ -166,7 +166,7 @@ Facebook 工程师 [Bill Fisher](https://twitter.com/fisherwebdev) 和 [Jing Che
 
 * * *
 
-### Introducing React Native (+Playlist) - React.js Conf 2015
+### Introducing React Native (+Playlist) - React.js Conf 2015 {#introducing-react-native-playlist---reactjs-conf-2015}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
 
diff --git a/content/docs/accessibility.md b/content/docs/accessibility.md
index d387921cac..663251a03b 100644
--- a/content/docs/accessibility.md
+++ b/content/docs/accessibility.md
@@ -4,15 +4,15 @@ title: Accessibility
 permalink: docs/accessibility.html
 ---
 
-## Why Accessibility?
+## Why Accessibility? {#why-accessibility}
 
 Web accessibility (also referred to as [**a11y**](https://en.wiktionary.org/wiki/a11y)) is the design and creation of websites that can be used by everyone. Accessibility support is necessary to allow assistive technology to interpret web pages.
 
 React fully supports building accessible websites, often by using standard HTML techniques.
 
-## Standards and Guidelines
+## Standards and Guidelines {#standards-and-guidelines}
 
-### WCAG
+### WCAG {#wcag}
 
 The [Web Content Accessibility Guidelines](https://www.w3.org/WAI/intro/wcag) provides guidelines for creating accessible web sites.
 
@@ -22,7 +22,7 @@ The following WCAG checklists provide an overview:
 - [WCAG checklist from WebAIM](http://webaim.org/standards/wcag/checklist)
 - [Checklist from The A11Y Project](http://a11yproject.com/checklist.html)
 
-### WAI-ARIA
+### WAI-ARIA {#wai-aria}
 
 The [Web Accessibility Initiative - Accessible Rich Internet Applications](https://www.w3.org/WAI/intro/aria) document contains techniques for building fully accessible JavaScript widgets.
 
@@ -39,7 +39,7 @@ Note that all `aria-*` HTML attributes are fully supported in JSX. Whereas most
 />
 ```
 
-## Semantic HTML
+## Semantic HTML {#semantic-html}
 Semantic HTML is the foundation of accessibility in a web application. Using the various HTML elements to reinforce the meaning of information
 in our websites will often give us accessibility for free.
 
@@ -106,9 +106,9 @@ function ListItem({ item }) {
 
 For more info, see [the Fragments documentation](/docs/fragments.html).
 
-## Accessible Forms
+## Accessible Forms {#accessible-forms}
 
-### Labeling
+### Labeling {#labeling}
 Every HTML form control, such as `<input>` and `<textarea>`, needs to be labeled accessibly. We need to provide descriptive labels that are also exposed to screen readers.
 
 The following resources show us how to do this:
@@ -124,20 +124,20 @@ Although these standard HTML practices can be directly used in React, note that
 <input id="namedInput" type="text" name="name"/>
 ```
 
-### Notifying the user of errors
+### Notifying the user of errors {#notifying-the-user-of-errors}
 
 Error situations need to be understood by all users. The following link shows us how to expose error texts to screen readers as well:
 
 - [The W3C demonstrates user notifications](https://www.w3.org/WAI/tutorials/forms/notifications/)
 - [WebAIM looks at form validation](http://webaim.org/techniques/formvalidation/)
 
-## Focus Control
+## Focus Control {#focus-control}
 
 Ensure that your web application can be fully operated with the keyboard only:
 
 - [WebAIM talks about keyboard accessibility](http://webaim.org/techniques/keyboard/)
 
-### Keyboard focus and focus outline
+### Keyboard focus and focus outline {#keyboard-focus-and-focus-outline}
 
 Keyboard focus refers to the current element in the DOM that is selected to accept input from the keyboard. We see it everywhere as a focus outline similar to that shown in the following image:
 
@@ -145,7 +145,7 @@ Keyboard focus refers to the current element in the DOM that is selected to acce
 
 Only ever use CSS that removes this outline, for example by setting `outline: 0`, if you are replacing it with another focus outline implementation.
 
-### Mechanisms to skip to desired content
+### Mechanisms to skip to desired content {#mechanisms-to-skip-to-desired-content}
 
 Provide a mechanism to allow users to skip past navigation sections in your application as this assists and speeds up keyboard navigation.
 
@@ -160,7 +160,7 @@ Read more about the use of these elements to enhance accessibility here:
 
 - [Accessible Landmarks](http://www.scottohara.me/blog/2018/03/03/landmarks.html)
 
-### Programmatically managing focus
+### Programmatically managing focus {#programmatically-managing-focus}
 
 Our React applications continuously modify the HTML DOM during runtime, sometimes leading to keyboard focus being lost or set to an unexpected element. In order to repair this,
 we need to programmatically nudge the keyboard focus in the right direction. For example, by resetting keyboard focus to a button that opened a modal window after that modal window is closed.
@@ -241,7 +241,7 @@ initially triggered the modal.
 >While this is a very important accessibility feature, it is also a technique that should be used judiciously. Use it to repair the keyboard focus flow when it is disturbed, not to try and anticipate how
 >users want to use applications.
 
-## Mouse and pointer events
+## Mouse and pointer events {#mouse-and-pointer-events}
 
 Ensure that all functionality exposed through a mouse or pointer event can also be accessed using the keyboard alone. Depending only on the pointer device will lead to many cases where
 keyboard users cannot use your application.
@@ -376,7 +376,7 @@ the keyboard events to enable `arrow key` interaction of the popover options hav
 This is one example of many cases where depending on only pointer and mouse events will break functionality for keyboard users. Always testing with the keyboard will immediately
 highlight the problem areas which can then be fixed by using keyboard aware event handlers.
 
-## More Complex Widgets
+## More Complex Widgets {#more-complex-widgets}
 
 A more complex user experience should not mean a less accessible one. Whereas accessibility is most easily achieved by coding as close to HTML as possible,
 even the most complex widget can be coded accessibly.
@@ -390,15 +390,15 @@ Each type of widget has a specific design pattern and is expected to function in
 - [Heydon Pickering - ARIA Examples](http://heydonworks.com/practical_aria_examples/)
 - [Inclusive Components](https://inclusive-components.design/)
 
-## Other Points for Consideration
+## Other Points for Consideration {#other-points-for-consideration}
 
-### Setting the language
+### Setting the language {#setting-the-language}
 
 Indicate the human language of page texts as screen reader software uses this to select the correct voice settings:
 
 - [WebAIM - Document Language](http://webaim.org/techniques/screenreader/#language)
 
-### Setting the document title
+### Setting the document title {#setting-the-document-title}
 
 Set the document `<title>` to correctly describe the current page content as this ensures that the user remains aware of the current page context:
 
@@ -406,7 +406,7 @@ Set the document `<title>` to correctly describe the current page content as thi
 
 We can set this in React using the [React Document Title Component](https://github.com/gaearon/react-document-title).
 
-### Color contrast
+### Color contrast {#color-contrast}
 
 Ensure that all readable text on your website has sufficient color contrast to remain maximally readable by users with low vision:
 
@@ -423,11 +423,11 @@ If you want to extend your contrast testing abilities you can use these tools:
 - [WebAIM - Color Contrast Checker](http://webaim.org/resources/contrastchecker/)
 - [The Paciello Group - Color Contrast Analyzer](https://www.paciellogroup.com/resources/contrastanalyser/)
 
-## Development and Testing Tools
+## Development and Testing Tools {#development-and-testing-tools}
 
 There are a number of tools we can use to assist in the creation of accessible web applications.
 
-### The keyboard
+### The keyboard {#the-keyboard}
 
 By far the easiest and also one of the most important checks is to test if your entire website can be reached and used with the keyboard alone. Do this by:
 
@@ -436,12 +436,12 @@ By far the easiest and also one of the most important checks is to test if your
 1. Using `Enter` to activate elements.
 1. Where required, using your keyboard arrow keys to interact with some elements, such as menus and dropdowns.
 
-### Development assistance
+### Development assistance {#development-assistance}
 
 We can check some accessibility features directly in our JSX code. Often intellisense checks are already provided in JSX aware IDE's for the ARIA roles, states and properties. We also
 have access to the following tool:
 
-#### eslint-plugin-jsx-a11y
+#### eslint-plugin-jsx-a11y {#eslint-plugin-jsx-a11y}
 
 The [eslint-plugin-jsx-a11y](https://github.com/evcohen/eslint-plugin-jsx-a11y) plugin for ESLint provides AST linting feedback regarding accessibility issues in your JSX. Many
 IDE's allow you to integrate these findings directly into code analysis and source code windows.
@@ -456,12 +456,12 @@ you can create an `.eslintrc` file in the root of your project with this content
   }
   ```
 
-### Testing accessibility in the browser
+### Testing accessibility in the browser {#testing-accessibility-in-the-browser}
 
 A number of tools exist that can run accessibility audits on web pages in your browser. Please use them in combination with other accessibility checks mentioned here as they can only
 test the technical accessibility of your HTML.
 
-#### aXe, aXe-core and react-axe
+#### aXe, aXe-core and react-axe {#axe-axe-core-and-react-axe}
 
 Deque Systems offers [aXe-core](https://github.com/dequelabs/axe-core) for automated and end-to-end accessibility tests of your applications. This module includes integrations for Selenium.
 
@@ -469,11 +469,11 @@ Deque Systems offers [aXe-core](https://github.com/dequelabs/axe-core) for autom
 
 You can also use the [react-axe](https://github.com/dylanb/react-axe) module to report these accessibility findings directly to the console while developing and debugging.
 
-#### WebAIM WAVE
+#### WebAIM WAVE {#webaim-wave}
 
 The [Web Accessibility Evaluation Tool](http://wave.webaim.org/extension/) is another accessibility browser extension.
 
-#### Accessibility inspectors and the Accessibility Tree
+#### Accessibility inspectors and the Accessibility Tree {#accessibility-inspectors-and-the-accessibility-tree}
 
 [The Accessibility Tree](https://www.paciellogroup.com/blog/2015/01/the-browser-accessibility-tree/) is a subset of the DOM tree that contains accessible objects for every DOM element that should be exposed
 to assistive technology, such as screen readers.
@@ -484,15 +484,15 @@ In some browsers we can easily view the accessibility information for each eleme
 - [Activate the Accessibility Inspector in Chrome](https://gist.github.com/marcysutton/0a42f815878c159517a55e6652e3b23a)
 - [Using the Accessibility Inspector in OS X Safari](https://developer.apple.com/library/content/documentation/Accessibility/Conceptual/AccessibilityMacOSX/OSXAXTestingApps.html)
 
-### Screen readers
+### Screen readers {#screen-readers}
 
 Testing with a screen reader should form part of your accessibility tests.
 
 Please note that browser / screen reader combinations matter. It is recommended that you test your application in the browser best suited to your screen reader of choice.
 
-### Commonly Used Screen Readers
+### Commonly Used Screen Readers {#commonly-used-screen-readers}
 
-#### NVDA in Firefox
+#### NVDA in Firefox {#nvda-in-firefox}
 
 [NonVisual Desktop Access](https://www.nvaccess.org/) or NVDA is an open source Windows screen reader that is widely used.
 
@@ -501,7 +501,7 @@ Refer to the following guides on how to best use NVDA:
 - [WebAIM - Using NVDA to Evaluate Web Accessibility](http://webaim.org/articles/nvda/)
 - [Deque - NVDA Keyboard Shortcuts](https://dequeuniversity.com/screenreaders/nvda-keyboard-shortcuts)
 
-#### VoiceOver in Safari
+#### VoiceOver in Safari {#voiceover-in-safari}
 
 VoiceOver is an integrated screen reader on Apple devices.
 
@@ -511,7 +511,7 @@ Refer to the following guides on how activate and use VoiceOver:
 - [Deque - VoiceOver for OS X Keyboard Shortcuts](https://dequeuniversity.com/screenreaders/voiceover-keyboard-shortcuts)
 - [Deque - VoiceOver for iOS Shortcuts](https://dequeuniversity.com/screenreaders/voiceover-ios-shortcuts)
 
-#### JAWS in Internet Explorer
+#### JAWS in Internet Explorer {#jaws-in-internet-explorer}
 
 [Job Access With Speech](http://www.freedomscientific.com/Products/Blindness/JAWS) or JAWS, is a prolifically used screen reader on Windows.
 
@@ -520,9 +520,9 @@ Refer to the following guides on how to best use JAWS:
 - [WebAIM - Using JAWS to Evaluate Web Accessibility](http://webaim.org/articles/jaws/)
 - [Deque - JAWS Keyboard Shortcuts](https://dequeuniversity.com/screenreaders/jaws-keyboard-shortcuts)
 
-### Other Screen Readers
+### Other Screen Readers {#other-screen-readers}
 
-#### ChromeVox in Google Chrome
+#### ChromeVox in Google Chrome {#chromevox-in-google-chrome}
 
 [ChromeVox](http://www.chromevox.com/) is an integrated screen reader on Chromebooks and is available [as an extension](https://chrome.google.com/webstore/detail/chromevox/kgejglhpjiefppelpmljglcjbhoiplfn?hl=en) for Google Chrome.
 
diff --git a/content/docs/add-react-to-a-website.md b/content/docs/add-react-to-a-website.md
index 886c776015..11b99d37aa 100644
--- a/content/docs/add-react-to-a-website.md
+++ b/content/docs/add-react-to-a-website.md
@@ -19,7 +19,7 @@ The majority of websites aren't, and don't need to be, single-page apps. With **
 - [Add React in One Minute](#add-react-in-one-minute)
 - [Optional: Try React with JSX](#optional-try-react-with-jsx) (no bundler necessary!)
 
-## Add React in One Minute
+## Add React in One Minute {#add-react-in-one-minute}
 
 In this section, we will show how to add a React component to an existing HTML page. You can follow along with your own website, or create an empty HTML file to practice.
 
@@ -27,7 +27,7 @@ There will be no complicated tools or install requirements -- **to complete this
 
 Optional: [Download the full example (2KB zipped)](https://gist.github.com/gaearon/6668a1f6986742109c00a581ce704605/archive/f6c882b6ae18bde42dcf6fdb751aae93495a2275.zip)
 
-### Step 1: Add a DOM Container to the HTML
+### Step 1: Add a DOM Container to the HTML {#step-1-add-a-dom-container-to-the-html}
 
 First, open the HTML page you want to edit. Add an empty `<div>` tag to mark the spot where you want to display something with React. For example:
 
@@ -45,7 +45,7 @@ We gave this `<div>` a unique `id` HTML attribute. This will allow us to find it
 >
 >You can place a "container" `<div>` like this **anywhere** inside the `<body>` tag. You may have as many independent DOM containers on one page as you need. They are usually empty -- React will replace any existing content inside DOM containers.
 
-### Step 2: Add the Script Tags
+### Step 2: Add the Script Tags {#step-2-add-the-script-tags}
 
 Next, add three `<script>` tags to the HTML page right before the closing `</body>` tag:
 
@@ -65,7 +65,7 @@ Next, add three `<script>` tags to the HTML page right before the closing `</bod
 
 The first two tags load React. The third one will load your component code.
 
-### Step 3: Create a React Component
+### Step 3: Create a React Component {#step-3-create-a-react-component}
 
 Create a file called `like_button.js` next to your HTML page.
 
@@ -86,7 +86,7 @@ ReactDOM.render(e(LikeButton), domContainer);
 
 These two lines of code find the `<div>` we added to our HTML in the first step, and then display our "Like" button React component inside of it. 
 
-### That's It!
+### That's It! {#thats-it}
 
 There is no step four. **You have just added the first React component to your website.**
 
@@ -96,7 +96,7 @@ Check out the next sections for more tips on integrating React.
 
 **[Download the full example (2KB zipped)](https://gist.github.com/gaearon/6668a1f6986742109c00a581ce704605/archive/f6c882b6ae18bde42dcf6fdb751aae93495a2275.zip)**
 
-### Tip: Reuse a Component
+### Tip: Reuse a Component {#tip-reuse-a-component}
 
 Commonly, you might want to display React components in multiple places on the HTML page. Here is an example that displays the "Like" button three times and passes some data to it:
 
@@ -108,7 +108,7 @@ Commonly, you might want to display React components in multiple places on the H
 >
 >This strategy is mostly useful while React-powered parts of the page are isolated from each other. Inside React code, it's easier to use [component composition](/docs/components-and-props.html#composing-components) instead.
 
-### Tip: Minify JavaScript for Production
+### Tip: Minify JavaScript for Production {#tip-minify-javascript-for-production}
 
 Before deploying your website to production, be mindful that unminifed JavaScript can significantly slow down the page for your users.
 
@@ -121,7 +121,7 @@ If you already minify the application scripts, **your site will be production-re
 
 If you don't have a minification step for your scripts, [here's one way to set it up](https://gist.github.com/gaearon/42a2ffa41b8319948f9be4076286e1f3).
 
-## Optional: Try React with JSX
+## Optional: Try React with JSX {#optional-try-react-with-jsx}
 
 In the examples above, we only relied on features that are natively supported by the browsers. This is why we used a JavaScript function call to tell React what to display:
 
@@ -151,7 +151,7 @@ These two code snippets are equivalent. While **JSX is [completely optional](/do
 
 You can play with JSX using [this online converter](http://babeljs.io/repl#?babili=false&browsers=&build=&builtIns=false&spec=false&loose=false&code_lz=Q&debug=false&forceAllTransforms=false&shippedProposals=false&circleciRepo=&evaluate=false&fileSize=false&sourceType=module&lineWrap=true&presets=es2015%2Creact%2Cstage-2%2Cstage-3&prettier=true&targets=Node-6.12&version=6.26.0&envVersion=).
 
-### Quickly Try JSX
+### Quickly Try JSX {#quickly-try-jsx}
 
 The quickest way to try JSX in your project is to add this `<script>` tag to your page:
 
@@ -163,7 +163,7 @@ Now you can use JSX in any `<script>` tag by adding `type="text/babel"` attribut
 
 This approach is fine for learning and creating simple demos. However, it makes your website slow and **isn't suitable for production**. When you're ready to move forward, remove this new `<script>` tag and the `type="text/babel"` attributes you've added. Instead, in the next section you will set up a JSX preprocessor to convert all your `<script>` tags automatically.
 
-### Add JSX to a Project
+### Add JSX to a Project {#add-jsx-to-a-project}
 
 Adding JSX to a project doesn't require complicated tools like a bundler or a development server. Essentially, adding JSX **is a lot like adding a CSS preprocessor.** The only requirement is to have [Node.js](https://nodejs.org/) installed on your computer.
 
@@ -179,7 +179,7 @@ Go to your project folder in the terminal, and paste these two commands:
 Congratulations! You just added a **production-ready JSX setup** to your project.
 
 
-### Run JSX Preprocessor
+### Run JSX Preprocessor {#run-jsx-preprocessor}
 
 Create a folder called `src` and run this terminal command:
 
diff --git a/content/docs/addons-animation.md b/content/docs/addons-animation.md
index 8f5b64038a..a619af76e8 100644
--- a/content/docs/addons-animation.md
+++ b/content/docs/addons-animation.md
@@ -16,7 +16,7 @@ redirect_from:
 
 The [`ReactTransitionGroup`](#low-level-api-reacttransitiongroup) add-on component is a low-level API for animation, and [`ReactCSSTransitionGroup`](#high-level-api-reactcsstransitiongroup) is an add-on component for easily implementing basic CSS animations and transitions.
 
-## High-level API: ReactCSSTransitionGroup
+## High-level API: ReactCSSTransitionGroup {#high-level-api-reactcsstransitiongroup}
 
 `ReactCSSTransitionGroup` is a high-level API based on [`ReactTransitionGroup`](#low-level-api-reacttransitiongroup) and is an easy way to perform CSS transitions and animations when a React component enters or leaves the DOM. It's inspired by the excellent [ng-animate](https://docs.angularjs.org/api/ngAnimate) library.
 
@@ -100,7 +100,7 @@ You can use these classes to trigger a CSS animation or transition. For example,
 
 You'll notice that animation durations need to be specified in both the CSS and the render method; this tells React when to remove the animation classes from the element and -- if it's leaving -- when to remove the element from the DOM.
 
-### Animate Initial Mounting
+### Animate Initial Mounting {#animate-initial-mounting}
 
 `ReactCSSTransitionGroup` provides the optional prop `transitionAppear`, to add an extra transition phase at the initial mount of the component. There is generally no transition phase at the initial mount as the default value of `transitionAppear` is `false`. The following is an example which passes the prop `transitionAppear` with the value `true`.
 
@@ -140,7 +140,7 @@ At the initial mount, all children of the `ReactCSSTransitionGroup` will `appear
 >
 > However, the default values of `transitionEnter` and `transitionLeave` are `true` so you must specify `transitionEnterTimeout` and `transitionLeaveTimeout` by default. If you don't need either enter or leave animations, pass `transitionEnter={false}` or `transitionLeave={false}`.
 
-### Custom Classes
+### Custom Classes {#custom-classes}
 
 It is also possible to use custom class names for each of the steps in your transitions. Instead of passing a string into transitionName you can pass an object containing either the `enter` and `leave` class names, or an object containing the `enter`, `enter-active`, `leave-active`, and `leave` class names. If only the enter and leave classes are provided, the enter-active and leave-active classes will be determined by appending '-active' to the end of the class name. Here are two examples using custom classes:
 
@@ -169,7 +169,7 @@ It is also possible to use custom class names for each of the steps in your tran
 // ...
 ```
 
-### Animation Group Must Be Mounted To Work
+### Animation Group Must Be Mounted To Work {#animation-group-must-be-mounted-to-work}
 
 In order for it to apply transitions to its children, the `ReactCSSTransitionGroup` must already be mounted in the DOM or the prop `transitionAppear` must be set to `true`.
 
@@ -194,7 +194,7 @@ render() {
 }
 ```
 
-### Animating One or Zero Items
+### Animating One or Zero Items {#animating-one-or-zero-items}
 
 In the example above, we rendered a list of items into `ReactCSSTransitionGroup`. However, the children of `ReactCSSTransitionGroup` can also be one or zero items. This makes it possible to animate a single element entering or leaving. Similarly, you can animate a new element replacing the current element. For example, we can implement a simple image carousel like this:
 
@@ -215,7 +215,7 @@ function ImageCarousel(props) {
 }
 ```
 
-### Disabling Animations
+### Disabling Animations {#disabling-animations}
 
 You can disable animating `enter` or `leave` animations if you want. For example, sometimes you may want an `enter` animation and no `leave` animation, but `ReactCSSTransitionGroup` waits for an animation to complete before removing your DOM node. You can add `transitionEnter={false}` or `transitionLeave={false}` props to `ReactCSSTransitionGroup` to disable these animations.
 
@@ -225,7 +225,7 @@ You can disable animating `enter` or `leave` animations if you want. For example
 
 * * *
 
-## Low-level API: ReactTransitionGroup
+## Low-level API: ReactTransitionGroup {#low-level-api-reacttransitiongroup}
 
 **Importing**
 
@@ -243,7 +243,7 @@ var ReactTransitionGroup = require('react-addons-transition-group') // ES5 with
  - [`componentWillLeave()`](#componentwillleave)
  - [`componentDidLeave()`](#componentdidleave)
 
-#### Rendering a Different Component
+#### Rendering a Different Component {#rendering-a-different-component}
 
 `ReactTransitionGroup` renders as a `span` by default. You can change this behavior by providing a `component` prop. For example, here's how you would render a `<ul>`:
 
@@ -263,7 +263,7 @@ Any additional, user-defined, properties will become properties of the rendered
 
 Every DOM component that React can render is available for use. However, `component` does not need to be a DOM component. It can be any React component you want; even ones you've written yourself! Just write `component={List}` and your component will receive `this.props.children`.
 
-#### Rendering a Single Child
+#### Rendering a Single Child {#rendering-a-single-child}
 
 People often use `ReactTransitionGroup` to animate mounting and unmounting of a single child such as a collapsible panel. Normally `ReactTransitionGroup` wraps all its children in a `span` (or a custom `component` as described above). This is because any React component has to return a single root element, and `ReactTransitionGroup` is no exception to this rule.
 
@@ -288,9 +288,9 @@ This only works when you are animating a single child in and out, such as a coll
 
 * * *
 
-## Reference
+## Reference {#reference}
 
-### `componentWillAppear()`
+### `componentWillAppear()` {#componentwillappear}
 
 ```javascript
 componentWillAppear(callback)
@@ -300,7 +300,7 @@ This is called at the same time as `componentDidMount()` for components that are
 
 * * *
 
-### `componentDidAppear()`
+### `componentDidAppear()` {#componentdidappear}
 
 ```javascript
 componentDidAppear()
@@ -310,7 +310,7 @@ This is called after the `callback` function that was passed to `componentWillAp
 
 * * *
 
-### `componentWillEnter()`
+### `componentWillEnter()` {#componentwillenter}
 
 ```javascript
 componentWillEnter(callback)
@@ -320,7 +320,7 @@ This is called at the same time as `componentDidMount()` for components added to
 
 * * *
 
-### `componentDidEnter()`
+### `componentDidEnter()` {#componentdidenter}
 
 ```javascript
 componentDidEnter()
@@ -330,7 +330,7 @@ This is called after the `callback` function that was passed to [`componentWillE
 
 * * *
 
-### `componentWillLeave()`
+### `componentWillLeave()` {#componentwillleave}
 
 ```javascript
 componentWillLeave(callback)
@@ -340,7 +340,7 @@ This is called when the child has been removed from the `ReactTransitionGroup`.
 
 * * *
 
-### `componentDidLeave()`
+### `componentDidLeave()` {#componentdidleave}
 
 ```javascript
 componentDidLeave()
diff --git a/content/docs/addons-create-fragment.md b/content/docs/addons-create-fragment.md
index e69a8921d7..7c5fc9fda2 100644
--- a/content/docs/addons-create-fragment.md
+++ b/content/docs/addons-create-fragment.md
@@ -10,14 +10,14 @@ category: Add-Ons
 >
 > `React.addons` entry point is deprecated as of React v15.5. We now have first class support for fragments which you can read about [here](/docs/fragments.html).
 
-## Importing
+## Importing {#importing}
 
 ```javascript
 import createFragment from 'react-addons-create-fragment'; // ES6
 var createFragment = require('react-addons-create-fragment'); // ES5 with npm
 ```
 
-## Overview
+## Overview {#overview}
 
 In most cases, you can use the `key` prop to specify keys on the elements you're returning from `render`. However, this breaks down in one situation: if you have two sets of children that you need to reorder, there's no way to put a key on each set without adding a wrapper element.
 
@@ -39,7 +39,7 @@ The children will unmount and remount as you change the `swapped` prop because t
 
 To solve this problem, you can use the `createFragment` add-on to give keys to the sets of children.
 
-#### `Array<ReactNode> createFragment(object children)`
+#### `Array<ReactNode> createFragment(object children)` {#arrayreactnode-createfragmentobject-children}
 
 Instead of creating arrays, we write:
 
diff --git a/content/docs/addons-perf.md b/content/docs/addons-perf.md
index 5b47c4ccb2..f50dee96f1 100644
--- a/content/docs/addons-perf.md
+++ b/content/docs/addons-perf.md
@@ -18,7 +18,7 @@ var Perf = require('react-addons-perf'); // ES5 with npm
 ```
 
 
-## Overview
+## Overview {#overview}
 
 React is usually quite fast out of the box. However, in situations where you need to squeeze every ounce of performance out of your app, it provides a [shouldComponentUpdate()](/docs/react-component.html#shouldcomponentupdate) method where you can add optimization hints to React's diff algorithm.
 
@@ -30,23 +30,23 @@ See these articles for an introduction to React performance tooling:
  - ["Performance Engineering with React"](http://benchling.engineering/performance-engineering-with-react/)
  - ["A Deep Dive into React Perf Debugging"](http://benchling.engineering/deep-dive-react-perf-debugging/) 
 
-### Development vs. Production Builds
+### Development vs. Production Builds {#development-vs-production-builds}
 
 If you're benchmarking or seeing performance problems in your React apps, make sure you're testing with the [minified production build](/downloads.html). The development build includes extra warnings that are helpful when building your apps, but it is slower due to the extra bookkeeping it does.
 
 However, the perf tools described on this page only work when using the development build of React. Therefore, the profiler only serves to indicate the _relatively_ expensive parts of your app.
 
-### Using Perf
+### Using Perf {#using-perf}
 
 The `Perf` object can be used with React in development mode only. You should not include this bundle when building your app for production.
 
-#### Getting Measurements
+#### Getting Measurements {#getting-measurements}
 
  - [`start()`](#start)
  - [`stop()`](#stop)
  - [`getLastMeasurements()`](#getlastmeasurements)
 
-#### Printing Results
+#### Printing Results {#printing-results}
 
 The following methods use the measurements returned by [`Perf.getLastMeasurements()`](#getlastmeasurements) to pretty-print the result.
 
@@ -58,10 +58,10 @@ The following methods use the measurements returned by [`Perf.getLastMeasurement
 
 * * *
 
-## Reference
+## Reference {#reference}
 
-### `start()`
-### `stop()`
+### `start()` {#start}
+### `stop()` {#stop}
 
 ```javascript
 Perf.start()
@@ -75,7 +75,7 @@ After stopping, you will need [`Perf.getLastMeasurements()`](#getlastmeasurement
 
 * * *
 
-### `getLastMeasurements()`
+### `getLastMeasurements()` {#getlastmeasurements}
 
 ```javascript
 Perf.getLastMeasurements()
@@ -89,7 +89,7 @@ Get the opaque data structure describing measurements from the last start-stop s
 
 * * *
 
-### `printInclusive()`
+### `printInclusive()` {#printinclusive}
 
 ```javascript
 Perf.printInclusive(measurements)
@@ -101,7 +101,7 @@ Prints the overall time taken. When no arguments are passed, `printInclusive` de
 
 * * *
 
-### `printExclusive()`
+### `printExclusive()` {#printexclusive}
 
 ```javascript
 Perf.printExclusive(measurements)
@@ -113,7 +113,7 @@ Perf.printExclusive(measurements)
 
 * * *
 
-### `printWasted()`
+### `printWasted()` {#printwasted}
 
 ```javascript
 Perf.printWasted(measurements)
@@ -127,7 +127,7 @@ Perf.printWasted(measurements)
 
 * * *
 
-### `printOperations()`
+### `printOperations()` {#printoperations}
 
 ```javascript
 Perf.printOperations(measurements)
@@ -139,7 +139,7 @@ Prints the underlying DOM manipulations, e.g. "set innerHTML" and "remove".
 
 * * *
 
-### `printDOM()`
+### `printDOM()` {#printdom}
 
 ```javascript
 Perf.printDOM(measurements)
diff --git a/content/docs/addons-pure-render-mixin.md b/content/docs/addons-pure-render-mixin.md
index c62305866a..8724453097 100644
--- a/content/docs/addons-pure-render-mixin.md
+++ b/content/docs/addons-pure-render-mixin.md
@@ -17,7 +17,7 @@ import PureRenderMixin from 'react-addons-pure-render-mixin'; // ES6
 var PureRenderMixin = require('react-addons-pure-render-mixin'); // ES5 with npm
 ```
 
-## Overview
+## Overview {#overview}
 
 If your React component's render function renders the same result given the same props and state, you can use this mixin for a performance boost in some cases.
 
diff --git a/content/docs/addons-shallow-compare.md b/content/docs/addons-shallow-compare.md
index 90f0c1d173..99af2495c4 100644
--- a/content/docs/addons-shallow-compare.md
+++ b/content/docs/addons-shallow-compare.md
@@ -17,7 +17,7 @@ import shallowCompare from 'react-addons-shallow-compare'; // ES6
 var shallowCompare = require('react-addons-shallow-compare'); // ES5 with npm
 ```
 
-## Overview
+## Overview {#overview}
 
 Before [`React.PureComponent`](/docs/react-api.html#reactpurecomponent) was introduced, `shallowCompare` was commonly used to achieve the same functionality as [`PureRenderMixin`](pure-render-mixin.html) while using ES6 classes with React.
 
diff --git a/content/docs/addons-shallow-renderer.md b/content/docs/addons-shallow-renderer.md
index 6d3e5dfa07..3fcbbb25bf 100644
--- a/content/docs/addons-shallow-renderer.md
+++ b/content/docs/addons-shallow-renderer.md
@@ -13,7 +13,7 @@ import ShallowRenderer from 'react-test-renderer/shallow'; // ES6
 var ShallowRenderer = require('react-test-renderer/shallow'); // ES5 with npm
 ```
 
-## Overview
+## Overview {#overview}
 
 When writing unit tests for React, shallow rendering can be helpful. Shallow rendering lets you render a component "one level deep" and assert facts about what its render method returns, without worrying about the behavior of child components, which are not instantiated or rendered. This does not require a DOM.
 
@@ -53,15 +53,15 @@ Shallow testing currently has some limitations, namely not supporting refs.
 >
 > We also recommend checking out Enzyme's [Shallow Rendering API](http://airbnb.io/enzyme/docs/api/shallow.html). It provides a nicer higher-level API over the same functionality.
 
-## Reference
+## Reference {#reference}
 
-### `shallowRenderer.render()`
+### `shallowRenderer.render()` {#shallowrendererrender}
 
 You can think of the shallowRenderer as a "place" to render the component you're testing, and from which you can extract the component's output.
 
 `shallowRenderer.render()` is similar to [`ReactDOM.render()`](/docs/react-dom.html#render) but it doesn't require DOM and only renders a single level deep. This means you can test components isolated from how their children are implemented.
 
-### `shallowRenderer.getRenderOutput()`
+### `shallowRenderer.getRenderOutput()` {#shallowrenderergetrenderoutput}
 
 After `shallowRenderer.render()` has been called, you can use `shallowRenderer.getRenderOutput()` to get the shallowly rendered output.
 
diff --git a/content/docs/addons-test-utils.md b/content/docs/addons-test-utils.md
index 12606b5a7e..bbbf5755c5 100644
--- a/content/docs/addons-test-utils.md
+++ b/content/docs/addons-test-utils.md
@@ -13,7 +13,7 @@ import ReactTestUtils from 'react-dom/test-utils'; // ES6
 var ReactTestUtils = require('react-dom/test-utils'); // ES5 with npm
 ```
 
-## Overview
+## Overview {#overview}
 
 `ReactTestUtils` makes it easy to test React components in the testing framework of your choice. At Facebook we use [Jest](https://facebook.github.io/jest/) for painless JavaScript testing. Learn how to get started with Jest through the Jest website's [React Tutorial](http://facebook.github.io/jest/docs/en/tutorial-react.html#content).
 
@@ -40,9 +40,9 @@ var ReactTestUtils = require('react-dom/test-utils'); // ES5 with npm
  - [`renderIntoDocument()`](#renderintodocument)
  - [`Simulate`](#simulate)
 
-## Reference
+## Reference {#reference}
 
-### `act()`
+### `act()` {#act}
 
 To prepare a component for assertions, wrap the code rendering it and performing updates inside an `act()` call. This makes your test run closer to how React works in the browser.
 
@@ -126,7 +126,7 @@ Don't forget that dispatching DOM events only works when the DOM container is ad
 
 * * *
 
-### `mockComponent()`
+### `mockComponent()` {#mockcomponent}
 
 ```javascript
 mockComponent(
@@ -143,7 +143,7 @@ Pass a mocked component module to this method to augment it with useful methods
 
 * * *
 
-### `isElement()`
+### `isElement()` {#iselement}
 
 ```javascript
 isElement(element)
@@ -153,7 +153,7 @@ Returns `true` if `element` is any React element.
 
 * * *
 
-### `isElementOfType()`
+### `isElementOfType()` {#iselementoftype}
 
 ```javascript
 isElementOfType(
@@ -166,7 +166,7 @@ Returns `true` if `element` is a React element whose type is of a React `compone
 
 * * *
 
-### `isDOMComponent()`
+### `isDOMComponent()` {#isdomcomponent}
 
 ```javascript
 isDOMComponent(instance)
@@ -176,7 +176,7 @@ Returns `true` if `instance` is a DOM component (such as a `<div>` or `<span>`).
 
 * * *
 
-### `isCompositeComponent()`
+### `isCompositeComponent()` {#iscompositecomponent}
 
 ```javascript
 isCompositeComponent(instance)
@@ -186,7 +186,7 @@ Returns `true` if `instance` is a user-defined component, such as a class or a f
 
 * * *
 
-### `isCompositeComponentWithType()`
+### `isCompositeComponentWithType()` {#iscompositecomponentwithtype}
 
 ```javascript
 isCompositeComponentWithType(
@@ -199,7 +199,7 @@ Returns `true` if `instance` is a component whose type is of a React `componentC
 
 * * *
 
-### `findAllInRenderedTree()`
+### `findAllInRenderedTree()` {#findallinrenderedtree}
 
 ```javascript
 findAllInRenderedTree(
@@ -212,7 +212,7 @@ Traverse all components in `tree` and accumulate all components where `test(comp
 
 * * *
 
-### `scryRenderedDOMComponentsWithClass()`
+### `scryRenderedDOMComponentsWithClass()` {#scryrendereddomcomponentswithclass}
 
 ```javascript
 scryRenderedDOMComponentsWithClass(
@@ -225,7 +225,7 @@ Finds all DOM elements of components in the rendered tree that are DOM component
 
 * * *
 
-### `findRenderedDOMComponentWithClass()`
+### `findRenderedDOMComponentWithClass()` {#findrendereddomcomponentwithclass}
 
 ```javascript
 findRenderedDOMComponentWithClass(
@@ -238,7 +238,7 @@ Like [`scryRenderedDOMComponentsWithClass()`](#scryrendereddomcomponentswithclas
 
 * * *
 
-### `scryRenderedDOMComponentsWithTag()`
+### `scryRenderedDOMComponentsWithTag()` {#scryrendereddomcomponentswithtag}
 
 ```javascript
 scryRenderedDOMComponentsWithTag(
@@ -251,7 +251,7 @@ Finds all DOM elements of components in the rendered tree that are DOM component
 
 * * *
 
-### `findRenderedDOMComponentWithTag()`
+### `findRenderedDOMComponentWithTag()` {#findrendereddomcomponentwithtag}
 
 ```javascript
 findRenderedDOMComponentWithTag(
@@ -264,7 +264,7 @@ Like [`scryRenderedDOMComponentsWithTag()`](#scryrendereddomcomponentswithtag) b
 
 * * *
 
-### `scryRenderedComponentsWithType()`
+### `scryRenderedComponentsWithType()` {#scryrenderedcomponentswithtype}
 
 ```javascript
 scryRenderedComponentsWithType(
@@ -277,7 +277,7 @@ Finds all instances of components with type equal to `componentClass`.
 
 * * *
 
-### `findRenderedComponentWithType()`
+### `findRenderedComponentWithType()` {#findrenderedcomponentwithtype}
 
 ```javascript
 findRenderedComponentWithType(
@@ -290,7 +290,7 @@ Same as [`scryRenderedComponentsWithType()`](#scryrenderedcomponentswithtype) bu
 
 ***
 
-### `renderIntoDocument()`
+### `renderIntoDocument()` {#renderintodocument}
 
 ```javascript
 renderIntoDocument(element)
@@ -309,9 +309,9 @@ ReactDOM.render(element, domContainer);
 
 * * *
 
-## Other Utilities
+## Other Utilities {#other-utilities}
 
-### `Simulate`
+### `Simulate` {#simulate}
 
 ```javascript
 Simulate.{eventName}(
diff --git a/content/docs/addons-two-way-binding-helpers.md b/content/docs/addons-two-way-binding-helpers.md
index e7d6b9126d..37c00679a9 100644
--- a/content/docs/addons-two-way-binding-helpers.md
+++ b/content/docs/addons-two-way-binding-helpers.md
@@ -17,7 +17,7 @@ import LinkedStateMixin from 'react-addons-linked-state-mixin'; // ES6
 var LinkedStateMixin = require('react-addons-linked-state-mixin'); // ES5 with npm
 ```
 
-## Overview
+## Overview {#overview}
 
 `LinkedStateMixin` is an easy way to express two-way binding with React.
 
@@ -33,7 +33,7 @@ Two-way binding -- implicitly enforcing that some value in the DOM is always con
 >
 > `LinkedStateMixin` is just a thin wrapper and convention around the `onChange`/`setState()` pattern. It doesn't fundamentally change how data flows in your React application.
 
-## LinkedStateMixin: Before and After
+## LinkedStateMixin: Before and After {#linkedstatemixin-before-and-after}
 
 Here's a simple form example without using `LinkedStateMixin`:
 
@@ -79,11 +79,11 @@ Note that checkboxes have a special behavior regarding their `value` attribute,
 <input type="checkbox" checkedLink={this.linkState('booleanValue')} />
 ```
 
-## Under the Hood
+## Under the Hood {#under-the-hood}
 
 There are two sides to `LinkedStateMixin`: the place where you create the `valueLink` instance and the place where you use it. To prove how simple `LinkedStateMixin` is, let's rewrite each side separately to be more explicit.
 
-### valueLink Without LinkedStateMixin
+### valueLink Without LinkedStateMixin {#valuelink-without-linkedstatemixin}
 
 ```javascript{7-9,11-14}
 var createReactClass = require('create-react-class');
@@ -107,7 +107,7 @@ var WithoutMixin = createReactClass({
 
 As you can see, `valueLink` objects are very simple objects that just have a `value` and `requestChange` prop. And `LinkedStateMixin` is similarly simple: it just populates those fields with a value from `this.state` and a callback that calls `this.setState()`.
 
-### LinkedStateMixin Without valueLink
+### LinkedStateMixin Without valueLink {#linkedstatemixin-without-valuelink}
 
 ```javascript
 var LinkedStateMixin = require('react-addons-linked-state-mixin');
diff --git a/content/docs/addons-update.md b/content/docs/addons-update.md
index 316dfb2e48..0aa20a482b 100644
--- a/content/docs/addons-update.md
+++ b/content/docs/addons-update.md
@@ -17,13 +17,13 @@ import update from 'react-addons-update'; // ES6
 var update = require('react-addons-update'); // ES5 with npm
 ```
 
-## Overview
+## Overview {#overview}
 
 React lets you use whatever style of data management you want, including mutation. However, if you can use immutable data in performance-critical parts of your application it's easy to implement a fast [`shouldComponentUpdate()`](/docs/react-component.html#shouldcomponentupdate) method to significantly speed up your app.
 
 Dealing with immutable data in JavaScript is more difficult than in languages designed for it, like [Clojure](http://clojure.org/). However, we've provided a simple immutability helper, `update()`, that makes dealing with this type of data much easier, *without* fundamentally changing how your data is represented. You can also take a look at Facebook's [Immutable-js](https://facebook.github.io/immutable-js/docs/) and the [Advanced Performance](/docs/advanced-performance.html) section for more detail on Immutable-js.
 
-### The Main Idea
+### The Main Idea {#the-main-idea}
 
 If you mutate data like this:
 
@@ -54,7 +54,7 @@ const newData = extend(myData, {
 
 While this is fairly performant (since it only makes a shallow copy of `log n` objects and reuses the rest), it's a big pain to write. Look at all the repetition! This is not only annoying, but also provides a large surface area for bugs.
 
-## `update()`
+## `update()` {#update}
 
 `update()` provides simple syntactic sugar around this pattern to make writing this code easier. This code becomes:
 
@@ -71,7 +71,7 @@ While the syntax takes a little getting used to (though it's inspired by [MongoD
 
 The `$`-prefixed keys are called *commands*. The data structure they are "mutating" is called the *target*.
 
-## Available Commands
+## Available Commands {#available-commands}
 
   * `{$push: array}` `push()` all the items in `array` on the target.
   * `{$unshift: array}` `unshift()` all the items in `array` on the target.
@@ -80,9 +80,9 @@ The `$`-prefixed keys are called *commands*. The data structure they are "mutati
   * `{$merge: object}` merge the keys of `object` with the target.
   * `{$apply: function}` passes in the current value to the function and updates it with the new returned value.
 
-## Examples
+## Examples {#examples}
 
-### Simple push
+### Simple push {#simple-push}
 
 ```js
 const initialArray = [1, 2, 3];
@@ -90,7 +90,7 @@ const newArray = update(initialArray, {$push: [4]}); // => [1, 2, 3, 4]
 ```
 `initialArray` is still `[1, 2, 3]`.
 
-### Nested collections
+### Nested collections {#nested-collections}
 
 ```js
 const collection = [1, 2, {a: [12, 17, 15]}];
@@ -99,7 +99,7 @@ const newCollection = update(collection, {2: {a: {$splice: [[1, 1, 13, 14]]}}});
 ```
 This accesses `collection`'s index `2`, key `a`, and does a splice of one item starting from index `1` (to remove `17`) while inserting `13` and `14`.
 
-### Updating a value based on its current one
+### Updating a value based on its current one {#updating-a-value-based-on-its-current-one}
 
 ```js
 const obj = {a: 5, b: 3};
@@ -109,7 +109,7 @@ const newObj = update(obj, {b: {$apply: function(x) {return x * 2;}}});
 const newObj2 = update(obj, {b: {$set: obj.b * 2}});
 ```
 
-### (Shallow) Merge
+### (Shallow) Merge {#shallow-merge}
 
 ```js
 const obj = {a: 5, b: 3};
diff --git a/content/docs/addons.md b/content/docs/addons.md
index e78bd003fc..a19f4ba79d 100644
--- a/content/docs/addons.md
+++ b/content/docs/addons.md
@@ -17,7 +17,7 @@ The add-ons below are in the development (unminified) version of React only:
 - [`Perf`](/docs/perf.html), a performance profiling tool for finding optimization opportunities.
 - [`ReactTestUtils`](/docs/test-utils.html), simple helpers for writing test cases.
 
-### Legacy Add-ons
+### Legacy Add-ons {#legacy-add-ons}
 
 The add-ons below are considered legacy and their use is discouraged. They will keep working in observable future, but there is no further development.
 
@@ -26,12 +26,12 @@ The add-ons below are considered legacy and their use is discouraged. They will
 - [`update`](/docs/update.html). Use [`kolodny/immutability-helper`](https://github.com/kolodny/immutability-helper) instead.
 - [`ReactDOMFactories`](https://www.npmjs.com/package/react-dom-factories), pre-configured DOM factories to make React easier to use without JSX.
 
-### Deprecated Add-ons
+### Deprecated Add-ons {#deprecated-add-ons}
 
 - [`LinkedStateMixin`](/docs/two-way-binding-helpers.html) has been deprecated.
 - [`TransitionGroup` and `CSSTransitionGroup`](/docs/animation.html) have been deprecated in favor of [their drop-in replacements](https://github.com/reactjs/react-transition-group/tree/v1-stable).
 
-## Using React with Add-ons
+## Using React with Add-ons {#using-react-with-add-ons}
 
 You can install the add-ons individually from npm (e.g. `npm install react-addons-create-fragment`) and import them:
 
diff --git a/content/docs/cdn-links.md b/content/docs/cdn-links.md
index 9f48a01f75..73e3e81717 100644
--- a/content/docs/cdn-links.md
+++ b/content/docs/cdn-links.md
@@ -22,7 +22,7 @@ The versions above are only meant for development, and are not suitable for prod
 
 To load a specific version of `react` and `react-dom`, replace `16` with the version number.
 
-### Why the `crossorigin` Attribute?
+### Why the `crossorigin` Attribute? {#why-the-crossorigin-attribute}
 
 If you serve React from a CDN, we recommend to keep the [`crossorigin`](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) attribute set:
 
diff --git a/content/docs/code-splitting.md b/content/docs/code-splitting.md
index d779273f53..5b8d400634 100644
--- a/content/docs/code-splitting.md
+++ b/content/docs/code-splitting.md
@@ -4,7 +4,7 @@ title: Code-Splitting
 permalink: docs/code-splitting.html
 ---
 
-## Bundling
+## Bundling {#bundling}
 
 Most React apps will have their files "bundled" using tools like
 [Webpack](https://webpack.js.org/) or [Browserify](http://browserify.org/).
@@ -12,7 +12,7 @@ Bundling is the process of following imported files and merging them into a
 single file: a "bundle". This bundle can then be included on a webpage to load
 an entire app at once.
 
-#### Example
+#### Example {#example}
 
 **App:**
 
@@ -52,7 +52,7 @@ If you aren't, you'll need to setup bundling yourself. For example, see the
 [Getting Started](https://webpack.js.org/guides/getting-started/) guides on the
 Webpack docs.
 
-## Code Splitting
+## Code Splitting {#code-splitting}
 
 Bundling is great, but as your app grows, your bundle will grow too. Especially
 if you are including large third-party libraries. You need to keep an eye on
@@ -72,7 +72,7 @@ your app. While you haven't reduced the overall amount of code in your app,
 you've avoided loading code that the user may never need, and reduced the amount
 of code needed during the initial load.
 
-## `import()`
+## `import()` {#import}
 
 The best way to introduce code-splitting into your app is through the dynamic
 `import()` syntax.
@@ -111,7 +111,7 @@ If you're setting up Webpack yourself, you'll probably want to read Webpack's
 When using [Babel](http://babeljs.io/), you'll need to make sure that Babel can
 parse the dynamic import syntax but is not transforming it. For that you will need [babel-plugin-syntax-dynamic-import](https://yarnpkg.com/en/package/babel-plugin-syntax-dynamic-import).
 
-## `React.lazy`
+## `React.lazy` {#reactlazy}
 
 > Note:
 >
@@ -151,7 +151,7 @@ This will automatically load the bundle containing the `OtherComponent` when thi
 
 `React.lazy` takes a function that must call a dynamic `import()`. This must return a `Promise` which resolves to a module with a `default` export containing a React component.
 
-### Suspense
+### Suspense {#suspense}
 
 If the module containing the `OtherComponent` is not yet loaded by the time `MyComponent` renders, we must show some fallback content while we're waiting for it to load - such as a loading indicator. This is done using the `Suspense` component.
 
@@ -189,7 +189,7 @@ function MyComponent() {
 }
 ```
 
-### Error boundaries
+### Error boundaries {#error-boundaries}
 
 If the other module fails to load (for example, due to network failure), it will trigger an error. You can handle these errors to show a nice user experience and manage recovery with [Error Boundaries](/docs/error-boundaries.html). Once you've created your Error Boundary, you can use it anywhere above your lazy components to display an error state when there's a network error.
 
@@ -212,7 +212,7 @@ const MyComponent = () => (
 );
 ```
 
-## Route-based code splitting
+## Route-based code splitting {#route-based-code-splitting}
 
 Deciding where in your app to introduce code splitting can be a bit tricky. You
 want to make sure you choose places that will split bundles evenly, but won't
@@ -245,7 +245,7 @@ const App = () => (
 );
 ```
 
-## Named Exports
+## Named Exports {#named-exports}
 
 `React.lazy` currently only supports default exports. If the module you want to import uses named exports, you can create an intermediate module that reexports it as the default. This ensures that treeshaking keeps working and that you don't pull in unused components.
 
diff --git a/content/docs/codebase-overview.md b/content/docs/codebase-overview.md
index 07b07aa788..257e54e024 100644
--- a/content/docs/codebase-overview.md
+++ b/content/docs/codebase-overview.md
@@ -15,13 +15,13 @@ If you want to [contribute to React](/docs/how-to-contribute.html) we hope that
 
 We don't necessarily recommend any of these conventions in React apps. Many of them exist for historical reasons and might change with time.
 
-### External Dependencies
+### External Dependencies {#external-dependencies}
 
 React has almost no external dependencies. Usually, a `require()` points to a file in React's own codebase. However, there are a few relatively rare exceptions.
 
 The [fbjs repository](https://github.com/facebook/fbjs) exists because React shares some small utilities with libraries like [Relay](https://github.com/facebook/relay), and we keep them in sync. We don't depend on equivalent small modules in the Node ecosystem because we want Facebook engineers to be able to make changes to them whenever necessary. None of the utilities inside fbjs are considered to be public API, and they are only intended for use by Facebook projects such as React.
 
-### Top-Level Folders
+### Top-Level Folders {#top-level-folders}
 
 After cloning the [React repository](https://github.com/facebook/react), you will see a few top-level folders in it:
 
@@ -33,13 +33,13 @@ The documentation is hosted [in a separate repository from React](https://github
 
 There are a few other top-level folders but they are mostly used for the tooling and you likely won't ever encounter them when contributing.
 
-### Colocated Tests
+### Colocated Tests {#colocated-tests}
 
 We don't have a top-level directory for unit tests. Instead, we put them into a directory called `__tests__` relative to the files that they test.
 
 For example, a test for [`setInnerHTML.js`](https://github.com/facebook/react/blob/87724bd87506325fcaf2648c70fc1f43411a87be/src/renderers/dom/client/utils/setInnerHTML.js) is located in [`__tests__/setInnerHTML-test.js`](https://github.com/facebook/react/blob/87724bd87506325fcaf2648c70fc1f43411a87be/src/renderers/dom/client/utils/__tests__/setInnerHTML-test.js) right next to it.
 
-### Warnings and Invariants
+### Warnings and Invariants {#warnings-and-invariants}
 
 The React codebase uses the `warning` module to display warnings:
 
@@ -88,7 +88,7 @@ invariant(
 
 It is important to keep development and production behavior similar, so `invariant` throws both in development and in production. The error messages are automatically replaced with error codes in production to avoid negatively affecting the byte size.
 
-### Development and Production
+### Development and Production {#development-and-production}
 
 You can use `__DEV__` pseudo-global variable in the codebase to guard development-only blocks of code.
 
@@ -102,7 +102,7 @@ if (__DEV__) {
 }
 ```
 
-### Flow
+### Flow {#flow}
 
 We recently started introducing [Flow](https://flow.org/) checks to the codebase. Files marked with the `@flow` annotation in the license header comment are being typechecked.
 
@@ -120,7 +120,7 @@ ReactRef.detachRefs = function(
 When possible, new code should use Flow annotations.
 You can run `yarn flow` locally to check your code with Flow.
 
-### Dynamic Injection
+### Dynamic Injection {#dynamic-injection}
 
 React uses dynamic injection in some modules. While it is always explicit, it is still unfortunate because it hinders understanding of the code. The main reason it exists is because React originally only supported DOM as a target. React Native started as a React fork. We had to add dynamic injection to let React Native override some behaviors.
 
@@ -153,11 +153,11 @@ The `injection` field is not handled specially in any way. But by convention, it
 
 There are multiple injection points in the codebase. In the future, we intend to get rid of the dynamic injection mechanism and wire up all the pieces statically during the build.
 
-### Multiple Packages
+### Multiple Packages {#multiple-packages}
 
 React is a [monorepo](http://danluu.com/monorepo/). Its repository contains multiple separate packages so that their changes can be coordinated together, and issues live in one place.
 
-### React Core
+### React Core {#react-core}
 
 The "core" of React includes all the [top-level `React` APIs](/docs/top-level-api.html#react), for example:
 
@@ -169,7 +169,7 @@ The "core" of React includes all the [top-level `React` APIs](/docs/top-level-ap
 
 The code for React core is located in [`packages/react`](https://github.com/facebook/react/tree/master/packages/react) in the source tree. It is available on npm as the [`react`](https://www.npmjs.com/package/react) package. The corresponding standalone browser build is called `react.js`, and it exports a global called `React`.
 
-### Renderers
+### Renderers {#renderers}
 
 React was originally created for the DOM but it was later adapted to also support native platforms with [React Native](http://facebook.github.io/react-native/). This introduced the concept of "renderers" to React internals.
 
@@ -187,7 +187,7 @@ The only other officially supported renderer is [`react-art`](https://github.com
 >
 >Technically the [`react-native-renderer`](https://github.com/facebook/react/tree/master/packages/react-native-renderer) is a very thin layer that teaches React to interact with React Native implementation. The real platform-specific code managing the native views lives in the [React Native repository](https://github.com/facebook/react-native) together with its components.
 
-### Reconcilers
+### Reconcilers {#reconcilers}
 
 Even vastly different renderers like React DOM and React Native need to share a lot of logic. In particular, the [reconciliation](/docs/reconciliation.html) algorithm should be as similar as possible so that declarative rendering, custom components, state, lifecycle methods, and refs work consistently across platforms.
 
@@ -195,11 +195,11 @@ To solve this, different renderers share some code between them. We call this pa
 
 Reconcilers are not packaged separately because they currently have no public API. Instead, they are exclusively used by renderers such as React DOM and React Native.
 
-### Stack Reconciler
+### Stack Reconciler {#stack-reconciler}
 
 The "stack" reconciler is the implementation powering React 15 and earlier. We have since stopped using it, but it is documented in detail in the [next section](/docs/implementation-notes.html).
 
-### Fiber Reconciler
+### Fiber Reconciler {#fiber-reconciler}
 
 The "fiber" reconciler is a new effort aiming to resolve the problems inherent in the stack reconciler and fix a few long-standing issues. It has been the default reconciler since React 16.
 
@@ -215,12 +215,12 @@ You can read more about React Fiber Architecture [here](https://github.com/acdli
 
 Its source code is located in [`packages/react-reconciler`](https://github.com/facebook/react/tree/master/packages/react-reconciler).
 
-### Event System
+### Event System {#event-system}
 
 React implements a synthetic event system which is agnostic of the renderers and works both with React DOM and React Native. Its source code is located in [`packages/events`](https://github.com/facebook/react/tree/master/packages/events).
 
 There is a [video with a deep code dive into it](https://www.youtube.com/watch?v=dRo_egw7tBc) (66 mins).
 
-### What Next?
+### What Next? {#what-next}
 
 Read the [next section](/docs/implementation-notes.html) to learn about the pre-React 16 implementation of reconciler in more detail. We haven't documented the internals of the new reconciler yet.
diff --git a/content/docs/components-and-props.md b/content/docs/components-and-props.md
index 06a25971d4..47daaedf98 100644
--- a/content/docs/components-and-props.md
+++ b/content/docs/components-and-props.md
@@ -20,7 +20,7 @@ Components let you split the UI into independent, reusable pieces, and think abo
 
 Conceptually, components are like JavaScript functions. They accept arbitrary inputs (called "props") and return React elements describing what should appear on the screen.
 
-## Function and Class Components
+## Function and Class Components {#function-and-class-components}
 
 The simplest way to define a component is to write a JavaScript function:
 
@@ -46,7 +46,7 @@ The above two components are equivalent from React's point of view.
 
 Classes have some additional features that we will discuss in the [next sections](/docs/state-and-lifecycle.html). Until then, we will use function components for their conciseness.
 
-## Rendering a Component
+## Rendering a Component {#rendering-a-component}
 
 Previously, we only encountered React elements that represent DOM tags:
 
@@ -91,7 +91,7 @@ Let's recap what happens in this example:
 >
 >You can read more about the reasoning behind this convention [here.](/docs/jsx-in-depth.html#user-defined-components-must-be-capitalized)
 
-## Composing Components
+## Composing Components {#composing-components}
 
 Components can refer to other components in their output. This lets us use the same component abstraction for any level of detail. A button, a form, a dialog, a screen: in React apps, all those are commonly expressed as components.
 
@@ -122,7 +122,7 @@ ReactDOM.render(
 
 Typically, new React apps have a single `App` component at the very top. However, if you integrate React into an existing app, you might start bottom-up with a small component like `Button` and gradually work your way to the top of the view hierarchy.
 
-## Extracting Components
+## Extracting Components {#extracting-components}
 
 Don't be afraid to split components into smaller components.
 
@@ -235,7 +235,7 @@ function Comment(props) {
 
 Extracting components might seem like grunt work at first, but having a palette of reusable components pays off in larger apps. A good rule of thumb is that if a part of your UI is used several times (`Button`, `Panel`, `Avatar`), or is complex enough on its own (`App`, `FeedStory`, `Comment`), it is a good candidate to be a reusable component.
 
-## Props are Read-Only
+## Props are Read-Only {#props-are-read-only}
 
 Whether you declare a component [as a function or a class](#function-and-class-components), it must never modify its own props. Consider this `sum` function:
 
diff --git a/content/docs/composition-vs-inheritance.md b/content/docs/composition-vs-inheritance.md
index 5f8175377b..c86735ef7d 100644
--- a/content/docs/composition-vs-inheritance.md
+++ b/content/docs/composition-vs-inheritance.md
@@ -12,7 +12,7 @@ React has a powerful composition model, and we recommend using composition inste
 
 In this section, we will consider a few problems where developers new to React often reach for inheritance, and show how we can solve them with composition.
 
-## Containment
+## Containment {#containment}
 
 Some components don't know their children ahead of time. This is especially common for components like `Sidebar` or `Dialog` that represent generic "boxes".
 
@@ -82,7 +82,7 @@ function App() {
 
 React elements like `<Contacts />` and `<Chat />` are just objects, so you can pass them as props like any other data. This approach may remind you of "slots" in other libraries but there are no limitations on what you can pass as props in React.
 
-## Specialization
+## Specialization {#specialization}
 
 Sometimes we think about components as being "special cases" of other components. For example, we might say that a `WelcomeDialog` is a special case of `Dialog`.
 
@@ -163,7 +163,7 @@ class SignUpDialog extends React.Component {
 
 [**Try it on CodePen**](https://codepen.io/gaearon/pen/gwZbYa?editors=0010)
 
-## So What About Inheritance?
+## So What About Inheritance? {#so-what-about-inheritance}
 
 At Facebook, we use React in thousands of components, and we haven't found any use cases where we would recommend creating component inheritance hierarchies.
 
diff --git a/content/docs/conditional-rendering.md b/content/docs/conditional-rendering.md
index 5d5c829f34..7df19bb98c 100644
--- a/content/docs/conditional-rendering.md
+++ b/content/docs/conditional-rendering.md
@@ -46,7 +46,7 @@ ReactDOM.render(
 
 This example renders a different greeting depending on the value of `isLoggedIn` prop.
 
-### Element Variables
+### Element Variables {#element-variables}
 
 You can use variables to store elements. This can help you conditionally render a part of the component while the rest of the output doesn't change.
 
@@ -120,7 +120,7 @@ ReactDOM.render(
 
 While declaring a variable and using an `if` statement is a fine way to conditionally render a component, sometimes you might want to use a shorter syntax. There are a few ways to inline conditions in JSX, explained below.
 
-### Inline If with Logical && Operator
+### Inline If with Logical && Operator {#inline-if-with-logical--operator}
 
 You may [embed any expressions in JSX](/docs/introducing-jsx.html#embedding-expressions-in-jsx) by wrapping them in curly braces. This includes the JavaScript logical `&&` operator. It can be handy for conditionally including an element:
 
@@ -152,7 +152,7 @@ It works because in JavaScript, `true && expression` always evaluates to `expres
 
 Therefore, if the condition is `true`, the element right after `&&` will appear in the output. If it is `false`, React will ignore and skip it.
 
-### Inline If-Else with Conditional Operator
+### Inline If-Else with Conditional Operator {#inline-if-else-with-conditional-operator}
 
 Another method for conditionally rendering elements inline is to use the JavaScript conditional operator [`condition ? true : false`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Conditional_Operator).
 
@@ -188,7 +188,7 @@ render() {
 
 Just like in JavaScript, it is up to you to choose an appropriate style based on what you and your team consider more readable. Also remember that whenever conditions become too complex, it might be a good time to [extract a component](/docs/components-and-props.html#extracting-components).
 
-### Preventing Component from Rendering
+### Preventing Component from Rendering {#preventing-component-from-rendering}
 
 In rare cases you might want a component to hide itself even though it was rendered by another component. To do this return `null` instead of its render output.
 
diff --git a/content/docs/context.md b/content/docs/context.md
index 35624cbc2c..8e41a465f9 100644
--- a/content/docs/context.md
+++ b/content/docs/context.md
@@ -22,7 +22,7 @@ In a typical React application, data is passed top-down (parent to child) via pr
 - [Caveats](#caveats)
 - [Legacy API](#legacy-api)
 
-## When to Use Context
+## When to Use Context {#when-to-use-context}
 
 Context is designed to share data that can be considered "global" for a tree of React components, such as the current authenticated user, theme, or preferred language. For example, in the code below we manually thread through a "theme" prop in order to style the Button component:
 
@@ -32,7 +32,7 @@ Using context, we can avoid passing props through intermediate elements:
 
 `embed:context/motivation-solution.js`
 
-## Before You Use Context
+## Before You Use Context {#before-you-use-context}
 
 Context is primarily used when some data needs to be accessible by *many* components at different nesting levels. Apply it sparingly because it makes component reuse more difficult.
 
@@ -107,9 +107,9 @@ This pattern is sufficient for many cases when you need to decouple a child from
 
 However, sometimes the same data needs to be accessible by many components in the tree, and at different nesting levels. Context lets you "broadcast" such data, and changes to it, to all components below. Common examples where using context might be simpler than the alternatives include managing the current locale, theme, or a data cache. 
 
-## API
+## API {#api}
 
-### `React.createContext`
+### `React.createContext` {#reactcreatecontext}
 
 ```js
 const MyContext = React.createContext(defaultValue);
@@ -119,7 +119,7 @@ Creates a Context object. When React renders a component that subscribes to this
 
 The `defaultValue` argument is **only** used when a component does not have a matching Provider above it in the tree. This can be helpful for testing components in isolation without wrapping them. Note: passing `undefined` as a Provider value does not cause consuming components to use `defaultValue`.
 
-### `Context.Provider`
+### `Context.Provider` {#contextprovider}
 
 ```js
 <MyContext.Provider value={/* some value */}>
@@ -137,7 +137,7 @@ Changes are determined by comparing the new and old values using the same algori
 > 
 > The way changes are determined can cause some issues when passing objects as `value`: see [Caveats](#caveats).
 
-### `Class.contextType`
+### `Class.contextType` {#classcontexttype}
 
 ```js
 class MyClass extends React.Component {
@@ -180,7 +180,7 @@ class MyClass extends React.Component {
 }
 ```
 
-### `Context.Consumer`
+### `Context.Consumer` {#contextconsumer}
 
 ```js
 <MyContext.Consumer>
@@ -196,9 +196,9 @@ Requires a [function as a child](/docs/render-props.html#using-props-other-than-
 > 
 > For more information about the 'function as a child' pattern, see [render props](/docs/render-props.html).
 
-## Examples
+## Examples {#examples}
 
-### Dynamic Context
+### Dynamic Context {#dynamic-context}
 
 A more complex example with dynamic values for the theme:
 
@@ -211,7 +211,7 @@ A more complex example with dynamic values for the theme:
 **app.js**
 `embed:context/theme-detailed-app.js`
 
-### Updating Context from a Nested Component
+### Updating Context from a Nested Component {#updating-context-from-a-nested-component}
 
 It is often necessary to update the context from a component that is nested somewhere deeply in the component tree. In this case you can pass a function down through the context to allow consumers to update the context:
 
@@ -224,7 +224,7 @@ It is often necessary to update the context from a component that is nested some
 **app.js**
 `embed:context/updating-nested-context-app.js`
 
-### Consuming Multiple Contexts
+### Consuming Multiple Contexts {#consuming-multiple-contexts}
 
 To keep context re-rendering fast, React needs to make each context consumer a separate node in the tree. 
 
@@ -232,7 +232,7 @@ To keep context re-rendering fast, React needs to make each context consumer a s
 
 If two or more context values are often used together, you might want to consider creating your own render prop component that provides both.
 
-## Caveats
+## Caveats {#caveats}
 
 Because context uses reference identity to determine when to re-render, there are some gotchas that could trigger unintentional renders in consumers when a provider's parent re-renders. For example, the code below will re-render all consumers every time the Provider re-renders because a new object is always created for `value`:
 
@@ -243,7 +243,7 @@ To get around this, lift the value into the parent's state:
 
 `embed:context/reference-caveats-solution.js`
 
-## Legacy API
+## Legacy API {#legacy-api}
 
 > Note
 > 
diff --git a/content/docs/create-a-new-react-app.md b/content/docs/create-a-new-react-app.md
index 4d692f76f8..d3e9357e5a 100644
--- a/content/docs/create-a-new-react-app.md
+++ b/content/docs/create-a-new-react-app.md
@@ -20,13 +20,13 @@ This page describes a few popular React toolchains which help with tasks like:
 
 The toolchains recommended on this page **don't require configuration to get started**.
 
-## You Might Not Need a Toolchain
+## You Might Not Need a Toolchain {#you-might-not-need-a-toolchain}
 
 If you don't experience the problems described above or don't feel comfortable using JavaScript tools yet, consider [adding React as a plain `<script>` tag on an HTML page](/docs/add-react-to-a-website.html), optionally [with JSX](/docs/add-react-to-a-website.html#optional-try-react-with-jsx).
 
 This is also **the easiest way to integrate React into an existing website.** You can always add a larger toolchain if you find it helpful!
 
-## Recommended Toolchains
+## Recommended Toolchains {#recommended-toolchains}
 
 The React team primarily recommends these solutions:
 
@@ -35,7 +35,7 @@ The React team primarily recommends these solutions:
 - If you're building a **static content-oriented website,** try [Gatsby](#gatsby).
 - If you're building a **component library** or **integrating with an existing codebase**, try [More Flexible Toolchains](#more-flexible-toolchains).
 
-### Create React App
+### Create React App {#create-react-app}
 
 [Create React App](http://github.com/facebookincubator/create-react-app) is a comfortable environment for **learning React**, and is the best way to start building **a new [single-page](/docs/glossary.html#single-page-application) application** in React.
 
@@ -55,19 +55,19 @@ Create React App doesn't handle backend logic or databases; it just creates a fr
 
 When you're ready to deploy to production, running `npm run build` will create an optimized build of your app in the `build` folder. You can learn more about Create React App [from its README](https://github.com/facebookincubator/create-react-app#create-react-app-) and the [User Guide](https://github.com/facebookincubator/create-react-app/blob/master/packages/react-scripts/template/README.md#table-of-contents).
 
-### Next.js
+### Next.js {#nextjs}
 
 [Next.js](https://nextjs.org/) is a popular and lightweight framework for **static and server‑rendered applications** built with React. It includes **styling and routing solutions** out of the box, and assumes that you're using [Node.js](https://nodejs.org/) as the server environment.
 
 Learn Next.js from [its official guide](https://nextjs.org/learn/).
 
-### Gatsby
+### Gatsby {#gatsby}
 
 [Gatsby](https://www.gatsbyjs.org/) is the best way to create **static websites** with React. It lets you use React components, but outputs pre-rendered HTML and CSS to guarantee the fastest load time.
 
 Learn Gatsby from [its official guide](https://www.gatsbyjs.org/docs/) and a [gallery of starter kits](https://www.gatsbyjs.org/docs/gatsby-starters/).
 
-### More Flexible Toolchains
+### More Flexible Toolchains {#more-flexible-toolchains}
 
 The following toolchains offer more flexiblity and choice. We recommend them to more experienced users:
 
@@ -79,7 +79,7 @@ The following toolchains offer more flexiblity and choice. We recommend them to
 
 - **[Razzle](https://github.com/jaredpalmer/razzle)** is a server-rendering framework that doesn't require any configuration, but offers more flexibility than Next.js.
 
-## Creating a Toolchain from Scratch
+## Creating a Toolchain from Scratch {#creating-a-toolchain-from-scratch}
 
 A JavaScript build toolchain typically consists of:
 
diff --git a/content/docs/cross-origin-errors.md b/content/docs/cross-origin-errors.md
index dface0092b..915ee0d636 100644
--- a/content/docs/cross-origin-errors.md
+++ b/content/docs/cross-origin-errors.md
@@ -14,7 +14,7 @@ If an error is thrown from a [different origin](https://developer.mozilla.org/en
 
 You can simplify the development/debugging process by ensuring that errors are thrown with a same-origin policy. Below are some common causes of cross-origin errors and ways to address them.
 
-### CDN
+### CDN {#cdn}
 
 When loading React (or other libraries that might throw errors) from a CDN, add the [`crossorigin`](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) attribute to your `<script>` tags:
 
@@ -26,15 +26,15 @@ Also ensure the CDN responds with the `Access-Control-Allow-Origin: *` HTTP head
 
 ![Access-Control-Allow-Origin: *](../images/docs/cdn-cors-header.png)
 
-### Webpack
+### Webpack {#webpack}
 
-#### Source maps
+#### Source maps {#source-maps}
 
 Some JavaScript bundlers may wrap the application code with `eval` statements in development. (For example Webpack will do this if [`devtool`](https://webpack.js.org/configuration/devtool/) is set to any value containing the word "eval".) This may cause errors to be treated as cross-origin.
 
 If you use Webpack, we recommend using the `cheap-module-source-map` setting in development to avoid this problem.
 
-#### Code splitting
+#### Code splitting {#code-splitting}
 
 If your application is split into multiple bundles, these bundles may be loaded using JSONP. This may cause errors thrown in the code of these bundles to be treated as cross-origin.
 
diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md
index bad88b0017..555045f4aa 100644
--- a/content/docs/design-principles.md
+++ b/content/docs/design-principles.md
@@ -16,7 +16,7 @@ We wrote this document so that you have a better idea of how we decide what Reac
 >
 >For an introduction to React, check out [Thinking in React](/docs/thinking-in-react.html) instead.
 
-### Composition
+### Composition {#composition}
 
 The key feature of React is composition of components. Components written by different people should work well together. It is important to us that you can add functionality to a component without causing rippling changes throughout the codebase.
 
@@ -26,7 +26,7 @@ There is nothing "bad" about using state or lifecycle methods in components. Lik
 
 Components are often described as "just functions" but in our view they need to be more than that to be useful. In React, components describe any composable behavior, and this includes rendering, lifecycle, and state. Some external libraries like [Relay](http://facebook.github.io/relay/) augment components with other responsibilities such as describing data dependencies. It is possible that those ideas might make it back into React too in some form.
 
-### Common Abstraction
+### Common Abstraction {#common-abstraction}
 
 In general we [resist adding features](https://www.youtube.com/watch?v=4anAwXYqLG8) that can be implemented in userland. We don't want to bloat your apps with useless library code. However, there are exceptions to this.
 
@@ -36,13 +36,13 @@ This is why sometimes we add features to React itself. If we notice that many co
 
 We always discuss such improvement proposals with the community. You can find some of those discussions by the ["big picture"](https://github.com/facebook/react/issues?q=is:open+is:issue+label:"Type:+Big+Picture") label on the React issue tracker.
 
-### Escape Hatches
+### Escape Hatches {#escape-hatches}
 
 React is pragmatic. It is driven by the needs of the products written at Facebook. While it is influenced by some paradigms that are not yet fully mainstream such as functional programming, staying accessible to a wide range of developers with different skills and experience levels is an explicit goal of the project.
 
 If we want to deprecate a pattern that we don't like, it is our responsibility to consider all existing use cases for it and [educate the community about the alternatives](/blog/2016/07/13/mixins-considered-harmful.html) before we deprecate it. If some pattern that is useful for building apps is hard to express in a declarative way, we will [provide an imperative API](/docs/more-about-refs.html) for it. If we can't figure out a perfect API for something that we found necessary in many apps, we will [provide a temporary subpar working API](/docs/legacy-context.html) as long as it is possible to get rid of it later and it leaves the door open for future improvements.
 
-### Stability
+### Stability {#stability}
 
 We value API stability. At Facebook, we have more than 50 thousand components using React. Many other companies, including [Twitter](https://twitter.com/) and [Airbnb](https://www.airbnb.com/), are also heavy users of React. This is why we are usually reluctant to change public APIs or behavior.
 
@@ -62,13 +62,13 @@ When we add a deprecation warning, we keep it for the rest of the current major
 
 You can find the codemods that we released in the [react-codemod](https://github.com/reactjs/react-codemod) repository.
 
-### Interoperability
+### Interoperability {#interoperability}
 
 We place high value in interoperability with existing systems and gradual adoption. Facebook has a massive non-React codebase. Its website uses a mix of a server-side component system called XHP, internal UI libraries that came before React, and React itself. It is important to us that any product team can [start using React for a small feature](https://www.youtube.com/watch?v=BF58ZJ1ZQxY) rather than rewrite their code to bet on it.
 
 This is why React provides escape hatches to work with mutable models, and tries to work well together with other UI libraries. You can wrap an existing imperative UI into a declarative component, and vice versa. This is crucial for gradual adoption.
 
-### Scheduling
+### Scheduling {#scheduling}
 
 Even when your components are described as functions, when you use React you don't call them directly. Every component returns a [description of what needs to be rendered](/blog/2015/12/18/react-components-elements-and-instances.html#elements-describe-the-tree), and that description may include both user-written components like `<LikeButton>` and platform-specific components like `<div>`. It is up to React to "unroll" `<LikeButton>` at some point in the future and actually apply changes to the UI tree according to the render results of the components recursively.
 
@@ -88,7 +88,7 @@ It is a key goal for React that the amount of the user code that executes before
 
 There is an internal joke in the team that React should have been called "Schedule" because React does not want to be fully "reactive".
 
-### Developer Experience
+### Developer Experience {#developer-experience}
 
 Providing a good developer experience is important to us.
 
@@ -100,7 +100,7 @@ The usage patterns that we see internally at Facebook help us understand what th
 
 We are always looking out for ways to improve the developer experience. We love to hear your suggestions and accept your contributions to make it even better.
 
-### Debugging
+### Debugging {#debugging}
 
 When something goes wrong, it is important that you have breadcrumbs to trace the mistake to its source in the codebase. In React, props and state are those breadcrumbs.
 
@@ -114,7 +114,7 @@ This ability to trace any UI to the data that produced it in the form of current
 
 While the UI is dynamic, we believe that synchronous `render()` functions of props and state turn debugging from guesswork into a boring but finite procedure. We would like to preserve this constraint in React even though it makes some use cases, like complex animations, harder.
 
-### Configuration
+### Configuration {#configuration}
 
 We find global runtime configuration options to be problematic.
 
@@ -124,7 +124,7 @@ What if somebody calls such a function from a third-party component library? Wha
 
 We do, however, provide some global configuration on the build level. For example, we provide separate development and production builds. We may also [add a profiling build](https://github.com/facebook/react/issues/6627) in the future, and we are open to considering other build flags.
 
-### Beyond the DOM
+### Beyond the DOM {#beyond-the-dom}
 
 We see the value of React in the way it allows us to write components that have fewer bugs and compose together well. DOM is the original rendering target for React but [React Native](http://facebook.github.io/react-native/) is just as important both to Facebook and the community.
 
@@ -132,13 +132,13 @@ Being renderer-agnostic is an important design constraint of React. It adds some
 
 Having a single programming model lets us form engineering teams around products instead of platforms. So far the tradeoff has been worth it for us.
 
-### Implementation
+### Implementation {#implementation}
 
 We try to provide elegant APIs where possible. We are much less concerned with the implementation being elegant. The real world is far from perfect, and to a reasonable extent we prefer to put the ugly code into the library if it means the user does not have to write it. When we evaluate new code, we are looking for an implementation that is correct, performant and affords a good developer experience. Elegance is secondary.
 
 We prefer boring code to clever code. Code is disposable and often changes. So it is important that it [doesn't introduce new internal abstractions unless absolutely necessary](https://youtu.be/4anAwXYqLG8?t=13m9s). Verbose code that is easy to move around, change and remove is preferred to elegant code that is prematurely abstracted and hard to change.
 
-### Optimized for Tooling
+### Optimized for Tooling {#optimized-for-tooling}
 
 Some commonly used APIs have verbose names. For example, we use `componentDidMount()` instead of `didMount()` or `onMount()`. This is [intentional](https://github.com/reactjs/react-future/issues/40#issuecomment-142442124). The goal is to make the points of interaction with the library highly visible.
 
@@ -150,7 +150,7 @@ Optimizing for search is also important because of our reliance on [codemods](ht
 
 In our codebase, JSX provides an unambiguous hint to the tools that they are dealing with a React element tree. This makes it possible to add build-time optimizations such as [hoisting constant elements](http://babeljs.io/docs/plugins/transform-react-constant-elements/), safely lint and codemod internal component usage, and [include JSX source location](https://github.com/facebook/react/pull/6771) into the warnings.
 
-### Dogfooding
+### Dogfooding {#dogfooding}
 
 We try our best to address the problems raised by the community. However we are likely to prioritize the issues that people are *also* experiencing internally at Facebook. Perhaps counter-intuitively, we think this is the main reason why the community can bet on React.
 
diff --git a/content/docs/error-boundaries.md b/content/docs/error-boundaries.md
index 4ac546576b..1477329112 100644
--- a/content/docs/error-boundaries.md
+++ b/content/docs/error-boundaries.md
@@ -7,7 +7,7 @@ permalink: docs/error-boundaries.html
 In the past, JavaScript errors inside components used to corrupt React’s internal state and cause it to [emit](https://github.com/facebook/react/issues/4026) [cryptic](https://github.com/facebook/react/issues/6895) [errors](https://github.com/facebook/react/issues/8579) on next renders. These errors were always caused by an earlier error in the application code, but React did not provide a way to handle them gracefully in components, and could not recover from them.
 
 
-## Introducing Error Boundaries
+## Introducing Error Boundaries {#introducing-error-boundaries}
 
 A JavaScript error in a part of the UI shouldn’t break the whole app. To solve this problem for React users, React 16 introduces a new concept of an “error boundary”.
 
@@ -64,17 +64,17 @@ Error boundaries work like a JavaScript `catch {}` block, but for components. On
 
 Note that **error boundaries only catch errors in the components below them in the tree**. An error boundary can’t catch an error within itself. If an error boundary fails trying to render the error message, the error will propagate to the closest error boundary above it. This, too, is similar to how catch {} block works in JavaScript.
 
-## Live Demo
+## Live Demo {#live-demo}
 
 Check out [this example of declaring and using an error boundary](https://codepen.io/gaearon/pen/wqvxGa?editors=0010) with [React 16](/blog/2017/09/26/react-v16.0.html).
 
 
-## Where to Place Error Boundaries
+## Where to Place Error Boundaries {#where-to-place-error-boundaries}
 
 The granularity of error boundaries is up to you. You may wrap top-level route components to display a “Something went wrong” message to the user, just like server-side frameworks often handle crashes. You may also wrap individual widgets in an error boundary to protect them from crashing the rest of the application.
 
 
-## New Behavior for Uncaught Errors
+## New Behavior for Uncaught Errors {#new-behavior-for-uncaught-errors}
 
 This change has an important implication. **As of React 16, errors that were not caught by any error boundary will result in unmounting of the whole React component tree.**
 
@@ -87,7 +87,7 @@ For example, Facebook Messenger wraps content of the sidebar, the info panel, th
 We also encourage you to use JS error reporting services (or build your own) so that you can learn about unhandled exceptions as they happen in production, and fix them.
 
 
-## Component Stack Traces
+## Component Stack Traces {#component-stack-traces}
 
 React 16 prints all errors that occurred during rendering to the console in development, even if the application accidentally swallows them. In addition to the error message and the JavaScript stack, it also provides component stack traces. Now you can see where exactly in the component tree the failure has happened:
 
@@ -104,7 +104,7 @@ If you don’t use Create React App, you can add [this plugin](https://www.npmjs
 > Component names displayed in the stack traces depend on the [`Function.name`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name) property. If you support older browsers and devices which may not yet provide this natively (e.g. IE 11), consider including a `Function.name` polyfill in your bundled application, such as [`function.name-polyfill`](https://github.com/JamesMGreene/Function.name). Alternatively, you may explicitly set the [`displayName`](/docs/react-component.html#displayname) property on all your components.
 
 
-## How About try/catch?
+## How About try/catch? {#how-about-trycatch}
 
 `try` / `catch` is great but it only works for imperative code:
 
@@ -124,7 +124,7 @@ However, React components are declarative and specify *what* should be rendered:
 
 Error boundaries preserve the declarative nature of React, and behave as you would expect. For example, even if an error occurs in a `componentDidUpdate` method caused by a `setState` somewhere deep in the tree, it will still correctly propagate to the closest error boundary.
 
-## How About Event Handlers?
+## How About Event Handlers? {#how-about-event-handlers}
 
 Error boundaries **do not** catch errors inside event handlers.
 
@@ -159,7 +159,7 @@ class MyComponent extends React.Component {
 
 Note that the above example is demonstrating regular JavaScript behavior and doesn't use error boundaries.
 
-## Naming Changes from React 15
+## Naming Changes from React 15 {#naming-changes-from-react-15}
 
 React 15 included a very limited support for error boundaries under a different method name: `unstable_handleError`. This method no longer works, and you will need to change it to `componentDidCatch` in your code starting from the first 16 beta release.
 
diff --git a/content/docs/faq-ajax.md b/content/docs/faq-ajax.md
index 89c1e7dbd5..102e1c07e7 100644
--- a/content/docs/faq-ajax.md
+++ b/content/docs/faq-ajax.md
@@ -6,15 +6,15 @@ layout: docs
 category: FAQ
 ---
 
-### How can I make an AJAX call?
+### How can I make an AJAX call? {#how-can-i-make-an-ajax-call}
 
 You can use any AJAX library you like with React. Some popular ones are [Axios](https://github.com/axios/axios), [jQuery AJAX](https://api.jquery.com/jQuery.ajax/), and the browser built-in [window.fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API).
 
-### Where in the component lifecycle should I make an AJAX call?
+### Where in the component lifecycle should I make an AJAX call? {#where-in-the-component-lifecycle-should-i-make-an-ajax-call}
 
 You should populate data with AJAX calls in the [`componentDidMount`](/docs/react-component.html#mounting) lifecycle method. This is so you can use `setState` to update your component when the data is retrieved.
 
-### Example: Using AJAX results to set local state
+### Example: Using AJAX results to set local state {#example-using-ajax-results-to-set-local-state}
 
 The component below demonstrates how to make an AJAX call in `componentDidMount` to populate local component state. 
 
diff --git a/content/docs/faq-build.md b/content/docs/faq-build.md
index 79e8f5c2e7..b071cc1311 100644
--- a/content/docs/faq-build.md
+++ b/content/docs/faq-build.md
@@ -6,15 +6,15 @@ layout: docs
 category: FAQ
 ---
 
-### Do I need to use JSX with React?
+### Do I need to use JSX with React? {#do-i-need-to-use-jsx-with-react}
 
 No! Check out ["React Without JSX"](/docs/react-without-jsx.html) to learn more.
 
-### Do I need to use ES6 (+) with React?
+### Do I need to use ES6 (+) with React? {#do-i-need-to-use-es6--with-react}
 
 No! Check out ["React Without ES6"](/docs/react-without-es6.html) to learn more.
 
-### How can I write comments in JSX?
+### How can I write comments in JSX? {#how-can-i-write-comments-in-jsx}
 
 ```jsx
 <div>
diff --git a/content/docs/faq-functions.md b/content/docs/faq-functions.md
index 337bc1febc..62067d39cc 100644
--- a/content/docs/faq-functions.md
+++ b/content/docs/faq-functions.md
@@ -6,7 +6,7 @@ layout: docs
 category: FAQ
 ---
 
-### How do I pass an event handler (like onClick) to a component?
+### How do I pass an event handler (like onClick) to a component? {#how-do-i-pass-an-event-handler-like-onclick-to-a-component}
 
 Pass event handlers and other functions as props to child components:
 
@@ -16,11 +16,11 @@ Pass event handlers and other functions as props to child components:
 
 If you need to have access to the parent component in the handler, you also need to bind the function to the component instance (see below).
 
-### How do I bind a function to a component instance?
+### How do I bind a function to a component instance? {#how-do-i-bind-a-function-to-a-component-instance}
 
 There are several ways to make sure functions have access to component attributes like `this.props` and `this.state`, depending on which syntax and build steps you are using.
 
-#### Bind in Constructor (ES2015)
+#### Bind in Constructor (ES2015) {#bind-in-constructor-es2015}
 
 ```jsx
 class Foo extends Component {
@@ -37,7 +37,7 @@ class Foo extends Component {
 }
 ```
 
-#### Class Properties (Stage 3 Proposal)
+#### Class Properties (Stage 3 Proposal) {#class-properties-stage-3-proposal}
 
 ```jsx
 class Foo extends Component {
@@ -51,7 +51,7 @@ class Foo extends Component {
 }
 ```
 
-#### Bind in Render
+#### Bind in Render {#bind-in-render}
 
 ```jsx
 class Foo extends Component {
@@ -68,7 +68,7 @@ class Foo extends Component {
 >
 >Using `Function.prototype.bind` in render creates a new function each time the component renders, which may have performance implications (see below).
 
-#### Arrow Function in Render
+#### Arrow Function in Render {#arrow-function-in-render}
 
 ```jsx
 class Foo extends Component {
@@ -85,13 +85,13 @@ class Foo extends Component {
 >
 >Using an arrow function in render creates a new function each time the component renders, which may have performance implications (see below).
 
-### Is it OK to use arrow functions in render methods?
+### Is it OK to use arrow functions in render methods? {#is-it-ok-to-use-arrow-functions-in-render-methods}
 
 Generally speaking, yes, it is OK, and it is often the easiest way to pass parameters to callback functions.
 
 If you do have performance issues, by all means, optimize!
 
-### Why is binding necessary at all?
+### Why is binding necessary at all? {#why-is-binding-necessary-at-all}
 
 In JavaScript, these two code snippets are **not** equivalent:
 
@@ -110,7 +110,7 @@ With React, typically you only need to bind the methods you *pass* to other comp
 
 [This post by Yehuda Katz](http://yehudakatz.com/2011/08/11/understanding-javascript-function-invocation-and-this/) explains what binding is, and how functions work in JavaScript, in detail.
 
-### Why is my function being called every time the component renders?
+### Why is my function being called every time the component renders? {#why-is-my-function-being-called-every-time-the-component-renders}
 
 Make sure you aren't _calling the function_ when you pass it to the component:
 
@@ -130,7 +130,7 @@ render() {
 }
 ```
 
-### How do I pass a parameter to an event handler or callback?
+### How do I pass a parameter to an event handler or callback? {#how-do-i-pass-a-parameter-to-an-event-handler-or-callback}
 
 You can use an arrow function to wrap around an event handler and pass parameters:
 
@@ -144,7 +144,7 @@ This is equivalent to calling `.bind`:
 <button onClick={this.handleClick.bind(this, id)} />
 ```
 
-#### Example: Passing params using arrow functions
+#### Example: Passing params using arrow functions {#example-passing-params-using-arrow-functions}
 
 ```jsx
 const A = 65 // ASCII character code
@@ -178,7 +178,7 @@ class Alphabet extends React.Component {
 }
 ```
 
-#### Example: Passing params using data-attributes
+#### Example: Passing params using data-attributes {#example-passing-params-using-data-attributes}
 
 Alternately, you can use DOM APIs to store data needed for event handlers. Consider this approach if you need to optimize a large number of elements or have a render tree that relies on React.PureComponent equality checks.
 
@@ -218,7 +218,7 @@ class Alphabet extends React.Component {
 }
 ```
 
-### How can I prevent a function from being called too quickly or too many times in a row?
+### How can I prevent a function from being called too quickly or too many times in a row? {#how-can-i-prevent-a-function-from-being-called-too-quickly-or-too-many-times-in-a-row}
 
 If you have an event handler such as `onClick` or `onScroll` and want to prevent the callback from being fired too quickly, then you can limit the rate at which callback is executed. This can be done by using:
 
@@ -232,7 +232,7 @@ See [this visualization](http://demo.nimius.net/debounce_throttle/) for a compar
 >
 > `_.debounce`, `_.throttle` and `raf-schd` provide a `cancel` method to cancel delayed callbacks. You should either call this method from `componentWillUnmount` _or_ check to ensure that the component is still mounted within the delayed function.
 
-#### Throttle
+#### Throttle {#throttle}
 
 Throttling prevents a function from being called more than once in a given window of time. The example below throttles a "click" handler to prevent calling it more than once per second.
 
@@ -260,7 +260,7 @@ class LoadMoreButton extends React.Component {
 }
 ```
 
-#### Debounce
+#### Debounce {#debounce}
 
 Debouncing ensures that a function will not be executed until after a certain amount of time has passed since it was last called. This can be useful when you have to perform some expensive calculation in response to an event that might dispatch rapidly (eg scroll or keyboard events). The example below debounces text input with a 250ms delay.
 
@@ -302,7 +302,7 @@ class Searchbox extends React.Component {
 }
 ```
 
-#### `requestAnimationFrame` throttling
+#### `requestAnimationFrame` throttling {#requestanimationframe-throttling}
 
 [`requestAnimationFrame`](https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame) is a way of queuing a function to be executed in the browser at the optimal time for rendering performance. A function that is queued with `requestAnimationFrame` will fire in the next frame. The browser will work hard to ensure that there are 60 frames per second (60 fps). However, if the browser is unable to it will naturally *limit* the amount of frames in a second. For example, a device might only be able to handle 30 fps and so you will only get 30 frames in that second. Using `requestAnimationFrame` for throttling is a useful technique in that it prevents you from doing more than 60 updates in a second. If you are doing 100 updates in a second this creates additional work for the browser that the user will not see anyway.
 
@@ -349,6 +349,6 @@ class ScrollListener extends React.Component {
 }
 ```
 
-#### Testing your rate limiting
+#### Testing your rate limiting {#testing-your-rate-limiting}
 
 When testing your rate limiting code works correctly it is helpful to have the ability to fast forward time. If you are using [`jest`](https://facebook.github.io/jest/) then you can use [`mock timers`](https://facebook.github.io/jest/docs/en/timer-mocks.html) to fast forward time. If you are using `requestAnimationFrame` throttling then you may find [`raf-stub`](https://github.com/alexreardon/raf-stub) to be a useful tool to control the ticking of animation frames.
diff --git a/content/docs/faq-internals.md b/content/docs/faq-internals.md
index 0d7f3acc2a..da7f96be08 100644
--- a/content/docs/faq-internals.md
+++ b/content/docs/faq-internals.md
@@ -6,7 +6,7 @@ layout: docs
 category: FAQ
 ---
 
-### What is the Virtual DOM?
+### What is the Virtual DOM? {#what-is-the-virtual-dom}
 
 The virtual DOM (VDOM) is a programming concept where an ideal, or "virtual", representation of a UI is kept in memory and synced with the "real" DOM by a library such as ReactDOM. This process is called [reconciliation](/docs/reconciliation.html).
 
@@ -14,10 +14,10 @@ This approach enables the declarative API of React: You tell React what state yo
 
 Since "virtual DOM" is more of a pattern than a specific technology, people sometimes say it to mean different things. In React world, the term "virtual DOM" is usually associated with [React elements](/docs/rendering-elements.html) since they are the objects representing the user interface. React, however, also uses internal objects called "fibers" to hold additional information about the component tree. They may also be considered a part of "virtual DOM" implementation in React.
 
-### Is the Shadow DOM the same as the Virtual DOM?
+### Is the Shadow DOM the same as the Virtual DOM? {#is-the-shadow-dom-the-same-as-the-virtual-dom}
 
 No, they are different. The Shadow DOM is a browser technology designed primarily for scoping variables and CSS in web components. The virtual DOM is a concept implemented by libraries in JavaScript on top of browser APIs.
 
-### What is "React Fiber"?
+### What is "React Fiber"? {#what-is-react-fiber}
 
 Fiber is the new reconciliation engine in React 16. Its main goal is to enable incremental rendering of the virtual DOM. [Read more](https://github.com/acdlite/react-fiber-architecture).
diff --git a/content/docs/faq-state.md b/content/docs/faq-state.md
index 81b677a766..2765e3ae3a 100644
--- a/content/docs/faq-state.md
+++ b/content/docs/faq-state.md
@@ -6,11 +6,11 @@ layout: docs
 category: FAQ
 ---
 
-### What does `setState` do?
+### What does `setState` do? {#what-does-setstate-do}
 
 `setState()` schedules an update to a component's `state` object. When state changes, the component responds by re-rendering.
 
-### What is the difference between `state` and `props`?
+### What is the difference between `state` and `props`? {#what-is-the-difference-between-state-and-props}
 
 [`props`](/docs/components-and-props.html) (short for "properties") and [`state`](/docs/state-and-lifecycle.html) are both plain JavaScript objects. While both hold information that influences the output of render, they are different in one important way: `props` get passed *to* the component (similar to function parameters) whereas `state` is managed *within* the component (similar to variables declared within a function).
 
@@ -18,7 +18,7 @@ Here are some good resources for further reading on when to use `props` vs `stat
 * [Props vs State](https://github.com/uberVU/react-guide/blob/master/props-vs-state.md)
 * [ReactJS: Props vs. State](http://lucybain.com/blog/2016/react-state-vs-pros/)
 
-### Why is `setState` giving me the wrong value?
+### Why is `setState` giving me the wrong value? {#why-is-setstate-giving-me-the-wrong-value}
 
 In React, both `this.props` and `this.state` represent the *rendered* values, i.e. what's currently on the screen.
 
@@ -49,11 +49,11 @@ handleSomething() {
 
 See below for how to fix this problem.
 
-### How do I update state with values that depend on the current state? 
+### How do I update state with values that depend on the current state? {#how-do-i-update-state-with-values-that-depend-on-the-current-state}
 
 Pass a function instead of an object to `setState` to ensure the call always uses the most updated version of state (see below). 
 
-### What is the difference between passing an object or a function in `setState`?
+### What is the difference between passing an object or a function in `setState`? {#what-is-the-difference-between-passing-an-object-or-a-function-in-setstate}
 
 Passing an update function allows you to access the current state value inside the updater. Since `setState` calls are batched, this lets you chain updates and ensure they build on top of each other instead of conflicting:
 
@@ -78,7 +78,7 @@ handleSomething() {
 
 [Learn more about setState](/docs/react-component.html#setstate)
 
-### When is `setState` asynchronous?
+### When is `setState` asynchronous? {#when-is-setstate-asynchronous}
 
 Currently, `setState` is asynchronous inside event handlers.
 
@@ -86,7 +86,7 @@ This ensures, for example, that if both `Parent` and `Child` call `setState` dur
 
 This is an implementation detail so avoid relying on it directly. In the future versions, React will batch updates by default in more cases.
 
-### Why doesn't React update `this.state` synchronously?
+### Why doesn't React update `this.state` synchronously? {#why-doesnt-react-update-thisstate-synchronously}
 
 As explained in the previous section, React intentionally "waits" until all components call `setState()` in their event handlers before starting to re-render. This boosts performance by avoiding unnecessary re-renders.
 
@@ -99,7 +99,7 @@ There are two main reasons:
 
 This [GitHub comment](https://github.com/facebook/react/issues/11527#issuecomment-360199710) dives deep into the specific examples.
 
-### Should I use a state management library like Redux or MobX?
+### Should I use a state management library like Redux or MobX? {#should-i-use-a-state-management-library-like-redux-or-mobx}
 
 [Maybe.](https://redux.js.org/faq/general#when-should-i-use-redux)
 
diff --git a/content/docs/faq-structure.md b/content/docs/faq-structure.md
index 018845a18b..4241a04dd1 100644
--- a/content/docs/faq-structure.md
+++ b/content/docs/faq-structure.md
@@ -6,11 +6,11 @@ layout: docs
 category: FAQ
 ---
 
-### Is there a recommended way to structure React projects?
+### Is there a recommended way to structure React projects? {#is-there-a-recommended-way-to-structure-react-projects}
 
 React doesn't have opinions on how you put files into folders. That said there are a few common approaches popular in the ecosystem you may want to consider.
 
-#### Grouping by features or routes
+#### Grouping by features or routes {#grouping-by-features-or-routes}
 
 One common way to structure projects is locate CSS, JS, and tests together inside folders grouped by feature or route.
 
@@ -37,7 +37,7 @@ profile/
 
 The definition of a "feature" is not universal, and it is up to you to choose the granularity. If you can't come up with a list of top-level folders, you can ask the users of your product what major parts it consists of, and use their mental model as a blueprint.
 
-#### Grouping by file type
+#### Grouping by file type {#grouping-by-file-type}
 
 Another popular way to structure projects is to group similar files together, for example:
 
@@ -61,11 +61,11 @@ components/
 
 Some people also prefer to go further, and separate components into different folders depending on their role in the application. For example, [Atomic Design](http://bradfrost.com/blog/post/atomic-web-design/) is a design methodology built on this principle. Remember that it's often more productive to treat such methodologies as helpful examples rather than strict rules to follow.
 
-#### Avoid too much nesting
+#### Avoid too much nesting {#avoid-too-much-nesting}
 
 There are many pain points associated with deep directory nesting in JavaScript projects. It becomes harder to write relative imports between them, or to update those imports when the files are moved. Unless you have a very compelling reason to use a deep folder structure, consider limiting yourself to a maximum of three or four nested folders within a single project. Of course, this is only a recommendation, and it may not be relevant to your project.
 
-#### Don't overthink it
+#### Don't overthink it {#dont-overthink-it}
 
 If you're just starting a project, [don't spend more than five minutes](https://en.wikipedia.org/wiki/Analysis_paralysis) on choosing a file structure. Pick any of the above approaches (or come up with your own) and start writing code! You'll likely want to rethink it anyway after you've written some real code.
 
diff --git a/content/docs/faq-styling.md b/content/docs/faq-styling.md
index 3079b14ad9..ddc955e3dd 100644
--- a/content/docs/faq-styling.md
+++ b/content/docs/faq-styling.md
@@ -6,7 +6,7 @@ layout: docs
 category: FAQ
 ---
 
-### How do I add CSS classes to components?
+### How do I add CSS classes to components? {#how-do-i-add-css-classes-to-components}
 
 Pass a string as the `className` prop:
 
@@ -32,20 +32,20 @@ render() {
 >
 >If you often find yourself writing code like this, [classnames](https://www.npmjs.com/package/classnames#usage-with-reactjs) package can simplify it.
 
-### Can I use inline styles?
+### Can I use inline styles? {#can-i-use-inline-styles}
 
 Yes, see the docs on styling [here](/docs/dom-elements.html#style).
 
-### Are inline styles bad?
+### Are inline styles bad? {#are-inline-styles-bad}
 
 CSS classes are generally better for performance than inline styles.
 
-### What is CSS-in-JS?
+### What is CSS-in-JS? {#what-is-css-in-js}
 
 "CSS-in-JS" refers to a pattern where CSS is composed using JavaScript instead of defined in external files. Read a comparison of CSS-in-JS libraries [here](https://github.com/MicheleBertoli/css-in-js).
 
 _Note that this functionality is not a part of React, but provided by third-party libraries._ React does not have an opinion about how styles are defined; if in doubt, a good starting point is to define your styles in a separate `*.css` file as usual and refer to them using [`className`](/docs/dom-elements.html#classname).
 
-### Can I do animations in React?
+### Can I do animations in React? {#can-i-do-animations-in-react}
 
 React can be used to power animations. See [React Transition Group](https://reactcommunity.org/react-transition-group/) and [React Motion](https://github.com/chenglou/react-motion), for example.
diff --git a/content/docs/faq-versioning.md b/content/docs/faq-versioning.md
index c284892240..b51ea48952 100644
--- a/content/docs/faq-versioning.md
+++ b/content/docs/faq-versioning.md
@@ -16,25 +16,25 @@ That means that with a version number **x.y.z**:
 
 Major releases can also contain new features, and any release can include bug fixes.
 
-### Breaking Changes
+### Breaking Changes {#breaking-changes}
 
 Breaking changes are inconvenient for everyone, so we try to minimize the number of major releases – for example, React 15 was released in April 2016 and React 16 was released in September 2017; React 17 isn't expected until 2019.
 
 Instead, we release new features in minor versions. That means that minor releases are often more interesting and compelling than majors, despite their unassuming name.
 
-### Commitment to Stability
+### Commitment to Stability {#commitment-to-stability}
 
 As we change React over time, we try to minimize the effort required to take advantage of new features. When possible, we'll keep an older API working, even if that means putting it in a separate package. For example, [mixins have been discouraged for years](/blog/2016/07/13/mixins-considered-harmful.html) but they're supported to this day [via create-react-class](/docs/react-without-es6.html#mixins) and many codebases continue to use them in stable, legacy code.
 
 Over a million developers use React, collectively maintaining millions of components. The Facebook codebase alone has over 50,000 React components. That means we need to make it as easy as possible to upgrade to new versions of React; if we make large changes without a migration path, people will be stuck on old versions. We test these upgrade paths on Facebook itself – if our team of less than 10 people can update 50,000+ components alone, we hope the upgrade will be manageable for anyone using React. In many cases, we write [automated scripts](https://github.com/reactjs/react-codemod) to upgrade component syntax, which we then include in the open-source release for everyone to use.
 
-### Gradual Upgrades via Warnings
+### Gradual Upgrades via Warnings {#gradual-upgrades-via-warnings}
 
 Development builds of React include many helpful warnings. Whenever possible, we add warnings in preparation for future breaking changes. That way, if your app has no warnings on the latest release, it will be compatible with the next major release. This allows you to upgrade your apps one component at a time.
 
 Development warnings won't affect the runtime behavior of your app. That way, you can feel confident that your app will behave the same way between the development and production builds -- the only differences are that the production build won't log the warnings and that it is more efficient. (If you ever notice otherwise, please file an issue.)
 
-### What Counts as a Breaking Change?
+### What Counts as a Breaking Change? {#what-counts-as-a-breaking-change}
 
 In general, we *don't* bump the major version number for changes to:
 
diff --git a/content/docs/forms.md b/content/docs/forms.md
index fee7f2bc48..1a8b599d55 100644
--- a/content/docs/forms.md
+++ b/content/docs/forms.md
@@ -23,7 +23,7 @@ HTML form elements work a little bit differently from other DOM elements in Reac
 
 This form has the default HTML form behavior of browsing to a new page when the user submits the form. If you want this behavior in React, it just works. But in most cases, it's convenient to have a JavaScript function that handles the submission of the form and has access to the data that the user entered into the form. The standard way to achieve this is with a technique called "controlled components".
 
-## Controlled Components
+## Controlled Components {#controlled-components}
 
 In HTML, form elements such as `<input>`, `<textarea>`, and `<select>` typically maintain their own state and update it based on user input. In React, mutable state is typically kept in the state property of components, and only updated with [`setState()`](/docs/react-component.html#setstate).
 
@@ -76,7 +76,7 @@ handleChange(event) {
 }
 ```
 
-## The textarea Tag
+## The textarea Tag {#the-textarea-tag}
 
 In HTML, a `<textarea>` element defines its text by its children:
 
@@ -125,7 +125,7 @@ class EssayForm extends React.Component {
 
 Notice that `this.state.value` is initialized in the constructor, so that the text area starts off with some text in it.
 
-## The select Tag
+## The select Tag {#the-select-tag}
 
 In HTML, `<select>` creates a drop-down list. For example, this HTML creates a drop-down list of flavors:
 
@@ -190,7 +190,7 @@ Overall, this makes it so that `<input type="text">`, `<textarea>`, and `<select
 ><select multiple={true} value={['B', 'C']}>
 >```
 
-## The file input Tag
+## The file input Tag {#the-file-input-tag}
 
 In HTML, an `<input type="file">` lets the user choose one or more files from their device storage to be uploaded to a server or manipulated by JavaScript via the [File API](https://developer.mozilla.org/en-US/docs/Web/API/File/Using_files_from_web_applications).
 
@@ -200,7 +200,7 @@ In HTML, an `<input type="file">` lets the user choose one or more files from th
 
 Because its value is read-only, it is an **uncontrolled** component in React. It is discussed together with other uncontrolled components [later in the documentation](/docs/uncontrolled-components.html#the-file-input-tag).
 
-## Handling Multiple Inputs
+## Handling Multiple Inputs {#handling-multiple-inputs}
 
 When you need to handle multiple controlled `input` elements, you can add a `name` attribute to each element and let the handler function choose what to do based on the value of `event.target.name`.
 
@@ -274,7 +274,7 @@ this.setState(partialState);
 
 Also, since `setState()` automatically [merges a partial state into the current state](/docs/state-and-lifecycle.html#state-updates-are-merged), we only needed to call it with the changed parts.
 
-## Controlled Input Null Value
+## Controlled Input Null Value {#controlled-input-null-value}
 
 Specifying the value prop on a [controlled component](/docs/forms.html#controlled-components) prevents the user from changing the input unless you desire so. If you've specified a `value` but the input is still editable, you may have accidentally set `value` to `undefined` or `null`.
 
@@ -289,10 +289,10 @@ setTimeout(function() {
 
 ```
 
-## Alternatives to Controlled Components
+## Alternatives to Controlled Components {#alternatives-to-controlled-components}
 
 It can sometimes be tedious to use controlled components, because you need to write an event handler for every way your data can change and pipe all of the input state through a React component. This can become particularly annoying when you are converting a preexisting codebase to React, or integrating a React application with a non-React library. In these situations, you might want to check out [uncontrolled components](/docs/uncontrolled-components.html), an alternative technique for implementing input forms.
 
-## Fully-Fledged Solutions
+## Fully-Fledged Solutions {#fully-fledged-solutions}
 
 If you're looking for a complete solution including validation, keeping track of the visited fields, and handling form submission, [Formik](https://jaredpalmer.com/formik) is one of the popular choices. However, it is built on the same principles of controlled components and managing state — so don't neglect to learn them.
diff --git a/content/docs/forwarding-refs.md b/content/docs/forwarding-refs.md
index 46891e27bd..3318d8499c 100644
--- a/content/docs/forwarding-refs.md
+++ b/content/docs/forwarding-refs.md
@@ -6,7 +6,7 @@ permalink: docs/forwarding-refs.html
 
 Ref forwarding is a technique for automatically passing a [ref](/docs/refs-and-the-dom.html) through a component to one of its children. This is typically not necessary for most components in the application. However, it can be useful for some kinds of components, especially in reusable component libraries. The most common scenarios are described below.
 
-## Forwarding refs to DOM components
+## Forwarding refs to DOM components {#forwarding-refs-to-dom-components}
 
 Consider a `FancyButton` component that renders the native `button` DOM element:
 `embed:forwarding-refs/fancy-button-simple.js`
@@ -37,13 +37,13 @@ Here is a step-by-step explanation of what happens in the above example:
 >
 >Ref forwarding is not limited to DOM components. You can forward refs to class component instances, too.
 
-## Note for component library maintainers
+## Note for component library maintainers {#note-for-component-library-maintainers}
 
 **When you start using `forwardRef` in a component library, you should treat it as a breaking change and release a new major version of your library.** This is because your library likely has an observably different behavior (such as what refs get assigned to, and what types are exported), and this can break apps and other libraries that depend on the old behavior.
 
 Conditionally applying `React.forwardRef` when it exists is also not recommended for the same reasons: it changes how your library behaves and can break your users' apps when they upgrade React itself.
 
-## Forwarding refs in higher-order components
+## Forwarding refs in higher-order components {#forwarding-refs-in-higher-order-components}
 
 This technique can also be particularly useful with [higher-order components](/docs/higher-order-components.html) (also known as HOCs). Let's start with an example HOC that logs component props to the console:
 `embed:forwarding-refs/log-props-before.js`
@@ -59,7 +59,7 @@ This means that refs intended for our `FancyButton` component will actually be a
 Fortunately, we can explicitly forward refs to the inner `FancyButton` component using the `React.forwardRef` API. `React.forwardRef` accepts a render function that receives `props` and `ref` parameters and returns a React node. For example:
 `embed:forwarding-refs/log-props-after.js`
 
-## Displaying a custom name in DevTools
+## Displaying a custom name in DevTools {#displaying-a-custom-name-in-devtools}
 
 `React.forwardRef` accepts a render function. React DevTools uses this function to determine what to display for the ref forwarding component.
 
diff --git a/content/docs/fragments.md b/content/docs/fragments.md
index 7c6f4fd6cd..04de0463bc 100644
--- a/content/docs/fragments.md
+++ b/content/docs/fragments.md
@@ -20,7 +20,7 @@ render() {
 
 There is also a new [short syntax](#short-syntax) for declaring them, but it isn't supported by all popular tools yet.
 
-## Motivation
+## Motivation {#motivation}
 
 A common pattern is for a component to return a list of children. Take this example React snippet:
 
@@ -68,7 +68,7 @@ results in a `<Table />` output of:
 
 Fragments solve this problem.
 
-## Usage
+## Usage {#usage}
 
 ```jsx{4,7}
 class Columns extends React.Component {
@@ -94,7 +94,7 @@ which results in a correct `<Table />` output of:
 </table>
 ```
 
-### Short Syntax
+### Short Syntax {#short-syntax}
 
 There is a new, shorter syntax you can use for declaring fragments. It looks like empty tags:
 
@@ -115,7 +115,7 @@ You can use `<></>` the same way you'd use any other element except that it does
 
 Note that **[many tools don't support it yet](/blog/2017/11/28/react-v16.2.0-fragment-support.html#support-for-fragment-syntax)** so you might want to explicitly write `<React.Fragment>` until the tooling catches up.
 
-### Keyed Fragments
+### Keyed Fragments {#keyed-fragments}
 
 Fragments declared with the explicit `<React.Fragment>` syntax may have keys. A use case for this is mapping a collection to an array of fragments -- for example, to create a description list:
 
@@ -137,6 +137,6 @@ function Glossary(props) {
 
 `key` is the only attribute that can be passed to `Fragment`. In the future, we may add support for additional attributes, such as event handlers.
 
-### Live Demo
+### Live Demo {#live-demo}
 
 You can try out the new JSX fragment syntax with this [CodePen](https://codepen.io/reactjs/pen/VrEbjE?editors=1000).
diff --git a/content/docs/getting-started.md b/content/docs/getting-started.md
index 8ad77b1ac0..5625bb3cdd 100644
--- a/content/docs/getting-started.md
+++ b/content/docs/getting-started.md
@@ -30,27 +30,27 @@ This page is an overview of the React documentation and related resources.
 - [Versioned Documentation](#versioned-documentation)
 - [Something Missing?](#something-missing)
 
-## Try React
+## Try React {#try-react}
 
 React has been designed from the start for gradual adoption, and **you can use as little or as much React as you need.** Whether you want to get a taste of React, add some interactivity to a simple HTML page, or start a complex React-powered app, the links in this section will help you get started.
 
-### Online Playgrounds
+### Online Playgrounds {#online-playgrounds}
 
 If you're interested in playing around with React, you can use an online code playground. Try a Hello World template on [CodePen](codepen://hello-world) or [CodeSandbox](https://codesandbox.io/s/new).
 
 If you prefer to use your own text editor, you can also [download this HTML file](https://raw.githubusercontent.com/reactjs/reactjs.org/master/static/html/single-file-example.html), edit it, and open it from the local filesystem in your browser. It does a slow runtime code transformation, so we'd only recommend using this for simple demos.
 
-### Add React to a Website
+### Add React to a Website {#add-react-to-a-website}
 
 You can [add React to an HTML page in one minute](/docs/add-react-to-a-website.html). You can then either gradually expand its presence, or keep it contained to a few dynamic widgets.
 
-### Create a New React App
+### Create a New React App {#create-a-new-react-app}
 
 When starting a React project, [a simple HTML page with script tags](/docs/add-react-to-a-website.html) might still be the best option. It only takes a minute to set up!
 
 As your application grows, you might want to consider a more integrated setup. There are [several JavaScript toolchains](/docs/create-a-new-react-app.html) we recommend for larger applications. Each of them can work with little to no configuration and lets you take full advantage of the rich React ecosystem.
 
-## Learn React
+## Learn React {#learn-react}
 
 People come to React from different backgrounds and with different learning styles. Whether you prefer a more theoretical or a practical approach, we hope you'll find this section helpful.
 
@@ -59,19 +59,19 @@ People come to React from different backgrounds and with different learning styl
 
 Like any unfamiliar technology, React does have a learning curve. With practice and some patience, you *will* get the hang of it.
 
-### First Examples
+### First Examples {#first-examples}
 
 The [React homepage](/) contains a few small React examples with a live editor. Even if you don't know anything about React yet, try changing their code and see how it affects the result.
 
-### React for Beginners
+### React for Beginners {#react-for-beginners}
 
 If you feel that the React documentation goes at a faster pace than you're comfortable with, check out [this overview of React by Tania Rascia](https://www.taniarascia.com/getting-started-with-react/). It introduces the most important React concepts in a detailed, beginner-friendly way. Once you're done, give the documentation another try!
 
-### React for Designers
+### React for Designers {#react-for-designers}
 
 If you're coming from a design background, [these resources](http://reactfordesigners.com/) are a great place to get started.
 
-### JavaScript Resources
+### JavaScript Resources {#javascript-resources}
 
 The React documentation assumes some familiarity with programming in the JavaScript language. You don't have to be an expert, but it's harder to learn both React and JavaScript at the same time.
 
@@ -81,35 +81,35 @@ We recommend going through [this JavaScript overview](https://developer.mozilla.
 >
 >Whenever you get confused by something in JavaScript, [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript) and [javascript.info](http://javascript.info/) are great websites to check. There are also [community support forums](/community/support.html) where you can ask for help.
 
-### Practical Tutorial
+### Practical Tutorial {#practical-tutorial}
 
 If you prefer to **learn by doing,** check out our [practical tutorial](/tutorial/tutorial.html). In this tutorial, we build a tic-tac-toe game in React. You might be tempted to skip it because you're not building games -- but give it a chance. The techniques you'll learn in the tutorial are fundamental to building *any* React apps, and mastering it will give you a much deeper understanding.
 
-### Step-by-Step Guide
+### Step-by-Step Guide {#step-by-step-guide}
 
 If you prefer to **learn concepts step by step,** our [guide to main concepts](/docs/hello-world.html) is the best place to start. Every next chapter in it builds on the knowledge introduced in the previous chapters so you won't miss anything as you go along.
 
-### Thinking in React
+### Thinking in React {#thinking-in-react}
 
 Many React users credit reading [Thinking in React](/docs/thinking-in-react.html) as the moment React finally "clicked" for them. It's probably the oldest React walkthrough but it's still just as relevant.
 
-### Recommended Courses
+### Recommended Courses {#recommended-courses}
 
 Sometimes people find third-party books and video courses more helpful than the official documentation. We maintain [a list of commonly recommended resources](/community/courses.html), some of which are free.
 
-### Advanced Concepts
+### Advanced Concepts {#advanced-concepts}
 
 Once you're comfortable with the [main concepts](#main-concepts) and played with React a little bit, you might be interested in more advanced topics. This section will introduce you to the powerful, but less commonly used React features like [context](/docs/context.html) and [refs](/docs/refs-and-the-dom.html).
 
-### API Reference
+### API Reference {#api-reference}
 
 This documentation section is useful when you want to learn more details about a particular React API. For example, [`React.Component` API reference](/docs/react-component.html) can provide you with details on how `setState()` works, and what different lifecycle methods are useful for.
 
-### Glossary and FAQ
+### Glossary and FAQ {#glossary-and-faq}
 
 The [glossary](/docs/glossary.html) contains an overview of the most common terms you'll see in the React documentation. There is also a FAQ section dedicated to short questions and answers about common topics, including [making AJAX requests](/docs/faq-ajax.html), [component state](/docs/faq-state.html), and [file structure](/docs/faq-structure.html).
 
-## Staying Informed
+## Staying Informed {#staying-informed}
 
 The [React blog](/blog/) is the official source for the updates from the React team. Anything important, including release notes or deprecation notices, will be posted there first.
 
@@ -117,10 +117,10 @@ You can also follow the [@reactjs account](https://twitter.com/reactjs) on Twitt
 
 Not every React release deserves its own blog post, but you can find a detailed changelog for every release [in the `CHANGELOG.md` file in the React repository](https://github.com/facebook/react/blob/master/CHANGELOG.md), as well as on the [Releases](https://github.com/facebook/react) page.
 
-## Versioned Documentation
+## Versioned Documentation {#versioned-documentation}
 
 This documentation always reflects the latest stable version of React. Since React 16, you can find older versions of the documentation [on a separate page](/versions). Note that documentation for past versions is snapshotted at the time of the release, and isn't being continuously updated.
 
-## Something Missing?
+## Something Missing? {#something-missing}
 
 If something is missing in the documentation or if you found some part confusing, please [file an issue for the documentation repository](https://github.com/reactjs/reactjs.org/issues/new) with your suggestions for improvement, or tweet at the [@reactjs account](https://twitter.com/reactjs). We love hearing from you!
diff --git a/content/docs/handling-events.md b/content/docs/handling-events.md
index 1f93772cea..a8d3a1f517 100644
--- a/content/docs/handling-events.md
+++ b/content/docs/handling-events.md
@@ -140,7 +140,7 @@ class LoggingButton extends React.Component {
 
 The problem with this syntax is that a different callback is created each time the `LoggingButton` renders. In most cases, this is fine. However, if this callback is passed as a prop to lower components, those components might do an extra re-rendering. We generally recommend binding in the constructor or using the class fields syntax, to avoid this sort of performance problem.
 
-## Passing Arguments to Event Handlers
+## Passing Arguments to Event Handlers {#passing-arguments-to-event-handlers}
 
 Inside a loop it is common to want to pass an extra parameter to an event handler. For example, if `id` is the row ID, either of the following would work:
 
diff --git a/content/docs/hello-world.md b/content/docs/hello-world.md
index 25b644dbf3..2fff802540 100644
--- a/content/docs/hello-world.md
+++ b/content/docs/hello-world.md
@@ -22,7 +22,7 @@ It displays a heading saying "Hello, world!" on the page.
 Click the link above to open an online editor. Feel free to make some changes, and see how they affect the output. Most pages in this guide will have editable examples like this one.
 
 
-## How to Read This Guide
+## How to Read This Guide {#how-to-read-this-guide}
 
 In this guide, we will examine the building blocks of React apps: elements and components. Once you master them, you can create complex apps from small reusable pieces.
 
@@ -34,7 +34,7 @@ This is the first chapter in a step-by-step guide about main React concepts. You
 
 Every chapter in this guide builds on the knowledge introduced in earlier chapters. **You can learn most of React by reading the “Main Concepts” guide chapters in the order they appear in the sidebar.** For example, [“Introducing JSX”](/docs/introducing-jsx.html) is the next chapter after this one.
 
-## Knowledge Level Assumptions
+## Knowledge Level Assumptions {#knowledge-level-assumptions}
 
 React is a JavaScript library, and so we'll assume you have a basic understanding of the JavaScript language. **If you don't feel very confident, we recommend [going through a JavaScript tutorial](https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript) to check your knowledge level** and enable you to follow along this guide without getting lost. It might take you between 30 minutes and an hour, but as a result you won't have to feel like you're learning both React and JavaScript at the same time.
 
@@ -43,7 +43,7 @@ React is a JavaScript library, and so we'll assume you have a basic understandin
 >This guide occasionally uses some of the newer JavaScript syntax in the examples. If you haven't worked with JavaScript in the last few years, [these three points](https://gist.github.com/gaearon/683e676101005de0add59e8bb345340c) should get you most of the way.
 
 
-## Let's Get Started!
+## Let's Get Started! {#lets-get-started}
 
 Keep scrolling down, and you'll find the link to the [next chapter of this guide](/docs/introducing-jsx.html) right before the website footer.
 
diff --git a/content/docs/higher-order-components.md b/content/docs/higher-order-components.md
index 451e288506..63da3ef861 100644
--- a/content/docs/higher-order-components.md
+++ b/content/docs/higher-order-components.md
@@ -18,7 +18,7 @@ HOCs are common in third-party React libraries, such as Redux's [`connect`](http
 
 In this document, we'll discuss why higher-order components are useful, and how to write your own.
 
-## Use HOCs For Cross-Cutting Concerns
+## Use HOCs For Cross-Cutting Concerns {#use-hocs-for-cross-cutting-concerns}
 
 > **Note**
 >
@@ -171,7 +171,7 @@ Because `withSubscription` is a normal function, you can add as many or as few a
 
 Like components, the contract between `withSubscription` and the wrapped component is entirely props-based. This makes it easy to swap one HOC for a different one, as long as they provide the same props to the wrapped component. This may be useful if you change data-fetching libraries, for example.
 
-## Don't Mutate the Original Component. Use Composition.
+## Don't Mutate the Original Component. Use Composition. {#dont-mutate-the-original-component-use-composition}
 
 Resist the temptation to modify a component's prototype (or otherwise mutate it) inside a HOC.
 
@@ -215,7 +215,7 @@ This HOC has the same functionality as the mutating version while avoiding the p
 
 You may have noticed similarities between HOCs and a pattern called **container components**. Container components are part of a strategy of separating responsibility between high-level and low-level concerns. Containers manage things like subscriptions and state, and pass props to components that handle things like rendering UI. HOCs use containers as part of their implementation. You can think of HOCs as parameterized container component definitions.
 
-## Convention: Pass Unrelated Props Through to the Wrapped Component
+## Convention: Pass Unrelated Props Through to the Wrapped Component {#convention-pass-unrelated-props-through-to-the-wrapped-component}
 
 HOCs add features to a component. They shouldn't drastically alter its contract. It's expected that the component returned from a HOC has a similar interface to the wrapped component.
 
@@ -243,7 +243,7 @@ render() {
 
 This convention helps ensure that HOCs are as flexible and reusable as possible.
 
-## Convention: Maximizing Composability
+## Convention: Maximizing Composability {#convention-maximizing-composability}
 
 Not all HOCs look the same. Sometimes they accept only a single argument, the wrapped component:
 
@@ -295,7 +295,7 @@ const EnhancedComponent = enhance(WrappedComponent)
 
 The `compose` utility function is provided by many third-party libraries including lodash (as [`lodash.flowRight`](https://lodash.com/docs/#flowRight)), [Redux](http://redux.js.org/docs/api/compose.html), and [Ramda](http://ramdajs.com/docs/#compose).
 
-## Convention: Wrap the Display Name for Easy Debugging
+## Convention: Wrap the Display Name for Easy Debugging {#convention-wrap-the-display-name-for-easy-debugging}
 
 The container components created by HOCs show up in the [React Developer Tools](https://github.com/facebook/react-devtools) like any other component. To ease debugging, choose a display name that communicates that it's the result of a HOC.
 
@@ -314,11 +314,11 @@ function getDisplayName(WrappedComponent) {
 ```
 
 
-## Caveats
+## Caveats {#caveats}
 
 Higher-order components come with a few caveats that aren't immediately obvious if you're new to React.
 
-### Don't Use HOCs Inside the render Method
+### Don't Use HOCs Inside the render Method {#dont-use-hocs-inside-the-render-method}
 
 React's diffing algorithm (called reconciliation) uses component identity to determine whether it should update the existing subtree or throw it away and mount a new one. If the component returned from `render` is identical (`===`) to the component from the previous render, React recursively updates the subtree by diffing it with the new one. If they're not equal, the previous subtree is unmounted completely.
 
@@ -340,7 +340,7 @@ Instead, apply HOCs outside the component definition so that the resulting compo
 
 In those rare cases where you need to apply a HOC dynamically, you can also do it inside a component's lifecycle methods or its constructor.
 
-### Static Methods Must Be Copied Over
+### Static Methods Must Be Copied Over {#static-methods-must-be-copied-over}
 
 Sometimes it's useful to define a static method on a React component. For example, Relay containers expose a static method `getFragment` to facilitate the composition of GraphQL fragments.
 
@@ -392,7 +392,7 @@ export { someFunction };
 import MyComponent, { someFunction } from './MyComponent.js';
 ```
 
-### Refs Aren't Passed Through
+### Refs Aren't Passed Through {#refs-arent-passed-through}
 
 While the convention for higher-order components is to pass through all props to the wrapped component, this does not work for refs. That's because `ref` is not really a prop — like `key`, it's handled specially by React. If you add a ref to an element whose component is the result of a HOC, the ref refers to an instance of the outermost container component, not the wrapped component.
 
diff --git a/content/docs/hooks-custom.md b/content/docs/hooks-custom.md
index dbc0459e55..ac9dad6daa 100644
--- a/content/docs/hooks-custom.md
+++ b/content/docs/hooks-custom.md
@@ -67,7 +67,7 @@ Instead, we'd like to share this logic between `FriendStatus` and `FriendListIte
 
 Traditionally in React, we've had two popular ways to share stateful logic between components: [render props](/docs/render-props.html) and [higher-order components](/docs/higher-order-components.html). We will now look at how Hooks solve many of the same problems without forcing you to add more components to the tree.
 
-## Extracting a Custom Hook
+## Extracting a Custom Hook {#extracting-a-custom-hook}
 
 When we want to share logic between two JavaScript functions, we extract it to a third function. Both components and Hooks are functions, so this works for them too!
 
@@ -112,7 +112,7 @@ function useFriendStatus(friendID) {
 
 Now let's see how we can use our custom Hook.
 
-## Using a Custom Hook
+## Using a Custom Hook {#using-a-custom-hook}
 
 In the beginning, our stated goal was to remove the duplicated logic from the `FriendStatus` and `FriendListItem` components. Both of them want to know whether a friend is online.
 
@@ -149,7 +149,7 @@ function FriendListItem(props) {
 
 **How does a custom Hook get isolated state?** Each *call* to a Hook gets isolated state. Because we call `useFriendStatus` directly, from React's point of view our component just calls `useState` and `useEffect`. And as we [learned](/docs/hooks-state.html#tip-using-multiple-state-variables) [earlier](/docs/hooks-effect.html#tip-use-multiple-effects-to-separate-concerns), we can call `useState` and `useEffect` many times in one component, and they will be completely independent.
 
-### Tip: Pass Information Between Hooks
+### Tip: Pass Information Between Hooks {#tip-pass-information-between-hooks}
 
 Since Hooks are functions, we can pass information between them.
 
@@ -195,7 +195,7 @@ Because the `useState` Hook call gives us the latest value of the `recipientID`
 
 This lets us know whether the *currently selected* friend is online. If we pick a different friend and update the `recipientID` state variable, our `useFriendStatus` Hook will unsubscribe from the previously selected friend, and subscribe to the status of the newly selected one.
 
-## `useYourImagination()`
+## `useYourImagination()` {#useyourimagination}
 
 Custom Hooks offer the flexibility of sharing logic that wasn't possible in React components before. You can write custom Hooks that cover a wide range of use cases like form handling, animation, declarative subscriptions, timers, and probably many more we haven't considered. What's more, you can build Hooks that are just as easy to use as React's built-in features.
 
diff --git a/content/docs/hooks-effect.md b/content/docs/hooks-effect.md
index b40167ec06..64b32476ef 100644
--- a/content/docs/hooks-effect.md
+++ b/content/docs/hooks-effect.md
@@ -43,11 +43,11 @@ Data fetching, setting up a subscription, and manually changing the DOM in React
 
 There are two common kinds of side effects in React components: those that don't require cleanup, and those that do. Let's look at this distinction in more detail.
 
-## Effects Without Cleanup
+## Effects Without Cleanup {#effects-without-cleanup}
 
 Sometimes, we want to **run some additional code after React has updated the DOM.** Network requests, manual DOM mutations, and logging are common examples of effects that don't require a cleanup. We say that because we can run them and immediately forget about them. Let's compare how classes and Hooks let us express such side effects.
 
-### Example Using Classes
+### Example Using Classes {#example-using-classes}
 
 In React class components, the `render` method itself shouldn't cause side effects. It would be too early -- we typically want to perform our effects *after* React has updated the DOM.
 
@@ -89,7 +89,7 @@ This is because in many cases we want to perform the same side effect regardless
 
 Now let's see how we can do the same with the `useEffect` Hook.
 
-### Example Using Hooks
+### Example Using Hooks {#example-using-hooks}
 
 We've already seen this example at the top of this page, but let's take a closer look at it:
 
@@ -120,7 +120,7 @@ function Example() {
 
 **Does `useEffect` run after every render?** Yes! By default, it runs both after the first render *and* after every update. (We will later talk about [how to customize this](#tip-optimizing-performance-by-skipping-effects).) Instead of thinking in terms of "mounting" and "updating", you might find it easier to think that effects happen "after render". React guarantees the DOM has been updated by the time it runs the effects.
 
-### Detailed Explanation
+### Detailed Explanation {#detailed-explanation}
 
 Now that we know more about effects, these lines should make sense:
 
@@ -141,11 +141,11 @@ Experienced JavaScript developers might notice that the function passed to `useE
 >
 >Unlike `componentDidMount` or `componentDidUpdate`, effects scheduled with `useEffect` don't block the browser from updating the screen. This makes your app feel more responsive. The majority of effects don't need to happen synchronously. In the uncommon cases where they do (such as measuring the layout), there is a separate [`useLayoutEffect`](/docs/hooks-reference.html#uselayouteffect) Hook with an API identical to `useEffect`.
 
-## Effects with Cleanup
+## Effects with Cleanup {#effects-with-cleanup}
 
 Earlier, we looked at how to express side effects that don't require any cleanup. However, some effects do. For example, **we might want to set up a subscription** to some external data source. In that case, it is important to clean up so that we don't introduce a memory leak! Let's compare how we can do it with classes and with Hooks.
 
-### Example Using Classes
+### Example Using Classes {#example-using-classes-1}
 
 In a React class, you would typically set up a subscription in `componentDidMount`, and clean it up in `componentWillUnmount`. For example, let's say we have a `ChatAPI` module that lets us subscribe to a friend's online status. Here's how we might subscribe and display that status using a class:
 
@@ -192,7 +192,7 @@ Notice how `componentDidMount` and `componentWillUnmount` need to mirror each ot
 >
 >Eagle-eyed readers may notice that this example also needs a `componentDidUpdate` method to be fully correct. We'll ignore this for now but will come back to it in a [later section](#explanation-why-effects-run-on-each-update) of this page.
 
-### Example Using Hooks
+### Example Using Hooks {#example-using-hooks-1}
 
 Let's see how we could write this component with Hooks.
 
@@ -231,7 +231,7 @@ function FriendStatus(props) {
 >
 >We don't have to return a named function from the effect. We called it `cleanup` here to clarify its purpose, but you could return an arrow function or call it something different.
 
-## Recap
+## Recap {#recap}
 
 We've learned that `useEffect` lets us express different kinds of side effects after a component renders. Some effects might require cleanup so they return a function:
 
@@ -260,11 +260,11 @@ The Effect Hook unifies both use cases with a single API.
 
 -------------
 
-## Tips for Using Effects
+## Tips for Using Effects {#tips-for-using-effects}
 
 We'll continue this page with an in-depth look at some aspects of `useEffect` that experienced React users will likely be curious about. Don't feel obligated to dig into them now. You can always come back to this page to learn more details about the Effect Hook.
 
-### Tip: Use Multiple Effects to Separate Concerns
+### Tip: Use Multiple Effects to Separate Concerns {#tip-use-multiple-effects-to-separate-concerns}
 
 One of the problems we outlined in the [Motivation](/docs/hooks-intro.html#complex-components-become-hard-to-understand) for Hooks is that class lifecycle methods often contain unrelated logic, but related logic gets broken up into several methods. Here is a component that combines the counter and the friend status indicator logic from the previous examples:
 
@@ -331,7 +331,7 @@ function FriendStatusWithCounter(props) {
 
 **Hooks lets us split the code based on what it is doing** rather than a lifecycle method name. React will apply *every* effect used by the component, in the order they were specified.
 
-### Explanation: Why Effects Run on Each Update
+### Explanation: Why Effects Run on Each Update {#explanation-why-effects-run-on-each-update}
 
 If you're used to classes, you might be wondering why the effect cleanup phase happens after every re-render, and not just once during unmounting. Let's look at a practical example to see why this design helps us create components with fewer bugs.
 
@@ -423,7 +423,7 @@ ChatAPI.unsubscribeFromFriendStatus(300, handleStatusChange); // Clean up last e
 
 This behavior ensures consistency by default and prevents bugs that are common in class components due to missing update logic.
 
-### Tip: Optimizing Performance by Skipping Effects
+### Tip: Optimizing Performance by Skipping Effects {#tip-optimizing-performance-by-skipping-effects}
 
 In some cases, cleaning up or applying the effect after every render might create a performance problem. In class components, we can solve this by writing an extra comparison with `prevProps` or `prevState` inside `componentDidUpdate`:
 
@@ -466,7 +466,7 @@ In the future, the second argument might get added automatically by a build-time
 >
 >If you want to run an effect and clean it up only once (on mount and unmount), you can pass an empty array (`[]`) as a second argument. This tells React that your effect doesn't depend on *any* values from props or state, so it never needs to re-run. This isn't handled as a special case -- it follows directly from how the inputs array always works. While passing `[]` is closer to the familiar `componentDidMount` and `componentWillUnmount` mental model, we suggest not making it a habit because it often leads to bugs, [as discussed above](#explanation-why-effects-run-on-each-update). Don't forget that React defers running `useEffect` until after the browser has painted, so doing extra work is less of a problem.
 
-## Next Steps
+## Next Steps {#next-steps}
 
 Congratulations! This was a long page, but hopefully by the end most of your questions about effects were answered. You've learned both the State Hook and the Effect Hook, and there is a *lot* you can do with both of them combined. They cover most of the use cases for classes -- and where they don't, you might find the [additional Hooks](/docs/hooks-reference.html) helpful.
 
diff --git a/content/docs/hooks-faq.md b/content/docs/hooks-faq.md
index 30c5e681ca..0459bd51c8 100644
--- a/content/docs/hooks-faq.md
+++ b/content/docs/hooks-faq.md
@@ -52,9 +52,9 @@ This page answers some of the frequently asked questions about [Hooks](/docs/hoo
   * [How does React associate Hook calls with components?](#how-does-react-associate-hook-calls-with-components)
   * [What is the prior art for Hooks?](#what-is-the-prior-art-for-hooks)
 
-## Adoption Strategy
+## Adoption Strategy {#adoption-strategy}
 
-### Which versions of React include Hooks?
+### Which versions of React include Hooks? {#which-versions-of-react-include-hooks}
 
 Starting with 16.8.0, React includes a stable implementation of React Hooks for:
 
@@ -67,49 +67,49 @@ Note that **to enable Hooks, all React packages need to be 16.8.0 or higher**. H
 
 React Native will fully support Hooks in its next stable release.
 
-### Do I need to rewrite all my class components?
+### Do I need to rewrite all my class components? {#do-i-need-to-rewrite-all-my-class-components}
 
 No. There are [no plans](/docs/hooks-intro.html#gradual-adoption-strategy) to remove classes from React -- we all need to keep shipping products and can't afford rewrites. We recommend trying Hooks in new code.
 
-### What can I do with Hooks that I couldn't with classes?
+### What can I do with Hooks that I couldn't with classes? {#what-can-i-do-with-hooks-that-i-couldnt-with-classes}
 
 Hooks offer a powerful and expressive new way to reuse functionality between components. ["Building Your Own Hooks"](/docs/hooks-custom.html) provides a glimpse of what's possible. [This article](https://medium.com/@dan_abramov/making-sense-of-react-hooks-fdbde8803889) by a React core team member dives deeper into the new capabilities unlocked by Hooks.
 
-### How much of my React knowledge stays relevant?
+### How much of my React knowledge stays relevant? {#how-much-of-my-react-knowledge-stays-relevant}
 
 Hooks are a more direct way to use the React features you already know -- such as state, lifecycle, context, and refs. They don't fundamentally change how React works, and your knowledge of components, props, and top-down data flow is just as relevant.
 
 Hooks do have a learning curve of their own. If there's something missing in this documentation, [raise an issue](https://github.com/reactjs/reactjs.org/issues/new) and we'll try to help.
 
-### Should I use Hooks, classes, or a mix of both?
+### Should I use Hooks, classes, or a mix of both? {#should-i-use-hooks-classes-or-a-mix-of-both}
 
 When you're ready, we'd encourage you to start trying Hooks in new components you write. Make sure everyone on your team is on board with using them and familiar with this documentation. We don't recommend rewriting your existing classes to Hooks unless you planned to rewrite them anyway (e.g. to fix bugs).
 
 You can't use Hooks *inside* of a class component, but you can definitely mix classes and function components with Hooks in a single tree. Whether a component is a class or a function that uses Hooks is an implementation detail of that component. In the longer term, we expect Hooks to be the primary way people write React components.
 
-### Do Hooks cover all use cases for classes?
+### Do Hooks cover all use cases for classes? {#do-hooks-cover-all-use-cases-for-classes}
 
 Our goal is for Hooks to cover all use cases for classes as soon as possible. There are no Hook equivalents to the uncommon `getSnapshotBeforeUpdate` and `componentDidCatch` lifecycles yet, but we plan to add them soon.
 
 It is an early time for Hooks, and some third-party libraries might not be compatible with Hooks at the moment.
 
-### Do Hooks replace render props and higher-order components?
+### Do Hooks replace render props and higher-order components? {#do-hooks-replace-render-props-and-higher-order-components}
 
 Often, render props and higher-order components render only a single child. We think Hooks are a simpler way to serve this use case. There is still a place for both patterns (for example, a virtual scroller component might have a `renderItem` prop, or a visual container component might have its own DOM structure). But in most cases, Hooks will be sufficient and can help reduce nesting in your tree.
 
-### What do Hooks mean for popular APIs like Redux `connect()` and React Router?
+### What do Hooks mean for popular APIs like Redux `connect()` and React Router? {#what-do-hooks-mean-for-popular-apis-like-redux-connect-and-react-router}
 
 You can continue to use the exact same APIs as you always have; they'll continue to work.
 
 In the future, new versions of these libraries might also export custom Hooks such as `useRedux()` or `useRouter()` that let you use the same features without needing wrapper components.
 
-### Do Hooks work with static typing?
+### Do Hooks work with static typing? {#do-hooks-work-with-static-typing}
 
 Hooks were designed with static typing in mind. Because they're functions, they are easier to type correctly than patterns like higher-order components. The latest Flow and TypeScript React definitions include support for React Hooks.
 
 Importantly, custom Hooks give you the power to constrain React API if you'd like to type them more strictly in some way. React gives you the primitives, but you can combine them in different ways than what we provide out of the box.
 
-### How to test components that use Hooks?
+### How to test components that use Hooks? {#how-to-test-components-that-use-hooks}
 
 From React's point of view, a component using Hooks is just a regular component. If your testing solution doesn't rely on React internals, testing components with Hooks shouldn't be different from how you normally test components.
 
@@ -177,7 +177,7 @@ If you need to test a custom Hook, you can do so by creating a component in your
 
 To reduce the boilerplate, we recommend using [`react-testing-library`](https://git.io/react-testing-library) which is designed to encourage writing tests that use your components as the end users do.
 
-### What exactly do the [lint rules](https://www.npmjs.com/package/eslint-plugin-react-hooks) enforce?
+### What exactly do the [lint rules](https://www.npmjs.com/package/eslint-plugin-react-hooks) enforce? {#what-exactly-do-the-lint-ruleshttpswwwnpmjscompackageeslint-plugin-react-hooks-enforce}
 
 We provide an [ESLint plugin](https://www.npmjs.com/package/eslint-plugin-react-hooks) that enforces [rules of Hooks](/docs/hooks-rules.html) to avoid bugs. It assumes that any function starting with "`use`" and a capital letter right after it is a Hook. We recognize this heuristic isn't perfect and there may be some false positives, but without an ecosystem-wide convention there is just no way to make Hooks work well -- and longer names will discourage people from either adopting Hooks or following the convention.
 
@@ -188,9 +188,9 @@ In particular, the rule enforces that:
 
 There are a few more heuristics, and they might change over time as we fine-tune the rule to balance finding bugs with avoiding false positives.
 
-## From Classes to Hooks
+## From Classes to Hooks {#from-classes-to-hooks}
 
-### How do lifecycle methods correspond to Hooks?
+### How do lifecycle methods correspond to Hooks? {#how-do-lifecycle-methods-correspond-to-hooks}
 
 * `constructor`: Function components don't need a constructor. You can initialize the state in the [`useState`](/docs/hooks-reference.html#usestate) call. If computing it is expensive, you can pass a function to `useState`.
 
@@ -204,7 +204,7 @@ There are a few more heuristics, and they might change over time as we fine-tune
 
 * `componentDidCatch` and `getDerivedStateFromError`: There are no Hook equivalents for these methods yet, but they will be added soon.
 
-### Is there something like instance variables?
+### Is there something like instance variables? {#is-there-something-like-instance-variables}
 
 Yes! The [`useRef()`](/docs/hooks-reference.html#useref) Hook isn't just for DOM refs. The "ref" object is a generic container whose `current` property is mutable and can hold any value, similar to an instance property on a class.
 
@@ -240,7 +240,7 @@ If we just wanted to set an interval, we wouldn't need the ref (`id` could be lo
 
 Conceptually, you can think of refs as similar to instance variables in a class. Unless you're doing [lazy initialization](#how-to-create-expensive-objects-lazily), avoid setting refs during rendering -- this can lead to surprising behavior. Instead, typically you want to modify refs in event handlers and effects.
 
-### Should I use one or many state variables?
+### Should I use one or many state variables? {#should-i-use-one-or-many-state-variables}
 
 If you're coming from classes, you might be tempted to always call `useState()` once and put all state into a single object. You can do it if you'd like. Here is an example of a component that follows the mouse movement. We keep its position and size in the local state:
 
@@ -307,11 +307,11 @@ Note how we were able to move the `useState` call for the `position` state varia
 
 Both putting all state in a single `useState` call, and having a `useState` call per each field can work. Components tend to be most readable when you find a balance between these two extremes, and group related state into a few independent state variables. If the state logic becomes complex, we recommend [managing it with a reducer](/docs/hooks-reference.html#usereducer) or a custom Hook.
 
-### Can I run an effect only on updates?
+### Can I run an effect only on updates? {#can-i-run-an-effect-only-on-updates}
 
 This is a rare use case. If you need it, you can [use a mutable ref](#is-there-something-like-instance-variables) to manually store a boolean value corresponding to whether you are on the first or a subsequent render, then check that flag in your effect. (If you find yourself doing this often, you could create a custom Hook for it.)
 
-### How to get the previous props or state?
+### How to get the previous props or state? {#how-to-get-the-previous-props-or-state}
 
 Currently, you can do it manually [with a ref](#is-there-something-like-instance-variables):
 
diff --git a/content/docs/hooks-intro.md b/content/docs/hooks-intro.md
index d0a4ef6acc..b4cefcfbeb 100644
--- a/content/docs/hooks-intro.md
+++ b/content/docs/hooks-intro.md
@@ -33,7 +33,7 @@ This new function `useState` is the first "Hook" we'll learn about, but this exa
 >
 >React 16.8.0 is the first release to support Hooks. When upgrading, don't forget to update all packages, including React DOM. React Native will support Hooks in the next stable release.
 
-## Video Introduction
+## Video Introduction {#video-introduction}
 
 At React Conf 2018, Sophie Alpert and Dan Abramov introduced Hooks, followed by Ryan Florence demonstrating how to refactor an application to use them. Watch the video here:
 
@@ -41,7 +41,7 @@ At React Conf 2018, Sophie Alpert and Dan Abramov introduced Hooks, followed by
 
 <iframe width="650" height="366" src="//www.youtube.com/embed/dpw9EHDh2bM" frameborder="0" allowfullscreen></iframe>
 
-## No Breaking Changes
+## No Breaking Changes {#no-breaking-changes}
 
 Before we continue, note that Hooks are:
 
@@ -55,11 +55,11 @@ Before we continue, note that Hooks are:
 
 **If you just want to start learning Hooks, feel free to [jump directly to the next page!](/docs/hooks-overview.html)** You can also keep reading this page to learn more about why we're adding Hooks, and how we're going to start using them without rewriting our applications.
 
-## Motivation
+## Motivation {#motivation}
 
 Hooks solve a wide variety of seemingly unconnected problems in React that we've encountered over five years of writing and maintaining tens of thousands of components. Whether you're learning React, use it daily, or even prefer a different library with a similar component model, you might recognize some of these problems.
 
-### It's hard to reuse stateful logic between components
+### It's hard to reuse stateful logic between components {#its-hard-to-reuse-stateful-logic-between-components}
 
 React doesn't offer a way to "attach" reusable behavior to a component (for example, connecting it to a store). If you've worked with React for a while, you may be familiar with patterns like [render props](/docs/render-props.html) and [higher-order components](/docs/higher-order-components.html) that try to solve this. But these patterns require you to restructure your components when you use them, which can be cumbersome and make code harder to follow. If you look at a typical React application in React DevTools, you will likely find a "wrapper hell" of components surrounded by layers of providers, consumers, higher-order components, render props, and other abstractions. While we could [filter them out in DevTools](https://github.com/facebook/react-devtools/pull/503), this points to a deeper underlying problem: React needs a better primitive for sharing stateful logic.
 
@@ -67,7 +67,7 @@ With Hooks, you can extract stateful logic from a component so it can be tested
 
 We'll discuss this more in [Building Your Own Hooks](/docs/hooks-custom.html).
 
-### Complex components become hard to understand
+### Complex components become hard to understand {#complex-components-become-hard-to-understand}
 
 We've often had to maintain components that started out simple but grew into an unmanageable mess of stateful logic and side effects. Each lifecycle method often contains a mix of unrelated logic. For example, components might perform some data fetching in `componentDidMount` and `componentDidUpdate`. However, the same `componentDidMount` method might also contain some unrelated logic that sets up event listeners, with cleanup performed in `componentWillUnmount`. Mutually related code that changes together gets split apart, but completely unrelated code ends up combined in a single method. This makes it too easy to introduce bugs and inconsistencies.
 
@@ -77,7 +77,7 @@ To solve this, **Hooks let you split one component into smaller functions based
 
 We'll discuss this more in [Using the Effect Hook](/docs/hooks-effect.html#tip-use-multiple-effects-to-separate-concerns).
 
-### Classes confuse both people and machines
+### Classes confuse both people and machines {#classes-confuse-both-people-and-machines}
 
 In addition to making code reuse and code organization more difficult, we've found that classes can be a large barrier to learning React. You have to understand how `this` works in JavaScript, which is very different from how it works in most languages. You have to remember to bind the event handlers. Without unstable [syntax proposals](https://babeljs.io/docs/en/babel-plugin-transform-class-properties/), the code is very verbose. People can understand props, state, and top-down data flow perfectly well but still struggle with classes. The distinction between function and class components in React and when to use each one leads to disagreements even between experienced React developers.
 
@@ -89,7 +89,7 @@ To solve these problems, **Hooks let you use more of React's features without cl
 >
 >[Hooks at a Glance](/docs/hooks-overview.html) is a good place to start learning Hooks.
 
-## Gradual Adoption Strategy
+## Gradual Adoption Strategy {#gradual-adoption-strategy}
 
 >**TLDR: There are no plans to remove classes from React.**
 
@@ -103,10 +103,10 @@ Finally, there is no rush to migrate to Hooks. We recommend avoiding any "big re
 
 We intend for Hooks to cover all existing use cases for classes, but **we will keep supporting class components for the foreseeable future.** At Facebook, we have tens of thousands of components written as classes, and we have absolutely no plans to rewrite them. Instead, we are starting to use Hooks in the new code side by side with classes.
 
-## Frequently Asked Questions
+## Frequently Asked Questions {#frequently-asked-questions}
 
 We've prepared a [Hooks FAQ page](/docs/hooks-faq.html) that answers the most common questions about Hooks.
 
-## Next Steps
+## Next Steps {#next-steps}
 
 By the end of this page, you should have a rough idea of what problems Hooks are solving, but many details are probably unclear. Don't worry! **Let's now go to [the next page](/docs/hooks-overview.html) where we start learning about Hooks by example.**
diff --git a/content/docs/hooks-overview.md b/content/docs/hooks-overview.md
index 013f792ca8..fef7de00b3 100644
--- a/content/docs/hooks-overview.md
+++ b/content/docs/hooks-overview.md
@@ -16,7 +16,7 @@ Hooks are [backwards-compatible](/docs/hooks-intro.html#no-breaking-changes). Th
 
 **↑↑↑ Each section ends with a yellow box like this.** They link to detailed explanations.
 
-## 📌 State Hook
+## 📌 State Hook {#-state-hook}
 
 This example renders a counter. When you click the button, it increments the value:
 
@@ -42,7 +42,7 @@ Here, `useState` is a *Hook* (we'll talk about what this means in a moment). We
 
 The only argument to `useState` is the initial state. In the example above, it is `0` because our counter starts from zero. Note that unlike `this.state`, the state here doesn't have to be an object -- although it can be if you want. The initial state argument is only used during the first render.
 
-#### Declaring multiple state variables
+#### Declaring multiple state variables {#declaring-multiple-state-variables}
 
 You can use the State Hook more than once in a single component:
 
@@ -58,7 +58,7 @@ function ExampleWithManyStates() {
 
 The [array destructuring](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Array_destructuring) syntax lets us give different names to the state variables we declared by calling `useState`. These names aren't a part of the `useState` API. Instead, React assumes that if you call `useState` many times, you do it in the same order during every render. We'll come back to why this works and when this is useful later.
 
-#### But what is a Hook?
+#### But what is a Hook? {#but-what-is-a-hook}
 
 Hooks are functions that let you “hook into” React state and lifecycle features from function components. Hooks don't work inside classes -- they let you use React without classes. (We [don't recommend](/docs/hooks-intro.html#gradual-adoption-strategy) rewriting your existing components overnight but you can start using Hooks in the new ones if you'd like.)
 
@@ -68,7 +68,7 @@ React provides a few built-in Hooks like `useState`. You can also create your ow
 >
 >You can learn more about the State Hook on a dedicated page: [Using the State Hook](/docs/hooks-state.html).
 
-## ⚡️ Effect Hook
+## ⚡️ Effect Hook {#️-effect-hook}
 
 You've likely performed data fetching, subscriptions, or manually changing the DOM from React components before. We call these operations "side effects" (or "effects" for short) because they can affect other components and can't be done during rendering.
 
@@ -159,7 +159,7 @@ Hooks let you organize side effects in a component by what pieces are related (s
 >
 >You can learn more about `useEffect` on a dedicated page: [Using the Effect Hook](/docs/hooks-effect.html).
 
-## ✌️ Rules of Hooks
+## ✌️ Rules of Hooks {#️-rules-of-hooks}
 
 Hooks are JavaScript functions, but they impose two additional rules:
 
@@ -172,7 +172,7 @@ We provide a [linter plugin](https://www.npmjs.com/package/eslint-plugin-react-h
 >
 >You can learn more about these rules on a dedicated page: [Rules of Hooks](/docs/hooks-rules.html).
 
-## 💡 Building Your Own Hooks
+## 💡 Building Your Own Hooks {#-building-your-own-hooks}
 
 Sometimes, we want to reuse some stateful logic between components. Traditionally, there were two popular solutions to this problem: [higher-order components](/docs/higher-order-components.html) and [render props](/docs/render-props.html). Custom Hooks let you do this, but without adding more components to your tree.
 
@@ -239,7 +239,7 @@ You can write custom Hooks that cover a wide range of use cases like form handli
 >
 >You can learn more about custom Hooks on a dedicated page: [Building Your Own Hooks](/docs/hooks-custom.html).
 
-## 🔌 Other Hooks
+## 🔌 Other Hooks {#-other-hooks}
 
 There are a few less commonly used built-in Hooks that you might find useful. For example, [`useContext`](/docs/hooks-reference.html#usecontext) lets you subscribe to React context without introducing nesting:
 
@@ -263,7 +263,7 @@ function Todos() {
 >
 >You can learn more about all the built-in Hooks on a dedicated page: [Hooks API Reference](/docs/hooks-reference.html).
 
-## Next Steps
+## Next Steps {#next-steps}
 
 Phew, that was fast! If some things didn't quite make sense or you'd like to learn more in detail, you can read the next pages, starting with the [State Hook](/docs/hooks-state.html) documentation.
 
diff --git a/content/docs/hooks-reference.md b/content/docs/hooks-reference.md
index 6a8d8a664f..90091d8d12 100644
--- a/content/docs/hooks-reference.md
+++ b/content/docs/hooks-reference.md
@@ -25,9 +25,9 @@ If you're new to Hooks, you might want to check out [the overview](/docs/hooks-o
   - [`useLayoutEffect`](#uselayouteffect)
   - [`useDebugValue`](#usedebugvalue)
 
-## Basic Hooks
+## Basic Hooks {#basic-hooks}
 
-### `useState`
+### `useState` {#usestate}
 
 ```js
 const [state, setState] = useState(initialState);
@@ -45,7 +45,7 @@ setState(newState);
 
 During subsequent re-renders, the first value returned by `useState` will always be the most recent state after applying updates.
 
-#### Functional updates
+#### Functional updates {#functional-updates}
 
 If the new state is computed using the previous state, you can pass a function to `setState`. The function will receive the previous value, and return an updated value. Here's an example of a counter component that uses both forms of `setState`:
 
@@ -78,7 +78,7 @@ The "+" and "-" buttons use the functional form, because the updated value is ba
 >
 > Another option is `useReducer`, which is more suited for managing state objects that contain multiple sub-values.
 
-#### Lazy initial state
+#### Lazy initial state {#lazy-initial-state}
 
 The `initialState` argument is the state used during the initial render. In subsequent renders, it is disregarded. If the initial state is the result of an expensive computation, you may provide a function instead, which will be executed only on the initial render:
 
@@ -89,11 +89,11 @@ const [state, setState] = useState(() => {
 });
 ```
 
-#### Bailing out of a state update
+#### Bailing out of a state update {#bailing-out-of-a-state-update}
 
 If you update a State Hook to the same value as the current state, React will bail out without rendering the children or firing effects. (React uses the [`Object.is` comparison algorithm](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#Description).)
 
-### `useEffect`
+### `useEffect` {#useeffect}
 
 ```js
 useEffect(didUpdate);
@@ -107,7 +107,7 @@ Instead, use `useEffect`. The function passed to `useEffect` will run after the
 
 By default, effects run after every completed render, but you can choose to fire it [only when certain values have changed](#conditionally-firing-an-effect).
 
-#### Cleaning up an effect
+#### Cleaning up an effect {#cleaning-up-an-effect}
 
 Often, effects create resources that need to be cleaned up before the component leaves the screen, such as a subscription or timer ID. To do this, the function passed to `useEffect` may return a clean-up function. For example, to create a subscription:
 
@@ -123,7 +123,7 @@ useEffect(() => {
 
 The clean-up function runs before the component is removed from the UI to prevent memory leaks. Additionally, if a component renders multiple times (as they typically do), the **previous effect is cleaned up before executing the next effect**. In our example, this means a new subscription is created on every update. To avoid firing an effect on every update, refer to the next section.
 
-#### Timing of effects
+#### Timing of effects {#timing-of-effects}
 
 Unlike `componentDidMount` and `componentDidUpdate`, the function passed to `useEffect` fires **after** layout and paint, during a deferred event. This makes it suitable for the many common side effects, like setting up subscriptions and event handlers, because most types of work shouldn't block the browser from updating the screen.
 
@@ -131,7 +131,7 @@ However, not all effects can be deferred. For example, a DOM mutation that is vi
 
 Although `useEffect` is deferred until after the browser has painted, it's guaranteed to fire before any new renders. React will always flush a previous render's effects before starting a new update.
 
-#### Conditionally firing an effect
+#### Conditionally firing an effect {#conditionally-firing-an-effect}
 
 The default behavior for effects is to fire the effect after every completed render. That way an effect is always recreated if one of its inputs changes.
 
@@ -159,7 +159,7 @@ Passing in an empty array `[]` of inputs tells React that your effect doesn't de
 >
 > The array of inputs is not passed as arguments to the effect function. Conceptually, though, that's what they represent: every value referenced inside the effect function should also appear in the inputs array. In the future, a sufficiently advanced compiler could create this array automatically.
 
-### `useContext`
+### `useContext` {#usecontext}
 
 ```js
 const context = useContext(Context);
@@ -169,11 +169,11 @@ Accepts a context object (the value returned from `React.createContext`) and ret
 
 When the provider updates, this Hook will trigger a rerender with the latest context value.
 
-## Additional Hooks
+## Additional Hooks {#additional-hooks}
 
 The following Hooks are either variants of the basic ones from the previous section, or only needed for specific edge cases. Don't stress about learning them up front.
 
-### `useReducer`
+### `useReducer` {#usereducer}
 
 ```js
 const [state, dispatch] = useReducer(reducer, initialArg, init);
@@ -211,7 +211,7 @@ function Counter({initialCount}) {
 }
 ```
 
-#### Specifying the initial state
+#### Specifying the initial state {#specifying-the-initial-state}
 
 There’s two different ways to initialize `useReducer` state. You may choose either one depending on the use case. The simplest way to pass the initial state as a second argument:
 
@@ -226,7 +226,7 @@ There’s two different ways to initialize `useReducer` state. You may choose ei
 >
 >React doesn’t use the `state = initialState` argument convention popularized by Redux. The initial value sometimes needs to depend on props and so is specified from the Hook call instead. If you feel strongly about this, you can call `useReducer(reducer, undefined, reducer)` to emulate the Redux behavior, but it's not encouraged.
 
-#### Lazy initialization
+#### Lazy initialization {#lazy-initialization}
 
 You can also create the initial state lazily. To do this, you can pass an `init` function as the third argument. The initial state will be set to `init(initialArg)`.
 
@@ -268,11 +268,11 @@ function Counter({initialCount}) {
 }
 ```
 
-#### Bailing out of a dispatch
+#### Bailing out of a dispatch {#bailing-out-of-a-dispatch}
 
 If you return the same value from a Reducer Hook as the current state, React will bail out without rendering the children or firing effects. (React uses the [`Object.is` comparison algorithm](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#Description).)
 
-### `useCallback`
+### `useCallback` {#usecallback}
 
 ```js
 const memoizedCallback = useCallback(
@@ -293,7 +293,7 @@ Pass an inline callback and an array of inputs. `useCallback` will return a memo
 >
 > The array of inputs is not passed as arguments to the callback. Conceptually, though, that's what they represent: every value referenced inside the callback should also appear in the inputs array. In the future, a sufficiently advanced compiler could create this array automatically.
 
-### `useMemo`
+### `useMemo` {#usememo}
 
 ```js
 const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);
@@ -313,7 +313,7 @@ If no array is provided, a new value will be computed whenever a new function in
 >
 > The array of inputs is not passed as arguments to the function. Conceptually, though, that's what they represent: every value referenced inside the function should also appear in the inputs array. In the future, a sufficiently advanced compiler could create this array automatically.
 
-### `useRef`
+### `useRef` {#useref}
 
 ```js
 const refContainer = useRef(initialValue);
@@ -341,7 +341,7 @@ function TextInputWithFocusButton() {
 
 Note that `useRef()` is useful for more than the `ref` attribute. It's [handy for keeping any mutable value around](/docs/hooks-faq.html#is-there-something-like-instance-variables) similar to how you'd use instance fields in classes.
 
-### `useImperativeHandle`
+### `useImperativeHandle` {#useimperativehandle}
 
 ```js
 useImperativeHandle(ref, createHandle, [inputs])
@@ -364,7 +364,7 @@ FancyInput = forwardRef(FancyInput);
 
 In this example, a parent component that renders `<FancyInput ref={fancyInputRef} />` would be able to call `fancyInputRef.current.focus()`.
 
-### `useLayoutEffect`
+### `useLayoutEffect` {#uselayouteffect}
 
 The signature is identical to `useEffect`, but it fires synchronously after all DOM mutations. Use this to read layout from the DOM and synchronously re-render. Updates scheduled inside `useLayoutEffect` will be flushed synchronously, before the browser has a chance to paint.
 
@@ -374,7 +374,7 @@ Prefer the standard `useEffect` when possible to avoid blocking visual updates.
 >
 > If you're migrating code from a class component, `useLayoutEffect` fires in the same phase as `componentDidMount` and `componentDidUpdate`, so if you're unsure of which effect Hook to use, it's probably the least risky.
 
-### `useDebugValue`
+### `useDebugValue` {#usedebugvalue}
 
 ```js
 useDebugValue(value)
@@ -402,7 +402,7 @@ function useFriendStatus(friendID) {
 >
 > We don't recommend adding debug values to every custom Hook. It's most valuable for custom Hooks that are part of shared libraries.
 
-#### Defer formatting debug values
+#### Defer formatting debug values {#defer-formatting-debug-values}
 
 In some cases formatting a value for display might be an expensive operation. It's also unnecessary unless a Hook is actually inspected.
 
diff --git a/content/docs/hooks-rules.md b/content/docs/hooks-rules.md
index 80a447992a..698d1c7417 100644
--- a/content/docs/hooks-rules.md
+++ b/content/docs/hooks-rules.md
@@ -10,11 +10,11 @@ prev: hooks-effect.html
 
 Hooks are JavaScript functions, but you need to follow two rules when using them. We provide a [linter plugin](https://www.npmjs.com/package/eslint-plugin-react-hooks) to enforce these rules automatically:
 
-### Only Call Hooks at the Top Level
+### Only Call Hooks at the Top Level {#only-call-hooks-at-the-top-level}
 
 **Don't call Hooks inside loops, conditions, or nested functions.** Instead, always use Hooks at the top level of your React function. By following this rule, you ensure that Hooks are called in the same order each time a component renders. That's what allows React to correctly preserve the state of Hooks between multiple `useState` and `useEffect` calls. (If you're curious, we'll explain this in depth [below](#explanation).)
 
-### Only Call Hooks from React Functions
+### Only Call Hooks from React Functions {#only-call-hooks-from-react-functions}
 
 **Don't call Hooks from regular JavaScript functions.** Instead, you can:
 
@@ -23,7 +23,7 @@ Hooks are JavaScript functions, but you need to follow two rules when using them
 
 By following this rule, you ensure that all stateful logic in a component is clearly visible from its source code.
 
-## ESLint Plugin
+## ESLint Plugin {#eslint-plugin}
 
 We released an ESLint plugin called [`eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks) that enforces these two rules. You can add this plugin to your project if you'd like to try it:
 
@@ -49,7 +49,7 @@ In the future, we intend to include this plugin by default into Create React App
 
 **You can skip to the next page explaining how to write [your own Hooks](/docs/hooks-custom.html) now.** On this page, we'll continue by explaining the reasoning behind these rules.
 
-## Explanation
+## Explanation {#explanation}
 
 As we [learned earlier](/docs/hooks-state.html#tip-using-multiple-state-variables), we can use multiple State or Effect Hooks in a single component:
 
@@ -132,6 +132,6 @@ React wouldn't know what to return for the second `useState` Hook call. React ex
 
 **Note that you don't need to worry about this problem if you use the [provided lint rule](https://www.npmjs.com/package/eslint-plugin-react-hooks).** But now you also know *why* Hooks work this way, and which issues the rule is preventing.
 
-## Next Steps
+## Next Steps {#next-steps}
 
 Finally, we're ready to learn about [writing your own Hooks](/docs/hooks-custom.html)! Custom Hooks let you combine Hooks provided by React into your own abstractions, and reuse common stateful logic between different components.
diff --git a/content/docs/hooks-state.md b/content/docs/hooks-state.md
index 2a234af82e..052aecb330 100644
--- a/content/docs/hooks-state.md
+++ b/content/docs/hooks-state.md
@@ -30,7 +30,7 @@ function Example() {
 
 We'll start learning about Hooks by comparing this code to an equivalent class example.
 
-## Equivalent Class Example
+## Equivalent Class Example {#equivalent-class-example}
 
 If you used classes in React before, this code should look familiar:
 
@@ -62,7 +62,7 @@ The state starts as `{ count: 0 }`, and we increment `state.count` when the user
 >
 >You might be wondering why we're using a counter here instead of a more realistic example. This is to help us focus on the API while we're still making our first steps with Hooks.
 
-## Hooks and Function Components
+## Hooks and Function Components {#hooks-and-function-components}
 
 As a reminder, function components in React look like this:
 
@@ -86,7 +86,7 @@ You might have previously known these as "stateless components". We're now intro
 
 Hooks **don't** work inside classes. But you can use them instead of writing classes.
 
-## What's a Hook?
+## What's a Hook? {#whats-a-hook}
 
 Our new example starts by importing the `useState` Hook from React:
 
@@ -106,7 +106,7 @@ function Example() {
 >
 >There are some special rules about where you can and can't use Hooks within a component. We'll learn them in [Rules of Hooks](/docs/hooks-rules.html).
 
-## Declaring a State Variable
+## Declaring a State Variable {#declaring-a-state-variable}
 
 In a class, we initialize the `count` state to `0` by setting `this.state` to `{ count: 0 }` in the constructor:
 
@@ -154,7 +154,7 @@ We declare a state variable called `count`, and set it to `0`. React will rememb
 >
 >"Create" wouldn't be quite accurate because the state is only created the first time our component renders. During the next renders, `useState` gives us the current state. Otherwise it wouldn't be "state" at all! There's also a reason why Hook names *always* start with `use`. We'll learn why later in the [Rules of Hooks](/docs/hooks-rules.html).
 
-## Reading State
+## Reading State {#reading-state}
 
 When we want to display the current count in a class, we read `this.state.count`:
 
@@ -169,7 +169,7 @@ In a function, we can use `count` directly:
   <p>You clicked {count} times</p>
 ```
 
-## Updating State
+## Updating State {#updating-state}
 
 In a class, we need to call `this.setState()` to update the `count` state:
 
@@ -187,7 +187,7 @@ In a function, we already have `setCount` and `count` as variables so we don't n
   </button>
 ```
 
-## Recap
+## Recap {#recap}
 
 Let's now **recap what we learned line by line** and check our understanding.
 
@@ -218,7 +218,7 @@ Let's now **recap what we learned line by line** and check our understanding.
 
 This might seem like a lot to take in at first. Don't rush it! If you're lost in the explanation, look at the code above again and try to read it from top to bottom. We promise that once you try to "forget" how state works in classes, and look at this code with fresh eyes, it will make sense.
 
-### Tip: What Do Square Brackets Mean?
+### Tip: What Do Square Brackets Mean? {#tip-what-do-square-brackets-mean}
 
 You might have noticed the square brackets when we declare a state variable:
 
@@ -246,7 +246,7 @@ When we declare a state variable with `useState`, it returns a pair — an array
 >
 >You might be curious how React knows which component `useState` corresponds to since we're not passing anything like `this` back to React. We'll answer [this question](/docs/hooks-faq.html#how-does-react-associate-hook-calls-with-components) and many others in the FAQ section.
 
-### Tip: Using Multiple State Variables
+### Tip: Using Multiple State Variables {#tip-using-multiple-state-variables}
 
 Declaring state variables as a pair of `[something, setSomething]` is also handy because it lets us give *different* names to different state variables if we want to use more than one:
 
@@ -271,7 +271,7 @@ You **don't have to** use many state variables. State variables can hold objects
 
 We provide more recommendations on splitting independent state variables [in the FAQ](/docs/hooks-faq.html#should-i-use-one-or-many-state-variables).
 
-## Next Steps
+## Next Steps {#next-steps}
 
 On this page we've learned about one of the Hooks provided by React, called `useState`. We're also sometimes going to refer to it as the "State Hook". It lets us add local state to React function components -- which we did for the first time ever!
 
diff --git a/content/docs/how-to-contribute.md b/content/docs/how-to-contribute.md
index ff5fd988da..a08ee3acdd 100644
--- a/content/docs/how-to-contribute.md
+++ b/content/docs/how-to-contribute.md
@@ -11,21 +11,21 @@ redirect_from:
 
 React is one of Facebook's first open source projects that is both under very active development and is also being used to ship code to everybody on [facebook.com](https://www.facebook.com). We're still working out the kinks to make contributing to this project as easy and transparent as possible, but we're not quite there yet. Hopefully this document makes the process for contributing clear and answers some questions that you may have.
 
-### [Code of Conduct](https://code.facebook.com/codeofconduct)
+### [Code of Conduct](https://code.facebook.com/codeofconduct) {#code-of-conducthttpscodefacebookcomcodeofconduct}
 
 Facebook has adopted a Code of Conduct that we expect project participants to adhere to. Please read [the full text](https://code.facebook.com/codeofconduct) so that you can understand what actions will and will not be tolerated.
 
-### Open Development
+### Open Development {#open-development}
 
 All work on React happens directly on [GitHub](https://github.com/facebook/react). Both core team members and external contributors send pull requests which go through the same review process.
 
-### Branch Organization
+### Branch Organization {#branch-organization}
 
 We will do our best to keep the [`master` branch](https://github.com/facebook/react/tree/master) in good shape, with tests passing at all times. But in order to move fast, we will make API changes that your application might not be compatible with. We recommend that you use [the latest stable version of React](/downloads.html).
 
 If you send a pull request, please do it against the `master` branch. We maintain stable branches for major versions separately but we don't accept pull requests to them directly. Instead, we cherry-pick non-breaking changes from master to the latest stable major version.
 
-### Semantic Versioning
+### Semantic Versioning {#semantic-versioning}
 
 React follows [semantic versioning](http://semver.org/). We release patch versions for bugfixes, minor versions for new features, and major versions for any breaking changes. When we make breaking changes, we also introduce deprecation warnings in a minor version so that our users learn about the upcoming changes and migrate their code in advance.
 
@@ -33,34 +33,34 @@ We tag every pull request with a label marking whether the change should go in t
 
 Every significant change is documented in the [changelog file](https://github.com/facebook/react/blob/master/CHANGELOG.md).
 
-### Bugs
+### Bugs {#bugs}
 
-#### Where to Find Known Issues
+#### Where to Find Known Issues {#where-to-find-known-issues}
 
 We are using [GitHub Issues](https://github.com/facebook/react/issues) for our public bugs. We keep a close eye on this and try to make it clear when we have an internal fix in progress. Before filing a new task, try to make sure your problem doesn't already exist.
 
-#### Reporting New Issues
+#### Reporting New Issues {#reporting-new-issues}
 
 The best way to get your bug fixed is to provide a reduced test case. This [JSFiddle template](https://jsfiddle.net/Luktwrdm/) is a great starting point.
 
-#### Security Bugs
+#### Security Bugs {#security-bugs}
 
 Facebook has a [bounty program](https://www.facebook.com/whitehat/) for the safe disclosure of security bugs. With that in mind, please do not file public issues; go through the process outlined on that page.
 
-### How to Get in Touch
+### How to Get in Touch {#how-to-get-in-touch}
 
 * IRC: [#reactjs on freenode](https://webchat.freenode.net/?channels=reactjs)
 * Discussion forum: [discuss.reactjs.org](https://discuss.reactjs.org/)
 
 There is also [an active community of React users on the Discord chat platform](http://www.reactiflux.com/) in case you need help with React.
 
-### Proposing a Change
+### Proposing a Change {#proposing-a-change}
 
 If you intend to change the public API, or make any non-trivial changes to the implementation, we recommend [filing an issue](https://github.com/facebook/react/issues/new). This lets us reach an agreement on your proposal before you put significant effort into it.
 
 If you're only fixing a bug, it's fine to submit a pull request right away but we still recommend to file an issue detailing what you're fixing. This is helpful in case we don't accept that specific fix but want to keep track of the issue.
 
-### Your First Pull Request
+### Your First Pull Request {#your-first-pull-request}
 
 Working on your first Pull Request? You can learn how from this free video series:
 
@@ -72,7 +72,7 @@ If you decide to fix an issue, please be sure to check the comment thread in cas
 
 If somebody claims an issue but doesn't follow up for more than two weeks, it's fine to take it over but you should still leave a comment.
 
-### Sending a Pull Request
+### Sending a Pull Request {#sending-a-pull-request}
 
 The core team is monitoring for pull requests. We will review your pull request and either merge it, request changes to it, or close it with an explanation. For API changes we may need to fix our internal uses at Facebook.com, which could cause some delay. We'll do our best to provide updates and feedback throughout the process.
 
@@ -89,19 +89,19 @@ The core team is monitoring for pull requests. We will review your pull request
 9. Run the [Flow](https://flowtype.org/) typechecks (`yarn flow`).
 10. If you haven't already, complete the CLA.
 
-### Contributor License Agreement (CLA)
+### Contributor License Agreement (CLA) {#contributor-license-agreement-cla}
 
 In order to accept your pull request, we need you to submit a CLA. You only need to do this once, so if you've done this for another Facebook open source project, you're good to go. If you are submitting a pull request for the first time, just let us know that you have completed the CLA and we can cross-check with your GitHub username.
 
 **[Complete your CLA here.](https://code.facebook.com/cla)**
 
-### Contribution Prerequisites
+### Contribution Prerequisites {#contribution-prerequisites}
 
 * You have [Node](https://nodejs.org) installed at v8.0.0+ and [Yarn](https://yarnpkg.com/en/) at v1.2.0+.
 * You have `gcc` installed or are comfortable installing a compiler if needed. Some of our dependencies may require a compilation step. On OS X, the Xcode Command Line Tools will cover this. On Ubuntu, `apt-get install build-essential` will install the required packages. Similar commands should work on other Linux distros. Windows will require some additional steps, see the [`node-gyp` installation instructions](https://github.com/nodejs/node-gyp#installation) for details.
 * You are familiar with Git.
 
-### Development Workflow
+### Development Workflow {#development-workflow}
 
 After cloning React, run `yarn` to fetch its dependencies.
 Then, you can run several commands:
@@ -138,7 +138,7 @@ Every time you run `yarn build` in the React folder, the updated versions will a
 
 We still require that your pull request contains unit tests for any new functionality. This way we can ensure that we don't break your code in the future.
 
-### Style Guide
+### Style Guide {#style-guide}
 
 We use an automatic code formatter called [Prettier](https://prettier.io/).
 Run `yarn prettier` after making any changes to the code.
@@ -148,11 +148,11 @@ You can check the status of your code styling by simply running `yarn linc`.
 
 However, there are still some styles that the linter cannot pick up. If you are unsure about something, looking at [Airbnb's Style Guide](https://github.com/airbnb/javascript) will guide you in the right direction.
 
-### Introductory Video
+### Introductory Video {#introductory-video}
 
 You may be interested in watching [this short video](https://www.youtube.com/watch?v=wUpPsEcGsg8) (26 mins) which gives an introduction on how to contribute to React.
 
-#### Video highlights:
+#### Video highlights: {#video-highlights}
 - [4:12](https://youtu.be/wUpPsEcGsg8?t=4m12s) - Building and testing React locally
 - [6:07](https://youtu.be/wUpPsEcGsg8?t=6m7s) - Creating and sending pull requests
 - [8:25](https://youtu.be/wUpPsEcGsg8?t=8m25s) - Organizing code
@@ -161,7 +161,7 @@ You may be interested in watching [this short video](https://www.youtube.com/wat
 
 For a realistic overview of what it _feels_ like to contribute to React for the first time, check out [this entertaining ReactNYC talk](https://www.youtube.com/watch?v=GWCcZ6fnpn4).
 
-### Request for Comments (RFC)
+### Request for Comments (RFC) {#request-for-comments-rfc}
 
 Many changes, including bug fixes and documentation improvements can be implemented and reviewed via the normal GitHub pull request workflow.
 
@@ -169,10 +169,10 @@ Some changes though are "substantial", and we ask that these be put through a bi
 
 The "RFC" (request for comments) process is intended to provide a consistent and controlled path for new features to enter the project. You can contribute by visiting the [rfcs repository](https://github.com/reactjs/rfcs).
 
-### License
+### License {#license}
 
 By contributing to React, you agree that your contributions will be licensed under its MIT license.
 
-### What Next?
+### What Next? {#what-next}
 
 Read the [next section](/docs/codebase-overview.html) to learn how the codebase is organized.
diff --git a/content/docs/implementation-notes.md b/content/docs/implementation-notes.md
index 509b4a2f2e..a035a5edfd 100644
--- a/content/docs/implementation-notes.md
+++ b/content/docs/implementation-notes.md
@@ -17,17 +17,17 @@ It also assumes an understanding of the [differences between React components, t
 
 The stack reconciler was used in React 15 and earlier. It is located at [src/renderers/shared/stack/reconciler](https://github.com/facebook/react/tree/15-stable/src/renderers/shared/stack/reconciler).
 
-### Video: Building React from Scratch
+### Video: Building React from Scratch {#video-building-react-from-scratch}
 
 [Paul O'Shannessy](https://twitter.com/zpao) gave a talk about [building React from scratch](https://www.youtube.com/watch?v=_MAD4Oly9yg) that largely inspired this document.
 
 Both this document and his talk are simplifications of the real codebase so you might get a better understanding by getting familiar with both of them.
 
-### Overview
+### Overview {#overview}
 
 The reconciler itself doesn't have a public API. [Renderers](/docs/codebase-overview.html#stack-renderers) like React DOM and React Native use it to efficiently update the user interface according to the React components written by the user.
 
-### Mounting as a Recursive Process
+### Mounting as a Recursive Process {#mounting-as-a-recursive-process}
 
 Let's consider the first time you mount a component:
 
@@ -113,7 +113,7 @@ Let's recap a few key ideas in the example above:
 * User-defined components (e.g. `App`) can be classes or functions but they all "render to" elements.
 * "Mounting" is a recursive process that creates a DOM or Native tree given the top-level React element (e.g. `<App />`).
 
-### Mounting Host Elements
+### Mounting Host Elements {#mounting-host-elements}
 
 This process would be useless if we didn't render something to the screen as a result.
 
@@ -231,7 +231,7 @@ rootEl.appendChild(node);
 
 This is working but still far from how the reconciler is really implemented. The key missing ingredient is support for updates.
 
-### Introducing Internal Instances
+### Introducing Internal Instances {#introducing-internal-instances}
 
 The key feature of React is that you can re-render everything, and it won't recreate the DOM or reset the state:
 
@@ -432,7 +432,7 @@ var rootEl = document.getElementById('root');
 mountTree(<App />, rootEl);
 ```
 
-### Unmounting
+### Unmounting {#unmounting}
 
 Now that we have internal instances that hold onto their children and the DOM nodes, we can implement unmounting. For a composite component, unmounting calls a lifecycle method and recurses.
 
@@ -516,7 +516,7 @@ function mountTree(element, containerNode) {
 
 Now, running `unmountTree()`, or running `mountTree()` repeatedly, removes the old tree and runs the `componentWillUnmount()` lifecycle method on components.
 
-### Updating
+### Updating {#updating}
 
 In the previous section, we implemented unmounting. However React wouldn't be very useful if each prop change unmounted and mounted the whole tree. The goal of the reconciler is to reuse existing instances where possible to preserve the DOM and the state:
 
@@ -552,7 +552,7 @@ Its job is to do whatever is necessary to bring the component (and any of its ch
 
 This is the part that is often described as "virtual DOM diffing" although what really happens is that we walk the internal tree recursively and let each internal instance receive an update.
 
-### Updating Composite Components
+### Updating Composite Components {#updating-composite-components}
 
 When a composite component receives a new element, we run the `componentWillUpdate()` lifecycle method.
 
@@ -666,7 +666,7 @@ class DOMComponent {
 }
 ```
 
-### Updating Host Components
+### Updating Host Components {#updating-host-components}
 
 Host component implementations, such as `DOMComponent`, update differently. When they receive an element, they need to update the underlying platform-specific view. In case of React DOM, this means updating the DOM attributes:
 
@@ -811,7 +811,7 @@ As the last step, we execute the DOM operations. Again, the real reconciler code
 
 And that is it for updating host components.
 
-### Top-Level Updates
+### Top-Level Updates {#top-level-updates}
 
 Now that both `CompositeComponent` and `DOMComponent` implement the `receive(nextElement)` method, we can change the top-level `mountTree()` function to use it when the element `type` is the same as it was the last time:
 
@@ -850,7 +850,7 @@ mountTree(<App />, rootEl);
 
 These are the basics of how React works internally.
 
-### What We Left Out
+### What We Left Out {#what-we-left-out}
 
 This document is simplified compared to the real codebase. There are a few important aspects we didn't address:
 
@@ -872,7 +872,7 @@ This document is simplified compared to the real codebase. There are a few impor
 
 * React puts information about the current update into an internal object called "transaction". Transactions are useful for keeping track of the queue of pending lifecycle methods, the current DOM nesting for the warnings, and anything else that is "global" to a specific update. Transactions also ensure React "cleans everything up" after updates. For example, the transaction class provided by React DOM restores the input selection after any update.
 
-### Jumping into the Code
+### Jumping into the Code {#jumping-into-the-code}
 
 * [`ReactMount`](https://github.com/facebook/react/blob/83381c1673d14cd16cf747e34c945291e5518a86/src/renderers/dom/client/ReactMount.js) is where the code like `mountTree()` and `unmountTree()` from this tutorial lives. It takes care of mounting and unmounting top-level components. [`ReactNativeMount`](https://github.com/facebook/react/blob/83381c1673d14cd16cf747e34c945291e5518a86/src/renderers/native/ReactNativeMount.js) is its React Native analog.
 * [`ReactDOMComponent`](https://github.com/facebook/react/blob/83381c1673d14cd16cf747e34c945291e5518a86/src/renderers/dom/shared/ReactDOMComponent.js) is the equivalent of `DOMComponent` in this tutorial. It implements the host component class for React DOM renderer. [`ReactNativeBaseComponent`](https://github.com/facebook/react/blob/83381c1673d14cd16cf747e34c945291e5518a86/src/renderers/native/ReactNativeBaseComponent.js) is its React Native analog.
@@ -889,10 +889,10 @@ This document is simplified compared to the real codebase. There are a few impor
 
 * Properties on the internal instances start with an underscore, e.g. `_currentElement`. They are considered to be read-only public fields throughout the codebase.
 
-### Future Directions
+### Future Directions {#future-directions}
 
 Stack reconciler has inherent limitations such as being synchronous and unable to interrupt the work or split it in chunks. There is a work in progress on the [new Fiber reconciler](/docs/codebase-overview.html#fiber-reconciler) with a [completely different architecture](https://github.com/acdlite/react-fiber-architecture). In the future, we intend to replace stack reconciler with it, but at the moment it is far from feature parity.
 
-### Next Steps
+### Next Steps {#next-steps}
 
 Read the [next section](/docs/design-principles.html) to learn about the guiding principles we use for React development.
diff --git a/content/docs/integrating-with-other-libraries.md b/content/docs/integrating-with-other-libraries.md
index 626a35afed..18a67c4578 100644
--- a/content/docs/integrating-with-other-libraries.md
+++ b/content/docs/integrating-with-other-libraries.md
@@ -6,7 +6,7 @@ permalink: docs/integrating-with-other-libraries.html
 
 React can be used in any web application. It can be embedded in other applications and, with a little care, other applications can be embedded in React. This guide will examine some of the more common use cases, focusing on integration with [jQuery](https://jquery.com/) and [Backbone](http://backbonejs.org/), but the same ideas can be applied to integrating components with any existing code.
 
-## Integrating with DOM Manipulation Plugins
+## Integrating with DOM Manipulation Plugins {#integrating-with-dom-manipulation-plugins}
 
 React is unaware of changes made to the DOM outside of React. It determines updates based on its own internal representation, and if the same DOM nodes are manipulated by another library, React gets confused and has no way to recover.
 
@@ -14,7 +14,7 @@ This does not mean it is impossible or even necessarily difficult to combine Rea
 
 The easiest way to avoid conflicts is to prevent the React component from updating. You can do this by rendering elements that React has no reason to update, like an empty `<div />`.
 
-### How to Approach the Problem
+### How to Approach the Problem {#how-to-approach-the-problem}
 
 To demonstrate this, let's sketch out a wrapper for a generic jQuery plugin.
 
@@ -41,7 +41,7 @@ class SomePlugin extends React.Component {
 
 Note that we defined both `componentDidMount` and `componentWillUnmount` [lifecycle methods](/docs/react-component.html#the-component-lifecycle). Many jQuery plugins attach event listeners to the DOM so it's important to detach them in `componentWillUnmount`. If the plugin does not provide a method for cleanup, you will probably have to provide your own, remembering to remove any event listeners the plugin registered to prevent memory leaks.
 
-### Integrating with jQuery Chosen Plugin
+### Integrating with jQuery Chosen Plugin {#integrating-with-jquery-chosen-plugin}
 
 For a more concrete example of these concepts, let's write a minimal wrapper for the plugin [Chosen](https://harvesthq.github.io/chosen/), which augments `<select>` inputs.
 
@@ -188,7 +188,7 @@ class Chosen extends React.Component {
 
 [**Try it on CodePen**](http://codepen.io/gaearon/pen/xdgKOz?editors=0010)
 
-## Integrating with Other View Libraries
+## Integrating with Other View Libraries {#integrating-with-other-view-libraries}
 
 React can be embedded into other applications thanks to the flexibility of [`ReactDOM.render()`](/docs/react-dom.html#render).
 
@@ -196,7 +196,7 @@ Although React is commonly used at startup to load a single root React component
 
 In fact, this is exactly how React is used at Facebook. This lets us write applications in React piece by piece, and combine them with our existing server-generated templates and other client-side code.
 
-### Replacing String-Based Rendering with React
+### Replacing String-Based Rendering with React {#replacing-string-based-rendering-with-react}
 
 A common pattern in older web applications is to describe chunks of the DOM as a string and insert it into the DOM like so: `$el.html(htmlString)`. These points in a codebase are perfect for introducing React. Just rewrite the string based rendering as a React component.
 
@@ -251,7 +251,7 @@ ReactDOM.render(
 
 You can have as many such isolated components as you like, and use `ReactDOM.render()` to render them to different DOM containers. Gradually, as you convert more of your app to React, you will be able to combine them into larger components, and move some of the `ReactDOM.render()` calls up the hierarchy.
 
-### Embedding React in a Backbone View
+### Embedding React in a Backbone View {#embedding-react-in-a-backbone-view}
 
 [Backbone](http://backbonejs.org/) views typically use HTML strings, or string-producing template functions, to create the content for their DOM elements. This process, too, can be replaced with rendering a React component.
 
@@ -281,11 +281,11 @@ It is important that we also call `ReactDOM.unmountComponentAtNode()` in the `re
 
 When a component is removed *from within* a React tree, the cleanup is performed automatically, but because we are removing the entire tree by hand, we must call this method.
 
-## Integrating with Model Layers
+## Integrating with Model Layers {#integrating-with-model-layers}
 
 While it is generally recommended to use unidirectional data flow such as [React state](/docs/lifting-state-up.html), [Flux](http://facebook.github.io/flux/), or [Redux](http://redux.js.org/), React components can use a model layer from other frameworks and libraries.
 
-### Using Backbone Models in React Components
+### Using Backbone Models in React Components {#using-backbone-models-in-react-components}
 
 The simplest way to consume [Backbone](http://backbonejs.org/) models and collections from a React component is to listen to the various change events and manually force an update.
 
@@ -349,7 +349,7 @@ class List extends React.Component {
 
 [**Try it on CodePen**](http://codepen.io/gaearon/pen/GmrREm?editors=0010)
 
-### Extracting Data from Backbone Models
+### Extracting Data from Backbone Models {#extracting-data-from-backbone-models}
 
 The approach above requires your React components to be aware of the Backbone models and collections. If you later plan to migrate to another data management solution, you might want to concentrate the knowledge about Backbone in as few parts of the code as possible.
 
diff --git a/content/docs/introducing-jsx.md b/content/docs/introducing-jsx.md
index edc5c868c4..d76c3ace6b 100644
--- a/content/docs/introducing-jsx.md
+++ b/content/docs/introducing-jsx.md
@@ -18,7 +18,7 @@ It is called JSX, and it is a syntax extension to JavaScript. We recommend using
 
 JSX produces React "elements". We will explore rendering them to the DOM in the [next section](/docs/rendering-elements.html). Below, you can find the basics of JSX necessary to get you started.
 
-### Why JSX?
+### Why JSX? {#why-jsx}
 
 React embraces the fact that rendering logic is inherently coupled with other UI logic: how events are handled, how the state changes over time, and how the data is prepared for display.
 
@@ -28,7 +28,7 @@ React [doesn't require](/docs/react-without-jsx.html) using JSX, but most people
 
 With that out of the way, let's get started!
 
-### Embedding Expressions in JSX
+### Embedding Expressions in JSX {#embedding-expressions-in-jsx}
 
 In the example below, we declare a variable called `name` and then use it inside JSX by wrapping it in curly braces:
 
@@ -72,7 +72,7 @@ ReactDOM.render(
 
 We split JSX over multiple lines for readability. While it isn't required, when doing this, we also recommend wrapping it in parentheses to avoid the pitfalls of [automatic semicolon insertion](http://stackoverflow.com/q/2846283).
 
-### JSX is an Expression Too
+### JSX is an Expression Too {#jsx-is-an-expression-too}
 
 After compilation, JSX expressions become regular JavaScript function calls and evaluate to JavaScript objects.
 
@@ -87,7 +87,7 @@ function getGreeting(user) {
 }
 ```
 
-### Specifying Attributes with JSX
+### Specifying Attributes with JSX {#specifying-attributes-with-jsx}
 
 You may use quotes to specify string literals as attributes:
 
@@ -109,7 +109,7 @@ Don't put quotes around curly braces when embedding a JavaScript expression in a
 >
 >For example, `class` becomes [`className`](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) in JSX, and `tabindex` becomes [`tabIndex`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/tabIndex).
 
-### Specifying Children with JSX
+### Specifying Children with JSX {#specifying-children-with-jsx}
 
 If a tag is empty, you may close it immediately with `/>`, like XML:
 
@@ -128,7 +128,7 @@ const element = (
 );
 ```
 
-### JSX Prevents Injection Attacks
+### JSX Prevents Injection Attacks {#jsx-prevents-injection-attacks}
 
 It is safe to embed user input in JSX:
 
@@ -140,7 +140,7 @@ const element = <h1>{title}</h1>;
 
 By default, React DOM [escapes](http://stackoverflow.com/questions/7381974/which-characters-need-to-be-escaped-on-html) any values embedded in JSX before rendering them. Thus it ensures that you can never inject anything that's not explicitly written in your application. Everything is converted to a string before being rendered. This helps prevent [XSS (cross-site-scripting)](https://en.wikipedia.org/wiki/Cross-site_scripting) attacks.
 
-### JSX Represents Objects
+### JSX Represents Objects {#jsx-represents-objects}
 
 Babel compiles JSX down to `React.createElement()` calls.
 
diff --git a/content/docs/jsx-in-depth.md b/content/docs/jsx-in-depth.md
index 68ba9e95c9..3dcf2ac269 100644
--- a/content/docs/jsx-in-depth.md
+++ b/content/docs/jsx-in-depth.md
@@ -49,13 +49,13 @@ React.createElement(
 
 If you want to test out how some specific JSX is converted into JavaScript, you can try out [the online Babel compiler](babel://jsx-simple-example).
 
-## Specifying The React Element Type
+## Specifying The React Element Type {#specifying-the-react-element-type}
 
 The first part of a JSX tag determines the type of the React element.
 
 Capitalized types indicate that the JSX tag is referring to a React component. These tags get compiled into a direct reference to the named variable, so if you use the JSX `<Foo />` expression, `Foo` must be in scope.
 
-### React Must Be in Scope
+### React Must Be in Scope {#react-must-be-in-scope}
 
 Since JSX compiles into calls to `React.createElement`, the `React` library must also always be in scope from your JSX code.
 
@@ -73,7 +73,7 @@ function WarningButton() {
 
 If you don't use a JavaScript bundler and loaded React from a `<script>` tag, it is already in scope as the `React` global.
 
-### Using Dot Notation for JSX Type
+### Using Dot Notation for JSX Type {#using-dot-notation-for-jsx-type}
 
 You can also refer to a React component using dot-notation from within JSX. This is convenient if you have a single module that exports many React components. For example, if `MyComponents.DatePicker` is a component, you can use it directly from JSX with:
 
@@ -91,7 +91,7 @@ function BlueDatePicker() {
 }
 ```
 
-### User-Defined Components Must Be Capitalized
+### User-Defined Components Must Be Capitalized {#user-defined-components-must-be-capitalized}
 
 When an element type starts with a lowercase letter, it refers to a built-in component like `<div>` or `<span>` and results in a string `'div'` or `'span'` passed to `React.createElement`. Types that start with a capital letter like `<Foo />` compile to `React.createElement(Foo)` and correspond to a component defined or imported in your JavaScript file.
 
@@ -131,7 +131,7 @@ function HelloWorld() {
 }
 ```
 
-### Choosing the Type at Runtime
+### Choosing the Type at Runtime {#choosing-the-type-at-runtime}
 
 You cannot use a general expression as the React element type. If you do want to use a general expression to indicate the type of the element, just assign it to a capitalized variable first. This often comes up when you want to render a different component based on a prop:
 
@@ -168,11 +168,11 @@ function Story(props) {
 }
 ```
 
-## Props in JSX
+## Props in JSX {#props-in-jsx}
 
 There are several different ways to specify props in JSX.
 
-### JavaScript Expressions as Props
+### JavaScript Expressions as Props {#javascript-expressions-as-props}
 
 You can pass any JavaScript expression as a prop, by surrounding it with `{}`. For example, in this JSX:
 
@@ -198,7 +198,7 @@ function NumberDescriber(props) {
 
 You can learn more about [conditional rendering](/docs/conditional-rendering.html) and [loops](/docs/lists-and-keys.html) in the corresponding sections.
 
-### String Literals
+### String Literals {#string-literals}
 
 You can pass a string literal as a prop. These two JSX expressions are equivalent:
 
@@ -218,7 +218,7 @@ When you pass a string literal, its value is HTML-unescaped. So these two JSX ex
 
 This behavior is usually not relevant. It's only mentioned here for completeness.
 
-### Props Default to "True"
+### Props Default to "True" {#props-default-to-true}
 
 If you pass no value for a prop, it defaults to `true`. These two JSX expressions are equivalent:
 
@@ -230,7 +230,7 @@ If you pass no value for a prop, it defaults to `true`. These two JSX expression
 
 In general, we don't recommend using this because it can be confused with the [ES6 object shorthand](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Object_initializer#New_notations_in_ECMAScript_2015) `{foo}` which is short for `{foo: foo}` rather than `{foo: true}`. This behavior is just there so that it matches the behavior of HTML.
 
-### Spread Attributes
+### Spread Attributes {#spread-attributes}
 
 If you already have `props` as an object, and you want to pass it in JSX, you can use `...` as a "spread" operator to pass the whole props object. These two components are equivalent:
 
@@ -270,11 +270,11 @@ All other props are passed via the `...other` object making this component reall
 
 Spread attributes can be useful but they also make it easy to pass unnecessary props to components that don't care about them or to pass invalid HTML attributes to the DOM. We recommend using this syntax sparingly.  
 
-## Children in JSX
+## Children in JSX {#children-in-jsx}
 
 In JSX expressions that contain both an opening tag and a closing tag, the content between those tags is passed as a special prop: `props.children`. There are several different ways to pass children:
 
-### String Literals
+### String Literals {#string-literals-1}
 
 You can put a string between the opening and closing tags and `props.children` will just be that string. This is useful for many of the built-in HTML elements. For example:
 
@@ -308,7 +308,7 @@ JSX removes whitespace at the beginning and ending of a line. It also removes bl
 </div>
 ```
 
-### JSX Children
+### JSX Children {#jsx-children}
 
 You can provide more JSX elements as the children. This is useful for displaying nested components:
 
@@ -345,7 +345,7 @@ render() {
 }
 ```
 
-### JavaScript Expressions as Children
+### JavaScript Expressions as Children {#javascript-expressions-as-children}
 
 You can pass any JavaScript expression as children, by enclosing it within `{}`. For example, these expressions are equivalent:
 
@@ -380,7 +380,7 @@ function Hello(props) {
 }
 ```
 
-### Functions as Children
+### Functions as Children {#functions-as-children}
 
 Normally, JavaScript expressions inserted in JSX will evaluate to a string, a React element, or a list of those things. However, `props.children` works just like any other prop in that it can pass any sort of data, not just the sorts that React knows how to render. For example, if you have a custom component, you could have it take a callback as `props.children`:
 
@@ -405,7 +405,7 @@ function ListOfTenThings() {
 
 Children passed to a custom component can be anything, as long as that component transforms them into something React can understand before rendering. This usage is not common, but it works if you want to stretch what JSX is capable of.
 
-### Booleans, Null, and Undefined Are Ignored
+### Booleans, Null, and Undefined Are Ignored {#booleans-null-and-undefined-are-ignored}
 
 `false`, `null`, `undefined`, and `true` are valid children. They simply don't render. These JSX expressions will all render to the same thing:
 
diff --git a/content/docs/legacy-context.md b/content/docs/legacy-context.md
index 44b403141a..1c62e66504 100644
--- a/content/docs/legacy-context.md
+++ b/content/docs/legacy-context.md
@@ -10,7 +10,7 @@ permalink: docs/legacy-context.html
 > Use the [new context API](/docs/context.html) introduced with version 16.3.
 > The legacy API will continue working for all 16.x releases.
 
-## How To Use Context
+## How To Use Context {#how-to-use-context}
 
 > This section documents a legacy API. See the [new API](/docs/context.html).
 
@@ -105,7 +105,7 @@ If `contextTypes` is not defined, then `context` will be an empty object.
 >
 > We provide [a codemod script](/blog/2017/04/07/react-v15.5.0.html#migrating-from-react.proptypes) to automate the conversion.
 
-### Parent-Child Coupling
+### Parent-Child Coupling {#parent-child-coupling}
 
 > This section documents a legacy API. See the [new API](/docs/context.html).
 
@@ -137,7 +137,7 @@ By passing down some information from the `Router` component, each `Link` and `R
 
 Before you build components with an API similar to this, consider if there are cleaner alternatives. For example, you can pass entire React components as props if you'd like to.
 
-### Referencing Context in Lifecycle Methods
+### Referencing Context in Lifecycle Methods {#referencing-context-in-lifecycle-methods}
 
 > This section documents a legacy API. See the [new API](/docs/context.html).
 
@@ -152,7 +152,7 @@ If `contextTypes` is defined within a component, the following [lifecycle method
 >
 > As of React 16, `componentDidUpdate` no longer receives `prevContext`.
 
-### Referencing Context in Stateless Function Components
+### Referencing Context in Stateless Function Components {#referencing-context-in-stateless-function-components}
 
 > This section documents a legacy API. See the [new API](/docs/context.html).
 
@@ -169,7 +169,7 @@ const Button = ({children}, context) =>
 Button.contextTypes = {color: PropTypes.string};
 ```
 
-### Updating Context
+### Updating Context {#updating-context}
 
 > This section documents a legacy API. See the [new API](/docs/context.html).
 
diff --git a/content/docs/lifting-state-up.md b/content/docs/lifting-state-up.md
index 8b30256d5e..449330cfdc 100644
--- a/content/docs/lifting-state-up.md
+++ b/content/docs/lifting-state-up.md
@@ -58,7 +58,7 @@ class Calculator extends React.Component {
 
 [**Try it on CodePen**](https://codepen.io/gaearon/pen/ZXeOBm?editors=0010)
 
-## Adding a Second Input
+## Adding a Second Input {#adding-a-second-input}
 
 Our new requirement is that, in addition to a Celsius input, we provide a Fahrenheit input, and they are kept in sync.
 
@@ -116,7 +116,7 @@ We have two inputs now, but when you enter the temperature in one of them, the o
 
 We also can't display the `BoilingVerdict` from `Calculator`. The `Calculator` doesn't know the current temperature because it is hidden inside the `TemperatureInput`.
 
-## Writing Conversion Functions
+## Writing Conversion Functions {#writing-conversion-functions}
 
 First, we will write two functions to convert from Celsius to Fahrenheit and back:
 
@@ -148,7 +148,7 @@ function tryConvert(temperature, convert) {
 
 For example, `tryConvert('abc', toCelsius)` returns an empty string, and `tryConvert('10.22', toFahrenheit)` returns `'50.396'`.
 
-## Lifting State Up
+## Lifting State Up {#lifting-state-up}
 
 Currently, both `TemperatureInput` components independently keep their values in the local state:
 
@@ -316,7 +316,7 @@ Let's recap what happens when you edit an input:
 
 Every update goes through the same steps so the inputs stay in sync.
 
-## Lessons Learned
+## Lessons Learned {#lessons-learned}
 
 There should be a single "source of truth" for any data that changes in a React application. Usually, the state is first added to the component that needs it for rendering. Then, if other components also need it, you can lift it up to their closest common ancestor. Instead of trying to sync the state between different components, you should rely on the [top-down data flow](/docs/state-and-lifecycle.html#the-data-flows-down).
 
diff --git a/content/docs/lists-and-keys.md b/content/docs/lists-and-keys.md
index bc3c6a4f1c..c82739a6ae 100644
--- a/content/docs/lists-and-keys.md
+++ b/content/docs/lists-and-keys.md
@@ -20,7 +20,7 @@ This code logs `[2, 4, 6, 8, 10]` to the console.
 
 In React, transforming arrays into lists of [elements](/docs/rendering-elements.html) is nearly identical.
 
-### Rendering Multiple Components
+### Rendering Multiple Components {#rendering-multiple-components}
 
 You can build collections of elements and [include them in JSX](/docs/introducing-jsx.html#embedding-expressions-in-jsx) using curly braces `{}`.
 
@@ -46,7 +46,7 @@ ReactDOM.render(
 
 This code displays a bullet list of numbers between 1 and 5.
 
-### Basic List Component
+### Basic List Component {#basic-list-component}
 
 Usually you would render lists inside a [component](/docs/components-and-props.html).
 
@@ -96,7 +96,7 @@ ReactDOM.render(
 
 [**Try it on CodePen**](https://codepen.io/gaearon/pen/jrXYRR?editors=0011)
 
-## Keys
+## Keys {#keys}
 
 Keys help React identify which items have changed, are added, or are removed. Keys should be given to the elements inside the array to give the elements a stable identity:
 
@@ -134,7 +134,7 @@ We don't recommend using indexes for keys if the order of items may change. This
 
 Here is an [in-depth explanation about why keys are necessary](/docs/reconciliation.html#recursing-on-children) if you're interested in learning more.
 
-### Extracting Components with Keys
+### Extracting Components with Keys {#extracting-components-with-keys}
 
 Keys only make sense in the context of the surrounding array.
 
@@ -206,7 +206,7 @@ ReactDOM.render(
 
 A good rule of thumb is that elements inside the `map()` call need keys.
 
-### Keys Must Only Be Unique Among Siblings
+### Keys Must Only Be Unique Among Siblings {#keys-must-only-be-unique-among-siblings}
 
 Keys used within arrays should be unique among their siblings. However they don't need to be globally unique. We can use the same keys when we produce two different arrays:
 
@@ -261,7 +261,7 @@ const content = posts.map((post) =>
 
 With the example above, the `Post` component can read `props.id`, but not `props.key`.
 
-### Embedding map() in JSX
+### Embedding map() in JSX {#embedding-map-in-jsx}
 
 In the examples above we declared a separate `listItems` variable and included it in JSX:
 
diff --git a/content/docs/optimizing-performance.md b/content/docs/optimizing-performance.md
index aaed723c45..e42bad7b76 100644
--- a/content/docs/optimizing-performance.md
+++ b/content/docs/optimizing-performance.md
@@ -8,7 +8,7 @@ redirect_from:
 
 Internally, React uses several clever techniques to minimize the number of costly DOM operations required to update the UI. For many applications, using React will lead to a fast user interface without doing much work to specifically optimize for performance. Nevertheless, there are several ways you can speed up your React application.
 
-## Use the Production Build
+## Use the Production Build {#use-the-production-build}
 
 If you're benchmarking or experiencing performance problems in your React apps, make sure you're testing with the minified production build.
 
@@ -26,7 +26,7 @@ It is expected that you use the development mode when working on your app, and t
 
 You can find instructions for building your app for production below.
 
-### Create React App
+### Create React App {#create-react-app}
 
 If your project is built with [Create React App](https://github.com/facebookincubator/create-react-app), run:
 
@@ -38,7 +38,7 @@ This will create a production build of your app in the `build/` folder of your p
 
 Remember that this is only necessary before deploying to production. For normal development, use `npm start`.
 
-### Single-File Builds
+### Single-File Builds {#single-file-builds}
 
 We offer production-ready versions of React and React DOM as single files:
 
@@ -49,7 +49,7 @@ We offer production-ready versions of React and React DOM as single files:
 
 Remember that only React files ending with `.production.min.js` are suitable for production.
 
-### Brunch
+### Brunch {#brunch}
 
 For the most efficient Brunch production build, install the [`uglify-js-brunch`](https://github.com/brunch/uglify-js-brunch) plugin:
 
@@ -69,7 +69,7 @@ brunch build -p
 
 Remember that you only need to do this for production builds. You shouldn't pass the `-p` flag or apply this plugin in development, because it will hide useful React warnings and make the builds much slower.
 
-### Browserify
+### Browserify {#browserify}
 
 For the most efficient Browserify production build, install a few plugins:
 
@@ -103,7 +103,7 @@ browserify ./index.js \
 
 Remember that you only need to do this for production builds. You shouldn't apply these plugins in development because they will hide useful React warnings, and make the builds much slower.
 
-### Rollup
+### Rollup {#rollup}
 
 For the most efficient Rollup production build, install a few plugins:
 
@@ -137,7 +137,7 @@ For a complete setup example [see this gist](https://gist.github.com/Rich-Harris
 
 Remember that you only need to do this for production builds. You shouldn't apply the `uglify` plugin or the `replace` plugin with `'production'` value in development because they will hide useful React warnings, and make the builds much slower.
 
-### webpack
+### webpack {#webpack}
 
 >**Note:**
 >
@@ -157,7 +157,7 @@ You can learn more about this in [webpack documentation](https://webpack.js.org/
 
 Remember that you only need to do this for production builds. You shouldn't apply `UglifyJsPlugin` or `DefinePlugin` with `'production'` value in development because they will hide useful React warnings, and make the builds much slower.
 
-## Profiling Components with the Chrome Performance Tab
+## Profiling Components with the Chrome Performance Tab {#profiling-components-with-the-chrome-performance-tab}
 
 In the **development** mode, you can visualize how components mount, update, and unmount, using the performance tools in supported browsers. For example:
 
@@ -183,7 +183,7 @@ Note that **the numbers are relative so components will render faster in product
 
 Currently Chrome, Edge, and IE are the only browsers supporting this feature, but we use the standard [User Timing API](https://developer.mozilla.org/en-US/docs/Web/API/User_Timing_API) so we expect more browsers to add support for it.
 
-## Profiling Components with the DevTools Profiler
+## Profiling Components with the DevTools Profiler {#profiling-components-with-the-devtools-profiler}
 
 `react-dom` 16.5+ and `react-native` 0.57+ provide enhanced profiling capabilities in DEV mode with the React DevTools Profiler.
 An overview of the Profiler can be found in the blog post ["Introducing the React Profiler"](/blog/2018/09/10/introducing-the-react-profiler.html).
@@ -200,13 +200,13 @@ If you haven't yet installed the React DevTools, you can find them here:
 > A production profiling bundle of `react-dom` is also available as `react-dom/profiling`.
 > Read more about how to use this bundle at [fb.me/react-profiling](https://fb.me/react-profiling)
 
-## Virtualize Long Lists
+## Virtualize Long Lists {#virtualize-long-lists}
 
 If your application renders long lists of data (hundreds or thousands of rows), we recommended using a technique known as "windowing". This technique only renders a small subset of your rows at any given time, and can dramatically reduce the time it takes to re-render the components as well as the number of DOM nodes created.
 
 [react-window](https://react-window.now.sh/) and [react-virtualized](https://bvaughn.github.io/react-virtualized/) are popular windowing libraries. They provide several reusable components for displaying lists, grids, and tabular data. You can also create your own windowing component, like [Twitter did](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3), if you want something more tailored to your application's specific use case.
 
-## Avoid Reconciliation
+## Avoid Reconciliation {#avoid-reconciliation}
 
 React builds and maintains an internal representation of the rendered UI. It includes the React elements you return from your components. This representation lets React avoid creating DOM nodes and accessing existing ones beyond necessity, as that can be slower than operations on JavaScript objects. Sometimes it is referred to as a "virtual DOM", but it works the same way on React Native.
 
@@ -242,7 +242,7 @@ If you know that in some situations your component doesn't need to update, you c
 
 In most cases, instead of writing `shouldComponentUpdate()` by hand, you can inherit from [`React.PureComponent`](/docs/react-api.html#reactpurecomponent). It is equivalent to implementing `shouldComponentUpdate()` with a shallow comparison of current and previous props and state.
 
-## shouldComponentUpdate In Action
+## shouldComponentUpdate In Action {#shouldcomponentupdate-in-action}
 
 Here's a subtree of components. For each one, `SCU` indicates what `shouldComponentUpdate` returned, and `vDOMEq` indicates whether the rendered React elements were equivalent. Finally, the circle's color indicates whether the component had to be reconciled or not.
 
@@ -256,7 +256,7 @@ The last interesting case is C8. React had to render this component, but since t
 
 Note that React only had to do DOM mutations for C6, which was inevitable. For C8, it bailed out by comparing the rendered React elements, and for C2's subtree and C7, it didn't even have to compare the elements as we bailed out on `shouldComponentUpdate`, and `render` was not called.
 
-## Examples
+## Examples {#examples}
 
 If the only way your component ever changes is when the `props.color` or the `state.count` variable changes, you could have `shouldComponentUpdate` check that:
 
@@ -350,7 +350,7 @@ class WordAdder extends React.Component {
 
 The problem is that `PureComponent` will do a simple comparison between the old and new values of `this.props.words`. Since this code mutates the `words` array in the `handleClick` method of `WordAdder`, the old and new values of `this.props.words` will compare as equal, even though the actual words in the array have changed. The `ListOfWords` will thus not update even though it has new words that should be rendered.
 
-## The Power Of Not Mutating Data
+## The Power Of Not Mutating Data {#the-power-of-not-mutating-data}
 
 The simplest way to avoid this problem is to avoid mutating values that you are using as props or state. For example, the `handleClick` method above could be rewritten using `concat` as:
 
@@ -400,7 +400,7 @@ function updateColorMap(colormap) {
 
 If you're using Create React App, both `Object.assign` and the object spread syntax are available by default.
 
-## Using Immutable Data Structures
+## Using Immutable Data Structures {#using-immutable-data-structures}
 
 [Immutable.js](https://github.com/facebook/immutable-js) is another way to solve this problem. It provides immutable, persistent collections that work via structural sharing:
 
diff --git a/content/docs/portals.md b/content/docs/portals.md
index 47100769ee..6501213962 100644
--- a/content/docs/portals.md
+++ b/content/docs/portals.md
@@ -12,7 +12,7 @@ ReactDOM.createPortal(child, container)
 
 The first argument (`child`) is any [renderable React child](/docs/react-component.html#render), such as an element, string, or fragment. The second argument (`container`) is a DOM element.
 
-## Usage
+## Usage {#usage}
 
 Normally, when you return an element from a component's render method, it's mounted into the DOM as a child of the nearest parent node:
 
@@ -50,7 +50,7 @@ A typical use case for portals is when a parent component has an `overflow: hidd
 
 [**Try it on CodePen**](https://codepen.io/gaearon/pen/yzMaBd)
 
-## Event Bubbling Through Portals
+## Event Bubbling Through Portals {#event-bubbling-through-portals}
 
 Even though a portal can be anywhere in the DOM tree, it behaves like a normal React child in every other way. Features like context work exactly the same regardless of whether the child is a portal, as the portal still exists in the *React tree* regardless of position in the *DOM tree*.
 
diff --git a/content/docs/react-without-es6.md b/content/docs/react-without-es6.md
index 8cb01c6f3c..8b54d09812 100644
--- a/content/docs/react-without-es6.md
+++ b/content/docs/react-without-es6.md
@@ -28,7 +28,7 @@ var Greeting = createReactClass({
 
 The API of ES6 classes is similar to `createReactClass()` with a few exceptions.
 
-## Declaring Default Props
+## Declaring Default Props {#declaring-default-props}
 
 With functions and ES6 classes `defaultProps` is defined as a property on the component itself:
 
@@ -57,7 +57,7 @@ var Greeting = createReactClass({
 });
 ```
 
-## Setting the Initial State
+## Setting the Initial State {#setting-the-initial-state}
 
 In ES6 classes, you can define the initial state by assigning `this.state` in the constructor:
 
@@ -82,7 +82,7 @@ var Counter = createReactClass({
 });
 ```
 
-## Autobinding
+## Autobinding {#autobinding}
 
 In React components declared as ES6 classes, methods follow the same semantics as regular ES6 classes. This means that they don't automatically bind `this` to the instance. You'll have to explicitly use `.bind(this)` in the constructor:
 
@@ -167,7 +167,7 @@ If you'd rather play it safe, you have a few options:
 * Use arrow functions, e.g. `onClick={(e) => this.handleClick(e)}`.
 * Keep using `createReactClass`.
 
-## Mixins
+## Mixins {#mixins}
 
 >**Note:**
 >
diff --git a/content/docs/reconciliation.md b/content/docs/reconciliation.md
index 4a45aefcc6..c2147a4dcf 100644
--- a/content/docs/reconciliation.md
+++ b/content/docs/reconciliation.md
@@ -6,7 +6,7 @@ permalink: docs/reconciliation.html
 
 React provides a declarative API so that you don't have to worry about exactly what changes on every update. This makes writing applications a lot easier, but it might not be obvious how this is implemented within React. This article explains the choices we made in React's "diffing" algorithm so that component updates are predictable while being fast enough for high-performance apps.
 
-## Motivation
+## Motivation {#motivation}
 
 When you use React, at a single point in time you can think of the `render()` function as creating a tree of React elements. On the next state or props update, that `render()` function will return a different tree of React elements. React then needs to figure out how to efficiently update the UI to match the most recent tree.
 
@@ -19,11 +19,11 @@ If we used this in React, displaying 1000 elements would require in the order of
 
 In practice, these assumptions are valid for almost all practical use cases.
 
-## The Diffing Algorithm
+## The Diffing Algorithm {#the-diffing-algorithm}
 
 When diffing two trees, React first compares the two root elements. The behavior is different depending on the types of the root elements.
 
-### Elements Of Different Types
+### Elements Of Different Types {#elements-of-different-types}
 
 Whenever the root elements have different types, React will tear down the old tree and build the new tree from scratch. Going from `<a>` to `<img>`, or from `<Article>` to `<Comment>`, or from `<Button>` to `<div>` - any of those will lead to a full rebuild.
 
@@ -43,7 +43,7 @@ Any components below the root will also get unmounted and have their state destr
 
 This will destroy the old `Counter` and remount a new one.
 
-### DOM Elements Of The Same Type
+### DOM Elements Of The Same Type {#dom-elements-of-the-same-type}
 
 When comparing two React DOM elements of the same type, React looks at the attributes of both, keeps the same underlying DOM node, and only updates the changed attributes. For example:
 
@@ -67,13 +67,13 @@ When converting between these two elements, React knows to only modify the `colo
 
 After handling the DOM node, React then recurses on the children.
 
-### Component Elements Of The Same Type
+### Component Elements Of The Same Type {#component-elements-of-the-same-type}
 
 When a component updates, the instance stays the same, so that state is maintained across renders. React updates the props of the underlying component instance to match the new element, and calls `componentWillReceiveProps()` and `componentWillUpdate()` on the underlying instance.
 
 Next, the `render()` method is called and the diff algorithm recurses on the previous result and the new result.
 
-### Recursing On Children
+### Recursing On Children {#recursing-on-children}
 
 By default, when recursing on the children of a DOM node, React just iterates over both lists of children at the same time and generates a mutation whenever there's a difference.
 
@@ -111,7 +111,7 @@ If you implement it naively, inserting an element at the beginning has worse per
 
 React will mutate every child instead of realizing it can keep the `<li>Duke</li>` and `<li>Villanova</li>` subtrees intact. This inefficiency can be a problem.
 
-### Keys
+### Keys {#keys}
 
 In order to solve this issue, React supports a `key` attribute. When children have keys, React uses the key to match children in the original tree with children in the subsequent tree. For example, adding a `key` to our inefficient example above can make the tree conversion efficient:
 
@@ -144,7 +144,7 @@ Reorders can also cause issues with component state when indexes are used as key
 
 [Here](codepen://reconciliation/index-used-as-key) is an example of the issues that can be caused by using indexes as keys on CodePen, and [here](codepen://reconciliation/no-index-used-as-key) is an updated version of the same example showing how not using indexes as keys will fix these reordering, sorting, and prepending issues.
 
-## Tradeoffs
+## Tradeoffs {#tradeoffs}
 
 It is important to remember that the reconciliation algorithm is an implementation detail. React could rerender the whole app on every action; the end result would be the same. Just to be clear, rerender in this context means calling `render` for all components, it doesn't mean React will unmount and remount them. It will only apply the differences following the rules stated in the previous sections.
 
diff --git a/content/docs/reference-dom-elements.md b/content/docs/reference-dom-elements.md
index ef1b73555e..1668709681 100644
--- a/content/docs/reference-dom-elements.md
+++ b/content/docs/reference-dom-elements.md
@@ -18,21 +18,21 @@ React implements a browser-independent DOM system for performance and cross-brow
 
 In React, all DOM properties and attributes (including event handlers) should be camelCased. For example, the HTML attribute `tabindex` corresponds to the attribute `tabIndex` in React. The exception is `aria-*` and `data-*` attributes, which should be lowercased. For example, you can keep `aria-label` as `aria-label`.
 
-## Differences In Attributes
+## Differences In Attributes {#differences-in-attributes}
 
 There are a number of attributes that work differently between React and HTML:
 
-### checked
+### checked {#checked}
 
 The `checked` attribute is supported by `<input>` components of type `checkbox` or `radio`. You can use it to set whether the component is checked. This is useful for building controlled components. `defaultChecked` is the uncontrolled equivalent, which sets whether the component is checked when it is first mounted.
 
-### className
+### className {#classname}
 
 To specify a CSS class, use the `className` attribute. This applies to all regular DOM and SVG elements like `<div>`, `<a>`, and others.
 
 If you use React with Web Components (which is uncommon), use the `class` attribute instead.
 
-### dangerouslySetInnerHTML
+### dangerouslySetInnerHTML {#dangerouslysetinnerhtml}
 
 `dangerouslySetInnerHTML` is React's replacement for using `innerHTML` in the browser DOM. In general, setting HTML from code is risky because it's easy to inadvertently expose your users to a [cross-site scripting (XSS)](https://en.wikipedia.org/wiki/Cross-site_scripting) attack. So, you can set HTML directly from React, but you have to type out `dangerouslySetInnerHTML` and pass an object with a `__html` key, to remind yourself that it's dangerous. For example:
 
@@ -46,19 +46,19 @@ function MyComponent() {
 }
 ```
 
-### htmlFor
+### htmlFor {#htmlfor}
 
 Since `for` is a reserved word in JavaScript, React elements use `htmlFor` instead.
 
-### onChange
+### onChange {#onchange}
 
 The `onChange` event behaves as you would expect it to: whenever a form field is changed, this event is fired. We intentionally do not use the existing browser behavior because `onChange` is a misnomer for its behavior and React relies on this event to handle user input in real time.
 
-### selected
+### selected {#selected}
 
 The `selected` attribute is supported by `<option>` components. You can use it to set whether the component is selected. This is useful for building controlled components.
 
-### style
+### style {#style}
 
 >Note
 >
@@ -108,21 +108,21 @@ React will automatically append a "px" suffix to certain numeric inline style pr
 
 Not all style properties are converted to pixel strings though. Certain ones remain unitless (eg `zoom`, `order`, `flex`). A complete list of unitless properties can be seen [here](https://github.com/facebook/react/blob/4131af3e4bf52f3a003537ec95a1655147c81270/src/renderers/dom/shared/CSSProperty.js#L15-L59).
 
-### suppressContentEditableWarning
+### suppressContentEditableWarning {#suppresscontenteditablewarning}
 
 Normally, there is a warning when an element with children is also marked as `contentEditable`, because it won't work. This attribute suppresses that warning. Don't use this unless you are building a library like [Draft.js](https://facebook.github.io/draft-js/) that manages `contentEditable` manually.
 
-### suppressHydrationWarning
+### suppressHydrationWarning {#suppresshydrationwarning}
 
 If you use server-side React rendering, normally there is a warning when the server and the client render different content. However, in some rare cases, it is very hard or impossible to guarantee an exact match. For example, timestamps are expected to differ on the server and on the client.
 
 If you set `suppressHydrationWarning` to `true`, React will not warn you about mismatches in the attributes and the content of that element. It only works one level deep, and is intended to be used as an escape hatch. Don't overuse it. You can read more about hydration in the [`ReactDOM.hydrate()` documentation](/docs/react-dom.html#hydrate).
 
-### value
+### value {#value}
 
 The `value` attribute is supported by `<input>` and `<textarea>` components. You can use it to set the value of the component. This is useful for building controlled components. `defaultValue` is the uncontrolled equivalent, which sets the value of the component when it is first mounted.
 
-## All Supported HTML Attributes
+## All Supported HTML Attributes {#all-supported-html-attributes}
 
 As of React 16, any standard [or custom](/blog/2017/09/08/dom-attributes-in-react-16.html) DOM attributes are fully supported.
 
diff --git a/content/docs/reference-events.md b/content/docs/reference-events.md
index 701d6446ed..745c6a71e3 100644
--- a/content/docs/reference-events.md
+++ b/content/docs/reference-events.md
@@ -8,7 +8,7 @@ category: Reference
 
 This reference guide documents the `SyntheticEvent` wrapper that forms part of React's Event System. See the [Handling Events](/docs/handling-events.html) guide to learn more.
 
-## Overview
+## Overview {#overview}
 
 Your event handlers will be passed instances of `SyntheticEvent`, a cross-browser wrapper around the browser's native event. It has the same interface as the browser's native event, including `stopPropagation()` and `preventDefault()`, except the events work identically across all browsers.
 
@@ -35,7 +35,7 @@ string type
 >
 > As of v0.14, returning `false` from an event handler will no longer stop event propagation. Instead, `e.stopPropagation()` or `e.preventDefault()` should be triggered manually, as appropriate.
 
-### Event Pooling
+### Event Pooling {#event-pooling}
 
 The `SyntheticEvent` is pooled. This means that the `SyntheticEvent` object will be reused and all properties will be nullified after the event callback has been invoked.
 This is for performance reasons.
@@ -64,7 +64,7 @@ function onClick(event) {
 >
 > If you want to access the event properties in an asynchronous way, you should call `event.persist()` on the event, which will remove the synthetic event from the pool and allow references to the event to be retained by user code.
 
-## Supported Events
+## Supported Events {#supported-events}
 
 React normalizes events so that they have consistent properties across different browsers.
 
@@ -89,9 +89,9 @@ The event handlers below are triggered by an event in the bubbling phase. To reg
 
 * * *
 
-## Reference
+## Reference {#reference}
 
-### Clipboard Events
+### Clipboard Events {#clipboard-events}
 
 Event names:
 
@@ -107,7 +107,7 @@ DOMDataTransfer clipboardData
 
 * * *
 
-### Composition Events
+### Composition Events {#composition-events}
 
 Event names:
 
@@ -124,7 +124,7 @@ string data
 
 * * *
 
-### Keyboard Events
+### Keyboard Events {#keyboard-events}
 
 Event names:
 
@@ -153,7 +153,7 @@ The `key` property can take any of the values documented in the [DOM Level 3 Eve
 
 * * *
 
-### Focus Events
+### Focus Events {#focus-events}
 
 Event names:
 
@@ -171,7 +171,7 @@ DOMEventTarget relatedTarget
 
 * * *
 
-### Form Events
+### Form Events {#form-events}
 
 Event names:
 
@@ -183,7 +183,7 @@ For more information about the onChange event, see [Forms](/docs/forms.html).
 
 * * *
 
-### Mouse Events
+### Mouse Events {#mouse-events}
 
 Event names:
 
@@ -216,7 +216,7 @@ boolean shiftKey
 
 * * *
 
-### Pointer Events
+### Pointer Events {#pointer-events}
 
 Event names:
 
@@ -252,7 +252,7 @@ If your application requires pointer events, we recommend adding a third party p
 
 * * *
 
-### Selection Events
+### Selection Events {#selection-events}
 
 Event names:
 
@@ -262,7 +262,7 @@ onSelect
 
 * * *
 
-### Touch Events
+### Touch Events {#touch-events}
 
 Event names:
 
@@ -285,7 +285,7 @@ DOMTouchList touches
 
 * * *
 
-### UI Events
+### UI Events {#ui-events}
 
 Event names:
 
@@ -302,7 +302,7 @@ DOMAbstractView view
 
 * * *
 
-### Wheel Events
+### Wheel Events {#wheel-events}
 
 Event names:
 
@@ -321,7 +321,7 @@ number deltaZ
 
 * * *
 
-### Media Events
+### Media Events {#media-events}
 
 Event names:
 
@@ -334,7 +334,7 @@ onTimeUpdate onVolumeChange onWaiting
 
 * * *
 
-### Image Events
+### Image Events {#image-events}
 
 Event names:
 
@@ -344,7 +344,7 @@ onLoad onError
 
 * * *
 
-### Animation Events
+### Animation Events {#animation-events}
 
 Event names:
 
@@ -362,7 +362,7 @@ float elapsedTime
 
 * * *
 
-### Transition Events
+### Transition Events {#transition-events}
 
 Event names:
 
@@ -380,7 +380,7 @@ float elapsedTime
 
 * * *
 
-### Other Events
+### Other Events {#other-events}
 
 Event names:
 
diff --git a/content/docs/reference-glossary.md b/content/docs/reference-glossary.md
index f31a43c456..27948ae1a3 100644
--- a/content/docs/reference-glossary.md
+++ b/content/docs/reference-glossary.md
@@ -7,33 +7,33 @@ permalink: docs/glossary.html
 
 ---
 
-## Single-page Application
+## Single-page Application {#single-page-application}
 
 A single-page application is an application that loads a single HTML page and all the necessary assets (such as JavaScript and CSS) required for the application to run. Any interactions with the page or subsequent pages do not require a round trip to the server which means the page is not reloaded.
 
 Though you may build a single-page application in React, it is not a requirement. React can also be used for enhancing small parts of existing websites with additional interactivity. Code written in React can coexist peacefully with markup rendered on the server by something like PHP, or with other client-side libraries. In fact, this is exactly how React is being used at Facebook.
 
-## ES6, ES2015, ES2016, etc
+## ES6, ES2015, ES2016, etc {#es6-es2015-es2016-etc}
 
 These acronyms all refer to the most recent versions of the ECMAScript Language Specification standard, which the JavaScript language is an implementation of. The ES6 version (also known as ES2015) includes many additions to the previous versions such as: arrow functions, classes, template literals, `let` and `const` statements. You can learn more about specific versions [here](https://en.wikipedia.org/wiki/ECMAScript#Versions).
 
-## Compilers
+## Compilers {#compilers}
 
 A JavaScript compiler takes JavaScript code, transforms it and returns JavaScript code in a different format. The most common use case is to take ES6 syntax and transform it into syntax that older browsers are capable of interpreting. [Babel](https://babeljs.io/) is the compiler most commonly used with React.
 
-## Bundlers
+## Bundlers {#bundlers}
 
 Bundlers take JavaScript and CSS code written as separate modules (often hundreds of them), and combine them together into a few files better optimized for the browsers. Some bundlers commonly used in React applications include [Webpack](https://webpack.js.org/) and [Browserify](http://browserify.org/).
 
-## Package Managers
+## Package Managers {#package-managers}
 
 Package managers are tools that allow you to manage dependencies in your project. [npm](https://www.npmjs.com/) and [Yarn](http://yarnpkg.com/) are two package managers commonly used in React applications. Both of them are clients for the same npm package registry.
 
-## CDN
+## CDN {#cdn}
 
 CDN stands for Content Delivery Network. CDNs deliver cached, static content from a network of servers across the globe. 
 
-## JSX
+## JSX {#jsx}
 
 JSX is a syntax extension to JavaScript. It is similar to a template language, but it has full power of JavaScript. JSX gets compiled to `React.createElement()` calls which return plain JavaScript objects called "React elements". To get a basic introduction to JSX [see the docs here](/docs/introducing-jsx.html) and find a more in-depth tutorial on JSX [here](/docs/jsx-in-depth.html).
 
@@ -47,7 +47,7 @@ ReactDOM.render(
 );
 ```  
 
-## [Elements](/docs/rendering-elements.html)
+## [Elements](/docs/rendering-elements.html) {#elementsdocsrendering-elementshtml}
 
 React elements are the building blocks of React applications. One might confuse elements with a more widely known concept of "components". An element describes what you want to see on the screen. React elements are immutable.
 
@@ -57,7 +57,7 @@ const element = <h1>Hello, world</h1>;
 
 Typically, elements are not used directly, but get returned from components.
 
-## [Components](/docs/components-and-props.html)
+## [Components](/docs/components-and-props.html) {#componentsdocscomponents-and-propshtml}
 
 React components are small, reusable pieces of code that return a React element to be rendered to the page. The simplest version of React component is a plain JavaScript function that returns a React element:
 
@@ -79,7 +79,7 @@ class Welcome extends React.Component {
 
 Components can be broken down into distinct pieces of functionality and used within other components. Components can return other components, arrays, strings and numbers. A good rule of thumb is that if a part of your UI is used several times (Button, Panel, Avatar), or is complex enough on its own (App, FeedStory, Comment), it is a good candidate to be a reusable component. Component names should also always start with a capital letter (`<Wrapper/>` **not** `<wrapper/>`). See [this documentation](/docs/components-and-props.html#rendering-a-component) for more information on rendering components. 
 
-### [`props`](/docs/components-and-props.html)
+### [`props`](/docs/components-and-props.html) {#propsdocscomponents-and-propshtml}
 
 `props` are inputs to a React component. They are data passed down from a parent component to a child component.
 
@@ -92,7 +92,7 @@ props.number = 42;
 
 If you need to modify some value in response to user input or a network response, use `state` instead.
 
-### `props.children`
+### `props.children` {#propschildren}
 
 `props.children` is available on every component. It contains the content between the opening and closing tags of a component. For example:
 
@@ -118,7 +118,7 @@ class Welcome extends React.Component {
 }
 ```
 
-### [`state`](/docs/state-and-lifecycle.html#adding-local-state-to-a-class)
+### [`state`](/docs/state-and-lifecycle.html#adding-local-state-to-a-class) {#statedocsstate-and-lifecyclehtmladding-local-state-to-a-class}
 
 A component needs `state` when some data associated with it changes over time. For example, a `Checkbox` component might need `isChecked` in its state, and a `NewsFeed` component might want to keep track of `fetchedPosts` in its state.
 
@@ -126,7 +126,7 @@ The most important difference between `state` and `props` is that `props` are pa
 
 For each particular piece of changing data, there should be just one component that "owns" it in its state. Don't try to synchronize states of two different components. Instead, [lift it up](/docs/lifting-state-up.html) to their closest shared ancestor, and pass it down as props to both of them.
 
-## [Lifecycle Methods](/docs/state-and-lifecycle.html#adding-lifecycle-methods-to-a-class)
+## [Lifecycle Methods](/docs/state-and-lifecycle.html#adding-lifecycle-methods-to-a-class) {#lifecycle-methodsdocsstate-and-lifecyclehtmladding-lifecycle-methods-to-a-class}
 
 Lifecycle methods are custom functionality that gets executed during the different phases of a component. There are methods available when the component gets created and inserted into the DOM ([mounting](/docs/react-component.html#mounting)), when the component updates, and when the component gets unmounted or removed from the DOM.
 
@@ -140,7 +140,7 @@ An *uncontrolled component* works like form elements do outside of React. When a
 
 In most cases you should use controlled components.
 
-## [Keys](/docs/lists-and-keys.html) 
+## [Keys](/docs/lists-and-keys.html) {#keysdocslists-and-keyshtml}
 
 A "key" is a special string attribute you need to include when creating arrays of elements. Keys help React identify which items have changed, are added, or are removed. Keys should be given to the elements inside an array to give the elements a stable identity.
 
@@ -148,19 +148,19 @@ Keys only need to be unique among sibling elements in the same array. They don't
 
 Don't pass something like `Math.random()` to keys. It is important that keys have a "stable identity" across re-renders so that React can determine when items are added, removed, or re-ordered. Ideally, keys should correspond to unique and stable identifiers coming from your data, such as `post.id`.
 
-## [Refs](/docs/refs-and-the-dom.html)
+## [Refs](/docs/refs-and-the-dom.html) {#refsdocsrefs-and-the-domhtml}
 
 React supports a special attribute that you can attach to any component. The `ref` attribute can be an object created by [`React.createRef()` function](/docs/react-api.html#reactcreateref) or a callback function, or a string (in legacy API). When the `ref` attribute is a callback function, the function receives the underlying DOM element or class instance (depending on the type of element) as its argument. This allows you to have direct access to the DOM element or component instance.
 
 Use refs sparingly. If you find yourself often using refs to "make things happen" in your app, consider getting more familiar with [top-down data flow](/docs/lifting-state-up.html).
 
-## [Events](/docs/handling-events.html) 
+## [Events](/docs/handling-events.html) {#eventsdocshandling-eventshtml}
 
 Handling events with React elements has some syntactic differences:
 
 * React event handlers are named using camelCase, rather than lowercase.
 * With JSX you pass a function as the event handler, rather than a string.
 
-## [Reconciliation](/docs/reconciliation.html)
+## [Reconciliation](/docs/reconciliation.html) {#reconciliationdocsreconciliationhtml}
 
 When a component's props or state change, React decides whether an actual DOM update is necessary by comparing the newly returned element with the previously rendered one. When they are not equal, React will update the DOM. This process is called "reconciliation".
diff --git a/content/docs/reference-react-component.md b/content/docs/reference-react-component.md
index 0962fffeec..ecb4d087c0 100644
--- a/content/docs/reference-react-component.md
+++ b/content/docs/reference-react-component.md
@@ -17,7 +17,7 @@ redirect_from:
 
 This page contains a detailed API reference for the React component class definition. It assumes you're familiar with fundamental React concepts, such as [Components and Props](/docs/components-and-props.html), as well as [State and Lifecycle](/docs/state-and-lifecycle.html). If you're not, read them first.
 
-## Overview
+## Overview {#overview}
 
 React lets you define components as classes or functions. Components defined as classes currently provide more features which are described in detail on this page. To define a React component class, you need to extend `React.Component`:
 
@@ -37,11 +37,11 @@ The only method you *must* define in a `React.Component` subclass is called [`re
 >
 >React doesn't force you to use the ES6 class syntax. If you prefer to avoid it, you may use the `create-react-class` module or a similar custom abstraction instead. Take a look at [Using React without ES6](/docs/react-without-es6.html) to learn more.
 
-### The Component Lifecycle
+### The Component Lifecycle {#the-component-lifecycle}
 
 Each component has several "lifecycle methods" that you can override to run code at particular times in the process. **You can use [this lifecycle diagram](http://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/) as a cheat sheet.** In the list below, commonly used lifecycle methods are marked as **bold**. The rest of them exist for relatively rare use cases.
 
-#### Mounting
+#### Mounting {#mounting}
 
 These methods are called in the following order when an instance of a component is being created and inserted into the DOM:
 
@@ -56,7 +56,7 @@ These methods are called in the following order when an instance of a component
 >
 >- [`UNSAFE_componentWillMount()`](#unsafe_componentwillmount)
 
-#### Updating
+#### Updating {#updating}
 
 An update can be caused by changes to props or state. These methods are called in the following order when a component is being re-rendered:
 
@@ -73,45 +73,45 @@ An update can be caused by changes to props or state. These methods are called i
 >- [`UNSAFE_componentWillUpdate()`](#unsafe_componentwillupdate)
 >- [`UNSAFE_componentWillReceiveProps()`](#unsafe_componentwillreceiveprops)
 
-#### Unmounting
+#### Unmounting {#unmounting}
 
 This method is called when a component is being removed from the DOM:
 
 - [**`componentWillUnmount()`**](#componentwillunmount)
 
-#### Error Handling
+#### Error Handling {#error-handling}
 
 These methods are called when there is an error during rendering, in a lifecycle method, or in the constructor of any child component.
 
 - [`static getDerivedStateFromError()`](#static-getderivedstatefromerror)
 - [`componentDidCatch()`](#componentdidcatch)
 
-### Other APIs
+### Other APIs {#other-apis}
 
 Each component also provides some other APIs:
 
   - [`setState()`](#setstate)
   - [`forceUpdate()`](#forceupdate)
 
-### Class Properties
+### Class Properties {#class-properties}
 
   - [`defaultProps`](#defaultprops)
   - [`displayName`](#displayname)
 
-### Instance Properties
+### Instance Properties {#instance-properties}
 
   - [`props`](#props)
   - [`state`](#state)
 
 * * *
 
-## Reference
+## Reference {#reference}
 
-### Commonly Used Lifecycle Methods
+### Commonly Used Lifecycle Methods {#commonly-used-lifecycle-methods}
 
 The methods in this section cover the vast majority of use cases you'll encounter creating React components. **For a visual reference, check out [this lifecycle diagram](http://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/).**
 
-### `render()`
+### `render()` {#render}
 
 ```javascript
 render()
@@ -137,7 +137,7 @@ If you need to interact with the browser, perform your work in `componentDidMoun
 
 * * *
 
-### `constructor()`
+### `constructor()` {#constructor}
 
 ```javascript
 constructor(props)
@@ -188,7 +188,7 @@ Avoid introducing any side-effects or subscriptions in the constructor. For thos
 
 * * *
 
-### `componentDidMount()`
+### `componentDidMount()` {#componentdidmount}
 
 ```javascript
 componentDidMount()
@@ -202,7 +202,7 @@ You **may call `setState()` immediately** in `componentDidMount()`. It will trig
 
 * * *
 
-### `componentDidUpdate()`
+### `componentDidUpdate()` {#componentdidupdate}
 
 ```javascript
 componentDidUpdate(prevProps, prevState, snapshot)
@@ -231,7 +231,7 @@ If your component implements the `getSnapshotBeforeUpdate()` lifecycle (which is
 
 * * *
 
-### `componentWillUnmount()`
+### `componentWillUnmount()` {#componentwillunmount}
 
 ```javascript
 componentWillUnmount()
@@ -243,12 +243,12 @@ You **should not call `setState()`** in `componentWillUnmount()` because the com
 
 * * *
 
-### Rarely Used Lifecycle Methods
+### Rarely Used Lifecycle Methods {#rarely-used-lifecycle-methods}
 
 The methods in this section correspond to uncommon use cases. They're handy once in a while, but most of your components probably don't need any of them. **You can see most of the methods below on [this lifecycle diagram](http://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/) if you click the "Show less common lifecycles" checkbox at the top of it.**
 
 
-### `shouldComponentUpdate()`
+### `shouldComponentUpdate()` {#shouldcomponentupdate}
 
 ```javascript
 shouldComponentUpdate(nextProps, nextState)
@@ -268,7 +268,7 @@ Currently, if `shouldComponentUpdate()` returns `false`, then [`UNSAFE_component
 
 * * *
 
-### `static getDerivedStateFromProps()`
+### `static getDerivedStateFromProps()` {#static-getderivedstatefromprops}
 
 ```js
 static getDerivedStateFromProps(props, state)
@@ -293,7 +293,7 @@ Note that this method is fired on *every* render, regardless of the cause. This
 
 * * *
 
-### `getSnapshotBeforeUpdate()`
+### `getSnapshotBeforeUpdate()` {#getsnapshotbeforeupdate}
 
 ```javascript
 getSnapshotBeforeUpdate(prevProps, prevState)
@@ -313,7 +313,7 @@ In the above examples, it is important to read the `scrollHeight` property in `g
 
 * * *
 
-### Error boundaries
+### Error boundaries {#error-boundaries}
 
 [Error boundaries](/docs/error-boundaries.html) are React components that catch JavaScript errors anywhere in their child component tree, log those errors, and display a fallback UI instead of the component tree that crashed. Error boundaries catch errors during rendering, in lifecycle methods, and in constructors of the whole tree below them.
 
@@ -327,7 +327,7 @@ For more details, see [*Error Handling in React 16*](/blog/2017/07/26/error-hand
 > 
 > Error boundaries only catch errors in the components **below** them in the tree. An error boundary can’t catch an error within itself.
 
-### `static getDerivedStateFromError()`
+### `static getDerivedStateFromError()` {#static-getderivedstatefromerror}
 ```javascript
 static getDerivedStateFromError(error)
 ```
@@ -365,7 +365,7 @@ For those use cases, use `componentDidCatch()` instead.
 
 * * *
 
-### `componentDidCatch()`
+### `componentDidCatch()` {#componentdidcatch}
 
 ```javascript
 componentDidCatch(error, info)
@@ -420,11 +420,11 @@ class ErrorBoundary extends React.Component {
 
 * * *
 
-### Legacy Lifecycle Methods
+### Legacy Lifecycle Methods {#legacy-lifecycle-methods}
 
 The lifecycle methods below are marked as "legacy". They still work, but we don't recommend using them in the new code. You can learn more about migrating away from legacy lifecycle methods in [this blog post](/blog/2018/03/27/update-on-async-rendering.html).
 
-### `UNSAFE_componentWillMount()`
+### `UNSAFE_componentWillMount()` {#unsafe_componentwillmount}
 
 ```javascript
 UNSAFE_componentWillMount()
@@ -442,7 +442,7 @@ This is the only lifecycle method called on server rendering.
 
 * * *
 
-### `UNSAFE_componentWillReceiveProps()`
+### `UNSAFE_componentWillReceiveProps()` {#unsafe_componentwillreceiveprops}
 
 ```javascript
 UNSAFE_componentWillReceiveProps(nextProps)
@@ -470,7 +470,7 @@ React doesn't call `UNSAFE_componentWillReceiveProps()` with initial props durin
 
 * * *
 
-### `UNSAFE_componentWillUpdate()`
+### `UNSAFE_componentWillUpdate()` {#unsafe_componentwillupdate}
 
 ```javascript
 UNSAFE_componentWillUpdate(nextProps, nextState)
@@ -492,13 +492,13 @@ Typically, this method can be replaced by `componentDidUpdate()`. If you were re
 
 * * *
 
-## Other APIs
+## Other APIs {#other-apis-1}
 
 Unlike the lifecycle methods above (which React calls for you), the methods below are the methods *you* can call from your components.
 
 There are just two of them: `setState()` and `forceUpdate()`.
 
-### `setState()`
+### `setState()` {#setstate}
 
 ```javascript
 setState(updater[, callback])
@@ -569,7 +569,7 @@ For more detail, see:
 
 * * *
 
-### `forceUpdate()`
+### `forceUpdate()` {#forceupdate}
 
 ```javascript
 component.forceUpdate(callback)
@@ -583,9 +583,9 @@ Normally you should try to avoid all uses of `forceUpdate()` and only read from
 
 * * *
 
-## Class Properties
+## Class Properties {#class-properties-1}
 
-### `defaultProps`
+### `defaultProps` {#defaultprops}
 
 `defaultProps` can be defined as a property on the component class itself, to set the default props for the class. This is used for undefined props, but not for null props. For example:
 
@@ -617,21 +617,21 @@ If `props.color` is set to null, it will remain null:
 
 * * *
 
-### `displayName`
+### `displayName` {#displayname}
 
 The `displayName` string is used in debugging messages. Usually, you don't need to set it explicitly because it's inferred from the name of the function or class that defines the component. You might want to set it explicitly if you want to display a different name for debugging purposes or when you create a higher-order component, see [Wrap the Display Name for Easy Debugging](/docs/higher-order-components.html#convention-wrap-the-display-name-for-easy-debugging) for details.
 
 * * *
 
-## Instance Properties
+## Instance Properties {#instance-properties-1}
 
-### `props`
+### `props` {#props}
 
 `this.props` contains the props that were defined by the caller of this component. See [Components and Props](/docs/components-and-props.html) for an introduction to props.
 
 In particular, `this.props.children` is a special prop, typically defined by the child tags in the JSX expression rather than in the tag itself.
 
-### `state`
+### `state` {#state}
 
 The state contains data specific to this component that may change over time. The state is user-defined, and it should be a plain JavaScript object.
 
diff --git a/content/docs/reference-react-dom-server.md b/content/docs/reference-react-dom-server.md
index eac4040702..80c0303775 100644
--- a/content/docs/reference-react-dom-server.md
+++ b/content/docs/reference-react-dom-server.md
@@ -15,7 +15,7 @@ import ReactDOMServer from 'react-dom/server';
 var ReactDOMServer = require('react-dom/server');
 ```
 
-## Overview
+## Overview {#overview}
 
 The following methods can be used in both the server and browser environments:
 
@@ -29,9 +29,9 @@ These additional methods depend on a package (`stream`) that is **only available
 
 * * *
 
-## Reference
+## Reference {#reference}
 
-### `renderToString()`
+### `renderToString()` {#rendertostring}
 
 ```javascript
 ReactDOMServer.renderToString(element)
@@ -43,7 +43,7 @@ If you call [`ReactDOM.hydrate()`](/docs/react-dom.html#hydrate) on a node that
 
 * * *
 
-### `renderToStaticMarkup()`
+### `renderToStaticMarkup()` {#rendertostaticmarkup}
 
 ```javascript
 ReactDOMServer.renderToStaticMarkup(element)
@@ -55,7 +55,7 @@ If you plan to use React on the client to make the markup interactive, do not us
 
 * * *
 
-### `renderToNodeStream()`
+### `renderToNodeStream()` {#rendertonodestream}
 
 ```javascript
 ReactDOMServer.renderToNodeStream(element)
@@ -73,7 +73,7 @@ If you call [`ReactDOM.hydrate()`](/docs/react-dom.html#hydrate) on a node that
 
 * * *
 
-### `renderToStaticNodeStream()`
+### `renderToStaticNodeStream()` {#rendertostaticnodestream}
 
 ```javascript
 ReactDOMServer.renderToStaticNodeStream(element)
diff --git a/content/docs/reference-react-dom.md b/content/docs/reference-react-dom.md
index 4060a6c0ea..3732ebe8d7 100644
--- a/content/docs/reference-react-dom.md
+++ b/content/docs/reference-react-dom.md
@@ -8,7 +8,7 @@ permalink: docs/react-dom.html
 
 If you load React from a `<script>` tag, these top-level APIs are available on the `ReactDOM` global. If you use ES6 with npm, you can write `import ReactDOM from 'react-dom'`. If you use ES5 with npm, you can write `var ReactDOM = require('react-dom')`.
 
-## Overview
+## Overview {#overview}
 
 The `react-dom` package provides DOM-specific methods that can be used at the top level of your app and as an escape hatch to get outside of the React model if you need to. Most of your components should not need to use this module.
 
@@ -18,7 +18,7 @@ The `react-dom` package provides DOM-specific methods that can be used at the to
 - [`findDOMNode()`](#finddomnode)
 - [`createPortal()`](#createportal)
 
-### Browser Support
+### Browser Support {#browser-support}
 
 React supports all popular browsers, including Internet Explorer 9 and above, although [some polyfills are required](/docs/javascript-environment-requirements.html) for older browsers such as IE 9 and IE 10.
 
@@ -28,9 +28,9 @@ React supports all popular browsers, including Internet Explorer 9 and above, al
 
 * * *
 
-## Reference
+## Reference {#reference}
 
-### `render()`
+### `render()` {#render}
 
 ```javascript
 ReactDOM.render(element, container[, callback])
@@ -56,7 +56,7 @@ If the optional callback is provided, it will be executed after the component is
 
 * * *
 
-### `hydrate()`
+### `hydrate()` {#hydrate}
 
 ```javascript
 ReactDOM.hydrate(element, container[, callback])
@@ -74,7 +74,7 @@ Remember to be mindful of user experience on slow connections. The JavaScript co
 
 * * *
 
-### `unmountComponentAtNode()`
+### `unmountComponentAtNode()` {#unmountcomponentatnode}
 
 ```javascript
 ReactDOM.unmountComponentAtNode(container)
@@ -84,7 +84,7 @@ Remove a mounted React component from the DOM and clean up its event handlers an
 
 * * *
 
-### `findDOMNode()`
+### `findDOMNode()` {#finddomnode}
 
 > Note:
 >
@@ -105,7 +105,7 @@ When a component renders to `null` or `false`, `findDOMNode` returns `null`. Whe
 
 * * *
 
-### `createPortal()`
+### `createPortal()` {#createportal}
 
 ```javascript
 ReactDOM.createPortal(child, container)
diff --git a/content/docs/reference-react.md b/content/docs/reference-react.md
index 3ac8c607a8..d506a1ad31 100644
--- a/content/docs/reference-react.md
+++ b/content/docs/reference-react.md
@@ -15,9 +15,9 @@ redirect_from:
 
 `React` is the entry point to the React library. If you load React from a `<script>` tag, these top-level APIs are available on the `React` global. If you use ES6 with npm, you can write `import React from 'react'`. If you use ES5 with npm, you can write `var React = require('react')`.
 
-## Overview
+## Overview {#overview}
 
-### Components
+### Components {#components}
 
 React components let you split the UI into independent, reusable pieces, and think about each piece in isolation. React components can be defined by subclassing `React.Component` or `React.PureComponent`.
 
@@ -30,7 +30,7 @@ React components can also be defined as functions which can be wrapped:
 
 - [`React.memo`](#reactmemo)
 
-### Creating React Elements
+### Creating React Elements {#creating-react-elements}
 
 We recommend [using JSX](/docs/introducing-jsx.html) to describe what your UI should look like. Each JSX element is just syntactic sugar for calling [`React.createElement()`](#createelement). You will not typically invoke the following methods directly if you are using JSX.
 
@@ -39,7 +39,7 @@ We recommend [using JSX](/docs/introducing-jsx.html) to describe what your UI sh
 
 See [Using React without JSX](/docs/react-without-jsx.html) for more information.
 
-### Transforming Elements
+### Transforming Elements {#transforming-elements}
 
 `React` provides several APIs for manipulating elements:
 
@@ -47,25 +47,25 @@ See [Using React without JSX](/docs/react-without-jsx.html) for more information
 - [`isValidElement()`](#isvalidelement)
 - [`React.Children`](#reactchildren)
 
-### Fragments
+### Fragments {#fragments}
 
 `React` also provides a component for rendering multiple elements without a wrapper.
 
 - [`React.Fragment`](#reactfragment)
 
-### Refs
+### Refs {#refs}
 
 - [`React.createRef`](#reactcreateref)
 - [`React.forwardRef`](#reactforwardref)
 
-### Suspense
+### Suspense {#suspense}
 
 Suspense lets components "wait" for something before rendering. Today, Suspense only supports one use case: [loading components dynamically with `React.lazy`](/docs/code-splitting.html#reactlazy). In the future, it will support other use cases like data fetching.
 
 - [`React.lazy`](#reactlazy)
 - [`React.Suspense`](#reactsuspense)
 
-### Hooks
+### Hooks {#hooks}
 
 *Hooks* are a new addition in React 16.8. They let you use state and other React features without writing a class. Hooks have a [dedicated docs section](/docs/hooks-intro.html) and a separate API reference:
 
@@ -84,9 +84,9 @@ Suspense lets components "wait" for something before rendering. Today, Suspense
 
 * * *
 
-## Reference
+## Reference {#reference}
 
-### `React.Component`
+### `React.Component` {#reactcomponent}
 
 `React.Component` is the base class for React components when they are defined using [ES6 classes](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes):
 
@@ -102,7 +102,7 @@ See the [React.Component API Reference](/docs/react-component.html) for a list o
 
 * * *
 
-### `React.PureComponent`
+### `React.PureComponent` {#reactpurecomponent}
 
 `React.PureComponent` is similar to [`React.Component`](#reactcomponent). The difference between them is that [`React.Component`](#reactcomponent) doesn't implement [`shouldComponentUpdate()`](/docs/react-component.html#shouldcomponentupdate), but `React.PureComponent` implements it with a shallow prop and state comparison. 
 
@@ -116,7 +116,7 @@ If your React component's `render()` function renders the same result given the
 
 * * *
 
-### `React.memo`
+### `React.memo` {#reactmemo}
 
 ```javascript
 const MyComponent = React.memo(function MyComponent(props) {
@@ -152,7 +152,7 @@ This method only exists as a **[performance optimization](/docs/optimizing-perfo
 
 * * *
 
-### `createElement()`
+### `createElement()` {#createelement}
 
 ```javascript
 React.createElement(
@@ -168,7 +168,7 @@ Code written with [JSX](/docs/introducing-jsx.html) will be converted to use `Re
 
 * * *
 
-### `cloneElement()`
+### `cloneElement()` {#cloneelement}
 
 ```
 React.cloneElement(
@@ -192,7 +192,7 @@ This API was introduced as a replacement of the deprecated `React.addons.cloneWi
 
 * * *
 
-### `createFactory()`
+### `createFactory()` {#createfactory}
 
 ```javascript
 React.createFactory(type)
@@ -206,7 +206,7 @@ You will not typically invoke `React.createFactory()` directly if you are using
 
 * * *
 
-### `isValidElement()`
+### `isValidElement()` {#isvalidelement}
 
 ```javascript
 React.isValidElement(object)
@@ -216,11 +216,11 @@ Verifies the object is a React element. Returns `true` or `false`.
 
 * * *
 
-### `React.Children`
+### `React.Children` {#reactchildren}
 
 `React.Children` provides utilities for dealing with the `this.props.children` opaque data structure.
 
-#### `React.Children.map`
+#### `React.Children.map` {#reactchildrenmap}
 
 ```javascript
 React.Children.map(children, function[(thisArg)])
@@ -232,7 +232,7 @@ Invokes a function on every immediate child contained within `children` with `th
 >
 > If `children` is a `Fragment` it will be treated as a single child and not traversed.
 
-#### `React.Children.forEach`
+#### `React.Children.forEach` {#reactchildrenforeach}
 
 ```javascript
 React.Children.forEach(children, function[(thisArg)])
@@ -240,7 +240,7 @@ React.Children.forEach(children, function[(thisArg)])
 
 Like [`React.Children.map()`](#reactchildrenmap) but does not return an array.
 
-#### `React.Children.count`
+#### `React.Children.count` {#reactchildrencount}
 
 ```javascript
 React.Children.count(children)
@@ -248,7 +248,7 @@ React.Children.count(children)
 
 Returns the total number of components in `children`, equal to the number of times that a callback passed to `map` or `forEach` would be invoked.
 
-#### `React.Children.only`
+#### `React.Children.only` {#reactchildrenonly}
 
 ```javascript
 React.Children.only(children)
@@ -260,7 +260,7 @@ Verifies that `children` has only one child (a React element) and returns it. Ot
 >
 >`React.Children.only()` does not accept the return value of [`React.Children.map()`](#reactchildrenmap) because it is an array rather than a React element.
 
-#### `React.Children.toArray`
+#### `React.Children.toArray` {#reactchildrentoarray}
 
 ```javascript
 React.Children.toArray(children)
@@ -274,7 +274,7 @@ Returns the `children` opaque data structure as a flat array with keys assigned
 
 * * *
 
-### `React.Fragment`
+### `React.Fragment` {#reactfragment}
 
 The `React.Fragment` component lets you return multiple elements in a `render()` method without creating an additional DOM element:
 
@@ -292,12 +292,12 @@ render() {
 You can also use it with the shorthand `<></>` syntax. For more information, see [React v16.2.0: Improved Support for Fragments](/blog/2017/11/28/react-v16.2.0-fragment-support.html).
 
 
-### `React.createRef`
+### `React.createRef` {#reactcreateref}
 
 `React.createRef` creates a [ref](/docs/refs-and-the-dom.html) that can be attached to React elements via the ref attribute.
 `embed:16-3-release-blog-post/create-ref-example.js`
 
-### `React.forwardRef`
+### `React.forwardRef` {#reactforwardref}
 
 `React.forwardRef` creates a React component that forwards the [ref](/docs/refs-and-the-dom.html) attribute it receives to another component below in the tree. This technique is not very common but is particularly useful in two scenarios:
 
@@ -314,7 +314,7 @@ As a result, after React attaches the ref, `ref.current` will point directly to
 
 For more information, see [forwarding refs](/docs/forwarding-refs.html).
 
-### `React.lazy`
+### `React.lazy` {#reactlazy}
 
 `React.lazy()` lets you define a component that is loaded dynamically. This helps reduce the bundle size to delay loading components that aren't used during the initial render.
 
@@ -331,7 +331,7 @@ Note that rendering `lazy` components requires that there's a `<React.Suspense>`
 >
 > Using `React.lazy`with dynamic import requires Promises to be available in the JS environment. This requires a polyfill on IE11 and below.
 
-### `React.Suspense`
+### `React.Suspense` {#reactsuspense}
 
 `React.Suspense` let you specify the loading indicator in case some components in the tree below it are not yet ready to render. Today, lazy loading components is the **only** use case supported by `<React.Suspense>`:
 
diff --git a/content/docs/reference-test-renderer.md b/content/docs/reference-test-renderer.md
index 92f5246cb0..473dfb7ec1 100644
--- a/content/docs/reference-test-renderer.md
+++ b/content/docs/reference-test-renderer.md
@@ -13,7 +13,7 @@ import TestRenderer from 'react-test-renderer'; // ES6
 const TestRenderer = require('react-test-renderer'); // ES5 with npm
 ```
 
-## Overview
+## Overview {#overview}
 
 This package provides a React renderer that can be used to render React components to pure JavaScript objects, without depending on the DOM or a native mobile environment.
 
@@ -67,11 +67,11 @@ expect(testInstance.findByType(SubComponent).props.foo).toBe('bar');
 expect(testInstance.findByProps({className: "sub"}).children).toEqual(['Sub']);
 ```
 
-### TestRenderer
+### TestRenderer {#testrenderer}
 
 * [`TestRenderer.create()`](#testrenderercreate)
 
-### TestRenderer instance
+### TestRenderer instance {#testrenderer-instance}
 
 * [`testRenderer.toJSON()`](#testrenderertojson)
 * [`testRenderer.toTree()`](#testrenderertotree)
@@ -80,7 +80,7 @@ expect(testInstance.findByProps({className: "sub"}).children).toEqual(['Sub']);
 * [`testRenderer.getInstance()`](#testrenderergetinstance)
 * [`testRenderer.root`](#testrendererroot)
 
-### TestInstance
+### TestInstance {#testinstance}
 
 * [`testInstance.find()`](#testinstancefind)
 * [`testInstance.findByType()`](#testinstancefindbytype)
@@ -94,9 +94,9 @@ expect(testInstance.findByProps({className: "sub"}).children).toEqual(['Sub']);
 * [`testInstance.parent`](#testinstanceparent)
 * [`testInstance.children`](#testinstancechildren)
 
-## Reference
+## Reference {#reference}
 
-### `TestRenderer.create()`
+### `TestRenderer.create()` {#testrenderercreate}
 
 ```javascript
 TestRenderer.create(element, options);
@@ -104,7 +104,7 @@ TestRenderer.create(element, options);
 
 Create a `TestRenderer` instance with the passed React element. It doesn't use the real DOM, but it still fully renders the component tree into memory so you can make assertions about it. The returned instance has the following methods and properties.
 
-### `testRenderer.toJSON()`
+### `testRenderer.toJSON()` {#testrenderertojson}
 
 ```javascript
 testRenderer.toJSON()
@@ -112,7 +112,7 @@ testRenderer.toJSON()
 
 Return an object representing the rendered tree. This tree only contains the platform-specific nodes like `<div>` or `<View>` and their props, but doesn't contain any user-written components. This is handy for [snapshot testing](http://facebook.github.io/jest/docs/en/snapshot-testing.html#snapshot-testing-with-jest).
 
-### `testRenderer.toTree()`
+### `testRenderer.toTree()` {#testrenderertotree}
 
 ```javascript
 testRenderer.toTree()
@@ -120,7 +120,7 @@ testRenderer.toTree()
 
 Return an object representing the rendered tree. Unlike `toJSON()`, the representation is more detailed than the one provided by `toJSON()`, and includes the user-written components. You probably don't need this method unless you're writing your own assertion library on top of the test renderer.
 
-### `testRenderer.update()`
+### `testRenderer.update()` {#testrendererupdate}
 
 ```javascript
 testRenderer.update(element)
@@ -128,7 +128,7 @@ testRenderer.update(element)
 
 Re-render the in-memory tree with a new root element. This simulates a React update at the root. If the new element has the same type and key as the previous element, the tree will be updated; otherwise, it will re-mount a new tree.
 
-### `testRenderer.unmount()`
+### `testRenderer.unmount()` {#testrendererunmount}
 
 ```javascript
 testRenderer.unmount()
@@ -136,7 +136,7 @@ testRenderer.unmount()
 
 Unmount the in-memory tree, triggering the appropriate lifecycle events.
 
-### `testRenderer.getInstance()`
+### `testRenderer.getInstance()` {#testrenderergetinstance}
 
 ```javascript
 testRenderer.getInstance()
@@ -144,7 +144,7 @@ testRenderer.getInstance()
 
 Return the instance corresponding to the root element, if available. This will not work if the root element is a function component because they don't have instances.
 
-### `testRenderer.root`
+### `testRenderer.root` {#testrendererroot}
 
 ```javascript
 testRenderer.root
@@ -152,7 +152,7 @@ testRenderer.root
 
 Returns the root "test instance" object that is useful for making assertions about specific nodes in the tree. You can use it to find other "test instances" deeper below.
 
-### `testInstance.find()`
+### `testInstance.find()` {#testinstancefind}
 
 ```javascript
 testInstance.find(test)
@@ -160,7 +160,7 @@ testInstance.find(test)
 
 Find a single descendant test instance for which `test(testInstance)` returns `true`. If `test(testInstance)` does not return `true` for exactly one test instance, it will throw an error.
 
-### `testInstance.findByType()`
+### `testInstance.findByType()` {#testinstancefindbytype}
 
 ```javascript
 testInstance.findByType(type)
@@ -168,7 +168,7 @@ testInstance.findByType(type)
 
 Find a single descendant test instance with the provided `type`. If there is not exactly one test instance with the provided `type`, it will throw an error.
 
-### `testInstance.findByProps()`
+### `testInstance.findByProps()` {#testinstancefindbyprops}
 
 ```javascript
 testInstance.findByProps(props)
@@ -176,7 +176,7 @@ testInstance.findByProps(props)
 
 Find a single descendant test instance with the provided `props`. If there is not exactly one test instance with the provided `props`, it will throw an error.
 
-### `testInstance.findAll()`
+### `testInstance.findAll()` {#testinstancefindall}
 
 ```javascript
 testInstance.findAll(test)
@@ -184,7 +184,7 @@ testInstance.findAll(test)
 
 Find all descendant test instances for which `test(testInstance)` returns `true`.
 
-### `testInstance.findAllByType()`
+### `testInstance.findAllByType()` {#testinstancefindallbytype}
 
 ```javascript
 testInstance.findAllByType(type)
@@ -192,7 +192,7 @@ testInstance.findAllByType(type)
 
 Find all descendant test instances with the provided `type`.
 
-### `testInstance.findAllByProps()`
+### `testInstance.findAllByProps()` {#testinstancefindallbyprops}
 
 ```javascript
 testInstance.findAllByProps(props)
@@ -200,7 +200,7 @@ testInstance.findAllByProps(props)
 
 Find all descendant test instances with the provided `props`.
 
-### `testInstance.instance`
+### `testInstance.instance` {#testinstanceinstance}
 
 ```javascript
 testInstance.instance
@@ -208,7 +208,7 @@ testInstance.instance
 
 The component instance corresponding to this test instance. It is only available for class components, as function components don't have instances. It matches the `this` value inside the given component.
 
-### `testInstance.type`
+### `testInstance.type` {#testinstancetype}
 
 ```javascript
 testInstance.type
@@ -216,7 +216,7 @@ testInstance.type
 
 The component type corresponding to this test instance. For example, a `<Button />` component has a type of `Button`.
 
-### `testInstance.props`
+### `testInstance.props` {#testinstanceprops}
 
 ```javascript
 testInstance.props
@@ -224,7 +224,7 @@ testInstance.props
 
 The props corresponding to this test instance. For example, a `<Button size="small" />` component has `{size: 'small'}` as props.
 
-### `testInstance.parent`
+### `testInstance.parent` {#testinstanceparent}
 
 ```javascript
 testInstance.parent
@@ -232,7 +232,7 @@ testInstance.parent
 
 The parent test instance of this test instance.
 
-### `testInstance.children`
+### `testInstance.children` {#testinstancechildren}
 
 ```javascript
 testInstance.children
@@ -240,7 +240,7 @@ testInstance.children
 
 The children test instances of this test instance.
 
-## Ideas
+## Ideas {#ideas}
 
 You can pass `createNodeMock` function to `TestRenderer.create` as the option, which allows for custom mock refs.
 `createNodeMock` accepts the current element and should return a mock ref object.
diff --git a/content/docs/refs-and-the-dom.md b/content/docs/refs-and-the-dom.md
index 1dafc540f7..9b56fcc9f2 100644
--- a/content/docs/refs-and-the-dom.md
+++ b/content/docs/refs-and-the-dom.md
@@ -15,7 +15,7 @@ Refs provide a way to access DOM nodes or React elements created in the render m
 
 In the typical React dataflow, [props](/docs/components-and-props.html) are the only way that parent components interact with their children. To modify a child, you re-render it with new props. However, there are a few cases where you need to imperatively modify a child outside of the typical dataflow. The child to be modified could be an instance of a React component, or it could be a DOM element. For both of these cases, React provides an escape hatch.
 
-### When to Use Refs
+### When to Use Refs {#when-to-use-refs}
 
 There are a few good use cases for refs:
 
@@ -27,7 +27,7 @@ Avoid using refs for anything that can be done declaratively.
 
 For example, instead of exposing `open()` and `close()` methods on a `Dialog` component, pass an `isOpen` prop to it.
 
-### Don't Overuse Refs
+### Don't Overuse Refs {#dont-overuse-refs}
 
 Your first inclination may be to use refs to "make things happen" in your app. If this is the case, take a moment and think more critically about where state should be owned in the component hierarchy. Often, it becomes clear that the proper place to "own" that state is at a higher level in the hierarchy. See the [Lifting State Up](/docs/lifting-state-up.html) guide for examples of this.
 
@@ -35,7 +35,7 @@ Your first inclination may be to use refs to "make things happen" in your app. I
 >
 > The examples below have been updated to use the `React.createRef()` API introduced in React 16.3. If you are using an earlier release of React, we recommend using [callback refs](#callback-refs) instead.
 
-### Creating Refs
+### Creating Refs {#creating-refs}
 
 Refs are created using `React.createRef()` and attached to React elements via the `ref` attribute. Refs are commonly assigned to an instance property when a component is constructed so they can be referenced throughout the component.
 
@@ -51,7 +51,7 @@ class MyComponent extends React.Component {
 }
 ```
 
-### Accessing Refs
+### Accessing Refs {#accessing-refs}
 
 When a ref is passed to an element in `render`, a reference to the node becomes accessible at the `current` attribute of the ref.
 
@@ -67,7 +67,7 @@ The value of the ref differs depending on the type of the node:
 
 The examples below demonstrate the differences.
 
-#### Adding a Ref to a DOM Element
+#### Adding a Ref to a DOM Element {#adding-a-ref-to-a-dom-element}
 
 This code uses a `ref` to store a reference to a DOM node:
 
@@ -107,7 +107,7 @@ class CustomTextInput extends React.Component {
 
 React will assign the `current` property with the DOM element when the component mounts, and assign it back to `null` when it unmounts. `ref` updates happen before `componentDidMount` or `componentDidUpdate` lifecycle methods.
 
-#### Adding a Ref to a Class Component
+#### Adding a Ref to a Class Component {#adding-a-ref-to-a-class-component}
 
 If we wanted to wrap the `CustomTextInput` above to simulate it being clicked immediately after mounting, we could use a ref to get access to the custom input and call its `focusTextInput` method manually:
 
@@ -138,7 +138,7 @@ class CustomTextInput extends React.Component {
 }
 ```
 
-#### Refs and Function Components
+#### Refs and Function Components {#refs-and-function-components}
 
 **You may not use the `ref` attribute on function components** because they don't have instances:
 
@@ -189,7 +189,7 @@ function CustomTextInput(props) {
 }
 ```
 
-### Exposing DOM Refs to Parent Components
+### Exposing DOM Refs to Parent Components {#exposing-dom-refs-to-parent-components}
 
 In rare cases, you might want to have access to a child's DOM node from a parent component. This is generally not recommended because it breaks component encapsulation, but it can occasionally be useful for triggering focus or measuring the size or position of a child DOM node.
 
@@ -201,7 +201,7 @@ If you use React 16.2 or lower, or if you need more flexibility than provided by
 
 When possible, we advise against exposing DOM nodes, but it can be a useful escape hatch. Note that this approach requires you to add some code to the child component. If you have absolutely no control over the child component implementation, your last option is to use [`findDOMNode()`](/docs/react-dom.html#finddomnode), but it is discouraged and deprecated in [`StrictMode`](/docs/strict-mode.html#warning-about-deprecated-finddomnode-usage).
 
-### Callback Refs
+### Callback Refs {#callback-refs}
 
 React also supports another way to set refs called "callback refs", which gives more fine-grain control over when refs are set and unset.
 
@@ -277,7 +277,7 @@ class Parent extends React.Component {
 
 In the example above, `Parent` passes its ref callback as an `inputRef` prop to the `CustomTextInput`, and the `CustomTextInput` passes the same function as a special `ref` attribute to the `<input>`. As a result, `this.inputElement` in `Parent` will be set to the DOM node corresponding to the `<input>` element in the `CustomTextInput`.
 
-### Legacy API: String Refs
+### Legacy API: String Refs {#legacy-api-string-refs}
 
 If you worked with React before, you might be familiar with an older API where the `ref` attribute is a string, like `"textInput"`, and the DOM node is accessed as `this.refs.textInput`. We advise against it because string refs have [some issues](https://github.com/facebook/react/pull/8333#issuecomment-271648615), are considered legacy, and **are likely to be removed in one of the future releases**. 
 
@@ -285,6 +285,6 @@ If you worked with React before, you might be familiar with an older API where t
 >
 > If you're currently using `this.refs.textInput` to access refs, we recommend using either the [callback pattern](#callback-refs) or the [`createRef` API](#creating-refs) instead.
 
-### Caveats with callback refs
+### Caveats with callback refs {#caveats-with-callback-refs}
 
 If the `ref` callback is defined as an inline function, it will get called twice during updates, first with `null` and then again with the DOM element. This is because a new instance of the function is created with each render, so React needs to clear the old ref and set up the new one. You can avoid this by defining the `ref` callback as a bound method on the class, but note that it shouldn't matter in most cases.
diff --git a/content/docs/render-props.md b/content/docs/render-props.md
index ba396ce12d..c9b6f9c041 100644
--- a/content/docs/render-props.md
+++ b/content/docs/render-props.md
@@ -18,7 +18,7 @@ Libraries that use render props include [React Router](https://reacttraining.com
 
 In this document, we’ll discuss why render props are useful, and how to write your own.
 
-## Use Render Props for Cross-Cutting Concerns
+## Use Render Props for Cross-Cutting Concerns {#use-render-props-for-cross-cutting-concerns}
 
 Components are the primary unit of code reuse in React, but it's not always obvious how to share the state or behavior that one component encapsulates to other components that need that same state.
 
@@ -235,7 +235,7 @@ function withMouse(Component) {
 
 So using a render prop makes it possible to use either pattern.
 
-## Using Props Other Than `render`
+## Using Props Other Than `render` {#using-props-other-than-render}
 
 It's important to remember that just because the pattern is called "render props" you don't *have to use a prop named `render` to use this pattern*. In fact, [*any* prop that is a function that a component uses to know what to render is technically a "render prop"](https://cdb.reacttraining.com/use-a-render-prop-50de598f11ce).
 
@@ -267,9 +267,9 @@ Mouse.propTypes = {
 };
 ```
 
-## Caveats
+## Caveats {#caveats}
 
-### Be careful when using Render Props with React.PureComponent
+### Be careful when using Render Props with React.PureComponent {#be-careful-when-using-render-props-with-reactpurecomponent}
 
 Using a render prop can negate the advantage that comes from using [`React.PureComponent`](/docs/react-api.html#reactpurecomponent) if you create the function inside a `render` method. This is because the shallow prop comparison will always return `false` for new props, and each `render` in this case will generate a new value for the render prop.
 
diff --git a/content/docs/rendering-elements.md b/content/docs/rendering-elements.md
index d56b00001e..34bb62b7c5 100644
--- a/content/docs/rendering-elements.md
+++ b/content/docs/rendering-elements.md
@@ -22,7 +22,7 @@ Unlike browser DOM elements, React elements are plain objects, and are cheap to
 >
 >One might confuse elements with a more widely known concept of "components". We will introduce components in the [next section](/docs/components-and-props.html). Elements are what components are "made of", and we encourage you to read this section before jumping ahead.
 
-## Rendering an Element into the DOM
+## Rendering an Element into the DOM {#rendering-an-element-into-the-dom}
 
 Let's say there is a `<div>` somewhere in your HTML file:
 
@@ -42,7 +42,7 @@ To render a React element into a root DOM node, pass both to `ReactDOM.render()`
 
 It displays "Hello, world" on the page.
 
-## Updating the Rendered Element
+## Updating the Rendered Element {#updating-the-rendered-element}
 
 React elements are [immutable](https://en.wikipedia.org/wiki/Immutable_object). Once you create an element, you can't change its children or attributes. An element is like a single frame in a movie: it represents the UI at a certain point in time.
 
@@ -62,7 +62,7 @@ It calls `ReactDOM.render()` every second from a [`setInterval()`](https://devel
 >
 >We recommend that you don't skip topics because they build on each other.
 
-## React Only Updates What's Necessary
+## React Only Updates What's Necessary {#react-only-updates-whats-necessary}
 
 React DOM compares the element and its children to the previous one, and only applies the DOM updates necessary to bring the DOM to the desired state.
 
diff --git a/content/docs/state-and-lifecycle.md b/content/docs/state-and-lifecycle.md
index c58efae616..dd5e2238c0 100644
--- a/content/docs/state-and-lifecycle.md
+++ b/content/docs/state-and-lifecycle.md
@@ -74,7 +74,7 @@ State is similar to props, but it is private and fully controlled by the compone
 
 We [mentioned before](/docs/components-and-props.html#functional-and-class-components) that components defined as classes have some additional features. Local state is exactly that: a feature available only to classes.
 
-## Converting a Function to a Class
+## Converting a Function to a Class {#converting-a-function-to-a-class}
 
 You can convert a function component like `Clock` to a class in five steps:
 
@@ -107,7 +107,7 @@ class Clock extends React.Component {
 
 The `render` method will be called each time an update happens, but as long as we render `<Clock />` into the same DOM node, only a single instance of the `Clock` class will be used. This lets us use additional features such as local state and lifecycle methods.
 
-## Adding Local State to a Class
+## Adding Local State to a Class {#adding-local-state-to-a-class}
 
 We will move the `date` from props to state in three steps:
 
@@ -197,7 +197,7 @@ ReactDOM.render(
 
 Next, we'll make the `Clock` set up its own timer and update itself every second.
 
-## Adding Lifecycle Methods to a Class
+## Adding Lifecycle Methods to a Class {#adding-lifecycle-methods-to-a-class}
 
 In applications with many components, it's very important to free up resources taken by the components when they are destroyed.
 
@@ -318,11 +318,11 @@ Let's quickly recap what's going on and the order in which the methods are calle
 
 5) If the `Clock` component is ever removed from the DOM, React calls the `componentWillUnmount()` lifecycle method so the timer is stopped.
 
-## Using State Correctly
+## Using State Correctly {#using-state-correctly}
 
 There are three things you should know about `setState()`.
 
-### Do Not Modify State Directly
+### Do Not Modify State Directly {#do-not-modify-state-directly}
 
 For example, this will not re-render a component:
 
@@ -340,7 +340,7 @@ this.setState({comment: 'Hello'});
 
 The only place where you can assign `this.state` is the constructor.
 
-### State Updates May Be Asynchronous
+### State Updates May Be Asynchronous {#state-updates-may-be-asynchronous}
 
 React may batch multiple `setState()` calls into a single update for performance.
 
@@ -375,7 +375,7 @@ this.setState(function(state, props) {
 });
 ```
 
-### State Updates are Merged
+### State Updates are Merged {#state-updates-are-merged}
 
 When you call `setState()`, React merges the object you provide into the current state.
 
@@ -411,7 +411,7 @@ Then you can update them independently with separate `setState()` calls:
 
 The merging is shallow, so `this.setState({comments})` leaves `this.state.posts` intact, but completely replaces `this.state.comments`.
 
-## The Data Flows Down
+## The Data Flows Down {#the-data-flows-down}
 
 Neither parent nor child components can know if a certain component is stateful or stateless, and they shouldn't care whether it is defined as a function or a class.
 
diff --git a/content/docs/static-type-checking.md b/content/docs/static-type-checking.md
index b05a4b1a93..b01b92fec9 100644
--- a/content/docs/static-type-checking.md
+++ b/content/docs/static-type-checking.md
@@ -8,7 +8,7 @@ next: refs-and-the-dom.html
 
 Static type checkers like [Flow](https://flow.org/) and [TypeScript](https://www.typescriptlang.org/) identify certain types of problems before you even run your code. They can also improve developer workflow by adding features like auto-completion. For this reason, we recommend using Flow or TypeScript instead of `PropTypes` for larger code bases.
 
-## Flow
+## Flow {#flow}
 
 [Flow](https://flow.org/) is a static type checker for your JavaScript code. It is developed at Facebook and is often used with React. It lets you annotate the variables, functions, and React components with a special type syntax, and catch mistakes early. You can read an [introduction to Flow](https://flow.org/en/docs/getting-started/) to learn its basics.
 
@@ -20,7 +20,7 @@ To use Flow, you need to:
 
 We will explain these steps below in detail.
 
-### Adding Flow to a Project
+### Adding Flow to a Project {#adding-flow-to-a-project}
 
 First, navigate to your project directory in the terminal. You will need to run the following command:
 
@@ -67,17 +67,17 @@ npm run flow init
 
 This command will create a Flow configuration file that you will need to commit.
 
-### Stripping Flow Syntax from the Compiled Code
+### Stripping Flow Syntax from the Compiled Code {#stripping-flow-syntax-from-the-compiled-code}
 
 Flow extends the JavaScript language with a special syntax for type annotations. However, browsers aren't aware of this syntax, so we need to make sure it doesn't end up in the compiled JavaScript bundle that is sent to the browser.
 
 The exact way to do this depends on the tools you use to compile JavaScript.
 
-#### Create React App
+#### Create React App {#create-react-app}
 
 If your project was set up using [Create React App](https://github.com/facebookincubator/create-react-app), congratulations! The Flow annotations are already being stripped by default so you don't need to do anything else in this step.
 
-#### Babel
+#### Babel {#babel}
 
 >Note:
 >
@@ -114,11 +114,11 @@ This will let you use the Flow syntax in your code.
 >
 >Flow does not require the `react` preset, but they are often used together. Flow itself understands JSX syntax out of the box.
 
-#### Other Build Setups
+#### Other Build Setups {#other-build-setups}
 
 If you don't use either Create React App or Babel, you can use [flow-remove-types](https://github.com/flowtype/flow-remove-types) to strip the type annotations.
 
-### Running Flow
+### Running Flow {#running-flow}
 
 If you followed the instructions above, you should be able to run Flow for the first time.
 
@@ -139,7 +139,7 @@ No errors!
 ✨  Done in 0.17s.
 ```
 
-### Adding Flow Type Annotations
+### Adding Flow Type Annotations {#adding-flow-type-annotations}
 
 By default, Flow only checks the files that include this annotation:
 
@@ -158,7 +158,7 @@ Now you're all set! We recommend to check out the following resources to learn m
 * [Flow Documentation: React](https://flow.org/en/docs/react/)
 * [Linting in Flow](https://medium.com/flow-type/linting-in-flow-7709d7a7e969)
 
-## TypeScript
+## TypeScript {#typescript}
 
 [TypeScript](https://www.typescriptlang.org/) is a programming language developed by Microsoft. It is a typed superset of JavaScript, and includes its own compiler. Being a typed language, TypeScript can catch errors and bugs at build time, long before your app goes live. You can learn more about using TypeScript with React [here](https://github.com/Microsoft/TypeScript-React-Starter#typescript-react-starter).
 
@@ -170,7 +170,7 @@ To use TypeScript, you need to:
 
 Let's go over these in detail.
 
-### Using TypeScript with Create React App
+### Using TypeScript with Create React App {#using-typescript-with-create-react-app}
 
 Create React App supports TypeScript out of the box.
 
@@ -187,7 +187,7 @@ You can also add it to an **existing Create React App project**, [as documented
 >If you use Create React App, you can **skip the rest of this page**. It describes the manual setup which doesn't apply to Create React App users.
 
 
-### Adding TypeScript to a Project
+### Adding TypeScript to a Project {#adding-typescript-to-a-project}
 It all begins with running one command in your terminal.
 
 If you use [Yarn](https://yarnpkg.com/), run:
@@ -215,7 +215,7 @@ Congrats! You've installed the latest version of TypeScript into your project. I
 }
 ```
 
-### Configuring the TypeScript Compiler
+### Configuring the TypeScript Compiler {#configuring-the-typescript-compiler}
 The compiler is of no help to us until we tell it what to do. In TypeScript, these rules are defined in a special file called `tsconfig.json`. To generate this file run:
 
 ```bash
@@ -255,12 +255,12 @@ Great! Now when we run our build script the compiler will output the generated j
 
 Generally, you don't want to keep the generated javascript in your source control, so be sure to add the build folder to your `.gitignore`.
 
-### File extensions
+### File extensions {#file-extensions}
 In React, you most likely write your components in a `.js` file. In TypeScript we have 2 file extensions:
 
 `.ts` is the default file extension while `.tsx` is a special extension used for files which contain `JSX`.
 
-### Running TypeScript
+### Running TypeScript {#running-typescript}
 
 If you followed the instructions above, you should be able to run TypeScript for the first time.
 
@@ -277,7 +277,7 @@ npm run build
 If you see no output, it means that it completed successfully.
 
 
-### Type Definitions
+### Type Definitions {#type-definitions}
 To be able to show errors and hints from other packages, the compiler relies on declaration files. A declaration file provides all the type information about a library. This enables us to use javascript libraries like those on npm in our project. 
 
 There are two main ways to get declarations for a library:
@@ -310,18 +310,18 @@ You are now ready to code! We recommend to check out the following resources to
 * [TypeScript Documentation: Migrating from Javascript](https://www.typescriptlang.org/docs/handbook/migrating-from-javascript.html)
 * [TypeScript Documentation: React and Webpack](https://www.typescriptlang.org/docs/handbook/react-&-webpack.html)
 
-## Reason
+## Reason {#reason}
 
 [Reason](https://reasonml.github.io/) is not a new language; it's a new syntax and toolchain powered by the battle-tested language, [OCaml](https://ocaml.org/). Reason gives OCaml a familiar syntax geared toward JavaScript programmers, and caters to the existing NPM/Yarn workflow folks already know.
 
 Reason is developed at Facebook, and is used in some of its products like Messenger. It is still somewhat experimental but it has [dedicated React bindings](https://reasonml.github.io/reason-react/) maintained by Facebook and a [vibrant community](https://reasonml.github.io/docs/en/community.html).
 
-## Kotlin
+## Kotlin {#kotlin}
 
 [Kotlin](https://kotlinlang.org/) is a statically typed language developed by JetBrains. Its target platforms include the JVM, Android, LLVM, and [JavaScript](https://kotlinlang.org/docs/reference/js-overview.html). 
 
 JetBrains develops and maintains several tools specifically for the React community: [React bindings](https://github.com/JetBrains/kotlin-wrappers) as well as [Create React Kotlin App](https://github.com/JetBrains/create-react-kotlin-app). The latter helps you start building React apps with Kotlin with no build configuration.
 
-## Other Languages
+## Other Languages {#other-languages}
 
 Note there are other statically typed languages that compile to JavaScript and are thus React compatible. For example, [F#/Fable](http://fable.io) with [elmish-react](https://elmish.github.io/react). Check out their respective sites for more information, and feel free to add more statically typed languages that work with React to this page!
diff --git a/content/docs/strict-mode.md b/content/docs/strict-mode.md
index 09b3b9e5db..8d2752b356 100644
--- a/content/docs/strict-mode.md
+++ b/content/docs/strict-mode.md
@@ -24,7 +24,7 @@ In the above example, strict mode checks will *not* be run against the `Header`
 
 Additional functionality will be added with future releases of React.
 
-### Identifying unsafe lifecycles
+### Identifying unsafe lifecycles {#identifying-unsafe-lifecycles}
 
 As explained [in this blog post](/blog/2018/03/27/update-on-async-rendering.html), certain legacy lifecycle methods are unsafe for use in async React applications. However, if your application uses third party libraries, it can be difficult to ensure that these lifecycles aren't being used. Fortunately, strict mode can help with this!
 
@@ -34,7 +34,7 @@ When strict mode is enabled, React compiles a list of all class components using
 
 Addressing the issues identified by strict mode _now_ will make it easier for you to take advantage of async rendering in future releases of React.
 
-### Warning about legacy string ref API usage
+### Warning about legacy string ref API usage {#warning-about-legacy-string-ref-api-usage}
 
 Previously, React provided two ways for managing refs: the legacy string ref API and the callback API. Although the string ref API was the more convenient of the two, it had [several downsides](https://github.com/facebook/react/issues/1373) and so our official recommendation was to [use the callback form instead](/docs/refs-and-the-dom.html#legacy-api-string-refs).
 
@@ -51,7 +51,7 @@ Since object refs were largely added as a replacement for string refs, strict mo
 
 [Learn more about the new `createRef` API here.](/docs/refs-and-the-dom.html)
 
-### Warning about deprecated findDOMNode usage
+### Warning about deprecated findDOMNode usage {#warning-about-deprecated-finddomnode-usage}
 
 React used to support `findDOMNode` to search the tree for a DOM node given a class instance. Normally you don't need this because you can [attach a ref directly to a DOM node](/docs/refs-and-the-dom.html#creating-refs).
 
@@ -77,7 +77,7 @@ class MyComponent extends React.Component {
 >
 > In CSS, the [`display: contents`](https://developer.mozilla.org/en-US/docs/Web/CSS/display#display_contents) attribute can be used if you don't want the node to be part of the layout.
 
-### Detecting unexpected side effects
+### Detecting unexpected side effects {#detecting-unexpected-side-effects}
 
 Conceptually, React does work in two phases:
 * The **render** phase determines what changes need to be made to e.g. the DOM. During this phase, React calls `render` and then compares the result to the previous render.
@@ -115,7 +115,7 @@ At first glance, this code might not seem problematic. But if `SharedApplication
 
 By intentionally double-invoking methods like the component constructor, strict mode makes patterns like this easier to spot.
 
-### Detecting legacy context API
+### Detecting legacy context API {#detecting-legacy-context-api}
 
 The legacy context API is error-prone, and will be removed in a future major version. It still works for all 16.x releases but will show this warning message in strict mode:
 
diff --git a/content/docs/thinking-in-react.md b/content/docs/thinking-in-react.md
index 53caa2b208..3e054806a9 100644
--- a/content/docs/thinking-in-react.md
+++ b/content/docs/thinking-in-react.md
@@ -12,7 +12,7 @@ React is, in our opinion, the premier way to build big, fast Web apps with JavaS
 
 One of the many great parts of React is how it makes you think about apps as you build them. In this document, we'll walk you through the thought process of building a searchable product data table using React.
 
-## Start With A Mock
+## Start With A Mock {#start-with-a-mock}
 
 Imagine that we already have a JSON API and a mock from our designer. The mock looks like this:
 
@@ -31,7 +31,7 @@ Our JSON API returns some data that looks like this:
 ];
 ```
 
-## Step 1: Break The UI Into A Component Hierarchy
+## Step 1: Break The UI Into A Component Hierarchy {#step-1-break-the-ui-into-a-component-hierarchy}
 
 The first thing you'll want to do is to draw boxes around every component (and subcomponent) in the mock and give them all names. If you're working with a designer, they may have already done this, so go talk to them! Their Photoshop layer names may end up being the names of your React components!
 
@@ -59,7 +59,7 @@ Now that we've identified the components in our mock, let's arrange them into a
       * `ProductCategoryRow`
       * `ProductRow`
 
-## Step 2: Build A Static Version in React
+## Step 2: Build A Static Version in React {#step-2-build-a-static-version-in-react}
 
 <p data-height="600" data-theme-id="0" data-slug-hash="BwWzwm" data-default-tab="js" data-user="lacker" data-embed-version="2" class="codepen">See the Pen <a href="https://codepen.io/gaearon/pen/BwWzwm">Thinking In React: Step 2</a> on <a href="http://codepen.io">CodePen</a>.</p>
 <script async src="https://production-assets.codepen.io/assets/embed/ei.js"></script>
@@ -74,11 +74,11 @@ At the end of this step, you'll have a library of reusable components that rende
 
 Simply refer to the [React docs](/docs/) if you need help executing this step.
 
-### A Brief Interlude: Props vs State
+### A Brief Interlude: Props vs State {#a-brief-interlude-props-vs-state}
 
 There are two types of "model" data in React: props and state. It's important to understand the distinction between the two; skim [the official React docs](/docs/interactivity-and-dynamic-uis.html) if you aren't sure what the difference is.
 
-## Step 3: Identify The Minimal (but complete) Representation Of UI State
+## Step 3: Identify The Minimal (but complete) Representation Of UI State {#step-3-identify-the-minimal-but-complete-representation-of-ui-state}
 
 To make your UI interactive, you need to be able to trigger changes to your underlying data model. React makes this easy with **state**.
 
@@ -104,7 +104,7 @@ So finally, our state is:
   * The search text the user has entered
   * The value of the checkbox
 
-## Step 4: Identify Where Your State Should Live
+## Step 4: Identify Where Your State Should Live {#step-4-identify-where-your-state-should-live}
 
 <p data-height="600" data-theme-id="0" data-slug-hash="qPrNQZ" data-default-tab="js" data-user="lacker" data-embed-version="2" class="codepen">See the Pen <a href="https://codepen.io/gaearon/pen/qPrNQZ">Thinking In React: Step 4</a> on <a href="http://codepen.io">CodePen</a>.</p>
 
@@ -129,7 +129,7 @@ Cool, so we've decided that our state lives in `FilterableProductTable`. First,
 
 You can start seeing how your application will behave: set `filterText` to `"ball"` and refresh your app. You'll see that the data table is updated correctly.
 
-## Step 5: Add Inverse Data Flow
+## Step 5: Add Inverse Data Flow {#step-5-add-inverse-data-flow}
 
 <p data-height="600" data-theme-id="0" data-slug-hash="LzWZvb" data-default-tab="js,result" data-user="rohan10" data-embed-version="2" data-pen-title="Thinking In React: Step 5" class="codepen">See the Pen <a href="https://codepen.io/gaearon/pen/LzWZvb">Thinking In React: Step 5</a> on <a href="http://codepen.io">CodePen</a>.</p>
 
@@ -143,6 +143,6 @@ Let's think about what we want to happen. We want to make sure that whenever the
 
 Though this sounds complex, it's really just a few lines of code. And it's really explicit how your data is flowing throughout the app.
 
-## And That's It
+## And That's It {#and-thats-it}
 
 Hopefully, this gives you an idea of how to think about building components and applications with React. While it may be a little more typing than you're used to, remember that code is read far more than it's written, and it's extremely easy to read this modular, explicit code. As you start to build large libraries of components, you'll appreciate this explicitness and modularity, and with code reuse, your lines of code will start to shrink. :)
diff --git a/content/docs/typechecking-with-proptypes.md b/content/docs/typechecking-with-proptypes.md
index b2c72c6210..4004e7820c 100644
--- a/content/docs/typechecking-with-proptypes.md
+++ b/content/docs/typechecking-with-proptypes.md
@@ -32,7 +32,7 @@ Greeting.propTypes = {
 
 `PropTypes` exports a range of validators that can be used to make sure the data you receive is valid. In this example, we're using `PropTypes.string`. When an invalid value is provided for a prop, a warning will be shown in the JavaScript console. For performance reasons, `propTypes` is only checked in development mode.
 
-### PropTypes
+### PropTypes {#proptypes}
 
 Here is an example documenting the different validators provided:
 
@@ -119,7 +119,7 @@ MyComponent.propTypes = {
 };
 ```
 
-### Requiring Single Child
+### Requiring Single Child {#requiring-single-child}
 
 With `PropTypes.element` you can specify that only a single child can be passed to a component as children.
 
@@ -143,7 +143,7 @@ MyComponent.propTypes = {
 };
 ```
 
-### Default Prop Values
+### Default Prop Values {#default-prop-values}
 
 You can define default values for your `props` by assigning to the special `defaultProps` property:
 
diff --git a/content/docs/uncontrolled-components.md b/content/docs/uncontrolled-components.md
index fc904417ee..2b1c974052 100644
--- a/content/docs/uncontrolled-components.md
+++ b/content/docs/uncontrolled-components.md
@@ -43,7 +43,7 @@ Since an uncontrolled component keeps the source of truth in the DOM, it is some
 
 If it's still not clear which type of component you should use for a particular situation, you might find [this article on controlled versus uncontrolled inputs](http://goshakkk.name/controlled-vs-uncontrolled-inputs-react/) to be helpful.
 
-### Default Values
+### Default Values {#default-values}
 
 In the React rendering lifecycle, the `value` attribute on form elements will override the value in the DOM. With an uncontrolled component, you often want React to specify the initial value, but leave subsequent updates uncontrolled. To handle this case, you can specify a `defaultValue` attribute instead of `value`.
 
@@ -66,7 +66,7 @@ render() {
 
 Likewise, `<input type="checkbox">` and `<input type="radio">` support `defaultChecked`, and `<select>` and `<textarea>` supports `defaultValue`.
 
-## The file input Tag
+## The file input Tag {#the-file-input-tag}
 
 In HTML, an `<input type="file">` lets the user choose one or more files from their device storage to be uploaded to a server or manipulated by JavaScript via the [File API](https://developer.mozilla.org/en-US/docs/Web/API/File/Using_files_from_web_applications).
 
diff --git a/content/docs/web-components.md b/content/docs/web-components.md
index e0e8183b9b..cbfcc80e10 100644
--- a/content/docs/web-components.md
+++ b/content/docs/web-components.md
@@ -10,7 +10,7 @@ React and [Web Components](https://developer.mozilla.org/en-US/docs/Web/Web_Comp
 
 Most people who use React don't use Web Components, but you may want to, especially if you are using third-party UI components that are written using Web Components.
 
-## Using Web Components in React
+## Using Web Components in React {#using-web-components-in-react}
 
 ```javascript
 class HelloMessage extends React.Component {
@@ -40,7 +40,7 @@ function BrickFlipbox() {
 }
 ```
 
-## Using React in your Web Components
+## Using React in your Web Components {#using-react-in-your-web-components}
 
 ```javascript
 class XSearch extends HTMLElement {
diff --git a/content/tutorial/tutorial.md b/content/tutorial/tutorial.md
index 3e9065555a..0191348f00 100644
--- a/content/tutorial/tutorial.md
+++ b/content/tutorial/tutorial.md
@@ -14,7 +14,7 @@ redirect_from:
 
 This tutorial doesn't assume any existing React knowledge.
 
-## Before We Start the Tutorial
+## Before We Start the Tutorial {#before-we-start-the-tutorial}
 
 We will build a small game during this tutorial. **You might be tempted to skip it because you're not building games -- but give it a chance.** The techniques you'll learn in the tutorial are fundamental to building any React apps, and mastering it will give you a deep understanding of React.
 
@@ -33,7 +33,7 @@ You don't have to complete all of the sections at once to get the value out of t
 
 It's fine to copy and paste code as you're following along the tutorial, but we recommend to type it by hand. This will help you develop a muscle memory and a stronger understanding.
 
-### What Are We Building?
+### What Are We Building? {#what-are-we-building}
 
 In this tutorial, we'll show how to build an interactive tic-tac-toe game with React.
 
@@ -43,17 +43,17 @@ We recommend that you check out the tic-tac-toe game before continuing with the
 
 You can close the tic-tac-toe game once you're familiar with it. We'll be starting from a simpler template in this tutorial. Our next step is to set you up so that you can start building the game.
 
-### Prerequisites
+### Prerequisites {#prerequisites}
 
 We'll assume that you have some familiarity with HTML and JavaScript, but you should be able to follow along even if you're coming from a different programming language. We'll also assume that you're familiar with programming concepts like functions, objects, arrays, and to a lesser extent, classes.
 
 If you need to review JavaScript, we recommend reading [this guide](https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript). Note that we're also using some features from ES6 -- a recent version of JavaScript. In this tutorial, we're using [arrow functions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions), [classes](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes), [`let`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let), and [`const`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const) statements. You can use the [Babel REPL](babel://es5-syntax-example) to check what ES6 code compiles to.
 
-## Setup for the Tutorial
+## Setup for the Tutorial {#setup-for-the-tutorial}
 
 There are two ways to complete this tutorial: you can either write the code in your browser, or you can set up a local development environment on your computer.
 
-### Setup Option 1: Write Code in the Browser
+### Setup Option 1: Write Code in the Browser {#setup-option-1-write-code-in-the-browser}
 
 This is the quickest way to get started!
 
@@ -61,7 +61,7 @@ First, open this **[Starter Code](https://codepen.io/gaearon/pen/oWWQNa?editors=
 
 You can now skip the second setup option, and go to the [Overview](#overview) section to get an overview of React.
 
-### Setup Option 2: Local Development Environment
+### Setup Option 2: Local Development Environment {#setup-option-2-local-development-environment}
 
 This is completely optional and not required for this tutorial!
 
@@ -116,15 +116,15 @@ We recommend following [these instructions](https://babeljs.io/docs/editors/) to
 
 </details>
 
-### Help, I'm Stuck!
+### Help, I'm Stuck! {#help-im-stuck}
 
 If you get stuck, check out the [community support resources](/community/support.html). In particular, [Reactiflux Chat](https://discord.gg/0ZcbPKXt5bZjGY5n) is a great way to get help quickly. If you don't receive an answer, or if you remain stuck, please file an issue, and we'll help you out.
 
-## Overview
+## Overview {#overview}
 
 Now that you're set up, let's get an overview of React!
 
-### What Is React?
+### What Is React? {#what-is-react}
 
 React is a declarative, efficient, and flexible JavaScript library for building user interfaces. It lets you compose complex UIs from small and isolated pieces of code called "components".
 
@@ -170,7 +170,7 @@ JSX comes with the full power of JavaScript. You can put *any* JavaScript expres
 
 The `ShoppingList` component above only renders built-in DOM components like `<div />` and `<li />`. But you can compose and render custom React components too. For example, we can now refer to the whole shopping list by writing `<ShoppingList />`. Each React component is encapsulated and can operate independently; this allows you to build complex UIs from simple components.
 
-## Inspecting the Starter Code
+## Inspecting the Starter Code {#inspecting-the-starter-code}
 
 If you're going to work on the tutorial **in your browser,** open this code in a new tab: **[Starter Code](https://codepen.io/gaearon/pen/oWWQNa?editors=0010)**. If you're going to work on the tutorial **locally,** instead open `src/index.js` in your project folder (you have already touched this file during the [setup](#setup-option-2-local-development-environment)).
 
@@ -184,7 +184,7 @@ By inspecting the code, you'll notice that we have three React components:
 
 The Square component renders a single `<button>` and the Board renders 9 squares. The Game component renders a board with placeholder values which we'll modify later. There are currently no interactive components.
 
-### Passing Data Through Props
+### Passing Data Through Props {#passing-data-through-props}
 
 Just to get our feet wet, let's try passing some data from our Board component to our Square component.
 
@@ -223,7 +223,7 @@ After: You should see a number in each square in the rendered output.
 
 Congratulations! You've just "passed a prop" from a parent Board component to a child Square component. Passing props is how information flows in React apps, from parents to children.
 
-### Making an Interactive Component
+### Making an Interactive Component {#making-an-interactive-component}
 
 Let's fill the Square component with an "X" when we click it. 
 First, change the button tag that is returned from the Square component's `render()` function to this:
@@ -325,7 +325,7 @@ When you call `setState` in a component, React automatically updates the child c
 
 **[View the full code at this point](https://codepen.io/gaearon/pen/VbbVLg?editors=0010)**
 
-### Developer Tools
+### Developer Tools {#developer-tools}
 
 The React Devtools extension for [Chrome](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi?hl=en) and [Firefox](https://addons.mozilla.org/en-US/firefox/addon/react-devtools/) lets you inspect a React component tree with your browser's developer tools.
 
@@ -342,11 +342,11 @@ After installing React DevTools, you can right-click on any element on the page,
 3. Click "Change View" and then choose "Debug mode".
 4. In the new tab that opens, the devtools should now have a React tab.
 
-## Completing the Game
+## Completing the Game {#completing-the-game}
 
 We now have the basic building blocks for our tic-tac-toe game. To have a complete game, we now need to alternate placing "X"s and "O"s on the board, and we need a way to determine a winner.
 
-### Lifting State Up
+### Lifting State Up {#lifting-state-up}
 
 Currently, each Square component maintains the game's state. To check for a winner, we'll maintain the value of each of the 9 squares in one location.
 
@@ -543,20 +543,20 @@ Since the Square components no longer maintain state, the Square components rece
 
 Note how in `handleClick`, we call `.slice()` to create a copy of the `squares` array to modify instead of modifying the existing array. We will explain why we create a copy of the `squares` array in the next section.
 
-### Why Immutability Is Important
+### Why Immutability Is Important {#why-immutability-is-important}
 
 In the previous code example, we suggested that you use the `.slice()` operator to create a copy of the `squares` array to modify instead of modifying the existing array. We'll now discuss immutability and why immutability is important to learn.
 
 There are generally two approaches to changing data. The first approach is to *mutate* the data by directly changing the data's values. The second approach is to replace the data with a new copy which has the desired changes.
 
-#### Data Change with Mutation
+#### Data Change with Mutation {#data-change-with-mutation}
 ```javascript
 var player = {score: 1, name: 'Jeff'};
 player.score = 2;
 // Now player is {score: 2, name: 'Jeff'}
 ```
 
-#### Data Change without Mutation
+#### Data Change without Mutation {#data-change-without-mutation}
 ```javascript
 var player = {score: 1, name: 'Jeff'};
 
@@ -569,23 +569,23 @@ var newPlayer = Object.assign({}, player, {score: 2});
 
 The end result is the same but by not mutating (or changing the underlying data) directly, we gain several benefits described below.
 
-#### Complex Features Become Simple
+#### Complex Features Become Simple {#complex-features-become-simple}
 
 Immutability makes complex features much easier to implement. Later in this tutorial, we will implement a "time travel" feature that allows us to review the tic-tac-toe game's history and "jump back" to previous moves. This functionality isn't specific to games -- an ability to undo and redo certain actions is a common requirement in applications. Avoiding direct data mutation lets us keep previous versions of the game's history intact, and reuse them later.
 
-#### Detecting Changes
+#### Detecting Changes {#detecting-changes}
 
 Detecting changes in mutable objects is difficult because they are modified directly. This detection requires the mutable object to be compared to previous copies of itself and the entire object tree to be traversed.
 
 Detecting changes in immutable objects is considerably easier. If the immutable object that is being referenced is different than the previous one, then the object has changed.
 
-#### Determining When to Re-render in React
+#### Determining When to Re-render in React {#determining-when-to-re-render-in-react}
 
 The main benefit of immutability is that it helps you build _pure components_ in React. Immutable data can easily determine if changes have been made which helps to determine when a component requires re-rendering.
 
 You can learn more about `shouldComponentUpdate()` and how you can build *pure components* by reading [Optimizing Performance](/docs/optimizing-performance.html#examples).
 
-### Function Components
+### Function Components {#function-components}
 
 We'll now change the Square to be a **function component**.
 
@@ -611,7 +611,7 @@ We have changed `this.props` to `props` both times it appears.
 >
 >When we modified the Square to be a function component, we also changed `onClick={() => this.props.onClick()}` to a shorter `onClick={props.onClick}` (note the lack of parentheses on *both* sides). In a class, we used an arrow function to access the correct `this` value, but in a function component we don't need to worry about `this`.
 
-### Taking Turns
+### Taking Turns {#taking-turns}
 
 We now need to fix an obvious defect in our tic-tac-toe game: the "O"s cannot be marked on the board.
 
@@ -710,7 +710,7 @@ class Board extends React.Component {
 
 **[View the full code at this point](https://codepen.io/gaearon/pen/KmmrBy?editors=0010)**
 
-### Declaring a Winner
+### Declaring a Winner {#declaring-a-winner}
 
 Now that we show which player's turn is next, we should also show when the game is won and there are no more turns to make. We can determine a winner by adding this helper function to the end of the file:
 
@@ -772,11 +772,11 @@ We can now change the Board's `handleClick` function to return early by ignoring
 
 Congratulations! You now have a working tic-tac-toe game. And you've just learned the basics of React too. So *you're* probably the real winner here.
 
-## Adding Time Travel
+## Adding Time Travel {#adding-time-travel}
 
 As a final exercise, let's make it possible to "go back in time" to the previous moves in the game.
 
-### Storing a History of Moves
+### Storing a History of Moves {#storing-a-history-of-moves}
 
 If we mutated the `squares` array, implementing time travel would be very difficult.
 
@@ -816,7 +816,7 @@ history = [
 
 Now we need to decide which component should own the `history` state.
 
-### Lifting State Up, Again
+### Lifting State Up, Again {#lifting-state-up-again}
 
 We'll want the top-level Game component to display a list of past moves. It will need access to the `history` to do that, so we will place the `history` state in the top-level Game component.
 
@@ -1002,7 +1002,7 @@ At this point, the Board component only needs the `renderSquare` and `render` me
 
 **[View the full code at this point](https://codepen.io/gaearon/pen/EmmOqJ?editors=0010)**
 
-### Showing the Past Moves
+### Showing the Past Moves {#showing-the-past-moves}
 
 Since we are recording the tic-tac-toe game's history, we can now display it to the player as a list of past moves.
 
@@ -1069,7 +1069,7 @@ For each move in the tic-tac-toes's game's history, we create a list item `<li>`
 
 Let's discuss what the above warning means.
 
-### Picking a Key
+### Picking a Key {#picking-a-key}
 
 When we render a list, React stores some information about each rendered list item. When we update a list, React needs to determine what has changed. We could have added, removed, re-arranged, or updated the list's items.
 
@@ -1105,7 +1105,7 @@ If no key is specified, React will present a warning and use the array index as
 Keys do not need to be globally unique; they only need to be unique between components and their siblings.
 
 
-### Implementing Time Travel
+### Implementing Time Travel {#implementing-time-travel}
 
 In the tic-tac-toe game's history, each past move has a unique ID associated with it: it's the sequential number of the move. The moves are never re-ordered, deleted, or inserted in the middle, so it's safe to use the move index as a key.
 
@@ -1203,7 +1203,7 @@ If we click on any step in the game's history, the tic-tac-toe board should imme
 
 **[View the full code at this point](https://codepen.io/gaearon/pen/gWWZgR?editors=0010)**
 
-### Wrapping Up
+### Wrapping Up {#wrapping-up}
 
 Congratulations! You've created a tic-tac-toe game that:
 
diff --git a/content/warnings/dont-call-proptypes.md b/content/warnings/dont-call-proptypes.md
index 7eba370903..07dfa33f0b 100644
--- a/content/warnings/dont-call-proptypes.md
+++ b/content/warnings/dont-call-proptypes.md
@@ -12,7 +12,7 @@ permalink: warnings/dont-call-proptypes.html
 
 In a future major release of React, the code that implements PropType validation functions will be stripped in production. Once this happens, any code that calls these functions manually (that isn't stripped in production) will throw an error.
 
-### Declaring PropTypes is still fine
+### Declaring PropTypes is still fine {#declaring-proptypes-is-still-fine}
 
 The normal usage of PropTypes is still supported:
 
@@ -24,7 +24,7 @@ Button.propTypes = {
 
 Nothing changes here.
 
-### Don’t call PropTypes directly
+### Don’t call PropTypes directly {#dont-call-proptypes-directly}
 
 Using PropTypes in any other way than annotating React components with them is no longer supported:
 
@@ -42,7 +42,7 @@ If you depend on using PropTypes like this, we encourage you to use or create a
 
 If you don't fix the warning, this code will crash in production with React 16.
 
-### If you don't call PropTypes directly but still get the warning
+### If you don't call PropTypes directly but still get the warning {#if-you-dont-call-proptypes-directly-but-still-get-the-warning}
 
 Inspect the stack trace produced by the warning. You will find the component definition responsible for the PropTypes direct call. Most likely, the issue is due to third-party PropTypes that wrap React’s PropTypes, for example:
 
@@ -57,7 +57,7 @@ Button.propTypes = {
 
 In this case, `ThirdPartyPropTypes.deprecated` is a wrapper calling `PropTypes.bool`. This pattern by itself is fine, but triggers a false positive because React thinks you are calling PropTypes directly. The next section explains how to fix this problem for a library implementing something like `ThirdPartyPropTypes`. If it's not a library you wrote, you can file an issue against it.
 
-### Fixing the false positive in third party PropTypes
+### Fixing the false positive in third party PropTypes {#fixing-the-false-positive-in-third-party-proptypes}
 
 If you are an author of a third party PropTypes library and you let consumers wrap existing React PropTypes, they might start seeing this warning coming from your library. This happens because React doesn't see a "secret" last argument that [it passes](https://github.com/facebook/react/pull/7132) to detect manual PropTypes calls.
 
diff --git a/content/warnings/invalid-hook-call-warning.md b/content/warnings/invalid-hook-call-warning.md
index 38808adecb..156578ec22 100644
--- a/content/warnings/invalid-hook-call-warning.md
+++ b/content/warnings/invalid-hook-call-warning.md
@@ -16,11 +16,11 @@ There are three common reasons you might be seeing it:
 
 Let's look at each of these cases.
 
-## Mismatching Versions of React and React DOM
+## Mismatching Versions of React and React DOM {#mismatching-versions-of-react-and-react-dom}
 
 You might be using a version of `react-dom` (< 16.8.0) or `react-native` (< 0.59) that doesn't yet support Hooks. You can run `npm ls react-dom` or `npm ls react-native` in your application folder to check which version you're using. If you find more than one of them, this might also create problems (more on that below).
 
-## Breaking the Rules of Hooks
+## Breaking the Rules of Hooks {#breaking-the-rules-of-hooks}
 
 You can only call Hooks **while React is rendering a function component**:
 
@@ -85,7 +85,7 @@ You can use the [`eslint-plugin-react-hooks` plugin](https://www.npmjs.com/packa
 >[Custom Hooks](/docs/hooks-custom.html) *may* call other Hooks (that's their whole purpose). This works because custom Hooks are also supposed to only be called while a function component is rendering.
 
 
-## Duplicate React
+## Duplicate React {#duplicate-react}
 
 In order for Hooks to work, the `react` import from your application code needs to resolve to the same module as the `react` import from inside the `react-dom` package.
 
@@ -117,6 +117,6 @@ This problem can also come up when you use `npm link` or an equivalent. In that
 >
 >In general, React supports using multiple independent copies on one page (for example, if an app and a third-party widget both use it). It only breaks if `require('react')` resolves differently between the component and the `react-dom` copy it was rendered with.
 
-## Other Causes
+## Other Causes {#other-causes}
 
 If none of this worked, please comment in [this issue](https://github.com/facebook/react/issues/13991) and we'll try to help. Try to create a small reproducing example — you might discover the problem as you're doing it.
diff --git a/content/warnings/legacy-factories.md b/content/warnings/legacy-factories.md
index e26fed9def..a99d22e2f1 100644
--- a/content/warnings/legacy-factories.md
+++ b/content/warnings/legacy-factories.md
@@ -14,7 +14,7 @@ function render() {
 }
 ```
 
-## JSX
+## JSX {#jsx}
 
 React components can no longer be called directly like this. Instead [you can use JSX](/docs/jsx-in-depth.html).
 
@@ -27,7 +27,7 @@ function render() {
 }
 ```
 
-## Without JSX
+## Without JSX {#without-jsx}
 
 If you don't want to, or can't use JSX, then you'll need to wrap your component in a factory before calling it:
 
@@ -42,7 +42,7 @@ function render() {
 
 This is an easy upgrade path if you have a lot of existing function calls.
 
-## Dynamic components without JSX
+## Dynamic components without JSX {#dynamic-components-without-jsx}
 
 If you get a component class from a dynamic source, then it might be unnecessary to create a factory that you immediately invoke. Instead you can just create your element inline:
 
@@ -54,6 +54,6 @@ function render(MyComponent) {
 }
 ```
 
-## In Depth
+## In Depth {#in-depth}
 
 [Read more about WHY we're making this change.](https://gist.github.com/sebmarkbage/d7bce729f38730399d28)
diff --git a/content/warnings/refs-must-have-owner.md b/content/warnings/refs-must-have-owner.md
index e95dff489c..9eda89c4c9 100644
--- a/content/warnings/refs-must-have-owner.md
+++ b/content/warnings/refs-must-have-owner.md
@@ -22,7 +22,7 @@ This usually means one of three things:
 - You are trying to add a `ref` to an element that is being created outside of a component's render() function.
 - You have multiple (conflicting) copies of React loaded (eg. due to a misconfigured npm dependency)
 
-## Refs on Function Components
+## Refs on Function Components {#refs-on-function-components}
 
 If `<Foo>` is a function component, you can't add a ref to it:
 
@@ -33,7 +33,7 @@ If `<Foo>` is a function component, you can't add a ref to it:
 
 If you need to add a ref to a component, convert it to a class first, or consider not using refs as they are [rarely necessary](/docs/refs-and-the-dom.html#when-to-use-refs).
 
-## Strings Refs Outside the Render Method
+## Strings Refs Outside the Render Method {#strings-refs-outside-the-render-method}
 
 This usually means that you're trying to add a ref to a component that doesn't have an owner (that is, was not created inside of another component's `render` method). For example, this won't work:
 
@@ -56,7 +56,7 @@ ReactDOM.render(
 
 Consider if you [really need a ref](/docs/refs-and-the-dom.html#when-to-use-refs) before using this approach.
 
-## Multiple copies of React
+## Multiple copies of React {#multiple-copies-of-react}
 
 Bower does a good job of deduplicating dependencies, but npm does not. If you aren't doing anything (fancy) with refs, there is a good chance that the problem is not with your refs, but rather an issue with having multiple copies of React loaded into your project. Sometimes, when you pull in a third-party module via npm, you will get a duplicate copy of the dependency library, and this can create problems.
 

From 3a00259302d2be07f2955834b1f62fd9e68697f4 Mon Sep 17 00:00:00 2001
From: Nat Alison <tesseralis@gmail.com>
Date: Wed, 6 Feb 2019 17:25:24 -0800
Subject: [PATCH 44/54] remove custom slugger function

---
 scripts/generateHeadingIDs.js | 7 -------
 1 file changed, 7 deletions(-)

diff --git a/scripts/generateHeadingIDs.js b/scripts/generateHeadingIDs.js
index eb3621340a..1d802ba949 100644
--- a/scripts/generateHeadingIDs.js
+++ b/scripts/generateHeadingIDs.js
@@ -18,13 +18,6 @@ function walk(dir) {
   return results;
 }
 
-function generateID(text) {
-  return text
-    .toLowerCase()
-    .replace(/\s/g, '-')
-    .replace(/[^-a-z0-9]/g, '');
-}
-
 function addHeaderID(line, slugger) {
   // check if we're a header at all
   if (!line.startsWith('#')) {

From 8d218f1076cc80795699e0da3da4f2709eb45d9d Mon Sep 17 00:00:00 2001
From: Nat Alison <tesseralis@gmail.com>
Date: Wed, 6 Feb 2019 17:34:30 -0800
Subject: [PATCH 45/54] be more lenient about ids

---
 scripts/generateHeadingIDs.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/generateHeadingIDs.js b/scripts/generateHeadingIDs.js
index 1d802ba949..ae9a5c0d8c 100644
--- a/scripts/generateHeadingIDs.js
+++ b/scripts/generateHeadingIDs.js
@@ -24,7 +24,7 @@ function addHeaderID(line, slugger) {
     return line;
   }
   // check if it already has an id
-  if (/\{#[-A-Za-z0-9]+\}/.test(line)) {
+  if (/\{#[^}]+\}/.test(line)) {
     return line;
   }
   const headingText = line.slice(line.indexOf(' ')).trim();

From 5529642720c34742cc7f24680da1d85776ab13d4 Mon Sep 17 00:00:00 2001
From: Nat Alison <tesseralis@gmail.com>
Date: Wed, 6 Feb 2019 17:34:41 -0800
Subject: [PATCH 46/54] fix effect hook error

---
 content/docs/hooks-overview.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/content/docs/hooks-overview.md b/content/docs/hooks-overview.md
index fef7de00b3..198bd6d88a 100644
--- a/content/docs/hooks-overview.md
+++ b/content/docs/hooks-overview.md
@@ -68,7 +68,7 @@ React provides a few built-in Hooks like `useState`. You can also create your ow
 >
 >You can learn more about the State Hook on a dedicated page: [Using the State Hook](/docs/hooks-state.html).
 
-## ⚡️ Effect Hook {#️-effect-hook}
+## ⚡️ Effect Hook {#-effect-hook}
 
 You've likely performed data fetching, subscriptions, or manually changing the DOM from React components before. We call these operations "side effects" (or "effects" for short) because they can affect other components and can't be done during rendering.
 

From 727fc3d2711a8ea0b9cfa3748a60b704e0f4547c Mon Sep 17 00:00:00 2001
From: Nat Alison <tesseralis@gmail.com>
Date: Wed, 6 Feb 2019 17:55:55 -0800
Subject: [PATCH 47/54] strip links

---
 scripts/generateHeadingIDs.js | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/scripts/generateHeadingIDs.js b/scripts/generateHeadingIDs.js
index ae9a5c0d8c..a58927e9e9 100644
--- a/scripts/generateHeadingIDs.js
+++ b/scripts/generateHeadingIDs.js
@@ -18,6 +18,10 @@ function walk(dir) {
   return results;
 }
 
+function stripLinks(line) {
+  return line.replace(/\[([^\]]+)\]\([^)]+\)/, (match, p1) => p1);
+}
+
 function addHeaderID(line, slugger) {
   // check if we're a header at all
   if (!line.startsWith('#')) {
@@ -27,7 +31,10 @@ function addHeaderID(line, slugger) {
   if (/\{#[^}]+\}/.test(line)) {
     return line;
   }
-  const headingText = line.slice(line.indexOf(' ')).trim();
+  if (/\[[^\]]+\]/.test(line)) {
+    console.log(line);
+  }
+  const headingText = stripLinks(line.slice(line.indexOf(' ')).trim());
   const headingLevel = line.slice(0, line.indexOf(' '));
   return `${headingLevel} ${headingText} {#${slugger.slug(headingText)}}`;
 }

From 49e5ca68fea203b98abfb9a4023bf995ee468a19 Mon Sep 17 00:00:00 2001
From: Nat Alison <tesseralis@gmail.com>
Date: Wed, 6 Feb 2019 17:58:14 -0800
Subject: [PATCH 48/54] try to fix the generator

---
 scripts/generateHeadingIDs.js | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/scripts/generateHeadingIDs.js b/scripts/generateHeadingIDs.js
index a58927e9e9..a1b04c9498 100644
--- a/scripts/generateHeadingIDs.js
+++ b/scripts/generateHeadingIDs.js
@@ -31,9 +31,6 @@ function addHeaderID(line, slugger) {
   if (/\{#[^}]+\}/.test(line)) {
     return line;
   }
-  if (/\[[^\]]+\]/.test(line)) {
-    console.log(line);
-  }
   const headingText = stripLinks(line.slice(line.indexOf(' ')).trim());
   const headingLevel = line.slice(0, line.indexOf(' '));
   return `${headingLevel} ${headingText} {#${slugger.slug(headingText)}}`;

From dc1e5366e36e37268d56c4beea5918234c2c2999 Mon Sep 17 00:00:00 2001
From: Nat Alison <tesseralis@gmail.com>
Date: Wed, 6 Feb 2019 17:58:33 -0800
Subject: [PATCH 49/54] revert id adding

---
 content/blog/2013-06-05-why-react.md          |   8 +-
 content/blog/2013-06-12-community-roundup.md  |   8 +-
 .../blog/2013-06-19-community-roundup-2.md    |  12 +-
 content/blog/2013-06-21-react-v0-3-3.md       |   6 +-
 .../blog/2013-06-27-community-roundup-3.md    |  12 +-
 ...13-07-02-react-v0-4-autobind-by-default.md |   4 +-
 .../blog/2013-07-03-community-roundup-4.md    |   8 +-
 ...v0-4-prop-validation-and-default-values.md |   4 +-
 content/blog/2013-07-17-react-v0-4-0.md       |   6 +-
 .../blog/2013-07-23-community-roundup-5.md    |  12 +-
 content/blog/2013-07-26-react-v0-4-1.md       |   4 +-
 ...7-30-use-react-and-jsx-in-ruby-on-rails.md |   8 +-
 .../blog/2013-08-05-community-roundup-6.md    |  10 +-
 ...se-react-and-jsx-in-python-applications.md |   6 +-
 .../blog/2013-08-26-community-roundup-7.md    |   6 +-
 .../blog/2013-09-24-community-roundup-8.md    |  12 +-
 content/blog/2013-10-16-react-v0.5.0.md       |  10 +-
 content/blog/2013-10-29-react-v0-5-1.md       |   6 +-
 content/blog/2013-10-3-community-roundup-9.md |  12 +-
 .../blog/2013-11-06-community-roundup-10.md   |  16 +--
 .../blog/2013-11-18-community-roundup-11.md   |  18 +--
 content/blog/2013-12-19-react-v0.8.0.md       |  10 +-
 .../blog/2013-12-23-community-roundup-12.md   |  18 +--
 .../blog/2013-12-30-community-roundup-13.md   |  16 +--
 .../blog/2014-01-06-community-roundup-14.md   |  16 +--
 .../blog/2014-02-05-community-roundup-15.md   |  22 +--
 .../blog/2014-02-15-community-roundup-16.md   |  20 +--
 content/blog/2014-02-16-react-v0.9-rc1.md     |  16 +--
 content/blog/2014-02-20-react-v0.9.md         |  18 +--
 .../blog/2014-02-24-community-roundup-17.md   |  40 +++---
 .../blog/2014-03-14-community-roundup-18.md   |  30 ++--
 content/blog/2014-03-19-react-v0.10-rc1.md    |  14 +-
 content/blog/2014-03-21-react-v0.10.md        |  14 +-
 content/blog/2014-03-28-the-road-to-1.0.md    |  16 +--
 .../blog/2014-06-27-community-roundup-19.md   |  18 +--
 content/blog/2014-07-13-react-v0.11-rc1.md    |  26 ++--
 content/blog/2014-07-17-react-v0.11.md        |  30 ++--
 content/blog/2014-07-25-react-v0.11.1.md      |   8 +-
 .../blog/2014-07-28-community-roundup-20.md   |  20 +--
 .../blog/2014-08-03-community-roundup-21.md   |  20 +--
 .../blog/2014-09-12-community-round-up-22.md  |  18 +--
 content/blog/2014-09-16-react-v0.11.2.md      |   8 +-
 .../2014-10-14-introducing-react-elements.md  |  20 +--
 content/blog/2014-10-16-react-v0.12-rc1.md    |  22 +--
 .../blog/2014-10-17-community-roundup-23.md   |  28 ++--
 content/blog/2014-10-28-react-v0.12.md        |  36 ++---
 .../blog/2014-11-25-community-roundup-24.md   |  22 +--
 content/blog/2014-12-18-react-v0.12.2.md      |   6 +-
 ...-19-react-js-conf-diversity-scholarship.md |   6 +-
 .../blog/2015-01-27-react-v0.13.0-beta-1.md   |  12 +-
 .../2015-02-18-react-conf-roundup-2015.md     |   4 +-
 ...015-02-20-introducing-relay-and-graphql.md |  12 +-
 content/blog/2015-02-24-react-v0.13-rc1.md    |  24 ++--
 .../2015-02-24-streamlining-react-elements.md |  40 +++---
 content/blog/2015-03-03-react-v0.13-rc2.md    |   2 +-
 .../blog/2015-03-04-community-roundup-25.md   |  10 +-
 content/blog/2015-03-10-react-v0.13.md        |  26 ++--
 content/blog/2015-03-16-react-v0.13.1.md      |  14 +-
 ...lding-the-facebook-news-feed-with-relay.md |  16 +--
 .../blog/2015-03-30-community-roundup-26.md   |  22 +--
 content/blog/2015-04-17-react-native-v0.4.md  |   4 +-
 content/blog/2015-04-18-react-v0.13.2.md      |  14 +-
 .../blog/2015-05-01-graphql-introduction.md   |  10 +-
 content/blog/2015-05-08-react-v0.13.3.md      |  12 +-
 ...deprecating-jstransform-and-react-tools.md |   8 +-
 content/blog/2015-07-03-react-v0.14-beta-1.md |   4 +-
 .../2015-08-03-new-react-devtools-beta.md     |  20 +--
 .../2015-08-11-relay-technical-preview.md     |   8 +-
 .../2015-09-02-new-react-developer-tools.md   |   2 +-
 content/blog/2015-09-10-react-v0.14-rc1.md    |  16 +--
 .../blog/2015-09-14-community-roundup-27.md   |  12 +-
 ...15-10-01-react-render-and-top-level-api.md |   4 +-
 content/blog/2015-10-07-react-v0.14.md        |  18 +--
 ...5-10-19-reactiflux-is-moving-to-discord.md |  28 ++--
 content/blog/2015-10-28-react-v0.14.1.md      |  10 +-
 content/blog/2015-11-02-react-v0.14.2.md      |   4 +-
 content/blog/2015-11-18-react-v0.14.3.md      |  10 +-
 ...eact-js-conf-2016-diversity-scholarship.md |   6 +-
 ...react-components-elements-and-instances.md |  18 +--
 content/blog/2015-12-29-react-v0.14.4.md      |   8 +-
 .../blog/2016-02-19-new-versioning-scheme.md  |  10 +-
 content/blog/2016-03-07-react-v15-rc1.md      |  16 +--
 content/blog/2016-03-16-react-v15-rc2.md      |   2 +-
 content/blog/2016-03-29-react-v0.14.8.md      |   4 +-
 content/blog/2016-04-07-react-v15.md          |  18 +--
 content/blog/2016-04-08-react-v15.0.1.md      |   6 +-
 .../2016-07-13-mixins-considered-harmful.md   |  36 ++---
 ...07-22-create-apps-with-no-configuration.md |  24 ++--
 .../2016-08-05-relay-state-of-the-state.md    |  14 +-
 .../blog/2016-09-28-our-first-50000-stars.md  |  12 +-
 content/blog/2016-11-16-react-v15.4.0.md      |  20 +--
 content/blog/2017-04-07-react-v15.5.0.md      |  26 ++--
 ...017-05-18-whats-new-in-create-react-app.md |  16 +--
 content/blog/2017-06-13-react-v15.6.0.md      |  16 +--
 .../2017-07-26-error-handling-in-react-16.md  |  16 +--
 .../2017-09-08-dom-attributes-in-react-16.md  |  16 +--
 content/blog/2017-09-25-react-v15.6.2.md      |  10 +-
 content/blog/2017-09-26-react-v16.0.md        |  32 ++---
 ...17-11-28-react-v16.2.0-fragment-support.md |  48 +++----
 ...12-07-introducing-the-react-rfc-process.md |   6 +-
 ...improving-the-repository-infrastructure.md |  56 ++++----
 .../2018-03-01-sneak-peek-beyond-react-16.md  |   2 +-
 .../2018-03-27-update-on-async-rendering.md   |  30 ++--
 content/blog/2018-03-29-react-v-16-3.md       |  10 +-
 content/blog/2018-05-23-react-v-16-4.md       |  24 ++--
 ...07-you-probably-dont-need-derived-state.md |  24 ++--
 content/blog/2018-08-01-react-v-16-4-2.md     |  22 +--
 ...18-09-10-introducing-the-react-profiler.md |  24 ++--
 .../blog/2018-10-01-create-react-app-v2.md    |  12 +-
 content/blog/2018-10-23-react-v-16-6.md       |  22 +--
 content/blog/2018-11-27-react-16-roadmap.md   |  18 +--
 content/blog/2018-12-19-react-v-16-7.md       |  12 +-
 content/blog/2019-02-06-react-v16.8.0.md      |  32 ++---
 content/community/conferences.it-IT.md        |   4 +-
 content/community/conferences.ko-KR.md        |   4 +-
 content/community/conferences.md              | 128 +++++++++---------
 content/community/conferences.zh-CN.md        |   8 +-
 content/community/courses.md                  |   4 +-
 content/community/meetups.md                  |  60 ++++----
 content/community/podcasts.md                 |   4 +-
 content/community/support.md                  |   6 +-
 content/community/tools-jsx.md                |   4 +-
 content/community/tools-starter-kits.md       |   4 +-
 content/community/tools-ui-components.md      |   4 +-
 content/community/videos.it-IT.md             |  32 ++---
 content/community/videos.ko-KR.md             |  32 ++---
 content/community/videos.md                   |  26 ++--
 content/community/videos.zh-CN.md             |  32 ++---
 content/docs/accessibility.md                 |  66 ++++-----
 content/docs/add-react-to-a-website.md        |  22 +--
 content/docs/addons-animation.md              |  32 ++---
 content/docs/addons-create-fragment.md        |   6 +-
 content/docs/addons-perf.md                   |  28 ++--
 content/docs/addons-pure-render-mixin.md      |   2 +-
 content/docs/addons-shallow-compare.md        |   2 +-
 content/docs/addons-shallow-renderer.md       |   8 +-
 content/docs/addons-test-utils.md             |  38 +++---
 .../docs/addons-two-way-binding-helpers.md    |  10 +-
 content/docs/addons-update.md                 |  18 +--
 content/docs/addons.md                        |   6 +-
 content/docs/cdn-links.md                     |   2 +-
 content/docs/code-splitting.md                |  18 +--
 content/docs/codebase-overview.md             |  30 ++--
 content/docs/components-and-props.md          |  10 +-
 content/docs/composition-vs-inheritance.md    |   6 +-
 content/docs/conditional-rendering.md         |   8 +-
 content/docs/context.md                       |  26 ++--
 content/docs/create-a-new-react-app.md        |  14 +-
 content/docs/cross-origin-errors.md           |   8 +-
 content/docs/design-principles.md             |  26 ++--
 content/docs/error-boundaries.md              |  16 +--
 content/docs/faq-ajax.md                      |   6 +-
 content/docs/faq-build.md                     |   6 +-
 content/docs/faq-functions.md                 |  34 ++---
 content/docs/faq-internals.md                 |   6 +-
 content/docs/faq-state.md                     |  16 +--
 content/docs/faq-structure.md                 |  10 +-
 content/docs/faq-styling.md                   |  10 +-
 content/docs/faq-versioning.md                |   8 +-
 content/docs/forms.md                         |  16 +--
 content/docs/forwarding-refs.md               |   8 +-
 content/docs/fragments.md                     |  10 +-
 content/docs/getting-started.md               |  38 +++---
 content/docs/handling-events.md               |   2 +-
 content/docs/hello-world.md                   |   6 +-
 content/docs/higher-order-components.md       |  18 +--
 content/docs/hooks-custom.md                  |   8 +-
 content/docs/hooks-effect.md                  |  26 ++--
 content/docs/hooks-faq.md                     |  36 ++---
 content/docs/hooks-intro.md                   |  18 +--
 content/docs/hooks-overview.md                |  16 +--
 content/docs/hooks-reference.md               |  44 +++---
 content/docs/hooks-rules.md                   |  10 +-
 content/docs/hooks-state.md                   |  20 +--
 content/docs/how-to-contribute.md             |  42 +++---
 content/docs/implementation-notes.md          |  28 ++--
 .../docs/integrating-with-other-libraries.md  |  18 +--
 content/docs/introducing-jsx.md               |  14 +-
 content/docs/jsx-in-depth.md                  |  32 ++---
 content/docs/legacy-context.md                |  10 +-
 content/docs/lifting-state-up.md              |   8 +-
 content/docs/lists-and-keys.md                |  12 +-
 content/docs/optimizing-performance.md        |  30 ++--
 content/docs/portals.md                       |   4 +-
 content/docs/react-without-es6.md             |   8 +-
 content/docs/reconciliation.md                |  16 +--
 content/docs/reference-dom-elements.md        |  24 ++--
 content/docs/reference-events.md              |  40 +++---
 content/docs/reference-glossary.md            |  34 ++---
 content/docs/reference-react-component.md     |  72 +++++-----
 content/docs/reference-react-dom-server.md    |  12 +-
 content/docs/reference-react-dom.md           |  16 +--
 content/docs/reference-react.md               |  54 ++++----
 content/docs/reference-test-renderer.md       |  48 +++----
 content/docs/refs-and-the-dom.md              |  22 +--
 content/docs/render-props.md                  |   8 +-
 content/docs/rendering-elements.md            |   6 +-
 content/docs/state-and-lifecycle.md           |  16 +--
 content/docs/static-type-checking.md          |  36 ++---
 content/docs/strict-mode.md                   |  10 +-
 content/docs/thinking-in-react.md             |  16 +--
 content/docs/typechecking-with-proptypes.md   |   6 +-
 content/docs/uncontrolled-components.md       |   4 +-
 content/docs/web-components.md                |   4 +-
 content/tutorial/tutorial.md                  |  62 ++++-----
 content/warnings/dont-call-proptypes.md       |   8 +-
 content/warnings/invalid-hook-call-warning.md |   8 +-
 content/warnings/legacy-factories.md          |   8 +-
 content/warnings/refs-must-have-owner.md      |   6 +-
 209 files changed, 1814 insertions(+), 1814 deletions(-)

diff --git a/content/blog/2013-06-05-why-react.md b/content/blog/2013-06-05-why-react.md
index 6c23552a12..30d54b24c8 100644
--- a/content/blog/2013-06-05-why-react.md
+++ b/content/blog/2013-06-05-why-react.md
@@ -6,13 +6,13 @@ author: [petehunt]
 There are a lot of JavaScript MVC frameworks out there. Why did we build React
 and why would you want to use it?
 
-## React isn't an MVC framework. {#react-isnt-an-mvc-framework}
+## React isn't an MVC framework.
 
 React is a library for building composable user interfaces. It encourages
 the creation of reusable UI components which present data that changes over
 time.
 
-## React doesn't use templates. {#react-doesnt-use-templates}
+## React doesn't use templates.
 
 Traditionally, web application UIs are built using templates or HTML directives.
 These templates dictate the full set of abstractions that you are allowed to use
@@ -33,7 +33,7 @@ to render views, which we see as an advantage over templates for a few reasons:
 We've also created [JSX](/docs/jsx-in-depth.html), an optional syntax
 extension, in case you prefer the readability of HTML to raw JavaScript.
 
-## Reactive updates are dead simple. {#reactive-updates-are-dead-simple}
+## Reactive updates are dead simple.
 
 React really shines when your data changes over time.
 
@@ -63,7 +63,7 @@ Because this re-render is so fast (around 1ms for TodoMVC), the developer
 doesn't need to explicitly specify data bindings. We've found this approach
 makes it easier to build apps.
 
-## HTML is just the beginning. {#html-is-just-the-beginning}
+## HTML is just the beginning.
 
 Because React has its own lightweight representation of the document, we can do
 some pretty cool things with it:
diff --git a/content/blog/2013-06-12-community-roundup.md b/content/blog/2013-06-12-community-roundup.md
index ff7103e8bf..c8d4af256f 100644
--- a/content/blog/2013-06-12-community-roundup.md
+++ b/content/blog/2013-06-12-community-roundup.md
@@ -5,7 +5,7 @@ author: [vjeux]
 
 React was open sourced two weeks ago and it's time for a little round-up of what has been going on.
 
-## Khan Academy Question Editor {#khan-academy-question-editor}
+## Khan Academy Question Editor
 
 It looks like [Sophie Alpert](http://sophiebits.com/) is the first person outside of Facebook and Instagram to push React code to production. We are very grateful for her contributions in form of pull requests, bug reports and presence on IRC ([#reactjs on Freenode](irc://chat.freenode.net/reactjs)). Sophie wrote about her experience using React:
 
@@ -16,7 +16,7 @@ It looks like [Sophie Alpert](http://sophiebits.com/) is the first person outsid
 >
 > [Read the full post...](http://sophiebits.com/2013/06/09/using-react-to-speed-up-khan-academy.html)
 
-## Pimp my Backbone.View (by replacing it with React) {#pimp-my-backboneview-by-replacing-it-with-react}
+## Pimp my Backbone.View (by replacing it with React)
 
 [Paul Seiffert](https://blog.mayflower.de/) wrote a blog post that explains how to integrate React into Backbone applications.
 
@@ -28,7 +28,7 @@ It looks like [Sophie Alpert](http://sophiebits.com/) is the first person outsid
 >
 > [Read the full post...](https://blog.mayflower.de/3937-Backbone-React.html)
 
-## Using facebook's React with require.js {#using-facebooks-react-with-requirejs}
+## Using facebook's React with require.js
 
 [Mario Mueller](http://blog.xenji.com/) wrote a menu component in React and was able to easily integrate it with require.js, EventEmitter2 and bower.
 
@@ -36,7 +36,7 @@ It looks like [Sophie Alpert](http://sophiebits.com/) is the first person outsid
 >
 > [Read the full post...](http://blog.xenji.com/2013/06/facebooks-react-require-js.html)
 
-## Origins of React {#origins-of-react}
+## Origins of React
 
 [Pete Hunt](http://www.petehunt.net/blog/) explained what differentiates React from other JavaScript libraries in [a previous blog post](/blog/2013/06/05/why-react.html). [Lee Byron](http://leebyron.com/) gives another perspective on Quora:
 
diff --git a/content/blog/2013-06-19-community-roundup-2.md b/content/blog/2013-06-19-community-roundup-2.md
index 3071db80b8..3350d68216 100644
--- a/content/blog/2013-06-19-community-roundup-2.md
+++ b/content/blog/2013-06-19-community-roundup-2.md
@@ -5,7 +5,7 @@ author: [vjeux]
 
 Since the launch we have received a lot of feedback and are actively working on React 0.4. In the meantime, here are the highlights of this week.
 
-## Some quick thoughts on React {#some-quick-thoughts-on-react}
+## Some quick thoughts on React
 
 [Andrew Greig](http://www.andrewgreig.com/) made a blog post that gives a high level description of what React is.
 
@@ -19,7 +19,7 @@ Since the launch we have received a lot of feedback and are actively working on
 >
 > [Read the full post...](http://www.andrewgreig.com/637/)
 
-## React and Socket.IO Chat Application {#react-and-socketio-chat-application}
+## React and Socket.IO Chat Application
 
 [Danial Khosravi](https://danialk.github.io/) made a real-time chat application that interacts with the back-end using Socket.IO.
 
@@ -28,7 +28,7 @@ Since the launch we have received a lot of feedback and are actively working on
 >
 > [Read the full post...](https://danialk.github.io/blog/2013/06/16/reactjs-and-socket-dot-io-chat-application/)
 
-## React and Other Frameworks {#react-and-other-frameworks}
+## React and Other Frameworks
 
 [Pete Hunt](http://www.petehunt.net/blog/) wrote an answer on Quora comparing React and Angular directives. At the end, he explains how you can make an Angular directive that is in fact being rendered with React.
 
@@ -40,7 +40,7 @@ Since the launch we have received a lot of feedback and are actively working on
 
 In the same vein, [Markov Twain](https://twitter.com/markov_twain/status/345702941845499906) re-implemented the examples on the front-page [with Ember](http://jsbin.com/azihiw/2/edit) and [Vlad Yazhbin](https://twitter.com/vla) re-implemented the tutorial [with Angular](http://jsfiddle.net/vla/Cdrse/).
 
-## Web Components: React & x-tags {#web-components-react--x-tags}
+## Web Components: React & x-tags
 
 Mozilla and Google are actively working on Web Components. [Vjeux](http://blog.vjeux.com/) wrote a proof of concept that shows how to implement them using React.
 
@@ -49,7 +49,7 @@ Mozilla and Google are actively working on Web Components. [Vjeux](http://blog.v
 >
 > [Read the full post...](http://blog.vjeux.com/2013/javascript/custom-components-react-x-tags.html)
 
-## React TodoMVC Example {#react-todomvc-example}
+## React TodoMVC Example
 
 [TodoMVC.com](http://todomvc.com/) is a website that collects various implementations of the same basic Todo app. [Pete Hunt](http://www.petehunt.net/blog/) wrote an idiomatic React version.
 
@@ -60,7 +60,7 @@ Mozilla and Google are actively working on Web Components. [Vjeux](http://blog.v
 >
 > [Read the source code...](https://github.com/tastejs/todomvc/tree/gh-pages/labs/architecture-examples/react)
 
-## JSX is not HTML {#jsx-is-not-html}
+## JSX is not HTML
 
 Many of you pointed out differences between JSX and HTML. In order to clear up some confusion, we have added some documentation that covers the four main differences:
 
diff --git a/content/blog/2013-06-21-react-v0-3-3.md b/content/blog/2013-06-21-react-v0-3-3.md
index 31f150de2e..f09bf8a6f1 100644
--- a/content/blog/2013-06-21-react-v0-3-3.md
+++ b/content/blog/2013-06-21-react-v0-3-3.md
@@ -6,18 +6,18 @@ author: [zpao]
 We have a ton of great stuff coming in v0.4, but in the meantime we're releasing v0.3.3. This release addresses some small issues people were having and simplifies our tools to make them easier to use.
 
 
-## react-tools {#react-tools}
+## react-tools
 
 * Upgrade Commoner so `require` statements are no longer relativized when passing through the transformer. This was a feature needed when building React, but doesn't translate well for other consumers of `bin/jsx`.
 * Upgraded our dependencies on Commoner and Recast so they use a different directory for their cache.
 * Freeze our esprima dependency.
 
 
-## React {#react}
+## React
 
 * Allow reusing the same DOM node to render different components. e.g. `React.renderComponent(<div/>, domNode); React.renderComponent(<span/>, domNode);` will work now.
 
 
-## JSXTransformer {#jsxtransformer}
+## JSXTransformer
 
 * Improved the in-browser transformer so that transformed scripts will execute in the expected scope. The allows components to be defined and used from separate files.
diff --git a/content/blog/2013-06-27-community-roundup-3.md b/content/blog/2013-06-27-community-roundup-3.md
index 371da7ed67..2d297f20f3 100644
--- a/content/blog/2013-06-27-community-roundup-3.md
+++ b/content/blog/2013-06-27-community-roundup-3.md
@@ -5,7 +5,7 @@ author: [vjeux]
 
 The highlight of this week is that an interaction-heavy app has been ported to React. React components are solving issues they had with nested views.
 
-## Moving From Backbone To React {#moving-from-backbone-to-react}
+## Moving From Backbone To React
 
 [Clay Allsopp](https://twitter.com/clayallsopp) successfully ported [Propeller](http://usepropeller.com/blog/posts/from-backbone-to-react/), a fairly big, interaction-heavy JavaScript app, to React.
 
@@ -17,7 +17,7 @@ The highlight of this week is that an interaction-heavy app has been ported to R
 >
 > [Read the full post...](http://usepropeller.com/blog/posts/from-backbone-to-react/)
 
-## Grunt Task for JSX {#grunt-task-for-jsx}
+## Grunt Task for JSX
 
 [Eric Clemmons](https://ericclemmons.github.io/) wrote a task for [Grunt](http://gruntjs.com/) that applies the JSX transformation to your JavaScript files. It also works with [Browserify](http://browserify.org/) if you want all your files to be concatenated and minified together.
 
@@ -45,7 +45,7 @@ The highlight of this week is that an interaction-heavy app has been ported to R
 >
 > [Check out the project ...](https://github.com/ericclemmons/grunt-react)
 
-## Backbone/Handlebars Nested Views {#backbonehandlebars-nested-views}
+## Backbone/Handlebars Nested Views
 
 [Joel Burget](http://joelburget.com/) wrote a blog post talking about the way we would write React-like components in Backbone and Handlebars.
 
@@ -57,13 +57,13 @@ The highlight of this week is that an interaction-heavy app has been ported to R
 >
 > [Read the full post...](http://joelburget.com/react/)
 
-## JSRomandie Meetup {#jsromandie-meetup}
+## JSRomandie Meetup
 
 [Renault John Lecoultre](https://twitter.com/renajohn/) from [BugBuster](http://www.bugbuster.com) did a React introduction talk at a JS meetup called [JS Romandie](https://twitter.com/jsromandie) last week.
 
 <script async class="speakerdeck-embed" data-id="888a9d50c01b01300df36658d0894ac1" data-ratio="1.33333333333333" src="//speakerdeck.com/assets/embed.js"></script>
 
-## CoffeeScript integration {#coffeescript-integration}
+## CoffeeScript integration
 
 [Vjeux](http://blog.vjeux.com/) used the fact that JSX is just a syntactic sugar on-top of regular JS to rewrite the React front-page examples in CoffeeScript.
 
@@ -81,7 +81,7 @@ The highlight of this week is that an interaction-heavy app has been ported to R
 >
 > [Read the full post...](http://blog.vjeux.com/2013/javascript/react-coffeescript.html)
 
-## Tutorial in Plain JavaScript {#tutorial-in-plain-javascript}
+## Tutorial in Plain JavaScript
 
 We've seen a lot of people comparing React with various frameworks. [Ricardo Tomasi](http://ricardo.cc/) decided to re-implement the tutorial without any framework, just plain JavaScript.
 
diff --git a/content/blog/2013-07-02-react-v0-4-autobind-by-default.md b/content/blog/2013-07-02-react-v0-4-autobind-by-default.md
index 9c98fd9b2a..c8e5155ff9 100644
--- a/content/blog/2013-07-02-react-v0-4-autobind-by-default.md
+++ b/content/blog/2013-07-02-react-v0-4-autobind-by-default.md
@@ -6,7 +6,7 @@ author: [zpao]
 React v0.4 is very close to completion. As we finish it off, we'd like to share with you some of the major changes we've made since v0.3. This is the first of several posts we'll be making over the next week.
 
 
-## What is React.autoBind? {#what-is-reactautobind}
+## What is React.autoBind?
 
 If you take a look at most of our current examples, you'll see us using `React.autoBind` for event handlers. This is used in place of `Function.prototype.bind`. Remember that in JS, [function calls are late-bound](https://bonsaiden.github.io/JavaScript-Garden/#function.this). That means that if you simply pass a function around, the `this` used inside won't necessarily be the `this` you expect. `Function.prototype.bind` creates a new, properly bound, function so that when called, `this` is exactly what you expect it to be.
 
@@ -33,7 +33,7 @@ React.createClass({
 ```
 
 
-## What's Changing in v0.4? {#whats-changing-in-v04}
+## What's Changing in v0.4?
 
 After using `React.autoBind` for a few weeks, we realized that there were very few times that we didn't want that behavior. So we made it the default! Now all methods defined within `React.createClass` will already be bound to the correct instance.
 
diff --git a/content/blog/2013-07-03-community-roundup-4.md b/content/blog/2013-07-03-community-roundup-4.md
index b7bd158c29..12c32a1185 100644
--- a/content/blog/2013-07-03-community-roundup-4.md
+++ b/content/blog/2013-07-03-community-roundup-4.md
@@ -5,7 +5,7 @@ author: [vjeux]
 
 React reconciliation process appears to be very well suited to implement a text editor with a live preview as people at Khan Academy show us.
 
-## Khan Academy {#khan-academy}
+## Khan Academy
 
 [Ben Kamens](http://bjk5.com/) explains how [Sophie Alpert](http://sophiebits.com/) and [Joel Burget](http://joelburget.com/) are promoting React inside of [Khan Academy](https://www.khanacademy.org/). They now have three projects in the works using React.
 
@@ -21,7 +21,7 @@ The best part is the demo of how React reconciliation process makes live editing
 
 [![](../images/blog/monkeys.gif)](http://bjk5.com/post/53742233351/getting-your-team-to-adopt-new-technology)
 
-## React Snippets {#react-snippets}
+## React Snippets
 
 Over the past several weeks, members of our team, [Pete Hunt](http://www.petehunt.net/) and [Paul O'Shannessy](http://zpao.com/), answered many questions that were asked in the [React group](https://groups.google.com/forum/#!forum/reactjs). They give a good overview of how to integrate React with other libraries and APIs through the use of [Mixins](/docs/reusable-components.html) and [Lifecycle Methods](/docs/working-with-the-browser.html).
 
@@ -44,13 +44,13 @@ Over the past several weeks, members of our team, [Pete Hunt](http://www.petehun
 >
 > * [JSFiddle](http://jsfiddle.net/LQxy7/): Your React component simply render empty divs, and then in componentDidMount() you call React.renderComponent() on each of those divs to set up a new root React tree. Be sure to explicitly unmountAndReleaseReactRootNode() for each component in componentWillUnmount().
 
-## Introduction to React Screencast {#introduction-to-react-screencast}
+## Introduction to React Screencast
 
 [Pete Hunt](http://www.petehunt.net/) recorded himself implementing a simple `<Blink>` tag in React.
 
 <figure><iframe src="https://player.vimeo.com/video/67248575" width="100%" height="340" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></figure>
 
-## Snake in React {#snake-in-react}
+## Snake in React
 
 [Tom Occhino](http://tomocchino.com/) implemented Snake in 150 lines with React.
 
diff --git a/content/blog/2013-07-11-react-v0-4-prop-validation-and-default-values.md b/content/blog/2013-07-11-react-v0-4-prop-validation-and-default-values.md
index 8a5cc18c52..e7b091693c 100644
--- a/content/blog/2013-07-11-react-v0-4-prop-validation-and-default-values.md
+++ b/content/blog/2013-07-11-react-v0-4-prop-validation-and-default-values.md
@@ -6,7 +6,7 @@ author: [zpao]
 Many of the questions we got following the public launch of React revolved around `props`, specifically that people wanted to do validation and to make sure their components had sensible defaults.
 
 
-## Validation {#validation}
+## Validation
 
 Oftentimes you want to validate your `props` before you use them. Perhaps you want to ensure they are a specific type. Or maybe you want to restrict your prop to specific values. Or maybe you want to make a specific prop required. This was always possible — you could have written validations in your `render` or `componentWillReceiveProps` functions, but that gets clunky fast.
 
@@ -29,7 +29,7 @@ React.createClass({
 ```
 
 
-## Default Values {#default-values}
+## Default Values
 
 One common pattern we've seen with our React code is to do something like this:
 
diff --git a/content/blog/2013-07-17-react-v0-4-0.md b/content/blog/2013-07-17-react-v0-4-0.md
index 2a50e8b1e0..0c229a7cf3 100644
--- a/content/blog/2013-07-17-react-v0-4-0.md
+++ b/content/blog/2013-07-17-react-v0-4-0.md
@@ -13,7 +13,7 @@ React v0.4 has some big changes. We've also restructured the documentation to be
 When you're ready, [go download it](/docs/installation.html)!
 
 
-### React {#react}
+### React
 
 * Switch from using `id` attribute to `data-reactid` to track DOM nodes. This allows you to integrate with other JS and CSS libraries more easily.
 * Support for more DOM elements and attributes (e.g., `<canvas>`)
@@ -25,7 +25,7 @@ When you're ready, [go download it](/docs/installation.html)!
 * We've implemented an improved synthetic event system that conforms to the W3C spec.
 * Updates to your component are batched now, which may result in a significantly faster re-render of components. `this.setState` now takes an optional callback as its second parameter. If you were using `onClick={this.setState.bind(this, state)}` previously, you'll want to make sure you add a third parameter so that the event is not treated as the callback.
 
-### JSX {#jsx}
+### JSX
 
 * Support for comment nodes `<div>{/* this is a comment and won't be rendered */}</div>`
 * Children are now transformed directly into arguments instead of being wrapped in an array
@@ -33,7 +33,7 @@ When you're ready, [go download it](/docs/installation.html)!
   Previously this would be transformed into `React.DOM.div(null, [Component1(null), Component2(null)])`.
   If you were using React without JSX previously, your code should still work.
 
-### react-tools {#react-tools}
+### react-tools
 
 * Fixed a number of bugs when transforming directories
 * No longer re-write `require()`s to be relative unless specified
diff --git a/content/blog/2013-07-23-community-roundup-5.md b/content/blog/2013-07-23-community-roundup-5.md
index 02e0d53559..34d74869cc 100644
--- a/content/blog/2013-07-23-community-roundup-5.md
+++ b/content/blog/2013-07-23-community-roundup-5.md
@@ -5,7 +5,7 @@ author: [vjeux]
 
 We launched the [React Facebook Page](https://www.facebook.com/react) along with the React v0.4 launch. 700 people already liked it to get updated on the project :)
 
-## Cross-browser onChange {#cross-browser-onchange}
+## Cross-browser onChange
 
 [Sophie Alpert](http://sophiebits.com/) from [Khan Academy](https://www.khanacademy.org/) worked on a cross-browser implementation of `onChange` event that landed in v0.4. She wrote a blog post explaining the various browser quirks she had to deal with.
 
@@ -16,7 +16,7 @@ We launched the [React Facebook Page](https://www.facebook.com/react) along with
 > [Read the full post...](http://sophiebits.com/2013/06/18/a-near-perfect-oninput-shim-for-ie-8-and-9.html)
 
 
-## React Samples {#react-samples}
+## React Samples
 
 Learning a new library is always easier when you have working examples you can play with. [jwh](https://github.com/jhw) put many of them on his [react-samples GitHub repo](https://github.com/jhw/react-samples).
 
@@ -50,7 +50,7 @@ Learning a new library is always easier when you have working examples you can p
 > * Toggle [#1](https://rawgithub.com/jhw/react-samples/master/html/toggle.html)
 
 
-## React Chosen Wrapper {#react-chosen-wrapper}
+## React Chosen Wrapper
 
 [Cheng Lou](https://github.com/chenglou) wrote a wrapper for the [Chosen](https://harvesthq.github.io/chosen/) input library called [react-chosen](https://github.com/chenglou/react-chosen). It took just 25 lines to be able to use jQuery component as a React one.
 
@@ -64,21 +64,21 @@ React.renderComponent(
 ```
 
 
-## JSX and ES6 Template Strings {#jsx-and-es6-template-strings}
+## JSX and ES6 Template Strings
 
 [Domenic Denicola](http://domenicdenicola.com/) wrote a slide deck about the great applications of ES6 features and one slide shows how we could use Template Strings to compile JSX at run-time without the need for a pre-processing phase.
 
 <figure><iframe src="https://www.slideshare.net/slideshow/embed_code/24187146?rel=0&startSlide=36" width="100%" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px" allowfullscreen webkitallowfullscreen mozallowfullscreen> </iframe></figure>
 
 
-## React Presentation {#react-presentation}
+## React Presentation
 
 [Tom Occhino](http://tomocchino.com/) and [Jordan Walke](https://github.com/jordwalke), React developers, did a presentation of React at Facebook Seattle's office. Check out the first 25 minutes for the presentation and the remaining 45 for a Q&A. I highly recommend you watching this video.
 
 <figure><iframe width="650" height="400" src="//www.youtube-nocookie.com/embed/XxVg_s8xAms" frameborder="0" allowfullscreen></iframe></figure>
 
 
-## Docs {#docs}
+## Docs
 
 [Pete Hunt](http://www.petehunt.net/) rewrote the entirety of the docs for v0.4. The goal was to add more explanation about why we built React and what the best practices are.
 
diff --git a/content/blog/2013-07-26-react-v0-4-1.md b/content/blog/2013-07-26-react-v0-4-1.md
index 181bb09bee..569c45a827 100644
--- a/content/blog/2013-07-26-react-v0-4-1.md
+++ b/content/blog/2013-07-26-react-v0-4-1.md
@@ -6,7 +6,7 @@ author: [zpao]
 React v0.4.1 is a small update, mostly containing correctness fixes. Some code has been restructured internally but those changes do not impact any of our public APIs.
 
 
-## React {#react}
+## React
 
 * `setState` callbacks are now executed in the scope of your component.
 * `click` events now work on Mobile Safari.
@@ -16,7 +16,7 @@ React v0.4.1 is a small update, mostly containing correctness fixes. Some code h
 * Added checksums to detect and correct cases where server-side rendering markup mismatches what React expects client-side.
 
 
-## JSXTransformer {#jsxtransformer}
+## JSXTransformer
 
 * Improved environment detection so it can be run in a non-browser environment.
 
diff --git a/content/blog/2013-07-30-use-react-and-jsx-in-ruby-on-rails.md b/content/blog/2013-07-30-use-react-and-jsx-in-ruby-on-rails.md
index 60529a4cef..e436b671e1 100644
--- a/content/blog/2013-07-30-use-react-and-jsx-in-ruby-on-rails.md
+++ b/content/blog/2013-07-30-use-react-and-jsx-in-ruby-on-rails.md
@@ -12,7 +12,7 @@ This gem has 2 primary purposes:
 2. To allow you to write JSX without an external build step to transform that into JS.
 
 
-## Packaging react.js {#packaging-reactjs}
+## Packaging react.js
 
 To make `react.js` available for use client-side, simply add `react` to your manifest, and declare the variant you'd like to use in your environment. When you use `:production`, the minified and optimized `react.min.js` will be used instead of the development version. For example:
 
@@ -32,7 +32,7 @@ end
 ```
 
 
-## Writing JSX {#writing-jsx}
+## Writing JSX
 
 When you name your file with `myfile.js.jsx`, `react-rails` will automatically try to transform that file. For the time being, we still require that you include the docblock at the beginning of the file. For example, this file will get transformed on request.
 
@@ -42,12 +42,12 @@ React.renderComponent(<MyComponent/>, document.getElementById('example'))
 ```
 
 
-## Asset Pipeline {#asset-pipeline}
+## Asset Pipeline
 
 `react-rails` takes advantage of the [asset pipeline](http://guides.rubyonrails.org/asset_pipeline.html) that was introduced in Rails 3.1. A very important part of that pipeline is the `assets:precompile` Rake task. `react-rails` will ensure that your JSX files will be transformed into regular JS before all of your assets are minified and packaged.
 
 
-## Installation {#installation}
+## Installation
 
 Installation follows the same process you're familiar with. You can install it globally with `gem install react-rails`, though we suggest you add the dependency to your `Gemfile` directly.
 
diff --git a/content/blog/2013-08-05-community-roundup-6.md b/content/blog/2013-08-05-community-roundup-6.md
index 22db39d88e..987a0fa05d 100644
--- a/content/blog/2013-08-05-community-roundup-6.md
+++ b/content/blog/2013-08-05-community-roundup-6.md
@@ -5,13 +5,13 @@ author: [vjeux]
 
 This is the first Community Round-up where none of the items are from Facebook/Instagram employees. It's great to see the adoption of React growing.
 
-## React Game Tutorial {#react-game-tutorial}
+## React Game Tutorial
 
 [Caleb Cassel](https://twitter.com/CalebCassel) wrote a [step-by-step tutorial](https://rawgithub.com/calebcassel/react-demo/master/part1.html) about making a small game. It covers JSX, State and Events, Embedded Components and Integration with Backbone.
 <figure><a href="https://rawgithub.com/calebcassel/react-demo/master/part1.html"><img src="../images/blog/dog-tutorial.png"></a></figure>
 
 
-## Reactify {#reactify}
+## Reactify
 
 [Andrey Popp](http://andreypopp.com/) created a [Browserify](http://browserify.org/) helper to compile JSX files.
 
@@ -27,7 +27,7 @@ This is the first Community Round-up where none of the items are from Facebook/I
 
 
 
-## React Integration with Este {#react-integration-with-este}
+## React Integration with Este
 
 [Daniel Steigerwald](http://daniel.steigerwald.cz/) is now using React within [Este](https://github.com/steida/este), which is a development stack for web apps in CoffeeScript that are statically typed using the Closure Library.
 
@@ -52,7 +52,7 @@ este.demos.react.todoApp = este.react.create (`/** @lends {React.ReactComponent.
 [Check it out on GitHub...](https://github.com/steida/este-library/blob/master/este/demos/thirdparty/react/start.coffee)
 
 
-## React Stylus Boilerplate {#react-stylus-boilerplate}
+## React Stylus Boilerplate
 
 [Zaim Bakar](https://zaim.github.io/) shared his boilerplate to get started with Stylus CSS processor.
 
@@ -67,7 +67,7 @@ este.demos.react.todoApp = este.react.create (`/** @lends {React.ReactComponent.
 > [Check it out on GitHub...](https://github.com/zaim/react-stylus-boilerplate)
 
 
-## WebFUI {#webfui}
+## WebFUI
 
 [Conrad Barski](http://lisperati.com/), author of the popular book [Land of Lisp](http://landoflisp.com/), wants to use React for his ClojureScript library called [WebFUI](https://github.com/drcode/webfui).
 
diff --git a/content/blog/2013-08-19-use-react-and-jsx-in-python-applications.md b/content/blog/2013-08-19-use-react-and-jsx-in-python-applications.md
index bbbc4da636..95375f38a7 100644
--- a/content/blog/2013-08-19-use-react-and-jsx-in-python-applications.md
+++ b/content/blog/2013-08-19-use-react-and-jsx-in-python-applications.md
@@ -5,7 +5,7 @@ author: [kmeht]
 
 Today we're happy to announce the initial release of [PyReact](https://github.com/facebook/react-python), which makes it easier to use React and JSX in your Python applications. It's designed to provide an API to transform your JSX files into JavaScript, as well as provide access to the latest React source files.
 
-## Usage {#usage}
+## Usage
 
 Transform your JSX files via the provided `jsx` module:
 
@@ -30,7 +30,7 @@ from react import source
 react_js = source.path_for('react.min.js')
 ```
 
-## Django {#django}
+## Django
 
 PyReact includes a JSX compiler for [django-pipeline](https://github.com/cyberdelia/django-pipeline). Add it to your project's pipeline settings like this:
 
@@ -40,7 +40,7 @@ PIPELINE_COMPILERS = (
 )
 ```
 
-## Installation {#installation}
+## Installation
 
 PyReact is hosted on PyPI, and can be installed with `pip`:
 
diff --git a/content/blog/2013-08-26-community-roundup-7.md b/content/blog/2013-08-26-community-roundup-7.md
index bc526b4662..fd5cb62e6b 100644
--- a/content/blog/2013-08-26-community-roundup-7.md
+++ b/content/blog/2013-08-26-community-roundup-7.md
@@ -14,13 +14,13 @@ It's been three months since we open sourced React and it is going well. Some st
 * 2 early adopters: [Khan Academy](http://sophiebits.com/2013/06/09/using-react-to-speed-up-khan-academy.html) and [Propeller](http://usepropeller.com/blog/posts/from-backbone-to-react/)
 
 
-## Wolfenstein Rendering Engine Ported to React {#wolfenstein-rendering-engine-ported-to-react}
+## Wolfenstein Rendering Engine Ported to React
 
 [Pete Hunt](http://www.petehunt.net/) ported the render code of the web version of Wolfenstein 3D to React. Check out [the demo](http://www.petehunt.net/wolfenstein3D-react/wolf3d.html) and [render.js](https://github.com/petehunt/wolfenstein3D-react/blob/master/js/renderer.js#L183) file for the implementation.
 <figure><a href="http://www.petehunt.net/wolfenstein3D-react/wolf3d.html"><img src="../images/blog/wolfenstein_react.png"></a></figure>
 
 
-## React & Meteor {#react--meteor}
+## React & Meteor
 
 [Ben Newman](https://twitter.com/benjamn) made a [13-lines wrapper](https://github.com/benjamn/meteor-react/blob/master/lib/mixin.js) to use React and Meteor together. [Meteor](http://www.meteor.com/) handles the real-time data synchronization between client and server. React provides the declarative way to write the interface and only updates the parts of the UI that changed.
 
@@ -46,7 +46,7 @@ It's been three months since we open sourced React and it is going well. Some st
 >
 > [Read more ...](https://github.com/benjamn/meteor-react)
 
-## React Page {#react-page}
+## React Page
 
 [Jordan Walke](https://github.com/jordwalke) implemented a complete React project creator called [react-page](https://github.com/facebook/react-page/). It supports both server-side and client-side rendering, source transform and packaging JSX files using CommonJS modules, and instant reload.
 
diff --git a/content/blog/2013-09-24-community-roundup-8.md b/content/blog/2013-09-24-community-roundup-8.md
index d94649e0f2..e91b13e63f 100644
--- a/content/blog/2013-09-24-community-roundup-8.md
+++ b/content/blog/2013-09-24-community-roundup-8.md
@@ -9,7 +9,7 @@ First, we are organizing a [React Hackathon](http://reactjshack-a-thon.splashtha
 
 We've also reached a point where there are too many questions for us to handle directly. We're encouraging people to ask questions on [StackOverflow](http://stackoverflow.com/questions/tagged/reactjs) using the tag [[reactjs]](http://stackoverflow.com/questions/tagged/reactjs). Many members of the team and community have subscribed to the tag, so feel free to ask questions there. We think these will be more discoverable than Google Groups archives or IRC logs.
 
-## JavaScript Jabber {#javascript-jabber}
+## JavaScript Jabber
 
 [Pete Hunt](http://www.petehunt.net/) and [Jordan Walke](https://github.com/jordwalke) were interviewed on [JavaScript Jabber](http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/) for an hour.  They go over many aspects of React such as 60 FPS, Data binding, Performance, Diffing Algorithm, DOM Manipulation, Node.js support, server-side rendering, JSX, requestAnimationFrame and the community. This is a gold mine of information about React.
 
@@ -24,13 +24,13 @@ We've also reached a point where there are too many questions for us to handle d
 > [Read the full conversation ...](http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/)
 
 
-## JSXTransformer Trick {#jsxtransformer-trick}
+## JSXTransformer Trick
 
 While this is not going to work for all the attributes since they are camelCased in React, this is a pretty cool trick.
 
 <div style="margin-left: 74px;"><blockquote class="twitter-tweet"><p>Turn any DOM element into a React.js function: JSXTransformer.transform(&quot;/** <a href="https://twitter.com/jsx">@jsx</a> React.DOM */&quot; + element.innerHTML).code</p>&mdash; Ross Allen (@ssorallen) <a href="https://twitter.com/ssorallen/statuses/377105575441489920">September 9, 2013</a></blockquote></div>
 
-## Remarkable React {#remarkable-react}
+## Remarkable React
 
 [Stoyan Stefanov](http://www.phpied.com/) gave a talk at [BrazilJS](http://braziljs.com.br/) about React and wrote an article with the content of the presentation. He goes through the difficulties of writing _active apps_ using the DOM API and shows how React handles it.
 
@@ -49,18 +49,18 @@ While this is not going to work for all the attributes since they are camelCased
 > [Read More ...](http://www.phpied.com/remarkable-react/)
 
 
-## Markdown in React {#markdown-in-react}
+## Markdown in React
 
 [Sophie Alpert](http://sophiebits.com/) converted [marked](https://github.com/chjj/marked), a Markdown JavaScript implementation, in React: [marked-react](https://github.com/sophiebits/marked-react). Even without using JSX, the HTML generation is now a lot cleaner. It is also safer as forgetting a call to `escape` will not introduce an XSS vulnerability.
 <figure><a href="https://github.com/sophiebits/marked-react/commit/cb70c9df6542c7c34ede9efe16f9b6580692a457"><img src="../images/blog/markdown_refactor.png"></a></figure>
 
 
-## Unite from BugBusters {#unite-from-bugbusters}
+## Unite from BugBusters
 
 [Renault John Lecoultre](https://twitter.com/renajohn) wrote [Unite](https://www.bugbuster.com/), an interactive tool for analyzing code dynamically using React. It integrates with CodeMirror.
 <figure><a href="https://unite.bugbuster.com/"><img src="../images/blog/unite.png"></a></figure>
 
-## #reactjs IRC Logs {#reactjs-irc-logs}
+## #reactjs IRC Logs
 
 [Vjeux](http://blog.vjeux.com/) re-implemented the display part of the IRC logger in React. Just 130 lines are needed for a performant infinite scroll with timestamps and color-coded author names.
 
diff --git a/content/blog/2013-10-16-react-v0.5.0.md b/content/blog/2013-10-16-react-v0.5.0.md
index 88b7f4d7b1..46836135fe 100644
--- a/content/blog/2013-10-16-react-v0.5.0.md
+++ b/content/blog/2013-10-16-react-v0.5.0.md
@@ -9,16 +9,16 @@ The biggest change you'll notice as a developer is that we no longer support `cl
 
 The other major change in v0.5 is that we've added an additional build - `react-with-addons` - which adds support for some extras that we've been working on including animations and two-way binding. [Read more about these addons in the docs](/docs/addons.html).
 
-## Thanks to Our Community {#thanks-to-our-community}
+## Thanks to Our Community
 
 We added *22 new people* to the list of authors since we launched React v0.4.1 nearly 3 months ago. With a total of 48 names in our `AUTHORS` file, that means we've nearly doubled the number of contributors in that time period. We've seen the number of people contributing to discussion on IRC, mailing lists, Stack Overflow, and GitHub continue rising. We've also had people tell us about talks they've given in their local community about React.
 
 It's been awesome to see the things that people are building with React, and we can't wait to see what you come up with next!
 
 
-## Changelog {#changelog}
+## Changelog
 
-### React {#react}
+### React
 
 * Memory usage improvements - reduced allocations in core which will help with GC pauses
 * Performance improvements - in addition to speeding things up, we made some tweaks to stay out of slow path code in V8 and Nitro.
@@ -39,11 +39,11 @@ It's been awesome to see the things that people are building with React, and we
 * Better support for server-side rendering - [react-page](https://github.com/facebook/react-page) has helped improve the stability for server-side rendering.
 * Made it possible to use React in environments enforcing a strict [Content Security Policy](https://developer.mozilla.org/en-US/docs/Security/CSP/Introducing_Content_Security_Policy). This also makes it possible to use React to build Chrome extensions.
 
-### React with Addons (New!) {#react-with-addons-new}
+### React with Addons (New!)
 
 * Introduced a separate build with several "addons" which we think can help improve the React experience. We plan to deprecate this in the long-term, instead shipping each as standalone pieces. [Read more in the docs](/docs/addons.html).
 
-### JSX {#jsx}
+### JSX
 
 * No longer transform `class` to `className` as part of the transform! This is a breaking change - if you were using `class`, you *must* change this to `className` or your components will be visually broken.
 * Added warnings to the in-browser transformer to make it clear it is not intended for production use.
diff --git a/content/blog/2013-10-29-react-v0-5-1.md b/content/blog/2013-10-29-react-v0-5-1.md
index e70b730886..08407d6aff 100644
--- a/content/blog/2013-10-29-react-v0-5-1.md
+++ b/content/blog/2013-10-29-react-v0-5-1.md
@@ -5,16 +5,16 @@ author: [zpao]
 
 This release focuses on fixing some small bugs that have been uncovered over the past two weeks. I would like to thank everybody involved, specifically members of the community who fixed half of the issues found. Thanks to [Sophie Alpert][1], [Andrey Popp][2], and [Laurence Rowe][3] for their contributions!
 
-## Changelog {#changelog}
+## Changelog
 
-### React {#react}
+### React
 
 * Fixed bug with `<input type="range">` and selection events.
 * Fixed bug with selection and focus.
 * Made it possible to unmount components from the document root.
 * Fixed bug for `disabled` attribute handling on non-`<input>` elements.
 
-### React with Addons {#react-with-addons}
+### React with Addons
 
 * Fixed bug with transition and animation event detection.
 
diff --git a/content/blog/2013-10-3-community-roundup-9.md b/content/blog/2013-10-3-community-roundup-9.md
index 9eb3d2d1af..d69d464419 100644
--- a/content/blog/2013-10-3-community-roundup-9.md
+++ b/content/blog/2013-10-3-community-roundup-9.md
@@ -8,7 +8,7 @@ We organized a React hackathon last week-end in the Facebook Seattle office. 50
 ![](../images/blog/react-hackathon.jpg)
 
 
-## React Hackathon Winner {#react-hackathon-winner}
+## React Hackathon Winner
 
 [Alex Swan](http://bold-it.com/) implemented [Qu.izti.me](http://qu.izti.me/), a multi-player quiz game. It is real-time via Web Socket and mobile friendly.
 
@@ -19,7 +19,7 @@ We organized a React hackathon last week-end in the Facebook Seattle office. 50
 >
 > [Read More...](http://bold-it.com/javascript/facebook-react-example/)
 
-## JSConf EU Talk: Rethinking Best Practices {#jsconf-eu-talk-rethinking-best-practices}
+## JSConf EU Talk: Rethinking Best Practices
 
 [Pete Hunt](http://www.petehunt.net/) presented React at JSConf EU. He covers three controversial design decisions of React:
 
@@ -32,7 +32,7 @@ The video will be available soon on the [JSConf EU website](http://2013.jsconf.e
 <figure><iframe src="https://www.slideshare.net/slideshow/embed_code/26589373" width="100%" height="450" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" allowfullscreen></iframe></figure>
 
 
-## Pump - Clojure bindings for React {#pump---clojure-bindings-for-react}
+## Pump - Clojure bindings for React
 
 [Alexander Solovyov](http://solovyov.net/) has been working on React bindings for ClojureScript. This is really exciting as it is using "native" ClojureScript data structures.
 
@@ -52,7 +52,7 @@ The video will be available soon on the [JSConf EU website](http://2013.jsconf.e
 [Check it out on GitHub...](https://github.com/piranha/pump)
 
 
-## JSXHint {#jsxhint}
+## JSXHint
 
 [Todd Kennedy](http://blog.selfassembled.org/) working at [Cond&eacute; Nast](http://www.condenast.com/) implemented a wrapper on-top of [JSHint](http://www.jshint.com/) that first converts JSX files to JS.
 
@@ -65,7 +65,7 @@ The video will be available soon on the [JSConf EU website](http://2013.jsconf.e
 > [Check it out on GitHub...](https://github.com/CondeNast/JSXHint)
 
 
-## Turbo React {#turbo-react}
+## Turbo React
 
 [Ross Allen](https://twitter.com/ssorallen) working at [Mesosphere](http://mesosphere.io/) combined [Turbolinks](https://github.com/rails/turbolinks/), a library used by Ruby on Rails to speed up page transition, and React.
 
@@ -79,7 +79,7 @@ The video will be available soon on the [JSConf EU website](http://2013.jsconf.e
 > [Check out the demo...](https://turbo-react.herokuapp.com/)
 
 
-## Reactive Table {#reactive-table}
+## Reactive Table
 
 [Stoyan Stefanov](http://www.phpied.com/) continues his series of blog posts about React. This one is an introduction tutorial on rendering a simple table with React.
 
diff --git a/content/blog/2013-11-06-community-roundup-10.md b/content/blog/2013-11-06-community-roundup-10.md
index f85b77e6a8..6aa3a9b6c0 100644
--- a/content/blog/2013-11-06-community-roundup-10.md
+++ b/content/blog/2013-11-06-community-roundup-10.md
@@ -7,7 +7,7 @@ This is the 10th round-up already and React has come quite far since it was open
 
 The best part is that no drastic changes have been required to support all those use cases. Most of the efforts were targeted at polishing edge cases, performance improvements, and documentation.
 
-## Khan Academy - Officially moving to React {#khan-academy---officially-moving-to-react}
+## Khan Academy - Officially moving to React
 
 [Joel Burget](http://joelburget.com/) announced at Hack Reactor that new front-end code at Khan Academy should be written in React!
 
@@ -22,14 +22,14 @@ The best part is that no drastic changes have been required to support all those
 > [Read the full article](http://joelburget.com/backbone-to-react/)
 
 
-## React: Rethinking best practices {#react-rethinking-best-practices}
+## React: Rethinking best practices
 
 [Pete Hunt](http://www.petehunt.net/)'s talk at JSConf EU 2013 is now available in video.
 
 <figure><iframe width="650" height="370" src="//www.youtube-nocookie.com/embed/x7cQ3mrcKaY" frameborder="0" allowfullscreen></iframe></figure>
 
 
-## Server-side React with PHP {#server-side-react-with-php}
+## Server-side React with PHP
 
 [Stoyan Stefanov](http://www.phpied.com/)'s series of articles on React has two new entries on how to execute React on the server to generate the initial page load.
 
@@ -50,7 +50,7 @@ The best part is that no drastic changes have been required to support all those
 > <figure><a href="http://www.phpied.com/server-side-react-with-php-part-2/"><img src="../images/blog/react-php.png"></a></figure>
 
 
-## TodoMVC Benchmarks {#todomvc-benchmarks}
+## TodoMVC Benchmarks
 
 Webkit has a [TodoMVC Benchmark](https://github.com/WebKit/webkit/tree/master/PerformanceTests/DoYouEvenBench) that compares different frameworks. They recently included React and here are the results (average of 10 runs in Chrome 30):
 
@@ -89,13 +89,13 @@ By default, React "re-renders" all the components when anything changes. This is
 
 The fact that you can control when components are rendered is a very important characteristic of React as it gives you control over its performance. We are going to talk more about performance in the future, stay tuned.
 
-## Guess the filter {#guess-the-filter}
+## Guess the filter
 
 [Connor McSheffrey](http://conr.me) implemented a small game using React. The goal is to guess which filter has been used to create the Instagram photo.
 <figure><a href="http://guessthefilter.com/"><img src="../images/blog/guess_filter.jpg"></a></figure>
 
 
-## React vs FruitMachine {#react-vs-fruitmachine}
+## React vs FruitMachine
 
 [Andrew Betts](http://trib.tv/), director of the [Financial Times Labs](http://labs.ft.com/), posted an article comparing [FruitMachine](https://github.com/ftlabs/fruitmachine) and React.
 
@@ -105,7 +105,7 @@ The fact that you can control when components are rendered is a very important c
 
 Even though we weren't inspired by FruitMachine (React has been used in production since before FruitMachine was open sourced), it's great to see similar technologies emerging and becoming popular.
 
-## React Brunch {#react-brunch}
+## React Brunch
 
 [Matthew McCray](http://elucidata.net/) implemented [react-brunch](https://npmjs.org/package/react-brunch), a JSX compilation step for [Brunch](http://brunch.io/).
 
@@ -117,7 +117,7 @@ Even though we weren't inspired by FruitMachine (React has been used in producti
 >
 > [Read more...](https://npmjs.org/package/react-brunch)
 
-## Random Tweet {#random-tweet}
+## Random Tweet
 
 I'm going to start adding a tweet at the end of each round-up. We'll start with this one:
 
diff --git a/content/blog/2013-11-18-community-roundup-11.md b/content/blog/2013-11-18-community-roundup-11.md
index 7fe40e47a1..9386299988 100644
--- a/content/blog/2013-11-18-community-roundup-11.md
+++ b/content/blog/2013-11-18-community-roundup-11.md
@@ -5,14 +5,14 @@ author: [vjeux]
 
 This round-up is the proof that React has taken off from its Facebook's root: it features three in-depth presentations of React done by external people. This is awesome, keep them coming!
 
-## Super VanJS 2013 Talk {#super-vanjs-2013-talk}
+## Super VanJS 2013 Talk
 
 [Steve Luscher](https://github.com/steveluscher) working at [LeanPub](https://leanpub.com/) made a 30 min talk at [Super VanJS](https://twitter.com/vanjs). He does a remarkable job at explaining why React is so fast with very exciting demos using the HTML5 Audio API.
 
 <figure><iframe width="650" height="338" src="//www.youtube-nocookie.com/embed/1OeXsL5mr4g" frameborder="0" allowfullscreen></iframe></figure>
 
 
-## React Tips {#react-tips}
+## React Tips
 
 [Connor McSheffrey](http://connormcsheffrey.com/) and [Cheng Lou](https://github.com/chenglou) added a new section to the documentation. It's a list of small tips that you will probably find useful while working on React. Since each article is very small and focused, we [encourage you to contribute](/tips/introduction.html)!
 
@@ -30,7 +30,7 @@ This round-up is the proof that React has taken off from its Facebook's root: it
 - [False in JSX](/tips/false-in-jsx.html)
 
 
-## Intro to the React Framework {#intro-to-the-react-framework}
+## Intro to the React Framework
 
 [Pavan Podila](http://blog.pixelingene.com/) wrote an in-depth introduction to React on TutsPlus. This is definitively worth reading.
 
@@ -40,7 +40,7 @@ This round-up is the proof that React has taken off from its Facebook's root: it
 > [Read the full article ...](http://dev.tutsplus.com/tutorials/intro-to-the-react-framework--net-35660)
 
 
-## 140-characters textarea {#140-characters-textarea}
+## 140-characters textarea
 
 [Brian Kim](https://github.com/brainkim) wrote a small textarea component that gradually turns red as you reach the 140-characters limit. Because he only changes the background color, React is smart enough not to mess with the text selection.
 
@@ -48,13 +48,13 @@ This round-up is the proof that React has taken off from its Facebook's root: it
 <script async src="//codepen.io/assets/embed/ei.js"></script>
 
 
-## Genesis Skeleton {#genesis-skeleton}
+## Genesis Skeleton
 
 [Eric Clemmons](https://ericclemmons.github.io/) is working on a "Modern, opinionated, full-stack starter kit for rapid, streamlined application development". The version 0.4.0 has just been released and has first-class support for React.
 <figure><a href="http://genesis-skeleton.com/"><img src="../images/blog/genesis_skeleton.png"></a>a></figure>
 
 
-## AgFlow Talk {#agflow-talk}
+## AgFlow Talk
 
 [Robert Zaremba](http://rz.scale-it.pl/) working on [AgFlow](http://www.agflow.com/) recently talked in Poland about React.
 
@@ -67,7 +67,7 @@ This round-up is the proof that React has taken off from its Facebook's root: it
 <figure><iframe src="https://docs.google.com/presentation/d/1JSFbjCuuexwOHCeHWBMNRIJdyfD2Z0ZQwX65WOWkfaI/embed?start=false" frameborder="0" width="100%" height="468" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"> </iframe></figure>
 
 
-## JSX {#jsx}
+## JSX
 
 [Todd Kennedy](http://tck.io/) working at Cond&eacute; Nast wrote [JSXHint](https://github.com/CondeNast/JSXHint) and explains in a blog post his perspective on JSX.
 
@@ -79,13 +79,13 @@ This round-up is the proof that React has taken off from its Facebook's root: it
 > [Read the full article...](http://tck.io/posts/jsxhint_and_react.html)
 
 
-## Photo Gallery {#photo-gallery}
+## Photo Gallery
 
 [Maykel Loomans](http://miekd.com/), designer at Instagram, wrote a gallery for photos he shot using React.
 <figure><a href="http://photos.miekd.com/xoxo2013/"><img src="../images/blog/xoxo2013.png"></a>a></figure>
 
 
-## Random Tweet {#random-tweet}
+## Random Tweet
 
 <img src="../images/blog/steve_reverse.gif" style="float: right;" />
 <div style="width: 320px;"><blockquote class="twitter-tweet"><p>I think this reversed gif of Steve Urkel best describes my changing emotions towards the React Lib <a href="http://t.co/JoX0XqSXX3">http://t.co/JoX0XqSXX3</a></p>&mdash; Ryan Seddon (@ryanseddon) <a href="https://twitter.com/ryanseddon/statuses/398572848802852864">November 7, 2013</a></blockquote></div>
diff --git a/content/blog/2013-12-19-react-v0.8.0.md b/content/blog/2013-12-19-react-v0.8.0.md
index 71c384d0e3..1a94597f8b 100644
--- a/content/blog/2013-12-19-react-v0.8.0.md
+++ b/content/blog/2013-12-19-react-v0.8.0.md
@@ -16,9 +16,9 @@ In order to make the transition to 0.8 for our current users as painless as poss
 We hope that by releasing `react` on npm, we will enable a new set of uses that have been otherwise difficult. All feedback is welcome!
 
 
-## Changelog {#changelog}
+## Changelog
 
-### React {#react}
+### React
 
 * Added support for more attributes:
   * `rows` & `cols` for `<textarea>`
@@ -29,16 +29,16 @@ We hope that by releasing `react` on npm, we will enable a new set of uses that
 * Fixed Selection events in IE11
 * Added `onContextMenu` events
 
-### React with Addons {#react-with-addons}
+### React with Addons
 
 * Fixed bugs with TransitionGroup when children were undefined
 * Added support for `onTransition`
 
-### react-tools {#react-tools}
+### react-tools
 
 * Upgraded `jstransform` and `esprima-fb`
 
-### JSXTransformer {#jsxtransformer}
+### JSXTransformer
 
 * Added support for use in IE8
 * Upgraded browserify, which reduced file size by ~65KB (16KB gzipped)
diff --git a/content/blog/2013-12-23-community-roundup-12.md b/content/blog/2013-12-23-community-roundup-12.md
index 994975227f..368acb7f7a 100644
--- a/content/blog/2013-12-23-community-roundup-12.md
+++ b/content/blog/2013-12-23-community-roundup-12.md
@@ -5,7 +5,7 @@ author: [vjeux]
 
 React got featured on the front-page of Hacker News thanks to the Om library. If you try it out for the first time, take a look at the [docs](/docs/getting-started.html) and do not hesitate to ask questions on the [Google Group](https://groups.google.com/group/reactjs), [IRC](irc://chat.freenode.net/reactjs) or [Stack Overflow](http://stackoverflow.com/questions/tagged/reactjs). We are trying our best to help you out!
 
-## The Future of JavaScript MVC {#the-future-of-javascript-mvc}
+## The Future of JavaScript MVC
 
 [David Nolen](https://swannodette.github.io/) announced Om, a thin wrapper on-top of React in ClojureScript. It stands out by only using immutable data structures. This unlocks the ability to write a very efficient [shouldComponentUpdate](/docs/component-specs.html#updating-shouldcomponentupdate) and get huge performance improvements on some tasks.
 
@@ -20,7 +20,7 @@ React got featured on the front-page of Hacker News thanks to the Om library. If
 
 
 
-## Scroll Position with React {#scroll-position-with-react}
+## Scroll Position with React
 
 Managing the scroll position when new content is inserted is usually very tricky to get right. [Vjeux](http://blog.vjeux.com/) discovered that [componentWillUpdate](/docs/component-specs.html#updating-componentwillupdate) and [componentDidUpdate](/docs/component-specs.html#updating-componentdidupdate) were triggered exactly at the right time to manage the scroll position.
 
@@ -43,7 +43,7 @@ Managing the scroll position when new content is inserted is usually very tricky
 > [Check out the blog article...](http://blog.vjeux.com/2013/javascript/scroll-position-with-react.html)
 
 
-## Lights Out {#lights-out}
+## Lights Out
 
 React declarative approach is well suited to write games. [Cheng Lou](https://github.com/chenglou) wrote the famous Lights Out game in React. It's a good example of use of [TransitionGroup](/docs/animation.html) to implement animations.
 <figure><a href="https://chenglou.github.io/react-lights-out/"><img src="../images/blog/lights-out.png"></a></figure>
@@ -51,7 +51,7 @@ React declarative approach is well suited to write games. [Cheng Lou](https://gi
 [Try it out!](https://chenglou.github.io/react-lights-out/)
 
 
-## Reactive Table Bookmarklet {#reactive-table-bookmarklet}
+## Reactive Table Bookmarklet
 
 [Stoyan Stefanov](http://www.phpied.com/) wrote a bookmarklet to process tables on the internet. It adds a little "pop" button that expands to a full-screen view with sorting, editing and export to csv and json.
 <figure><a href="http://www.phpied.com/reactivetable-bookmarklet/"><img src="../images/blog/reactive-bookmarklet.png"></a></figure>
@@ -59,13 +59,13 @@ React declarative approach is well suited to write games. [Cheng Lou](https://gi
 [Check out the blog post...](http://www.phpied.com/reactivetable-bookmarklet/)
 
 
-## MontageJS Tutorial in React {#montagejs-tutorial-in-react}
+## MontageJS Tutorial in React
 
 [Ross Allen](https://twitter.com/ssorallen) implemented [MontageJS](http://montagejs.org/)'s [Reddit tutorial](http://montagejs.org/docs/tutorial-reddit-client-with-montagejs.html) in React. This is a good opportunity to compare the philosophies of the two libraries.
 
 [View the source on JSFiddle...](https://jsfiddle.net/ssorallen/fEsYt/)
 
-## Writing Good React Components {#writing-good-react-components}
+## Writing Good React Components
 
 [William Högman Rudenmalm](http://blog.whn.se/) wrote an article on how to write good React components. This is full of good advice.
 
@@ -78,7 +78,7 @@ React declarative approach is well suited to write games. [Cheng Lou](https://gi
 > [Read the full article ...](http://blog.whn.se/post/69621609605/writing-good-react-components)
 
 
-## Hoodie React TodoMVC {#hoodie-react-todomvc}
+## Hoodie React TodoMVC
 
 [Sven Lito](http://svenlito.com/) integrated the React TodoMVC example within an [Hoodie](http://hood.ie/) web app environment. This should let you get started using Hoodie and React.
 
@@ -88,7 +88,7 @@ hoodie new todomvc -t "hoodiehq/hoodie-react-todomvc"
 
 [Check out on GitHub...](https://github.com/hoodiehq/hoodie-react-todomvc)
 
-## JSX Compiler {#jsx-compiler}
+## JSX Compiler
 
 Ever wanted to have a quick way to see what a JSX tag would be converted to? [Tim Yung](http://www.yungsters.com/) made a page for it.
 <figure><a href="/react/jsx-compiler.html"><img src="../images/blog/jsx-compiler.png"></a></figure>
@@ -97,6 +97,6 @@ Ever wanted to have a quick way to see what a JSX tag would be converted to? [Ti
 
 
 
-## Random Tweet {#random-tweet}
+## Random Tweet
 
 <center><blockquote class="twitter-tweet" lang="en"><p>.<a href="https://twitter.com/jordwalke">@jordwalke</a> lays down some truth <a href="http://t.co/AXAn0UlUe3">http://t.co/AXAn0UlUe3</a>, optimizing your JS application shouldn&#39;t force you to rewrite so much code <a href="https://twitter.com/search?q=%23reactjs&amp;src=hash">#reactjs</a></p>&mdash; David Nolen (@swannodette) <a href="https://twitter.com/swannodette/statuses/413780079249215488">December 19, 2013</a></blockquote></center>
diff --git a/content/blog/2013-12-30-community-roundup-13.md b/content/blog/2013-12-30-community-roundup-13.md
index fad6b1e017..9002e106fa 100644
--- a/content/blog/2013-12-30-community-roundup-13.md
+++ b/content/blog/2013-12-30-community-roundup-13.md
@@ -6,7 +6,7 @@ author: [vjeux]
 Happy holidays! This blog post is a little-late Christmas present for all the React users. Hopefully it will inspire you to write awesome web apps in 2014!
 
 
-## React Touch {#react-touch}
+## React Touch
 
 [Pete Hunt](http://www.petehunt.net/) wrote three demos showing that React can be used to run 60fps native-like experiences on mobile web. A frosted glass effect, an image gallery with 3d animations and an infinite scroll view.
 
@@ -15,14 +15,14 @@ Happy holidays! This blog post is a little-late Christmas present for all the Re
 [Try out the demos!](https://petehunt.github.io/react-touch/)
 
 
-## Introduction to React {#introduction-to-react}
+## Introduction to React
 
 [Stoyan Stefanov](http://www.phpied.com/) talked at Joe Dev On Tech about React. He goes over all the features of the library and ends with a concrete example.
 
 <figure><iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/SMMRJif5QW0" frameborder="0" allowfullscreen></iframe></figure>
 
 
-## JSX: E4X The Good Parts {#jsx-e4x-the-good-parts}
+## JSX: E4X The Good Parts
 
 JSX is often compared to the now defunct E4X, [Vjeux](http://blog.vjeux.com/) went over all the E4X features and explained how JSX is different and hopefully doesn't repeat the same mistakes.
 
@@ -35,7 +35,7 @@ JSX is often compared to the now defunct E4X, [Vjeux](http://blog.vjeux.com/) we
 > [Continue reading ...](http://blog.vjeux.com/2013/javascript/jsx-e4x-the-good-parts.html)
 
 
-## React + Socket.io {#react--socketio}
+## React + Socket.io
 
 [Geert Pasteels](http://enome.be/nl) made a small experiment with Socket.io. He wrote a very small mixin that synchronizes React state with the server. Just include this mixin to your React component and it is now live!
 
@@ -60,7 +60,7 @@ componentWillUnmount: function () {
 [Check it out on GitHub...](https://github.com/Enome/react.io)
 
 
-## cssobjectify {#cssobjectify}
+## cssobjectify
 
 [Andrey Popp](http://andreypopp.com/) implemented a source transform that takes a CSS file and converts it to JSON. This integrates pretty nicely with React.
 
@@ -89,7 +89,7 @@ var MyComponent = React.createClass({
 [Check it out on GitHub...](https://github.com/andreypopp/cssobjectify)
 
 
-## ngReact {#ngreact}
+## ngReact
 
 [David Chang](http://davidandsuzi.com/) working at [HasOffer](http://www.hasoffers.com/) wanted to speed up his Angular app and replaced Angular primitives by React at different layers. When using React naively it is 67% faster, but when combining it with angular's transclusion it is 450% slower.
 
@@ -99,7 +99,7 @@ var MyComponent = React.createClass({
 > [Read the full article...](http://davidandsuzi.com/ngreact-react-components-in-angular/)
 
 
-## vim-jsx {#vim-jsx}
+## vim-jsx
 
 [Max Wang](https://github.com/mxw) made a vim syntax highlighting and indentation plugin for vim.
 
@@ -112,6 +112,6 @@ var MyComponent = React.createClass({
 > [View on GitHub...](https://github.com/mxw/vim-jsx)
 
 
-## Random Tweet {#random-tweet}
+## Random Tweet
 
 <center><blockquote class="twitter-tweet" lang="en"><p>I may be starting to get annoying with this, but ReactJS is really exciting. I truly feel the virtual DOM is a game changer.</p>&mdash; Eric Florenzano (@ericflo) <a href="https://twitter.com/ericflo/statuses/413842834974732288">December 20, 2013</a></blockquote></center>
diff --git a/content/blog/2014-01-06-community-roundup-14.md b/content/blog/2014-01-06-community-roundup-14.md
index 75395546af..edc6dad663 100644
--- a/content/blog/2014-01-06-community-roundup-14.md
+++ b/content/blog/2014-01-06-community-roundup-14.md
@@ -5,7 +5,7 @@ author: [vjeux]
 
 The theme of this first round-up of 2014 is integration. I've tried to assemble a list of articles and projects that use React in various environments.
 
-## React Baseline {#react-baseline}
+## React Baseline
 
 React is only one-piece of your web application stack. [Mark Lussier](https://github.com/intabulas) shared his baseline stack that uses React along with Grunt, Browserify, Bower, Zepto, Director and Sass. This should help you get started using React for a new project.
 
@@ -18,7 +18,7 @@ React is only one-piece of your web application stack. [Mark Lussier](https://gi
 > [Check it out on GitHub...](https://github.com/intabulas/reactjs-baseline)
 
 
-## Animal Sounds {#animal-sounds}
+## Animal Sounds
 
 [Josh Duck](http://joshduck.com/) used React in order to build a Windows 8 tablet app. This is a good example of a touch app written in React.
 [![](../images/blog/animal-sounds.jpg)](http://apps.microsoft.com/windows/en-us/app/baby-play-animal-sounds/9280825c-2ed9-41c0-ba38-aa9a5b890bb9)
@@ -26,7 +26,7 @@ React is only one-piece of your web application stack. [Mark Lussier](https://gi
 [Download the app...](http://apps.microsoft.com/windows/en-us/app/baby-play-animal-sounds/9280825c-2ed9-41c0-ba38-aa9a5b890bb9)
 
 
-## React Rails Tutorial {#react-rails-tutorial}
+## React Rails Tutorial
 
 [Selem Delul](http://selem.im) bundled the [React Tutorial](/tutorial/tutorial.html) into a rails app. This is a good example on how to get started with a rails project.
 
@@ -41,7 +41,7 @@ React is only one-piece of your web application stack. [Mark Lussier](https://gi
 >
 > [View on GitHub...](https://github.com/necrodome/react-rails-tutorial)
 
-## Mixing with Backbone {#mixing-with-backbone}
+## Mixing with Backbone
 
 [Eldar Djafarov](http://eldar.djafarov.com/) implemented a mixin to link Backbone models to React state and a small abstraction to write two-way binding on-top.
 
@@ -50,7 +50,7 @@ React is only one-piece of your web application stack. [Mark Lussier](https://gi
 [Check out the blog post...](http://eldar.djafarov.com/2013/11/reactjs-mixing-with-backbone/)
 
 
-## React Infinite Scroll {#react-infinite-scroll}
+## React Infinite Scroll
 
 [Guillaume Rivals](https://twitter.com/guillaumervls) implemented an InfiniteScroll component. This is a good example of a React component that has a simple yet powerful API.
 
@@ -67,13 +67,13 @@ React is only one-piece of your web application stack. [Mark Lussier](https://gi
 [Try it out on GitHub!](https://github.com/guillaumervls/react-infinite-scroll)
 
 
-## Web Components Style {#web-components-style}
+## Web Components Style
 
 [Thomas Aylott](http://subtlegradient.com/) implemented an API that looks like Web Components but using React underneath.
 
 [View the source on JSFiddle...](http://jsfiddle.net/SubtleGradient/ue2Aa)
 
-## React vs Angular {#react-vs-angular}
+## React vs Angular
 
 React is often compared with Angular. [Pete Hunt](http://skulbuny.com/2013/10/31/react-vs-angular/) wrote an opinionated post on the subject.
 
@@ -85,6 +85,6 @@ React is often compared with Angular. [Pete Hunt](http://skulbuny.com/2013/10/31
 
 
 
-## Random Tweet {#random-tweet}
+## Random Tweet
 
 <div><blockquote class="twitter-tweet" lang="en"><p>Really intrigued by React.js. I&#39;ve looked at all JS frameworks, and excepting <a href="https://twitter.com/serenadejs">@serenadejs</a> this is the first one which makes sense to me.</p>&mdash; Jonas Nicklas (@jonicklas) <a href="https://twitter.com/jonicklas/statuses/412640708755869696">December 16, 2013</a></blockquote></div>
diff --git a/content/blog/2014-02-05-community-roundup-15.md b/content/blog/2014-02-05-community-roundup-15.md
index 8d5f5f606b..729a2edea5 100644
--- a/content/blog/2014-02-05-community-roundup-15.md
+++ b/content/blog/2014-02-05-community-roundup-15.md
@@ -7,14 +7,14 @@ Interest in React seems to have surged ever since David Nolen ([@swannodette](ht
 
 In this React Community Round-up, we are taking a closer look at React from a functional programming perspective.
 
-## "React: Another Level of Indirection" {#react-another-level-of-indirection}
+## "React: Another Level of Indirection"
 To start things off, Eric Normand ([@ericnormand](https://twitter.com/ericnormand)) of [LispCast](http://lispcast.com) makes the case for [React from a general functional programming standpoint](http://www.lispcast.com/react-another-level-of-indirection) and explains how React's "Virtual DOM provides the last piece of the Web Frontend Puzzle for ClojureScript".
 
 > The Virtual DOM is an indirection mechanism that solves the difficult problem of DOM programming: how to deal with incremental changes to a stateful tree structure. By abstracting away the statefulness, the Virtual DOM turns the real DOM into an immediate mode GUI, which is perfect for functional programming.
 >
 > [Read the full post...](http://www.lispcast.com/react-another-level-of-indirection)
 
-## Reagent: Minimalistic React for ClojureScript {#reagent-minimalistic-react-for-clojurescript}
+## Reagent: Minimalistic React for ClojureScript
 Dan Holmsand ([@holmsand](https://twitter.com/holmsand)) created [Reagent](https://holmsand.github.io/reagent/), a simplistic ClojureScript API to React.
 
 > It allows you to define efficient React components using nothing but plain ClojureScript functions and data, that describe your UI using a Hiccup-like syntax.
@@ -24,7 +24,7 @@ Dan Holmsand ([@holmsand](https://twitter.com/holmsand)) created [Reagent](https
 > [Check it out on GitHub...](https://holmsand.github.io/reagent/)
 
 
-## Functional DOM programming {#functional-dom-programming}
+## Functional DOM programming
 
 React's one-way data-binding naturally lends itself to a functional programming approach. Facebook's Pete Hunt ([@floydophone](https://twitter.com/floydophone)) explores how one would go about [writing web apps in a functional manner](https://medium.com/p/67d81637d43). Spoiler alert:
 
@@ -38,7 +38,7 @@ Pete also explains this in detail at his #MeteorDevShop talk (about 30 Minutes):
 
 
 
-## Kioo: Separating markup and logic {#kioo-separating-markup-and-logic}
+## Kioo: Separating markup and logic
 [Creighton Kirkendall](https://github.com/ckirkendall) created [Kioo](https://github.com/ckirkendall/kioo), which adds Enlive-style templating to React. HTML templates are separated from the application logic. Kioo comes with separate examples for both Om and Reagent.
 
 A basic example from github:
@@ -85,7 +85,7 @@ A basic example from github:
 (om/root app-state my-page (.-body js/document))
 ```
 
-## Om {#om}
+## Om
 
 In an interview with David Nolen, Tom Coupland ([@tcoupland](https://twitter.com/tcoupland)) of InfoQ provides a nice summary of recent developments around Om ("[Om: Enhancing Facebook's React with Immutability](http://www.infoq.com/news/2014/01/om-react)").
 
@@ -93,7 +93,7 @@ In an interview with David Nolen, Tom Coupland ([@tcoupland](https://twitter.com
 >
 > [Read the full interview...](http://www.infoq.com/news/2014/01/om-react)
 
-### A slice of React, ClojureScript and Om {#a-slice-of-react-clojurescript-and-om}
+### A slice of React, ClojureScript and Om
 
 Fredrik Dyrkell ([@lexicallyscoped](https://twitter.com/lexicallyscoped)) rewrote part of the [React tutorial in both ClojureScript and Om](http://www.lexicallyscoped.com/2013/12/25/slice-of-reactjs-and-cljs.html), along with short, helpful explanations.
 
@@ -105,21 +105,21 @@ In a separate post, Dyrkell breaks down [how to build a binary clock component](
 
 [[Demo](http://www.lexicallyscoped.com/demo/binclock/)] [[Code](https://github.com/fredyr/binclock/blob/master/src/binclock/core.cljs)]
 
-### Time Travel: Implementing undo in Om {#time-travel-implementing-undo-in-om}
+### Time Travel: Implementing undo in Om
 David Nolen shows how to leverage immutable data structures to [add global undo](https://swannodette.github.io/2013/12/31/time-travel/) functionality to an app – using just 13 lines of ClojureScript.
 
-### A Step-by-Step Om Walkthrough {#a-step-by-step-om-walkthrough}
+### A Step-by-Step Om Walkthrough
 
 [Josh Lehman](http://www.joshlehman.me) took the time to create an extensive [step-by-step walkthrough](http://www.joshlehman.me/rewriting-the-react-tutorial-in-om/) of the React tutorial in Om. The well-documented source is on [github](https://github.com/jalehman/omtut-starter).
 
-### Omkara {#omkara}
+### Omkara
 
 [brendanyounger](https://github.com/brendanyounger) created [omkara](https://github.com/brendanyounger/omkara), a starting point for ClojureScript web apps based on Om/React. It aims to take advantage of server-side rendering and comes with a few tips on getting started with Om/React projects.
 
-### Om Experience Report {#om-experience-report}
+### Om Experience Report
 Adam Solove ([@asolove](https://twitter.com/asolove/)) [dives a little deeper into Om, React and ClojureScript](http://adamsolove.com/js/clojure/2014/01/06/om-experience-report.html). He shares some helpful tips he gathered while building his [CartoCrayon](https://github.com/asolove/carto-crayon) prototype.
 
-## Not-so-random Tweet {#not-so-random-tweet}
+## Not-so-random Tweet
 
 
 <div><blockquote class="twitter-tweet" lang="en"><p>[@swannodette](https://twitter.com/swannodette) No thank you! It's honestly a bit weird because Om is exactly what I didn't know I wanted for doing functional UI work.</p>&mdash; Adam Solove (@asolove) <a href="https://twitter.com/asolove/status/420294067637858304">January 6, 2014</a></blockquote></div>
diff --git a/content/blog/2014-02-15-community-roundup-16.md b/content/blog/2014-02-15-community-roundup-16.md
index 064cbb8cc1..84796ba64c 100644
--- a/content/blog/2014-02-15-community-roundup-16.md
+++ b/content/blog/2014-02-15-community-roundup-16.md
@@ -6,14 +6,14 @@ author: [jgebhardt]
 There have been many posts recently covering the <i>why</i> and <i>how</i> of React. This week's community round-up includes a collection of recent articles to help you get started with React, along with a few posts that explain some of the inner workings.
 
 
-## React in a nutshell {#react-in-a-nutshell}
+## React in a nutshell
 Got five minutes to pitch React to your coworkers? John Lynch ([@johnrlynch](https://twitter.com/johnrlynch)) put together [this excellent and refreshing slideshow](http://slid.es/johnlynch/reactjs):
 
 <iframe src="//slid.es/johnlynch/reactjs/embed" width="100%" height="420" scrolling="no" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
 
 
 
-## React's diff algorithm {#reacts-diff-algorithm}
+## React's diff algorithm
 
 React core team member Christopher Chedeau ([@vjeux](https://twitter.com/vjeux)) explores the innards of React's tree diffing algorithm in this [extensive and well-illustrated post](http://calendar.perfplanet.com/2013/diff/). <figure>[![](../images/blog/react-diff-tree.png)](http://calendar.perfplanet.com/2013/diff/)</figure>
 
@@ -22,7 +22,7 @@ While we're talking about tree diffing: Matt Esch ([@MatthewEsch](https://twitte
 
 
 
-## Many, many new introductions to React! {#many-many-new-introductions-to-react}
+## Many, many new introductions to React!
 
 
 
@@ -40,23 +40,23 @@ Taylor Lapeyre ([@taylorlapeyre](https://twitter.com/taylorlapeyre)) wrote anoth
 
 [This "Deep explanation for newbies"](http://www.webdesignporto.com/react-js-in-pure-javascript-facebook-library/?utm_source=echojs&utm_medium=post&utm_campaign=echojs) by [@ProJavaScript](https://twitter.com/ProJavaScript) explains how to get started building a React game without using the optional JSX syntax.
 
-### React around the world {#react-around-the-world}
+### React around the world
 
 It's great to see the React community expand internationally. [This site](http://habrahabr.ru/post/189230/) features a React introduction in Russian.
 
-### React tutorial series {#react-tutorial-series}
+### React tutorial series
 
 [Christopher Pitt](https://medium.com/@followchrisp) explains [React Components](https://medium.com/react-tutorials/828c397e3dc8) and [React Properties](https://medium.com/react-tutorials/ef11cd55caa0). The former includes a nice introduction to using JSX, while the latter focuses on adding interactivity and linking multiple components together. Also check out the [other posts in his React Tutorial series](https://medium.com/react-tutorials), e.g. on using [React + Backbone Model](https://medium.com/react-tutorials/8aaec65a546c) and [React + Backbone Router](https://medium.com/react-tutorials/c00be0cf1592).
 
-### Beginner tutorial: Implementing the board game Go {#beginner-tutorial-implementing-the-board-game-go}
+### Beginner tutorial: Implementing the board game Go
 
 [Chris LaRose](http://cjlarose.com/) walks through the steps of creating a Go app in React, showing how to separate application logic from the rendered components. Check out his [tutorial](http://cjlarose.com/2014/01/09/react-board-game-tutorial.html) or go straight to the [code](https://github.com/cjlarose/react-go).
 
-### Egghead.io video tutorials {#eggheadio-video-tutorials}
+### Egghead.io video tutorials
 
 Joe Maddalone ([@joemaddalone](https://twitter.com/joemaddalone)) of [egghead.io](https://egghead.io/) created a series of React video tutorials, such as [this](http://www.youtube-nocookie.com/v/rFvZydtmsxM) introduction to React Components. [[part 1](http://www.youtube-nocookie.com/v/rFvZydtmsxM)], [[part 2](http://www.youtube-nocookie.com/v/5yvFLrt7N8M)]
 
-### "React: Finally, a great server/client web stack" {#react-finally-a-great-serverclient-web-stack}
+### "React: Finally, a great server/client web stack"
 
 Eric Florenzano ([@ericflo](https://twitter.com/ericflo)) sheds some light on what makes React perfect for server rendering:
 
@@ -66,12 +66,12 @@ Eric Florenzano ([@ericflo](https://twitter.com/ericflo)) sheds some light on wh
 
 > [Read the full post...](http://eflorenzano.com/blog/2014/01/23/react-finally-server-client/)
 
-## Building a complex React component {#building-a-complex-react-component}
+## Building a complex React component
 [Matt Harrison](http://matt-harrison.com/) walks through the process of [creating an SVG-based Resistance Calculator](http://matt-harrison.com/building-a-complex-web-component-with-facebooks-react-library/) using React. <figure>[![](../images/blog/resistance-calculator.png)](http://matt-harrison.com/building-a-complex-web-component-with-facebooks-react-library/)</figure>
 
 
 
-## Random Tweets {#random-tweets}
+## Random Tweets
 
 <div><blockquote class="twitter-tweet" lang="en"><p>[#reactjs](https://twitter.com/search?q=%23reactjs&src=hash) has very simple API, but it's amazing how much work has been done under the hood to make it blazing fast.</p>&mdash; Anton Astashov (@anton_astashov) <a href="https://twitter.com/anton_astashov/status/417556491646693378">December 30, 2013</a></blockquote></div>
 
diff --git a/content/blog/2014-02-16-react-v0.9-rc1.md b/content/blog/2014-02-16-react-v0.9-rc1.md
index afc3822ba8..177f7372cc 100644
--- a/content/blog/2014-02-16-react-v0.9-rc1.md
+++ b/content/blog/2014-02-16-react-v0.9-rc1.md
@@ -20,7 +20,7 @@ We've also published version `0.9.0-rc1` of the `react` and `react-tools` packag
 
 Please try these builds out and [file an issue on GitHub](https://github.com/facebook/react/issues/new) if you see anything awry.
 
-## Upgrade Notes {#upgrade-notes}
+## Upgrade Notes
 
 In addition to the changes to React core listed below, we've made a small change to the way JSX interprets whitespace to make things more consistent. With this release, space between two components on the same line will be preserved, while a newline separating a text node from a tag will be eliminated in the output. Consider the code:
 
@@ -53,11 +53,11 @@ We believe this new behavior is more helpful and eliminates cases where unwanted
 
 In cases where you want to preserve the space adjacent to a newline, you can write a JS string like `{"Monkeys: "}` in your JSX source. We've included a script to do an automated codemod of your JSX source tree that preserves the old whitespace behavior by adding and removing spaces appropriately. You can [install jsx\_whitespace\_transformer from npm](https://github.com/facebook/react/blob/master/npm-jsx_whitespace_transformer/README.md) and run it over your source tree to modify files in place. The transformed JSX files will preserve your code's existing whitespace behavior.
 
-## Changelog {#changelog}
+## Changelog
 
-### React Core {#react-core}
+### React Core
 
-#### Breaking Changes {#breaking-changes}
+#### Breaking Changes
 
 - The lifecycle methods `componentDidMount` and `componentDidUpdate` no longer receive the root node as a parameter; use `this.getDOMNode()` instead
 - Whenever a prop is equal to `undefined`, the default value returned by `getDefaultProps` will now be used instead
@@ -69,7 +69,7 @@ In cases where you want to preserve the space adjacent to a newline, you can wri
 - On `input`, `select`, and `textarea` elements, `.getValue()` is no longer supported; use `.getDOMNode().value` instead
 - `this.context` on components is now reserved for internal use by React
 
-#### New Features {#new-features}
+#### New Features
 
 - React now never rethrows errors, so stack traces are more accurate and Chrome's purple break-on-error stop sign now works properly
 - Added a new tool for profiling React components and identifying places where defining `shouldComponentUpdate` can give performance improvements
@@ -92,7 +92,7 @@ In cases where you want to preserve the space adjacent to a newline, you can wri
 - Added support for `onReset` on `<form>` elements
 - The `autoFocus` attribute is now polyfilled consistently on `input`, `select`, and `textarea`
 
-#### Bug Fixes {#bug-fixes}
+#### Bug Fixes
 
 - React no longer adds an `__owner__` property to each component's `props` object; passed-in props are now never mutated
 - When nesting top-level components (e.g., calling `React.renderComponent` within `componentDidMount`), events now properly bubble to the parent component
@@ -112,7 +112,7 @@ In cases where you want to preserve the space adjacent to a newline, you can wri
 - `scrollLeft` and `scrollTop` are no longer accessed on document.body, eliminating a warning in Chrome
 - General performance fixes, memory optimizations, improvements to warnings and error messages
 
-### React with Addons {#react-with-addons}
+### React with Addons
 
 - `React.addons.TransitionGroup` was renamed to `React.addons.CSSTransitionGroup`
 - `React.addons.TransitionGroup` was added as a more general animation wrapper
@@ -122,7 +122,7 @@ In cases where you want to preserve the space adjacent to a newline, you can wri
 - Performance optimizations for CSSTransitionGroup
 - On checkbox `<input>` elements, `checkedLink` is now supported for two-way binding
 
-### JSX Compiler and react-tools Package {#jsx-compiler-and-react-tools-package}
+### JSX Compiler and react-tools Package
 
 - Whitespace normalization has changed; now space between two tags on the same line will be preserved, while newlines between two tags will be removed
 - The `react-tools` npm package no longer includes the React core libraries; use the `react` package instead.
diff --git a/content/blog/2014-02-20-react-v0.9.md b/content/blog/2014-02-20-react-v0.9.md
index bcb02397cb..19eb598245 100644
--- a/content/blog/2014-02-20-react-v0.9.md
+++ b/content/blog/2014-02-20-react-v0.9.md
@@ -20,7 +20,7 @@ As always, the release is available for download from the CDN:
 
 We've also published version `0.9.0` of the `react` and `react-tools` packages on npm and the `react` package on bower.
 
-## What’s New? {#whats-new}
+## What’s New?
 
 This version includes better support for normalizing event properties across all supported browsers so that you need to worry even less about cross-browser differences. We've also made many improvements to error messages and have refactored the core to never rethrow errors, so stack traces are more accurate and Chrome's purple break-on-error stop sign now works properly.
 
@@ -28,7 +28,7 @@ We've also added to the add-ons build [React.addons.TestUtils](/docs/test-utils.
 
 We've also made several other improvements and a few breaking changes; the full changelog is provided below.
 
-## JSX Whitespace {#jsx-whitespace}
+## JSX Whitespace
 
 In addition to the changes to React core listed below, we've made a small change to the way JSX interprets whitespace to make things more consistent. With this release, space between two components on the same line will be preserved, while a newline separating a text node from a tag will be eliminated in the output. Consider the code:
 
@@ -61,11 +61,11 @@ We believe this new behavior is more helpful and eliminates cases where unwanted
 
 In cases where you want to preserve the space adjacent to a newline, you can write `{'Monkeys: '}` or `Monkeys:{' '}` in your JSX source. We've included a script to do an automated codemod of your JSX source tree that preserves the old whitespace behavior by adding and removing spaces appropriately. You can [install jsx\_whitespace\_transformer from npm](https://github.com/facebook/react/blob/master/npm-jsx_whitespace_transformer/README.md) and run it over your source tree to modify files in place. The transformed JSX files will preserve your code's existing whitespace behavior.
 
-## Changelog {#changelog}
+## Changelog
 
-### React Core {#react-core}
+### React Core
 
-#### Breaking Changes {#breaking-changes}
+#### Breaking Changes
 
 - The lifecycle methods `componentDidMount` and `componentDidUpdate` no longer receive the root node as a parameter; use `this.getDOMNode()` instead
 - Whenever a prop is equal to `undefined`, the default value returned by `getDefaultProps` will now be used instead
@@ -77,7 +77,7 @@ In cases where you want to preserve the space adjacent to a newline, you can wri
 - On `input`, `select`, and `textarea` elements, `.getValue()` is no longer supported; use `.getDOMNode().value` instead
 - `this.context` on components is now reserved for internal use by React
 
-#### New Features {#new-features}
+#### New Features
 
 - React now never rethrows errors, so stack traces are more accurate and Chrome's purple break-on-error stop sign now works properly
 - Added support for SVG tags `defs`, `linearGradient`, `polygon`, `radialGradient`, `stop`
@@ -102,7 +102,7 @@ In cases where you want to preserve the space adjacent to a newline, you can wri
 - Added support for `onReset` on `<form>` elements
 - The `autoFocus` attribute is now polyfilled consistently on `input`, `select`, and `textarea`
 
-#### Bug Fixes {#bug-fixes}
+#### Bug Fixes
 
 - React no longer adds an `__owner__` property to each component's `props` object; passed-in props are now never mutated
 - When nesting top-level components (e.g., calling `React.renderComponent` within `componentDidMount`), events now properly bubble to the parent component
@@ -123,7 +123,7 @@ In cases where you want to preserve the space adjacent to a newline, you can wri
 - `scrollLeft` and `scrollTop` are no longer accessed on document.body, eliminating a warning in Chrome
 - General performance fixes, memory optimizations, improvements to warnings and error messages
 
-### React with Addons {#react-with-addons}
+### React with Addons
 
 - `React.addons.TestUtils` was added to help write unit tests
 - `React.addons.TransitionGroup` was renamed to `React.addons.CSSTransitionGroup`
@@ -134,7 +134,7 @@ In cases where you want to preserve the space adjacent to a newline, you can wri
 - Performance optimizations for CSSTransitionGroup
 - On checkbox `<input>` elements, `checkedLink` is now supported for two-way binding
 
-### JSX Compiler and react-tools Package {#jsx-compiler-and-react-tools-package}
+### JSX Compiler and react-tools Package
 
 - Whitespace normalization has changed; now space between two tags on the same line will be preserved, while newlines between two tags will be removed
 - The `react-tools` npm package no longer includes the React core libraries; use the `react` package instead.
diff --git a/content/blog/2014-02-24-community-roundup-17.md b/content/blog/2014-02-24-community-roundup-17.md
index 41dd68a08b..f689cf4490 100644
--- a/content/blog/2014-02-24-community-roundup-17.md
+++ b/content/blog/2014-02-24-community-roundup-17.md
@@ -6,50 +6,50 @@ author: [jgebhardt]
 
 It's exciting to see the number of real-world React applications and components skyrocket over the past months! This community round-up features a few examples of inspiring React applications and components.
 
-## React in the Real World {#react-in-the-real-world}
+## React in the Real World
 
-### Facebook Lookback video editor {#facebook-lookback-video-editor}
+### Facebook Lookback video editor
 Large parts of Facebook's web frontend are already powered by React. The recently released Facebook [Lookback video and its corresponding editor](https://www.facebook.com/lookback/edit/) are great examples of a complex, real-world React app.
 
-### Russia's largest bank is now powered by React {#russias-largest-bank-is-now-powered-by-react}
+### Russia's largest bank is now powered by React
 Sberbank, Russia's largest bank, recently switched large parts of their site to use React, as detailed in [this post by Vyacheslav Slinko](https://groups.google.com/forum/#!topic/reactjs/Kj6WATX0atg).
 
-### Relato {#relato}
+### Relato
 [Relato](https://bripkens.github.io/relato/) by [Ben Ripkens](https://github.com/bripkens) shows Open Source Statistics based on npm data. It features a filterable and sortable table built in React. Check it out &ndash; it's super fast!
 
-### Makona Editor {#makona-editor}
+### Makona Editor
 
  John Lynch ([@johnrlynch](https://twitter.com/johnrlynch)) created Makona, a block-style document editor for the web. Blocks of different content types comprise documents, authored using plain markup. At the switch of a toggle, block contents are then rendered on the page. While not quite a WYSIWYG editor, Makona uses plain textareas for input. This makes it compatible with a wider range of platforms than traditional rich text editors.
 [![](../images/blog/makona-editor.png)](https://johnthethird.github.io/makona-editor/)
 
-### Create Chrome extensions using React {#create-chrome-extensions-using-react}
+### Create Chrome extensions using React
 React is in no way limited to just web pages. Brandon Tilley ([@BinaryMuse](https://twitter.com/BinaryMuse)) just released a detailed walk-through of [how he built his Chrome extension "Fast Tab Switcher" using React](http://brandontilley.com/2014/02/24/creating-chrome-extensions-with-react.html).
 
 
-### Twitter Streaming Client {#twitter-streaming-client}
+### Twitter Streaming Client
 
 Javier Aguirre ([@javaguirre](https://twitter.com/javaguirre)) put together a simple [twitter streaming client using node, socket.io and React](http://javaguirre.net/2014/02/11/twitter-streaming-api-with-node-socket-io-and-reactjs/).
 
 
-### Sproutsheet {#sproutsheet}
+### Sproutsheet
 
 [Sproutsheet](http://sproutsheet.com/) is a gardening calendar. You can use it to track certain events that happen in the life of your plants. It's currently in beta and supports localStorage, and data/image import and export.
 
-### Instant Domain Search {#instant-domain-search}
+### Instant Domain Search
 [Instant Domain Search](https://instantdomainsearch.com/) also uses React. It sure is instant!
 
 
-### SVG-based graphical node editor {#svg-based-graphical-node-editor}
+### SVG-based graphical node editor
 [NoFlo](http://noflojs.org/) and [Meemoo](http://meemoo.org/) developer [Forresto Oliphant](http://www.forresto.com/) built an awesome SVG-based [node editor](https://forresto.github.io/prototyping/react/) in React.
  [![](../images/blog/react-svg-fbp.png)](https://forresto.github.io/prototyping/react/)
 
 
-### Ultimate Tic-Tac-Toe Game in React {#ultimate-tic-tac-toe-game-in-react}
+### Ultimate Tic-Tac-Toe Game in React
 Rafał Cieślak ([@Ravicious](https://twitter.com/Ravicious)) wrote a [React version](https://ravicious.github.io/ultimate-ttt/) of [Ultimate Tic Tac Toe](http://mathwithbaddrawings.com/2013/06/16/ultimate-tic-tac-toe/). Find the source [here](https://github.com/ravicious/ultimate-ttt).
 
 
 
-### ReactJS Gallery {#reactjs-gallery}
+### ReactJS Gallery
 
 [Emanuele Rampichini](https://github.com/lele85)'s [ReactJS Gallery](https://github.com/lele85/ReactGallery) is a cool demo app that shows fullscreen images from a folder on the server. If the folder content changes, the gallery app updates via websockets.
 
@@ -59,29 +59,29 @@ Emanuele shared this awesome demo video with us:
 
 
 
-## React Components {#react-components}
+## React Components
 
 
-### Table Sorter {#table-sorter}
+### Table Sorter
 [Table Sorter](https://bgerm.github.io/react-table-sorter-demo/) by [bgerm](https://github.com/bgerm) [[source](https://github.com/bgerm/react-table-sorter-demo)] is another helpful React component.
 
-### Static-search {#static-search}
+### Static-search
 
 Dmitry Chestnykh [@dchest](https://twitter.com/dchest) wrote a [static search indexer](https://github.com/dchest/static-search) in Go, along with a [React-based web front-end](http://www.codingrobots.com/search/) that consumes search result via JSON.
 
-### Lorem Ipsum component {#lorem-ipsum-component}
+### Lorem Ipsum component
 
 [Martin Andert](https://github.com/martinandert) created [react-lorem-component](https://github.com/martinandert/react-lorem-component), a simple component for all your placeholding needs.
 
-### Input with placeholder shim {#input-with-placeholder-shim}
+### Input with placeholder shim
 [react-input-placeholder](enigma-io/react-input-placeholder) by [enigma-io](@enigma-io) is a small wrapper around React.DOM.input that shims in placeholder functionality for browsers that don't natively support it.
 
-### diContainer {#dicontainer}
+### diContainer
 
 [dicontainer](https://github.com/SpektrumFM/dicontainer) provides a dependency container that lets you inject Angular-style providers and services as simple React.js Mixins.
 
 
-## React server rendering {#react-server-rendering}
+## React server rendering
 
 Ever wonder how to pre-render React components on the server? [react-server-example](https://github.com/mhart/react-server-example) by Michael Hart ([@hichaelmart](https://twitter.com/hichaelmart)) walks through the necessary steps.
 
@@ -89,6 +89,6 @@ Similarly, Alan deLevie ([@adelevie](https://twitter.com/adelevie)) created [rea
 
 
 
-## Random Tweet {#random-tweet}
+## Random Tweet
 
 <div><blockquote class="twitter-tweet" lang="en"><p>Recent changes: web ui is being upgraded to [#reactjs](https://twitter.com/search?q=%23reactjs&src=hash), HEAD~4 at [https://camlistore.googlesource.com/camlistore/](https://camlistore.googlesource.com/camlistore/)</p>&mdash; Camlistore (@Camlistore) <a href="https://twitter.com/Camlistore/status/423925795820539904">January 16, 2014</a></blockquote></div>
diff --git a/content/blog/2014-03-14-community-roundup-18.md b/content/blog/2014-03-14-community-roundup-18.md
index f803a1feef..c91e47a122 100644
--- a/content/blog/2014-03-14-community-roundup-18.md
+++ b/content/blog/2014-03-14-community-roundup-18.md
@@ -5,11 +5,11 @@ author: [jgebhardt]
 
 In this Round-up, we are taking a few closer looks at React's interplay with different frameworks and architectures.
 
-## "Little framework BIG splash" {#little-framework-big-splash}
+## "Little framework BIG splash"
 
 Let's start with yet another refreshing introduction to React: Craig Savolainen ([@maedhr](https://twitter.com/maedhr)) walks through some first steps, demonstrating [how to build a Google Maps component](http://infinitemonkeys.influitive.com/little-framework-big-splash) using React.
 
-## Architecting your app with react {#architecting-your-app-with-react}
+## Architecting your app with react
 
 Brandon Konkle ([@bkonkle](https://twitter.com/bkonkle))
 [Architecting your app with react](http://lincolnloop.com/blog/architecting-your-app-react-part-1/)
@@ -19,13 +19,13 @@ We're looking forward to part 2!
 >
 > [Read the full article...](http://lincolnloop.com/blog/architecting-your-app-react-part-1/)
 
-## React vs. async DOM manipulation {#react-vs-async-dom-manipulation}
+## React vs. async DOM manipulation
 
 Eliseu Monar ([@eliseumds](https://twitter.com/eliseumds))'s post "[ReactJS vs async concurrent rendering](http://eliseumds.tumblr.com/post/77843550010/vitalbox-pchr-reactjs-vs-async-concurrent-rendering)" is a great example of how React quite literally renders a whole array of common web development work(arounds) obsolete.
 
 
 
-## React, Scala and the Play Framework {#react-scala-and-the-play-framework}
+## React, Scala and the Play Framework
 [Matthias Nehlsen](http://matthiasnehlsen.com/) wrote a detailed introductory piece on [React and the Play Framework](http://matthiasnehlsen.com/blog/2014/01/05/play-framework-and-facebooks-react-library/), including a helpful architectural diagram of a typical React app.
 
 Nehlsen's React frontend is the second implementation of his chat application's frontend, following an AngularJS version. Both implementations are functionally equivalent and offer some perspective on differences between the two frameworks.
@@ -34,17 +34,17 @@ In [another article](http://matthiasnehlsen.com/blog/2014/01/24/scala-dot-js-and
 
 Also check out his [talk](http://m.ustream.tv/recorded/42780242) at Ping Conference 2014, in which he walks through a lot of the previously content in great detail.
 
-## React and Backbone {#react-and-backbone}
+## React and Backbone
 
 The folks over at [Venmo](https://venmo.com/) are using React in conjunction with Backbone.
 Thomas Boyt ([@thomasaboyt](https://twitter.com/thomasaboyt)) wrote [this detailed piece](http://www.thomasboyt.com/2013/12/17/using-reactjs-as-a-backbone-view.html) about why React and Backbone are "a fantastic pairing".
 
-## React vs. Ember {#react-vs-ember}
+## React vs. Ember
 
 Eric Berry ([@coderberry](https://twitter.com/coderberry)) developed Ember equivalents for some of the official React examples. Read his post for a side-by-side comparison of the respective implementations: ["Facebook React vs. Ember"](https://instructure.github.io/blog/2013/12/17/facebook-react-vs-ember/).
 
 
-## React and plain old HTML {#react-and-plain-old-html}
+## React and plain old HTML
 
 Daniel Lo Nigro ([@Daniel15](https://twitter.com/Daniel15)) created [React-Magic](https://github.com/reactjs/react-magic), which leverages React to ajaxify plain old html pages and even [allows CSS transitions between pageloads](http://stuff.dan.cx/facebook/react-hacks/magic/red.php).
 
@@ -54,15 +54,15 @@ Daniel Lo Nigro ([@Daniel15](https://twitter.com/Daniel15)) created [React-Magic
 
 On a related note, [Reactize](https://turbo-react.herokuapp.com/) by Ross Allen ([@ssorallen](https://twitter.com/ssorallen)) is a similarly awesome project: A wrapper for Rails' [Turbolinks](https://github.com/rails/turbolinks/), which seems to have inspired John Lynch ([@johnrlynch](https://twitter.com/johnrlynch)) to then create [a server-rendered version using the JSX transformer in Rails middleware](http://www.rigelgroupllc.com/blog/2014/01/12/react-jsx-transformer-in-rails-middleware/).
 
-## React and Object.observe {#react-and-objectobserve}
+## React and Object.observe
 Check out [François de Campredon](https://github.com/fdecampredon)'s implementation of [TodoMVC based on React and ES6's Object.observe](https://github.com/fdecampredon/react-observe-todomvc/).
 
 
-## React and Angular {#react-and-angular}
+## React and Angular
 
 Ian Bicking ([@ianbicking](https://twitter.com/ianbicking)) of Mozilla Labs [explains why he "decided to go with React instead of Angular.js"](https://plus.google.com/+IanBicking/posts/Qj8R5SWAsfE).
 
-### ng-React Update {#ng-react-update}
+### ng-React Update
 
 [David Chang](https://github.com/davidchang) works through some performance improvements of his [ngReact](https://github.com/davidchang/ngReact) project. His post ["ng-React Update - React 0.9 and Angular Track By"](http://davidandsuzi.com/ngreact-update/) includes some helpful advice on boosting render performance for Angular components.
 
@@ -77,11 +77,11 @@ React was also recently mentioned at ng-conf, where the Angular team commented o
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/srt3OBP2kGc?start=113" frameborder="0" allowfullscreen></iframe>
 
-## React and Web Components {#react-and-web-components}
+## React and Web Components
 
 Jonathan Krause ([@jonykrause](https://twitter.com/jonykrause)) offers his thoughts regarding [parallels between React and Web Components](http://jonykrau.se/posts/the-value-of-react), highlighting the value of React's ability to render pages on the server practically for free.
 
-## Immutable React {#immutable-react}
+## Immutable React
 
 [Peter Hausel](http://pk11.kinja.com/) shows how to build a Wikipedia auto-complete demo based on immutable data structures (similar to [mori](https://npmjs.org/package/mori)), really taking advantage of the framework's one-way reactive data binding:
 
@@ -90,16 +90,16 @@ Jonathan Krause ([@jonykrause](https://twitter.com/jonykrause)) offers his thoug
 > [Read the full post](http://tech.kinja.com/immutable-react-1495205675)
 
 
-## D3 and React {#d3-and-react}
+## D3 and React
 
 [Ben Smith](http://10consulting.com/) built some great SVG-based charting components using a little less of D3 and a little more of React: [D3 and React - the future of charting components?](http://10consulting.com/2014/02/19/d3-plus-reactjs-for-charting/)
 
-## Om and React {#om-and-react}
+## Om and React
 Josh Haberman ([@joshhaberman](https://twitter.com/JoshHaberman)) discusses performance differences between React, Om and traditional MVC frameworks in "[A closer look at OM vs React performance](http://blog.reverberate.org/2014/02/on-future-of-javascript-mvc-frameworks.html)".
 
 Speaking of Om: [Omchaya](https://github.com/sgrove/omchaya) by Sean Grove ([@sgrove](https://twitter.com/sgrove)) is a neat Cljs/Om example project.
 
 
-## Random Tweets {#random-tweets}
+## Random Tweets
 
 <div><blockquote class="twitter-tweet" lang="en"><p>Worked for 2 hours on a [@react_js](https://twitter.com/react_js) app sans internet. Love that I could get stuff done with it without googling every question.</p>&mdash; John Shimek (@varikin) <a href="https://twitter.com/varikin/status/436606891657949185">February 20, 2014</a></blockquote></div>
diff --git a/content/blog/2014-03-19-react-v0.10-rc1.md b/content/blog/2014-03-19-react-v0.10-rc1.md
index cc065e0879..9ece98ccd0 100644
--- a/content/blog/2014-03-19-react-v0.10-rc1.md
+++ b/content/blog/2014-03-19-react-v0.10-rc1.md
@@ -20,7 +20,7 @@ We've also published version `0.10.0-rc1` of the `react` and `react-tools` packa
 
 Please try these builds out and [file an issue on GitHub](https://github.com/facebook/react/issues/new) if you see anything awry.
 
-## Clone On Mount {#clone-on-mount}
+## Clone On Mount
 
 The main purpose of this release is to provide a smooth upgrade path as we evolve some of the implementation of core. In v0.9 we started warning in cases where you called methods on unmounted components. This is part of an effort to enforce the idea that the return value of a component (`React.DOM.div()`, `MyComponent()`) is in fact not a reference to the component instance React uses in the virtual DOM. The return value is instead a light-weight object that React knows how to use. Since the return value currently is a reference to the same object React uses internally, we need to make this transition in stages as many people have come to depend on this implementation detail.
 
@@ -47,25 +47,25 @@ These warnings and method forwarding are only enabled in the development build.
 
 The plan for v0.11 is that we will go fully to "descriptors". Method calls on the return value of `MyComponent()` will fail hard.
 
-## Changelog {#changelog}
+## Changelog
 
-### React Core {#react-core}
+### React Core
 
-#### New Features {#new-features}
+#### New Features
 * Added warnings to help migrate towards descriptors
 * Made it possible to server render without React-related markup (`data-reactid`, `data-react-checksum`). This DOM will not be mountable by React. [Read the docs for `React.renderComponentToStaticMarkup`](/docs/top-level-api.html#react.rendercomponenttostaticmarkup)
 * Added support for more attributes:
   * `srcSet` for `<img>` to specify images at different pixel ratios
   * `textAnchor` for SVG
 
-#### Bug Fixes {#bug-fixes}
+#### Bug Fixes
 * Ensure all void elements don’t insert a closing tag into the markup.
 * Ensure `className={false}` behaves consistently
 * Ensure `this.refs` is defined, even if no refs are specified.
 
-### Addons {#addons}
+### Addons
 
 * `update` function to deal with immutable data. [Read the docs](/docs/update.html)
 
-### react-tools {#react-tools}
+### react-tools
 * Added an option argument to `transform` function. The only option supported is `harmony`, which behaves the same as `jsx --harmony` on the command line. This uses the ES6 transforms from [jstransform](https://github.com/facebook/jstransform).
diff --git a/content/blog/2014-03-21-react-v0.10.md b/content/blog/2014-03-21-react-v0.10.md
index 121c88a222..2b1ac59b39 100644
--- a/content/blog/2014-03-21-react-v0.10.md
+++ b/content/blog/2014-03-21-react-v0.10.md
@@ -20,7 +20,7 @@ We've also published version `0.10.0` of the `react` and `react-tools` packages
 
 Please try these builds out and [file an issue on GitHub](https://github.com/facebook/react/issues/new) if you see anything awry.
 
-## Clone On Mount {#clone-on-mount}
+## Clone On Mount
 
 The main purpose of this release is to provide a smooth upgrade path as we evolve some of the implementation of core. In v0.9 we started warning in cases where you called methods on unmounted components. This is part of an effort to enforce the idea that the return value of a component (`React.DOM.div()`, `MyComponent()`) is in fact not a reference to the component instance React uses in the virtual DOM. The return value is instead a light-weight object that React knows how to use. Since the return value currently is a reference to the same object React uses internally, we need to make this transition in stages as many people have come to depend on this implementation detail.
 
@@ -47,26 +47,26 @@ These warnings and method forwarding are only enabled in the development build.
 
 The plan for v0.11 is that we will go fully to "descriptors". Method calls on the return value of `MyComponent()` will fail hard.
 
-## Changelog {#changelog}
+## Changelog
 
-### React Core {#react-core}
+### React Core
 
-#### New Features {#new-features}
+#### New Features
 * Added warnings to help migrate towards descriptors
 * Made it possible to server render without React-related markup (`data-reactid`, `data-react-checksum`). This DOM will not be mountable by React. [Read the docs for `React.renderComponentToStaticMarkup`](/docs/top-level-api.html#react.rendercomponenttostaticmarkup)
 * Added support for more attributes:
   * `srcSet` for `<img>` to specify images at different pixel ratios
   * `textAnchor` for SVG
 
-#### Bug Fixes {#bug-fixes}
+#### Bug Fixes
 * Ensure all void elements don’t insert a closing tag into the markup.
 * Ensure `className={false}` behaves consistently
 * Ensure `this.refs` is defined, even if no refs are specified.
 
-### Addons {#addons}
+### Addons
 
 * `update` function to deal with immutable data. [Read the docs](/docs/update.html)
 
-### react-tools {#react-tools}
+### react-tools
 * Added an option argument to `transform` function. The only option supported is `harmony`, which behaves the same as `jsx --harmony` on the command line. This uses the ES6 transforms from [jstransform](https://github.com/facebook/jstransform).
 
diff --git a/content/blog/2014-03-28-the-road-to-1.0.md b/content/blog/2014-03-28-the-road-to-1.0.md
index 2e9f3ac0b7..2b167b8c16 100644
--- a/content/blog/2014-03-28-the-road-to-1.0.md
+++ b/content/blog/2014-03-28-the-road-to-1.0.md
@@ -7,17 +7,17 @@ When we launched React last spring, we purposefully decided not to call it 1.0.
 
 Our primary goal with 1.0 is to clarify our messaging and converge on an API that is aligned with our goals. In order to do that, we want to clean up bad patterns we've seen in use and really help enable developers write good code.
 
-## Descriptors {#descriptors}
+## Descriptors
 
 The first part of this is what we're calling "descriptors". I talked about this briefly in our [v0.10 announcements][v0.10]. The goal here is to separate our virtual DOM representation from our use of it. Simply, this means the return value of a component (e.g. `React.DOM.div()`, `MyComponent()`) will be a simple object containing the information React needs to render. Currently the object returned is actually linked to React's internal representation of the component and even directly to the DOM element. This has enabled some bad patterns that are quite contrary to how we want people to use React. That's our failure.
 
 We added some warnings in v0.9 to start migrating some of these bad patterns. With v0.10 we'll catch more. You'll see more on this soon as we expect to ship v0.11 with descriptors.
 
-## API Cleanup {#api-cleanup}
+## API Cleanup
 
 This is really connected to everything. We want to keep the API as simple as possible and help developers [fall into the pit of success][pitofsuccess]. Enabling bad patterns with bad APIs is not success.
 
-## ES6 {#es6}
+## ES6
 
 Before we even launched React publicly, members of the team were talking about how we could leverage ES6, namely classes, to improve the experience of creating React components. Calling `React.createClass(...)` isn't great. We don't quite have the right answer here yet, but we're close. We want to make sure we make this as simple as possible. It could look like this:
 
@@ -31,23 +31,23 @@ class MyComponent extends React.Component {
 
 There are other features of ES6 we're already using in core. I'm sure we'll see more of that. The `jsx` executable we ship with `react-tools` already supports transforming many parts of ES6 into code that will run on older browsers.
 
-## Context {#context}
+## Context
 
 While we haven't documented `context`, it exists in some form in React already. It exists as a way to pass values through a tree without having to use props at every single point. We've seen this need crop up time and time again, so we want to make this as easy as possible. Its use has performance tradeoffs, and there are known weaknesses in our implementation, so we want to make sure this is a solid feature.
 
-## Addons {#addons}
+## Addons
 
 As you may know, we ship a separate build of React with some extra features we called "addons". While this has served us fine, it's not great for our users. It's made testing harder, but also results in more cache misses for people using a CDN. The problem we face is that many of these "addons" need access to parts of React that we don't expose publicly. Our goal is to ship each addon on its own and let each hook into React as needed. This would also allow others to write and distribute "addons".
 
-## Browser Support {#browser-support}
+## Browser Support
 
 As much as we'd all like to stop supporting older browsers, it's not always possible. Facebook still supports IE8. While React won't support IE8 forever, our goal is to have 1.0 support IE8. Hopefully we can continue to abstract some of these rough parts.
 
-## Animations {#animations}
+## Animations
 
 Finding a way to define animations in a declarative way is a hard problem. We've been exploring the space for a long time. We've introduced some half-measures to alleviate some use cases, but the larger problem remains. While we'd like to make this a part of 1.0, realistically we don't think we'll have a good solution in place.
 
-## Miscellaneous {#miscellaneous}
+## Miscellaneous
 
 There are several other things I listed on [our projects page][projects] that we're tracking. Some of them are internals and have no obvious outward effect (improve tests, repo separation, updated test runner). I encourage you to take a look.
 
diff --git a/content/blog/2014-06-27-community-roundup-19.md b/content/blog/2014-06-27-community-roundup-19.md
index 7a8956d60e..e61d85375d 100644
--- a/content/blog/2014-06-27-community-roundup-19.md
+++ b/content/blog/2014-06-27-community-roundup-19.md
@@ -3,12 +3,12 @@ title: "Community Round-up #19"
 author: [chenglou]
 ---
 
-## React Meetups! {#react-meetups}
+## React Meetups!
 Ever wanted to find developers who also share the same interest in React than you? Recently, there has been a React Meetup in [San Francisco](http://www.meetup.com/ReactJS-San-Francisco/) (courtesy of [Telmate](http://www.telmate.com)), and one in [London](http://www.meetup.com/London-React-User-Group/) (courtesy of [Stuart Harris](http://www.meetup.com/London-React-User-Group/members/105837542/), [Cain Ullah](http://www.meetup.com/London-React-User-Group/members/15509971/) and [Zoe Merchant](http://www.meetup.com/London-React-User-Group/members/137058242/)). These two events have been big successes; a second one in London is [already planned](http://www.meetup.com/London-React-User-Group/events/191406572/).
 
 If you don't live near San Francisco or London, why not start one in your community?
 
-## Complementary Tools {#complementary-tools}
+## Complementary Tools
 In case you haven't seen it, we've consolidated the tooling solution around React on [this wiki page](https://github.com/facebook/react/wiki/Complementary-Tools). Some of the notable recent entries include:
 
 - [Ryan Florence](https://github.com/rpflorence) and [Michael Jackson](https://github.com/mjackson)'s [react-nested-router](https://github.com/rpflorence/react-nested-router), which is a translation of the Ember router API to React.
@@ -19,7 +19,7 @@ In case you haven't seen it, we've consolidated the tooling solution around Reac
 
 These are some of the links that often pop up on the #reactjs IRC channel. If you made something that you think deserves to be shown on the wiki, feel free to add it!
 
-## React in Interesting Places {#react-in-interesting-places}
+## React in Interesting Places
 
 The core concepts React themselves is something very valuable that the community is exploring and pushing further. A year ago, we wouldn't have imagined something like [Bruce Hauman](http://rigsomelight.com)'s [Flappy Bird ClojureScript port](http://rigsomelight.com/2014/05/01/interactive-programming-flappy-bird-clojurescript.html), whose interactive programming has been made possible through React:
 
@@ -31,24 +31,24 @@ And don't forget [Pete Hunt](https://github.com/petehunt)'s Wolfenstein 3D rende
 
 Give us a shoutout on IRC or [React Google Groups](https://groups.google.com/forum/#!forum/reactjs) if you've used React in some Interesting places.
 
-## Even More People Using React {#even-more-people-using-react}
+## Even More People Using React
 
-### Prismatic {#prismatic}
+### Prismatic
 [Prismatic](http://getprismatic.com/home) recently shrank their codebase fivefold with the help of React and its popular ClojureScript wrapper, [Om](https://github.com/swannodette/om). They detailed their very positive experience [here](http://blog.getprismatic.com/om-sweet-om-high-functional-frontend-engineering-with-clojurescript-and-react/).
 
 > Finally, the state is normalized: each piece of information is represented in a single place. Since React ensures consistency between the DOM and the application data, the programmer can focus on ensuring that the state properly stays up to date in response to user input. If the application state is normalized, then this consistency is guaranteed by definition, completely avoiding the possibility of an entire class of common bugs.
 
-### Adobe Brackets {#adobe-brackets}
+### Adobe Brackets
 [Kevin Dangoor](http://www.kevindangoor.com) works on [Brackets](http://brackets.io/?lang=en), the open-source code editor. After writing [his first impression on React](http://www.kevindangoor.com/2014/05/simplifying-code-with-react/), he followed up with another insightful [article](http://www.kevindangoor.com/2014/05/react-in-brackets/) on how to gradually make the code transition, how to preserve the editor's good parts, and how to tune Brackets' tooling around JSX.
 
 > We don’t need to switch to React everywhere, all at once. It’s not a framework that imposes anything on the application structure. [...] Easy, iterative adoption is definitely something in React’s favor for us.
 
-### Storehouse {#storehouse}
+### Storehouse
 [Storehouse](https://www.storehouse.co) (Apple Design Award 2014)'s web presence is build with React. Here's [an example story](https://www.storehouse.co/stories/y2ad-mexico-city-clouds). Congratulations on the award!
 
-### Vim Awesome {#vim-awesome}
+### Vim Awesome
 [Vim Awesome](http://vimawesome.com), an open-source Vim plugins directory built on React, was just launched. Be sure to [check out the source code](https://github.com/divad12/vim-awesome) if you're curious to see an example of how to build a small single-page React app.
 
-## Random Tweets {#random-tweets}
+## Random Tweets
 
 <blockquote class="twitter-tweet" lang="en"><p>Spent 12 hours so far with <a href="https://twitter.com/hashtag/reactjs?src=hash">#reactjs</a>. Spent another 2 wondering why we&#39;ve been doing JS frameworks wrong until now. React makes me happy.</p>&mdash; Paul Irwin (@paulirwin) <a href="https://twitter.com/paulirwin/statuses/481263947589242882">June 24, 2014</a></blockquote>
diff --git a/content/blog/2014-07-13-react-v0.11-rc1.md b/content/blog/2014-07-13-react-v0.11-rc1.md
index 08b34c4534..eb294dfb8c 100644
--- a/content/blog/2014-07-13-react-v0.11-rc1.md
+++ b/content/blog/2014-07-13-react-v0.11-rc1.md
@@ -21,12 +21,12 @@ We've also published version `0.11.0-rc1` of the `react` and `react-tools` packa
 Please try these builds out and [file an issue on GitHub](https://github.com/facebook/react/issues/new) if you see anything awry.
 
 
-## `getDefaultProps` {#getdefaultprops}
+## `getDefaultProps`
 
 Starting in React 0.11, `getDefaultProps()` is called only once when `React.createClass()` is called, instead of each time a component is rendered. This means that `getDefaultProps()` can no longer vary its return value based on `this.props` and any objects will be shared across all instances. This change improves performance and will make it possible in the future to do PropTypes checks earlier in the rendering process, allowing us to give better error messages.
 
 
-## Rendering to `null` {#rendering-to-null}
+## Rendering to `null`
 
 Since React's release, people have been using work arounds to "render nothing". Usually this means returning an empty `<div/>` or `<span/>`. Some people even got clever and started returning `<noscript/>` to avoid extraneous DOM nodes. We finally provided a "blessed" solution that allows developers to write meaningful code. Returning `null` is an explicit indication to React that you do not want anything rendered. Behind the scenes we make this work with a `<noscript>` element, though in the future we hope to not put anything in the document. In the mean time, `<noscript>` elements do not affect layout in any way, so you can feel safe using `null` today!
 
@@ -49,7 +49,7 @@ render: function() {
 ```
 
 
-## JSX Namespacing {#jsx-namespacing}
+## JSX Namespacing
 
 Another feature request we've been hearing for a long time is the ability to have namespaces in JSX. Given that JSX is just JavaScript, we didn't want to use XML namespacing. Instead we opted for a standard JS approach: object property access. Instead of assigning variables to access components stored in an object (such as a component library), you can now use the component directly as `<Namespace.Component/>`.
 
@@ -73,7 +73,7 @@ render: function() {
 ```
 
 
-## Improved keyboard event normalization {#improved-keyboard-event-normalization}
+## Improved keyboard event normalization
 
 Keyboard events now contain a normalized `e.key` value according to the [DOM Level 3 Events spec](http://www.w3.org/TR/DOM-Level-3-Events/#keys-special), allowing you to write simpler key handling code that works in all browsers, such as:
 
@@ -91,20 +91,20 @@ handleKeyDown: function(e) {
 
 Keyboard and mouse events also now include a normalized `e.getModifierState()` that works consistently across browsers.
 
-## Changelog {#changelog}
+## Changelog
 
-### React Core {#react-core}
+### React Core
 
-#### Breaking Changes {#breaking-changes}
+#### Breaking Changes
 * `getDefaultProps()` is now called once per class and shared across all instances
 
-#### New Features {#new-features}
+#### New Features
 * Rendering to `null`
 * Keyboard events include normalized `e.key` and `e.getModifierState()` properties
 * New normalized `onBeforeInput` event
 * `React.Children.count` has been added as a helper for counting the number of children
 
-#### Bug Fixes {#bug-fixes}
+#### Bug Fixes
 
 * Re-renders are batched in more cases
 * Events: `e.view` properly normalized
@@ -118,24 +118,24 @@ Keyboard and mouse events also now include a normalized `e.getModifierState()` t
 * `img` event listeners are now unbound properly, preventing the error "Two valid but unequal nodes with the same `data-reactid`"
 * Added explicit warning when missing polyfills
 
-### React With Addons {#react-with-addons}
+### React With Addons
 * PureRenderMixin
 * Perf: a new set of tools to help with performance analysis
 * Update: New `$apply` command to transform values
 * TransitionGroup bug fixes with null elements, Android
 
-### React NPM Module {#react-npm-module}
+### React NPM Module
 * Now includes the pre-built packages under `dist/`.
 * `envify` is properly listed as a dependency instead of a peer dependency
 
-### JSX {#jsx}
+### JSX
 * Added support for namespaces, eg `<Components.Checkbox />`
 * JSXTransformer
   * Enable the same `harmony` features available in the command line with `<script type="text/jsx;harmony=true">`
   * Scripts are downloaded in parallel for more speed. They are still executed in order (as you would expect with normal script tags)
   * Fixed a bug preventing sourcemaps from working in Firefox
 
-### React Tools Module {#react-tools-module}
+### React Tools Module
 * Improved readme with usage and API information
 * Improved ES6 transforms available with `--harmony` option
 * Added `--source-map-inline` option to the `jsx` executable
diff --git a/content/blog/2014-07-17-react-v0.11.md b/content/blog/2014-07-17-react-v0.11.md
index 6a0c6c3bcc..9fa25662c9 100644
--- a/content/blog/2014-07-17-react-v0.11.md
+++ b/content/blog/2014-07-17-react-v0.11.md
@@ -28,12 +28,12 @@ We've also published version `0.11.0` of the `react` and `react-tools` packages
 Please try these builds out and [file an issue on GitHub](https://github.com/facebook/react/issues/new) if you see anything awry.
 
 
-## `getDefaultProps` {#getdefaultprops}
+## `getDefaultProps`
 
 Starting in React 0.11, `getDefaultProps()` is called only once when `React.createClass()` is called, instead of each time a component is rendered. This means that `getDefaultProps()` can no longer vary its return value based on `this.props` and any objects will be shared across all instances. This change improves performance and will make it possible in the future to do PropTypes checks earlier in the rendering process, allowing us to give better error messages.
 
 
-## Rendering to `null` {#rendering-to-null}
+## Rendering to `null`
 
 Since React's release, people have been using work arounds to "render nothing". Usually this means returning an empty `<div/>` or `<span/>`. Some people even got clever and started returning `<noscript/>` to avoid extraneous DOM nodes. We finally provided a "blessed" solution that allows developers to write meaningful code. Returning `null` is an explicit indication to React that you do not want anything rendered. Behind the scenes we make this work with a `<noscript>` element, though in the future we hope to not put anything in the document. In the mean time, `<noscript>` elements do not affect layout in any way, so you can feel safe using `null` today!
 
@@ -56,7 +56,7 @@ render: function() {
 ```
 
 
-## JSX Namespacing {#jsx-namespacing}
+## JSX Namespacing
 
 Another feature request we've been hearing for a long time is the ability to have namespaces in JSX. Given that JSX is just JavaScript, we didn't want to use XML namespacing. Instead we opted for a standard JS approach: object property access. Instead of assigning variables to access components stored in an object (such as a component library), you can now use the component directly as `<Namespace.Component/>`.
 
@@ -80,7 +80,7 @@ render: function() {
 ```
 
 
-## Improved keyboard event normalization {#improved-keyboard-event-normalization}
+## Improved keyboard event normalization
 
 Keyboard events now contain a normalized `e.key` value according to the [DOM Level 3 Events spec](http://www.w3.org/TR/DOM-Level-3-Events/#keys-special), allowing you to write simpler key handling code that works in all browsers, such as:
 
@@ -98,34 +98,34 @@ handleKeyDown: function(e) {
 
 Keyboard and mouse events also now include a normalized `e.getModifierState()` that works consistently across browsers.
 
-## Descriptors {#descriptors}
+## Descriptors
 
 In our [v0.10 release notes](/blog/2014/03/21/react-v0.10.html#clone-on-mount), we called out that we were deprecating the existing behavior of the component function call (eg `component = MyComponent(props, ...children)` or `component = <MyComponent prop={...}/>`). Previously that would create an instance and React would modify that internally. You could store that reference and then call functions on it (eg `component.setProps(...)`). This no longer works. `component` in the above examples will be a descriptor and not an instance that can be operated on. The v0.10 release notes provide a complete example along with a migration path. The development builds also provided warnings if you called functions on descriptors.
 
 Along with this change to descriptors, `React.isValidComponent` and `React.PropTypes.component` now actually validate that the value is a descriptor. Overwhelmingly, these functions are used to validate the value of `MyComponent()`, which as mentioned is now a descriptor, not a component instance. We opted to reduce code churn and make the migration to 0.11 as easy as possible. However, we realize this is has caused some confusion and we're working to make sure we are consistent with our terminology.
 
-## Prop Type Validation {#prop-type-validation}
+## Prop Type Validation
 
 Previously `React.PropTypes` validation worked by simply logging to the console. Internally, each validator was responsible for doing this itself. Additionally, you could write a custom validator and the expectation was that you would also simply `console.log` your error message. Very shortly into the 0.11 cycle we changed this so that our validators return (*not throw*) an `Error` object. We then log the `error.message` property in a central place in ReactCompositeComponent. Overall the result is the same, but this provides a clearer intent in validation. In addition, to better transition into our descriptor factory changes, we also currently run prop type validation twice in development builds. As a result, custom validators doing their own logging result in duplicate messages. To update, simply return an `Error` with your message instead.
 
 
-## Changelog {#changelog}
+## Changelog
 
-### React Core {#react-core}
+### React Core
 
-#### Breaking Changes {#breaking-changes}
+#### Breaking Changes
 * `getDefaultProps()` is now called once per class and shared across all instances
 * `MyComponent()` now returns a descriptor, not an instance
 * `React.isValidComponent` and `React.PropTypes.component` validate *descriptors*, not component instances.
 * Custom `propType` validators should return an `Error` instead of logging directly
 
-#### New Features {#new-features}
+#### New Features
 * Rendering to `null`
 * Keyboard events include normalized `e.key` and `e.getModifierState()` properties
 * New normalized `onBeforeInput` event
 * `React.Children.count` has been added as a helper for counting the number of children
 
-#### Bug Fixes {#bug-fixes}
+#### Bug Fixes
 
 * Re-renders are batched in more cases
 * Events: `e.view` properly normalized
@@ -139,24 +139,24 @@ Previously `React.PropTypes` validation worked by simply logging to the console.
 * `img` event listeners are now unbound properly, preventing the error "Two valid but unequal nodes with the same `data-reactid`"
 * Added explicit warning when missing polyfills
 
-### React With Addons {#react-with-addons}
+### React With Addons
 * PureRenderMixin: a mixin which helps optimize "pure" components
 * Perf: a new set of tools to help with performance analysis
 * Update: New `$apply` command to transform values
 * TransitionGroup bug fixes with null elements, Android
 
-### React NPM Module {#react-npm-module}
+### React NPM Module
 * Now includes the pre-built packages under `dist/`.
 * `envify` is properly listed as a dependency instead of a peer dependency
 
-### JSX {#jsx}
+### JSX
 * Added support for namespaces, eg `<Components.Checkbox />`
 * JSXTransformer
   * Enable the same `harmony` features available in the command line with `<script type="text/jsx;harmony=true">`
   * Scripts are downloaded in parallel for more speed. They are still executed in order (as you would expect with normal script tags)
   * Fixed a bug preventing sourcemaps from working in Firefox
 
-### React Tools Module {#react-tools-module}
+### React Tools Module
 * Improved readme with usage and API information
 * Improved ES6 transforms available with `--harmony` option
 * Added `--source-map-inline` option to the `jsx` executable
diff --git a/content/blog/2014-07-25-react-v0.11.1.md b/content/blog/2014-07-25-react-v0.11.1.md
index a13780af9f..cb210d0ea3 100644
--- a/content/blog/2014-07-25-react-v0.11.1.md
+++ b/content/blog/2014-07-25-react-v0.11.1.md
@@ -28,16 +28,16 @@ We've also published version `0.11.1` of the `react` and `react-tools` packages
 
 Please try these builds out and [file an issue on GitHub](https://github.com/facebook/react/issues/new) if you see anything awry.
 
-## Changelog {#changelog}
+## Changelog
 
-### React Core {#react-core}
+### React Core
 
-#### Bug Fixes {#bug-fixes}
+#### Bug Fixes
 * `setState` can be called inside `componentWillMount` in non-DOM environments
 * `SyntheticMouseEvent.getEventModifierState` correctly renamed to `getModifierState`
 * `getModifierState` correctly returns a `boolean`
 * `getModifierState` is now correctly case sensitive
 * Empty Text node used in IE8 `innerHTML` workaround is now removed, fixing rerendering in certain cases
 
-### JSXTransformer {#jsxtransformer}
+### JSXTransformer
 * Fix duplicate variable declaration (caused issues in some browsers)
diff --git a/content/blog/2014-07-28-community-roundup-20.md b/content/blog/2014-07-28-community-roundup-20.md
index 93b91c5296..b21d21167e 100644
--- a/content/blog/2014-07-28-community-roundup-20.md
+++ b/content/blog/2014-07-28-community-roundup-20.md
@@ -5,28 +5,28 @@ author: [LoukaN]
 
 It's an exciting time for React as there are now more commits from open source contributors than from Facebook engineers! Keep up the good work :)
 
-## Atom moves to React {#atom-moves-to-react}
+## Atom moves to React
 
 [Atom, GitHub's code editor, is now using React](http://blog.atom.io/2014/07/02/moving-atom-to-react.html) to build the editing experience. They made the move in order to improve performance. By default, React helped them eliminate unnecessary reflows, enabling them to focus on architecting the rendering pipeline in order to minimize repaints by using hardware acceleration. This is a testament to the fact that React's architecture is perfect for high performant applications.
 
 [<img src="../images/blog/gpu-cursor-move.gif" style="width: 100%;" />](http://blog.atom.io/2014/07/02/moving-atom-to-react.html)
 
 
-## Why Does React Scale? {#why-does-react-scale}
+## Why Does React Scale?
 
 At the last [JSConf.us](http://2014.jsconf.us/), Vjeux talked about the design decisions made in the API that allows it to scale to a large number of developers. If you don't have 20 minutes, take a look at the [annotated slides](https://speakerdeck.com/vjeux/why-does-react-scale-jsconf-2014).
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/D-ioDiacTm8" frameborder="0" allowfullscreen></iframe>
 
 
-## Live Editing {#live-editing}
+## Live Editing
 
 One of the best features of React is that it provides the foundations to implement concepts that were otherwise extremely difficult, like server-side rendering, undo-redo, rendering to non-DOM environments like canvas... [Dan Abramov](https://twitter.com/dan_abramov) got hot code reloading working with webpack in order to [live edit a React project](https://gaearon.github.io/react-hot-loader/)!
 
 <iframe src="//player.vimeo.com/video/100010922" width="100%" height="315" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
 
 
-## ReactIntl Mixin by Yahoo {#reactintl-mixin-by-yahoo}
+## ReactIntl Mixin by Yahoo
 
 There are a couple of React-related projects that recently appeared on Yahoo's GitHub, the first one being an  [internationalization mixin](https://github.com/yahoo/react-intl). It's great to see them getting excited about React and contributing back to the community.
 
@@ -49,12 +49,12 @@ React.renderComponent(
 );
 ```
 
-## Thinking and Learning React {#thinking-and-learning-react}
+## Thinking and Learning React
 
 Josephine Hall, working at Icelab, used React to write a mobile-focused application. She wrote a blog post [“Thinking and Learning React.js”](http://icelab.com.au/articles/thinking-and-learning-reactjs/) to share her experience with elements they had to use. You'll learn about routing, event dispatch, touchable components, and basic animations.
 
 
-## London React Meetup {#london-react-meetup}
+## London React Meetup
 
 If you missed the last [London React Meetup](http://www.meetup.com/London-React-User-Group/events/191406572/), the video is available, with lots of great content.
 
@@ -68,19 +68,19 @@ If you missed the last [London React Meetup](http://www.meetup.com/London-React-
 In related news, the next [React SF Meetup](http://www.meetup.com/ReactJS-San-Francisco/events/195518392/) will be from Prezi: [“Immediate Mode on the Web: How We Implemented the Prezi Viewer in JavaScript”](https://medium.com/prezi-engineering/how-and-why-prezi-turned-to-javascript-56e0ca57d135). While not in React, their tech is really awesome and shares a lot of React's design principles and perf optimizations.
 
 
-## Using React and KendoUI Together {#using-react-and-kendoui-together}
+## Using React and KendoUI Together
 
 One of the strengths of React is that it plays nicely with other libraries. Jim Cowart proved it by writing a tutorial that explains how to write [React component adapters for KendoUI](http://www.ifandelse.com/using-reactjs-and-kendoui-together/).
 
 <figure><a href="http://www.ifandelse.com/using-reactjs-and-kendoui-together/"><img src="../images/blog/kendoui.png" /></a></figure>
 
 
-## Acorn JSX {#acorn-jsx}
+## Acorn JSX
 
 Ingvar Stepanyan extended the Acorn JavaScript parser to support JSX. The result is a [JSX parser](https://github.com/RReverser/acorn-jsx) that's 1.5–2.0x faster than the official JSX implementation. It is an experiment and is not meant to be used for serious things, but it's always a good thing to get competition on performance!
 
 
-## ReactScriptLoader {#reactscriptloader}
+## ReactScriptLoader
 
 Yariv Sadan created [ReactScriptLoader](https://github.com/yariv/ReactScriptLoader) to make it easier to write components that require an external script.
 
@@ -109,6 +109,6 @@ var Foo = React.createClass({
 });
 ```
 
-## Random Tweet {#random-tweet}
+## Random Tweet
 
 <blockquote class="twitter-tweet" data-conversation="none" lang="en"><p>“<a href="https://twitter.com/apphacker">@apphacker</a>: I take back the mean things I said about <a href="https://twitter.com/reactjs">@reactjs</a> I actually like it.” Summarizing the life of ReactJS in a single tweet.</p>&mdash; Jordan (@jordwalke) <a href="https://twitter.com/jordwalke/statuses/490747339607265280">July 20, 2014</a></blockquote>
diff --git a/content/blog/2014-08-03-community-roundup-21.md b/content/blog/2014-08-03-community-roundup-21.md
index 33eaeffc85..66bab2ecbd 100644
--- a/content/blog/2014-08-03-community-roundup-21.md
+++ b/content/blog/2014-08-03-community-roundup-21.md
@@ -3,7 +3,7 @@ title: "Community Round-up #21"
 author: [LoukaN]
 ---
 
-## React Router {#react-router}
+## React Router
 [Ryan Florence](http://ryanflorence.com/) and [Michael Jackson](https://twitter.com/mjackson) ported Ember's router to React in a project called [React Router](https://github.com/rackt/react-router). This is a very good example of both communities working together to make the web better!
 
 ```javascript
@@ -19,7 +19,7 @@ React.renderComponent((
 ), document.getElementById('example'));
 ```
 
-## Going Big with React {#going-big-with-react}
+## Going Big with React
 
 Areeb Malik, from Facebook, talks about his experience using React. "On paper, all those JS frameworks look promising: clean implementations, quick code design, flawless execution. But what happens when you stress test JavaScript? What happens when you throw 6 megabytes of code at it? In this talk, we'll investigate how React performs in a high stress situation, and how it has helped our team build safe code on a massive scale"
 
@@ -30,7 +30,7 @@ Areeb Malik, from Facebook, talks about his experience using React. "On paper, a
 -->
 
 
-## What is React? {#what-is-react}
+## What is React?
 
 [Craig McKeachie](http://www.funnyant.com/author/admin/) author of [JavaScript Framework Guide](http://www.funnyant.com/javascript-framework-guide/) wrote an excellent news named ["What is React.js? Another Template Library?](http://www.funnyant.com/reactjs-what-is-it/)
 
@@ -47,7 +47,7 @@ Areeb Malik, from Facebook, talks about his experience using React. "On paper, a
 - Can I build something complex with React?
 
 
-## Referencing Dynamic Children {#referencing-dynamic-children}
+## Referencing Dynamic Children
 
 While Matt Zabriskie was working on [react-tabs](https://www.npmjs.com/package/react-tabs) he discovered how to use React.Children.map and React.addons.cloneWithProps in order to [reference dynamic children](http://www.mattzabriskie.com/blog/react-referencing-dynamic-children).
 
@@ -65,28 +65,28 @@ var App = React.createClass({
 ```
 
 
-## JSX with Sweet.js using Readtables {#jsx-with-sweetjs-using-readtables}
+## JSX with Sweet.js using Readtables
 
 Have you ever wondered how JSX was implemented? James Long wrote a very instructive blog post that explains how to [compile JSX with Sweet.js using Readtables](http://jlongster.com/Compiling-JSX-with-Sweet.js-using-Readtables).
 
 [![](../images/blog/sweet-jsx.png)](http://jlongster.com/Compiling-JSX-with-Sweet.js-using-Readtables)
 
 
-## First Look: Getting Started with React {#first-look-getting-started-with-react}
+## First Look: Getting Started with React
 
 [Kirill Buga](http://modernweb.com/authors/kirill-buga/) wrote an article on Modern Web explaining how [React is different from traditional MVC](http://modernweb.com/2014/07/23/getting-started-reactjs/) used by most JavaScript applications
 
 <figure><a href="http://modernweb.com/2014/07/23/getting-started-reactjs"><img src="../images/blog/first-look.png" /></a></figure>
 
 
-## React Draggable {#react-draggable}
+## React Draggable
 
 [Matt Zabriskie](https://github.com/mzabriskie) released a [project](https://github.com/mzabriskie/react-draggable) to make your react components draggable.
 
 [![](../images/blog/react-draggable.png)](https://mzabriskie.github.io/react-draggable/example/)
 
 
-## HTML Parser2 React {#html-parser2-react}
+## HTML Parser2 React
 
 [Jason Brown](https://browniefed.github.io/) adapted htmlparser2 to React: [htmlparser2-react](https://www.npmjs.com/package/htmlparser2-react). That allows you to convert raw HTML to the virtual DOM.
 This is not the intended way to use React but can be useful as last resort if you have an existing piece of HTML.
@@ -100,14 +100,14 @@ var parsedComponent = reactParser(html, React);
 ```
 
 
-## Building UIs with React {#building-uis-with-react}
+## Building UIs with React
 
 If you haven't yet tried out React, Jacob Rios did a Hangout where he covers the most important aspects and thankfully he recorded it!
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/lAn7GVoGlKU" frameborder="0" allowfullscreen></iframe>
 
 
-## Random Tweets {#random-tweets}
+## Random Tweets
 
 <blockquote class="twitter-tweet" lang="en"><p>We shipped reddit&#39;s first production <a href="https://twitter.com/reactjs">@reactjs</a> code last week, our checkout process.&#10;&#10;<a href="https://t.co/KUInwsCmAF">https://t.co/KUInwsCmAF</a></p>&mdash; Brian Holt (@holtbt) <a href="https://twitter.com/holtbt/statuses/493852312604254208">July 28, 2014</a></blockquote>
 <blockquote class="twitter-tweet" lang="en"><p>.<a href="https://twitter.com/AirbnbNerds">@AirbnbNerds</a> just launched our first user-facing React.js feature to production! We love it so far. <a href="https://t.co/KtyudemcIW">https://t.co/KtyudemcIW</a> /<a href="https://twitter.com/floydophone">@floydophone</a></p>&mdash; spikebrehm (@spikebrehm) <a href="https://twitter.com/spikebrehm/statuses/491645223643013121">July 22, 2014</a></blockquote>
diff --git a/content/blog/2014-09-12-community-round-up-22.md b/content/blog/2014-09-12-community-round-up-22.md
index 316706e300..977ba76dcd 100644
--- a/content/blog/2014-09-12-community-round-up-22.md
+++ b/content/blog/2014-09-12-community-round-up-22.md
@@ -16,19 +16,19 @@ This has been an exciting summer as four big companies: Yahoo, Mozilla, Airbnb a
 <blockquote width="300" class="twitter-tweet" lang="en"><p>We shipped reddit&#39;s first production <a href="https://twitter.com/reactjs">@reactjs</a> code last week, our checkout process.&#10;&#10;<a href="https://t.co/KUInwsCmAF">https://t.co/KUInwsCmAF</a></p>&mdash; Brian Holt (@holtbt) <a href="https://twitter.com/holtbt/statuses/493852312604254208">July 28, 2014</a></blockquote>
 </td></tr></table>
 
-## React's Architecture {#reacts-architecture}
+## React's Architecture
 
 [Vjeux](http://blog.vjeux.com/), from the React team, gave a talk at OSCON on the history of React and the various optimizations strategies that are implemented. You can also check out the [annotated slides](https://speakerdeck.com/vjeux/oscon-react-architecture) or [Chris Dawson](http://thenewstack.io/author/chrisdawson/)'s notes titled [JavaScript’s History and How it Led To React](http://thenewstack.io/javascripts-history-and-how-it-led-to-reactjs/).
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/eCf5CquV_Bw" frameborder="0" allowfullscreen></iframe>
 
 
-## v8 optimizations {#v8-optimizations}
+## v8 optimizations
 
 Jakob Kummerow landed [two optimizations to V8](http://www.chromium.org/developers/speed-hall-of-fame#TOC-2014-06-18) specifically targeted at optimizing React. That's really exciting to see browser vendors helping out on performance!
 
 
-## Reusable Components by Khan Academy {#reusable-components-by-khan-academy}
+## Reusable Components by Khan Academy
 
 [Khan Academy](https://www.khanacademy.org/) released [many high quality standalone components](https://khan.github.io/react-components/) they are using. This is a good opportunity to see what React code used in production look like.
 
@@ -44,14 +44,14 @@ var translated = (
 ```
 
 
-## React + Browserify + Gulp {#react--browserify--gulp}
+## React + Browserify + Gulp
 
 [Trường](http://truongtx.me/) wrote a little guide to help your [getting started using React, Browserify and Gulp](http://truongtx.me/2014/07/18/using-reactjs-with-browserify-and-gulp/).
 
 <figure><a href="http://truongtx.me/2014/07/18/using-reactjs-with-browserify-and-gulp/"><img src="../images/blog/react-browserify-gulp.jpg" /></a></figure>
 
 
-## React Style {#react-style}
+## React Style
 
 After React put HTML inside of JavaScript, Sander Spies takes the same approach with CSS: [IntegratedCSS](https://github.com/SanderSpies/react-style). It seems weird at first but this is the direction where React is heading.
 
@@ -76,7 +76,7 @@ var Button = React.createClass({
 ```
 
 
-## Virtual DOM in Elm {#virtual-dom-in-elm}
+## Virtual DOM in Elm
 
 [Evan Czaplicki](http://evan.czaplicki.us) explains how Elm implements the idea of a Virtual DOM and a diffing algorithm. This is great to see React ideas spread to other languages.
 
@@ -85,14 +85,14 @@ var Button = React.createClass({
 > [Read the full article](http://elm-lang.org/blog/Blazing-Fast-Html.elm)
 
 
-## Components Tutorial {#components-tutorial}
+## Components Tutorial
 
 If you are getting started with React, [Joe Maddalone](http://www.joemaddalone.com/) made a good tutorial on how to build your first component.
 
 <iframe width="650" height="200" src="//www.youtube-nocookie.com/embed/rFvZydtmsxM" frameborder="0" allowfullscreen></iframe>
 
 
-## Saving time & staying sane? {#saving-time--staying-sane}
+## Saving time & staying sane?
 
 When [Kent William Innholt](http://http://kentwilliam.com/) who works at [M>Path](http://mpath.com/) summed up his experience using React in an [article](http://kentwilliam.com/articles/saving-time-staying-sane-pros-cons-of-react-js).
 
@@ -106,7 +106,7 @@ When [Kent William Innholt](http://http://kentwilliam.com/) who works at [M>Path
 > [Read the article...](http://kentwilliam.com/articles/saving-time-staying-sane-pros-cons-of-react-js)
 
 
-## Weather {#weather}
+## Weather
 
 To finish this round-up, Andrew Gleave made a page that displays the [Weather](https://github.com/andrewgleave/react-weather). It's great to see that React is also used for small prototypes.
 
diff --git a/content/blog/2014-09-16-react-v0.11.2.md b/content/blog/2014-09-16-react-v0.11.2.md
index c7e2cbc105..376cecdab0 100644
--- a/content/blog/2014-09-16-react-v0.11.2.md
+++ b/content/blog/2014-09-16-react-v0.11.2.md
@@ -26,20 +26,20 @@ We've also published version `0.11.2` of the `react` and `react-tools` packages
 
 Please try these builds out and [file an issue on GitHub](https://github.com/facebook/react/issues/new) if you see anything awry.
 
-### React Core {#react-core}
+### React Core
 
-#### New Features {#new-features}
+#### New Features
 
 * Added support for `<dialog>` element and associated `open` attribute
 * Added support for `<picture>` element and associated `media` and `sizes` attributes
 * Added `React.createElement` API in preparation for React v0.12
   * `React.createDescriptor` has been deprecated as a result
 
-### JSX {#jsx}
+### JSX
 
 * `<picture>` is now parsed into `React.DOM.picture`
 
-### React Tools {#react-tools}
+### React Tools
 
 * Update `esprima` and `jstransform` for correctness fixes
 * The `jsx` executable now exposes a `--strip-types` flag which can be used to remove TypeScript-like type annotations
diff --git a/content/blog/2014-10-14-introducing-react-elements.md b/content/blog/2014-10-14-introducing-react-elements.md
index fb343cc53a..a6a5423fe3 100644
--- a/content/blog/2014-10-14-introducing-react-elements.md
+++ b/content/blog/2014-10-14-introducing-react-elements.md
@@ -22,13 +22,13 @@ Everything is backwards compatible for now, and as always React will provide you
 Continue reading if you want all the nitty gritty details...
 
 
-## New Terminology {#new-terminology}
+## New Terminology
 
 We wanted to make it easier for new users to see the parallel with the DOM (and why React is different). To align our terminology we now use the term `ReactElement` instead of _descriptor_. Likewise, we use the term `ReactNode` instead of _renderable_.
 
 [See the full React terminology guide.](https://gist.github.com/sebmarkbage/fcb1b6ab493b0c77d589)
 
-## Creating a ReactElement {#creating-a-reactelement}
+## Creating a ReactElement
 
 We now expose an external API for programmatically creating a `ReactElement` object.
 
@@ -44,7 +44,7 @@ var reactDivElement = div(props, children);
 ```
 
 
-## Deprecated: Auto-generated Factories {#deprecated-auto-generated-factories}
+## Deprecated: Auto-generated Factories
 
 Imagine if `React.createClass` was just a plain JavaScript class. If you call a class as a plain function you would call the component's constructor to create a Component instance, not a `ReactElement`:
 
@@ -69,9 +69,9 @@ In future versions of React, we want to be able to support pure classes without
 This is the biggest change to 0.12. Don't worry though. This functionality continues to work the same for this release, it just warns you if you're using a deprecated API. That way you can upgrade piece-by-piece instead of everything at once.
 
 
-## Upgrading to 0.12 {#upgrading-to-012}
+## Upgrading to 0.12
 
-### React With JSX {#react-with-jsx}
+### React With JSX
 
 If you use the React specific [JSX](https://facebook.github.io/jsx/) transform, the upgrade path is simple. Just make sure you have React in scope.
 
@@ -95,7 +95,7 @@ var MyOtherComponent = React.createClass({
 
 *NOTE: React's JSX will not call arbitrary functions in future releases. This restriction is introduced so that it's easier to reason about the output of JSX by both the reader of your code and optimizing compilers. The JSX syntax is not tied to React. Just the transpiler. You can still use [the JSX spec](https://facebook.github.io/jsx/) with a different transpiler for custom purposes.*
 
-### React Without JSX {#react-without-jsx}
+### React Without JSX
 
 If you don't use JSX and just call components as functions, you will need to explicitly create a factory before calling it:
 
@@ -151,7 +151,7 @@ var MyDOMComponent = React.createClass({
 
 We realize that this is noisy. At least it's on the top of the file (out of sight, out of mind). This a tradeoff we had to make to get [the other benefits](https://gist.github.com/sebmarkbage/d7bce729f38730399d28) that this model unlocks.
 
-### Anti-Pattern: Exporting Factories {#anti-pattern-exporting-factories}
+### Anti-Pattern: Exporting Factories
 
 If you have an isolated project that only you use, then you could create a helper that creates both the class and the factory at once:
 
@@ -169,7 +169,7 @@ It also encourages you to put more logic into these helper functions. Something
 To fit into the React ecosystem we recommend that you always export pure classes from your shared modules and let the consumer decide the best strategy for generating `ReactElement`s.
 
 
-## Third-party Languages {#third-party-languages}
+## Third-party Languages
 
 The signature of a `ReactElement` is something like this:
 
@@ -185,7 +185,7 @@ The signature of a `ReactElement` is something like this:
 Languages with static typing that don't need validation (e.g. [Om in ClojureScript](https://github.com/swannodette/om)), and production level compilers will be able to generate these objects inline instead of going through the validation step. This optimization will allow significant performance improvements in React.
 
 
-## Your Thoughts and Ideas {#your-thoughts-and-ideas}
+## Your Thoughts and Ideas
 
 We'd love to hear your feedback on this API and your preferred style. A plausible alternative could be to directly inline objects instead of creating factory functions:
 
@@ -208,7 +208,7 @@ This moves the noise down into the render method though. It also doesn't provide
 *NOTE: This won't work in this version of React because it's conflicting with other legacy APIs that we're deprecating. (We temporarily add a `element._isReactElement = true` marker on the object.)*
 
 
-## The Next Step: ES6 Classes {#the-next-step-es6-classes}
+## The Next Step: ES6 Classes
 
 After 0.12 we'll begin work on moving to ES6 classes. We will still support `React.createClass` as a backwards compatible API. If you use an ES6 transpiler you will be able to declare your components like this:
 
diff --git a/content/blog/2014-10-16-react-v0.12-rc1.md b/content/blog/2014-10-16-react-v0.12-rc1.md
index 9a6202a004..cff0274301 100644
--- a/content/blog/2014-10-16-react-v0.12-rc1.md
+++ b/content/blog/2014-10-16-react-v0.12-rc1.md
@@ -20,31 +20,31 @@ The release candidate is available for download:
 We've also published version `0.12.0-rc1` of the `react` and `react-tools` packages on npm and the `react` package on bower.
 
 
-## React Elements {#react-elements}
+## React Elements
 
 The biggest conceptual change we made in v0.12 is the move to React Elements. [We talked about this topic in depth earlier this week](/blog/2014/10/14/introducing-react-elements.html). If you haven't already, you should read up on the exciting changes in there!
 
 
-## JSX Changes {#jsx-changes}
+## JSX Changes
 
 Earlier this year we decided to write [a specification for JSX](https://facebook.github.io/jsx/). This has allowed us to make some changes focused on the React specific JSX and still allow others to innovate in the same space.
 
 
-### The `@jsx` Pragma is Gone! {#the-jsx-pragma-is-gone}
+### The `@jsx` Pragma is Gone!
 
 We have wanted to do this since before we even open sourced React. No more `/** @jsx React.DOM */`!. The React specific JSX transform assumes you have `React` in scope (which had to be true before anyway).
 
 `JSXTransformer` and `react-tools` have both been updated to account for this.
 
 
-### JSX for Function Calls is No Longer Supported {#jsx-for-function-calls-is-no-longer-supported}
+### JSX for Function Calls is No Longer Supported
 
 The React specific JSX transform no longer transforms to function calls. Instead we use `React.createElement` and pass it arguments. This allows us to make optimizations and better support React as a compile target for things like Om. Read more in the [React Elements introduction](/blog/2014/10/14/introducting-react-elements.html).
 
 The result of this change is that we will no longer support arbitrary function calls. We understand that the ability to do was a convenient shortcut for many people but we believe the gains will be worth it.
 
 
-### JSX Lower-case Convention {#jsx-lower-case-convention}
+### JSX Lower-case Convention
 
 We used to have a whitelist of HTML tags that got special treatment in JSX. However as new HTML tags got added to the spec, or we added support for more SVG tags, we had to go update our whitelist. Additionally, there was ambiguity about the behavior. There was always the chance that something new added to the tag list would result in breaking your code. For example:
 
@@ -63,7 +63,7 @@ Currently we still use the whitelist as a sanity check. The transform will fail
 In addition, the HTML tags are converted to strings instead of using `React.DOM` directly. `<div/>` becomes `React.createElement('div')` instead of `React.DOM.div()`.
 
 
-### JSX Spread Attributes {#jsx-spread-attributes}
+### JSX Spread Attributes
 
 Previously there wasn't a way to for you to pass a dynamic or unknown set of properties through JSX. This is now possible using the spread `...` operator.
 
@@ -89,7 +89,7 @@ return <MyComponent {...myProps} />;
 ```
 
 
-## Breaking Change: `key` and `ref` Removed From `this.props` {#breaking-change-key-and-ref-removed-from-thisprops}
+## Breaking Change: `key` and `ref` Removed From `this.props`
 
 The props `key` and `ref` were already reserved property names. This turned out to be difficult to explicitly statically type since any object can accept these extra props. It also screws up JIT optimizations of React internals in modern VMs.
 
@@ -104,14 +104,14 @@ You can no longer access `this.props.ref` and `this.props.key` from inside the C
 You do NOT need to change the way to define `key` and `ref`, only if you need to read it. E.g. `<div key="my-key" />` and `div({ key: 'my-key' })` still works.
 
 
-## Breaking Change: Default Props Resolution {#breaking-change-default-props-resolution}
+## Breaking Change: Default Props Resolution
 
 This is a subtle difference but `defaultProps` are now resolved at `ReactElement` creation time instead of when it's mounted. This is means that we can avoid allocating an extra object for the resolved props.
 
 You will primarily see this breaking if you're also using `transferPropsTo`.
 
 
-## Deprecated: transferPropsTo {#deprecated-transferpropsto}
+## Deprecated: transferPropsTo
 
 `transferPropsTo` is deprecated in v0.12 and will be removed in v0.13. This helper function was a bit magical. It auto-merged a certain whitelist of properties and excluded others. It was also transferring too many properties. This meant that we have to keep a whitelist of valid HTML attributes in the React runtime. It also means that we can't catch typos on props.
 
@@ -130,12 +130,12 @@ return div(this.props);
 Although to avoid passing too many props down, you'll probably want to use something like ES7 rest properties. [Read more about upgrading from transferPropsTo](https://gist.github.com/sebmarkbage/a6e220b7097eb3c79ab7).
 
 
-## Deprecated: Returning `false` in Event Handlers {#deprecated-returning-false-in-event-handlers}
+## Deprecated: Returning `false` in Event Handlers
 
 It used to be possible to return `false` from event handlers to preventDefault. We did this because this works in most browsers. This is a confusing API and we might want to use the return value for something else. Therefore, this is deprecated. Use `event.preventDefault()` instead.
 
 
-## Renamed APIs {#renamed-apis}
+## Renamed APIs
 
 As part of the [new React terminology](https://gist.github.com/sebmarkbage/fcb1b6ab493b0c77d589) we aliased some existing APIs to use the new naming convention:
 
diff --git a/content/blog/2014-10-17-community-roundup-23.md b/content/blog/2014-10-17-community-roundup-23.md
index 2088c9332c..62a9840fe8 100644
--- a/content/blog/2014-10-17-community-roundup-23.md
+++ b/content/blog/2014-10-17-community-roundup-23.md
@@ -6,13 +6,13 @@ author: [LoukaN]
 
 This round-up is a special edition on [Flux](https://facebook.github.io/flux/). If you expect to see diagrams showing arrows that all point in the same direction, you won't be disappointed!
 
-## React And Flux at ForwardJS {#react-and-flux-at-forwardjs}
+## React And Flux at ForwardJS
 
 Facebook engineers [Jing Chen](https://github.com/jingc) and [Bill Fisher](https://github.com/fisherwebdev) gave a talk about Flux and React at [ForwardJS](http://forwardjs.com/), and how using an application architecture with a unidirectional data flow helped solve recurring bugs.
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/i__969noyAM" frameborder="0" allowfullscreen></iframe>
 
-# Yahoo {#yahoo}
+# Yahoo
 
 Yahoo is converting Yahoo Mail to React and Flux and in the process, they open sourced several components. This will help you get an isomorphic application up and running.
 
@@ -22,7 +22,7 @@ Yahoo is converting Yahoo Mail to React and Flux and in the process, they open s
 - [Flux Examples](https://github.com/yahoo/flux-examples)
 
 
-## Reflux {#reflux}
+## Reflux
 
 [Mikael Brassman](https://spoike.ghost.io/) wrote [Reflux](https://github.com/spoike/refluxjs), a library that implements Flux concepts. Note that it diverges significantly from the way we use Flux at Facebook. He explains [the reasons why in a blog post](https://spoike.ghost.io/deconstructing-reactjss-flux/).
 
@@ -31,7 +31,7 @@ Yahoo is converting Yahoo Mail to React and Flux and in the process, they open s
 </center>
 
 
-## React and Flux Interview {#react-and-flux-interview}
+## React and Flux Interview
 
 [Ian Obermiller](http://ianobermiller.com/), engineer at Facebook, [made a lengthy interview](http://ianobermiller.com/blog/2014/09/15/react-and-flux-interview/) on the experience of using React and Flux in order to build probably the biggest React application ever written so far.
 
@@ -42,7 +42,7 @@ Yahoo is converting Yahoo Mail to React and Flux and in the process, they open s
 > [Read the full interview...](http://ianobermiller.com/blog/2014/09/15/react-and-flux-interview/)
 
 
-## Adobe's Brackets Project Tree {#adobes-brackets-project-tree}
+## Adobe's Brackets Project Tree
 
 [Kevin Dangoor](http://www.kevindangoor.com/) is converting the project tree of [Adobe's Bracket text editor](http://brackets.io/) to React and Flux. He wrote about his experience [using Flux](http://www.kevindangoor.com/2014/09/intro-to-the-new-brackets-project-tree/).
 
@@ -51,7 +51,7 @@ Yahoo is converting Yahoo Mail to React and Flux and in the process, they open s
 </center>
 
 
-## Async Requests with Flux Revisited {#async-requests-with-flux-revisited}
+## Async Requests with Flux Revisited
 
 [Reto Schläpfer](http://www.code-experience.com/the-code-experience/) came back to a Flux project he hasn't worked on for a month and [saw many ways to improve the way he implemented Flux](http://www.code-experience.com/async-requests-with-react-js-and-flux-revisited/). He summarized his learnings in a blog post.
 
@@ -68,7 +68,7 @@ Yahoo is converting Yahoo Mail to React and Flux and in the process, they open s
 > [Read the full article...](http://www.code-experience.com/async-requests-with-react-js-and-flux-revisited/)
 
 
-## Undo-Redo with Immutable Data Structures {#undo-redo-with-immutable-data-structures}
+## Undo-Redo with Immutable Data Structures
 
 [Ameya Karve](https://github.com/ameyakarve) explained how to use [Mori](https://github.com/swannodette/mori), a library that provides immutable data structures, in order to [implement undo-redo](http://ameyakarve.com/jekyll/update/2014/02/06/Undo-React-Flux-Mori.html). This usually very challenging feature only takes a few lines of code with Flux!
 
@@ -89,7 +89,7 @@ undo: function() {
 ```
 
 
-## Flux in practice {#flux-in-practice}
+## Flux in practice
 
 [Gary Chambers](https://twitter.com/garychambers108) wrote a [guide to get started with Flux](https://medium.com/@garychambers108/flux-in-practice-ec08daa9041a). This is a very practical introduction to Flux.
 
@@ -98,14 +98,14 @@ undo: function() {
 > [Read the full guide...](https://medium.com/@garychambers108/flux-in-practice-ec08daa9041a)
 
 
-## Components, React and Flux {#components-react-and-flux}
+## Components, React and Flux
 
 [Dan Abramov](https://twitter.com/dan_abramov) working at Stampsy made a talk about React and Flux. It's a very good overview of the concepts at play.
 
 <iframe src="//slides.com/danabramov/components-react-flux-wip/embed"  width="100%" height="315" scrolling="no" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
 
 
-## React and Flux {#react-and-flux}
+## React and Flux
 
 [Christian Alfoni](https://github.com/christianalfoni) wrote an article where [he compares Backbone, Angular and Flux](https://christianalfoni.github.io/javascript/2014/08/20/react-js-and-flux.html) on a simple example that's representative of a real project he worked on.
 
@@ -117,7 +117,7 @@ undo: function() {
 
 
 
-## Flux: Step by Step approach {#flux-step-by-step-approach}
+## Flux: Step by Step approach
 
 [Nicola Paolucci](https://github.com/durdn) from Atlassian wrote a great guide to help your getting understand [Flux step by step](https://blogs.atlassian.com/2014/08/flux-architecture-step-by-step/).
 
@@ -126,7 +126,7 @@ undo: function() {
 </center>
 
 
-## DeLorean: Back to the future! {#delorean-back-to-the-future}
+## DeLorean: Back to the future!
 
 [DeLorean](https://github.com/deloreanjs/delorean) is a tiny Flux pattern implementation developed by [Fatih Kadir Akin](https://github.com/f).
 
@@ -139,13 +139,13 @@ undo: function() {
 > - Improve your UI/data consistency using rollbacks
 
 
-## Facebook's iOS Infrastructure {#facebooks-ios-infrastructure}
+## Facebook's iOS Infrastructure
 
 Last but not least, Flux and React ideas are not limited to JavaScript inside of the browser. The iOS team at Facebook re-implemented Newsfeed using very similar patterns.
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/XhXC4SKOGfQ" frameborder="0" allowfullscreen></iframe>
 
 
-## Random Tweet {#random-tweet}
+## Random Tweet
 
 <blockquote class="twitter-tweet" lang="en"><p>If you build your app with flux, you can swap out React for a canvas or svg view layer and keep 85% of your code. (or the thing after React)</p>&mdash; Ryan Florence (@ryanflorence) <a href="https://twitter.com/ryanflorence/status/507309645372076034">September 3, 2014</a></blockquote>
diff --git a/content/blog/2014-10-28-react-v0.12.md b/content/blog/2014-10-28-react-v0.12.md
index 824b2d6b06..c61f07f822 100644
--- a/content/blog/2014-10-28-react-v0.12.md
+++ b/content/blog/2014-10-28-react-v0.12.md
@@ -21,7 +21,7 @@ The release is available for download:
 
 We've also published version `0.12.0` of the `react` and `react-tools` packages on npm and the `react` package on bower.
 
-## New Terminology & Updated APIs {#new-terminology--updated-apis}
+## New Terminology & Updated APIs
 
 v0.12 is bringing about some new terminology. [We introduced](/blog/2014/10/14/introducing-react-elements.html) this 2 weeks ago and we've also documented it in [a new section of the documentation](/docs/glossary.html). As a part of this, we also corrected many of our top-level APIs to align with the terminology. `Component` has been removed from all of our `React.render*` methods. While at one point the argument you passed to these functions was called a Component, it no longer is. You are passing ReactElements. To align with `render` methods in your component classes, we decided to keep the top-level functions short and sweet. `React.renderComponent` is now `React.render`.
 
@@ -29,7 +29,7 @@ We also corrected some other misnomers. `React.isValidComponent` actually determ
 
 The old methods will still work but will warn upon first use. They will be removed in v0.13.
 
-## JSX Changes {#jsx-changes}
+## JSX Changes
 
 [We talked more in depth about these before](/blog/2014/10/16/react-v0.12-rc1.html#jsx-changes), so here are the highlights.
 
@@ -38,13 +38,13 @@ The old methods will still work but will warn upon first use. They will be remov
 * DOM components don't make use of `React.DOM`, instead we pass the tag name directly. `<div/>` becomes `React.createElement('div')`
 * We introduced spread attributes as a quick way to transfer props.
 
-## DevTools Improvements, No More `__internals` {#devtools-improvements-no-more-__internals}
+## DevTools Improvements, No More `__internals`
 
 For months we've gotten complaints about the React DevTools message. It shouldn't have logged the up-sell message when you were already using the DevTools. Unfortunately this was because the way we implemented these tools resulted in the DevTools knowing about React, but not the reverse. We finally gave this some attention and enabled React to know if the DevTools are installed. We released an update to the devtools several weeks ago making this possible. Extensions in Chrome should auto-update so you probably already have the update installed!
 
 As a result of this update, we no longer need to expose several internal modules to the world. If you were taking advantage of this implementation detail, your code will break. `React.__internals` is no more.
 
-## License Change - BSD {#license-change---bsd}
+## License Change - BSD
 
 We updated the license on React to the BSD 3-Clause license with an explicit patent grant. Previously we used the Apache 2 license. These licenses are very similar and our extra patent grant is equivalent to the grant provided in the Apache license. You can still use React with the confidence that we have granted the use of any patents covering it. This brings us in line with the same licensing we use across the majority of our open source projects at Facebook.
 
@@ -52,11 +52,11 @@ You can read the full text of the [LICENSE](https://github.com/facebook/react/bl
 
 - - -
 
-## Changelog {#changelog}
+## Changelog
 
-### React Core {#react-core}
+### React Core
 
-#### Breaking Changes {#breaking-changes}
+#### Breaking Changes
 
 * `key` and `ref` moved off props object, now accessible on the element directly
 * React is now BSD licensed with accompanying Patents grant
@@ -64,12 +64,12 @@ You can read the full text of the [LICENSE](https://github.com/facebook/react/bl
 * `React.__internals` is removed - it was exposed for DevTools which no longer needs access
 * Composite Component functions can no longer be called directly - they must be wrapped with `React.createFactory` first. This is handled for you when using JSX.
 
-#### New Features {#new-features}
+#### New Features
 
 * Spread operator (`{...}`) introduced to deprecate `this.transferPropsTo`
 * Added support for more HTML attributes: `acceptCharset`, `classID`, `manifest`
 
-#### Deprecations {#deprecations}
+#### Deprecations
 
 * `React.renderComponent` --> `React.render`
 * `React.renderComponentToString` --> `React.renderToString`
@@ -83,7 +83,7 @@ You can read the full text of the [LICENSE](https://github.com/facebook/react/bl
 * **DEPRECATED** Convenience Constructor usage as function, instead wrap with `React.createFactory`
 * **DEPRECATED** use of `key={null}` to assign implicit keys
 
-#### Bug Fixes {#bug-fixes}
+#### Bug Fixes
 
 * Better handling of events and updates in nested results, fixing value restoration in "layered" controlled components
 * Correctly treat `event.getModifierState` as case sensitive
@@ -96,32 +96,32 @@ You can read the full text of the [LICENSE](https://github.com/facebook/react/bl
   * `scrollLeft`, `scrollTop` removed, these should not be specified as props
 * Improved error messages
 
-### React With Addons {#react-with-addons}
+### React With Addons
 
-#### New Features {#new-features-1}
+#### New Features
 
 * `React.addons.batchedUpdates` added to API for hooking into update cycle
 
-#### Breaking Changes {#breaking-changes-1}
+#### Breaking Changes
 
 * `React.addons.update` uses `assign` instead of `copyProperties` which does `hasOwnProperty` checks. Properties on prototypes will no longer be updated correctly.
 
-#### Bug Fixes {#bug-fixes-1}
+#### Bug Fixes
 
 * Fixed some issues with CSS Transitions
 
-### JSX {#jsx}
+### JSX
 
-#### Breaking Changes {#breaking-changes-2}
+#### Breaking Changes
 
 * Enforced convention: lower case tag names are always treated as HTML tags, upper case tag names are always treated as composite components
 * JSX no longer transforms to simple function calls
 
-#### New Features {#new-features-2}
+#### New Features
 
 * `@jsx React.DOM` no longer required
 * spread (`{...}`) operator introduced to allow easier use of props
 
-#### Bug Fixes {#bug-fixes-2}
+#### Bug Fixes
 
 * JSXTransformer: Make sourcemaps an option when using APIs directly (eg, for react-rails)
diff --git a/content/blog/2014-11-25-community-roundup-24.md b/content/blog/2014-11-25-community-roundup-24.md
index 42dcd82a41..bf34f58f5a 100644
--- a/content/blog/2014-11-25-community-roundup-24.md
+++ b/content/blog/2014-11-25-community-roundup-24.md
@@ -4,7 +4,7 @@ layout: post
 author: [steveluscher]
 ---
 
-## Keep it Simple {#keep-it-simple}
+## Keep it Simple
 
 Pedro Nauck ([pedronauck](https://github.com/pedronauck)) delivered an impeccably illustrated deck at Brazil's _Front in Floripa_ conference. Watch him talk about how to keep delivering value as your app scales, by keeping your development process simple.
 
@@ -20,7 +20,7 @@ James Pearce ([jamesgpearce](https://github.com/jamesgpearce)) carried Big-Coffe
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/m2fuO2wl_3c" frameborder="0" allowfullscreen></iframe>
 
-## All About Isomorphism {#all-about-isomorphism}
+## All About Isomorphism
 
 Michael Ridgway ([mridgway](https://github.com/mridgway)) shows us how Yahoo! (who recently [moved Yahoo! Mail to React](http://www.slideshare.net/rmsguhan/react-meetup-mailonreact)) renders their React+Flux application, server-side.
 
@@ -30,11 +30,11 @@ Péter Márton ([hekike](https://github.com/hekike)) helps us brew a cold one (l
 
 And, lest you think that client-server isomorphism exists in pursuit of crawalable, indexable HTML alone, watch as Nate Hunzaker ([nhunzaker](https://github.com/nhunzaker)) [server renders data visualizations as SVG](http://viget.com/extend/visualization-is-for-sharing-using-react-for-portable-data-visualization) with React.
 
-## React Router Mows the Lawn {#react-router-mows-the-lawn}
+## React Router Mows the Lawn
 
 Ryan Florence ([rpflorence](https://github.com/rpflorence])) and Michael Jackson ([mjackson](https://github.com/mjackson)) unveiled a new API for [React Router](https://github.com/rackt/react-router) that solves some of its user's problems by eliminating the problems themselves. Read all about what React Router learned from its community of users, and how they've [rolled your ideas into their latest release](https://github.com/rackt/react-router/wiki/Announcements).
 
-## React in Practice {#react-in-practice}
+## React in Practice
 
 Jonathan Beebe ([somethingkindawierd](https://github.com/somethingkindawierd)) spoke about how he uses React to build tools that deliver hope to those trying to make the best of a bad situation. Watch his talk from this year's _Nodevember_ conference in Nashville
 
@@ -44,13 +44,13 @@ If you take a peek under the covers, you'll find that React powers [Carousel](ht
 
 We enjoyed a cinematic/narrative experience with this React-powered, interactive story by British author William Boyd. Dive into “[The Vanishing Game](https://thevanishinggame.wellstoried.com)” and see for yourself.
 
-## Be Kind, Rewind {#be-kind-rewind}
+## Be Kind, Rewind
 
 Spend the next 60 seconds watching Daniel Woelfel ([dwwoelfel](https://github.com/dwwoelfel)) serialize a React app's state as a string, then deserialize it to produce a working UI. Read about how he uses this technique to [reproduce bugs](http://blog.circleci.com/local-state-global-concerns/) reported to him by his users.
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/5yHFTN-_mOo" frameborder="0" allowfullscreen></iframe>
 
-## Community Components {#community-components}
+## Community Components
 
 Tom Chen ([tomchentw](https://github.com/tomchentw)) brings us a [react-google-maps](https://tomchentw.github.io/react-google-maps/) component, and a way to syntax highlight source code using Prism and the [react-prism](https://tomchentw.github.io/react-prism/) component, for good measure.
 
@@ -58,23 +58,23 @@ Jed Watson ([jedwatson](https://github.com/JedWatson)) helps you manage touch, t
 
 To find these, and more community-built components, consult the [React Components](http://react-components.com/) and [React Rocks](http://react.rocks) component directories. React Rocks recently exceeded one-hundred listed components and counting. See one missing? Add the keyword `react-component` to your `package.json` to get listed on React Components, and [submit a link to React Rocks](https://docs.google.com/forms/d/1TpnwJmLcmmGj-_TI68upu_bKBViYeiKx7Aj9uKmV6wY/viewform).
 
-## Waiter, There's a CSS In My JavaScript {#waiter-theres-a-css-in-my-javascript}
+## Waiter, There's a CSS In My JavaScript
 
 The internet is abuzz with talk of styling React components using JavaScript instead of CSS. Christopher Chedeau ([vjeux](https://github.com/vjeux)) talks about some of the [fundamental style management challenges](https://speakerdeck.com/vjeux/react-css-in-js) we grapple with, at Facebook scale. A number of implementations of JavaScript centric style management solutions have appeared in the wild, including the React-focused [react-style](https://github.com/js-next/react-style).
 
-## Test Isolation {#test-isolation}
+## Test Isolation
 
 Yahoo! shows us how they make use of `iframe` elements to [unit test React components in isolation](http://yahooeng.tumblr.com/post/102274727496/to-testutil-or-not-to-testutil).
 
-## You've Got The Hang of Flux, Now Let's Flow {#youve-got-the-hang-of-flux-now-lets-flow}
+## You've Got The Hang of Flux, Now Let's Flow
 
 Facebook Open Source released [Flow](https://code.facebook.com/posts/1505962329687926/flow-a-new-static-type-checker-for-javascript/) this month – a static type checker for JavaScript. Naturally, Flow supports JSX, and you can use it to [type check React applications](https://code.facebook.com/posts/1505962329687926/flow-a-new-static-type-checker-for-javascript/#compatibility). There's never been a better reason to start making use of `propTypes` in your component specifications!
 
-## Countdown to React.js Conf 2014 {#countdown-to-reactjs-conf-2014}
+## Countdown to React.js Conf 2014
 
 We're counting down the days until [React.js Conf](http://conf.reactjs.com) at Facebook's headquarters in Menlo Park, California, on January 28th & 29th, 2015. Thank you, to everyone who responded to the Call for Presenters. Mark the dates; tickets go on sale in three waves: at noon PST on November 28th, December 5th, and December 12th, 2014.
 
-## React Meetups Around the World {#react-meetups-around-the-world}
+## React Meetups Around the World
 
 <blockquote class="twitter-tweet" lang="en"><p>React JS meetup having pretty good turn up rate today <a href="https://twitter.com/hashtag/londonreact?src=hash">#londonreact</a> <a href="http://t.co/c360dlVVAe">pic.twitter.com/c360dlVVAe</a></p>&mdash; Alexander Savin (@karismafilms) <a href="https://twitter.com/karismafilms/status/535152580377468928">November 19, 2014</a></blockquote>
 
diff --git a/content/blog/2014-12-18-react-v0.12.2.md b/content/blog/2014-12-18-react-v0.12.2.md
index 75f78277f6..ef038fa5f2 100644
--- a/content/blog/2014-12-18-react-v0.12.2.md
+++ b/content/blog/2014-12-18-react-v0.12.2.md
@@ -22,16 +22,16 @@ We've also published version `0.12.2` of the `react` and `react-tools` packages
 
 Please try these builds out and [file an issue on GitHub](https://github.com/facebook/react/issues/new) if you see anything awry.
 
-## Changelog {#changelog}
+## Changelog
 
-### React Core {#react-core}
+### React Core
 
 * Added support for more HTML attributes: `formAction`, `formEncType`, `formMethod`, `formTarget`, `marginHeight`, `marginWidth`
 * Added `strokeOpacity` to the list of unitless CSS properties
 * Removed trailing commas (allows npm module to be bundled and used in IE8)
 * Fixed bug resulting in error when passing `undefined` to `React.createElement` - now there is a useful warning
 
-### React Tools {#react-tools}
+### React Tools
 
 * JSX-related transforms now always use double quotes for props and `displayName`
 
diff --git a/content/blog/2014-12-19-react-js-conf-diversity-scholarship.md b/content/blog/2014-12-19-react-js-conf-diversity-scholarship.md
index 6b6b85c13a..bb7cd23fb3 100644
--- a/content/blog/2014-12-19-react-js-conf-diversity-scholarship.md
+++ b/content/blog/2014-12-19-react-js-conf-diversity-scholarship.md
@@ -18,19 +18,19 @@ Facebook will make determinations on scholarship recipients in its sole discreti
 
 To apply for the scholarship, please visit the Application Page: <https://www.surveymonkey.com/s/XVJGK6R>
 
-## Award Includes {#award-includes}
+## Award Includes
 
 * Paid registration fee for the React.js Conf January 28 & 29th at Facebook’s Headquarters in Menlo Park, CA
 * Paid travel and lodging expenses
 * Additional $200 meal stipend
 
-## Important Dates {#important-dates}
+## Important Dates
 
 * Monday, January 5, 2015: Applications for the React.js Conf Scholarship must be submitted in full
 * Friday, January 9, 2015: Award recipients will be notified by email of their acceptance
 * Wednesday & Thursday, January 28 & 29, 2015: React.js Conf
 
-## Eligibility {#eligibility}
+## Eligibility
 
 * Must currently be studying or working in Computer Science or a related field
 * International applicants are welcome, but you will be responsible for securing your own visa to attend the conference
diff --git a/content/blog/2015-01-27-react-v0.13.0-beta-1.md b/content/blog/2015-01-27-react-v0.13.0-beta-1.md
index d6cdd6c5c4..76fea92da4 100644
--- a/content/blog/2015-01-27-react-v0.13.0-beta-1.md
+++ b/content/blog/2015-01-27-react-v0.13.0-beta-1.md
@@ -12,7 +12,7 @@ We just published a beta version of React v0.13.0 to [npm](https://www.npmjs.com
 So what is that one feature I'm so excited about that I just couldn't wait to share?
 
 
-## Plain JavaScript Classes!! {#plain-javascript-classes}
+## Plain JavaScript Classes!!
 
 JavaScript originally didn't have a built-in class system. Every popular framework built their own, and so did we. This means that you have a learn slightly different semantics for each framework.
 
@@ -21,7 +21,7 @@ We figured that we're not in the business of designing a class system. We just w
 In React 0.13.0 you no longer need to use `React.createClass` to create React components. If you have a transpiler you can use ES6 classes today. You can use the transpiler we ship with `react-tools` by making use of the harmony option: `jsx --harmony`.
 
 
-### ES6 Classes {#es6-classes}
+### ES6 Classes
 
 ```javascript
 class HelloMessage extends React.Component {
@@ -56,7 +56,7 @@ Counter.propTypes = { initialCount: React.PropTypes.number };
 Counter.defaultProps = { initialCount: 0 };
 ```
 
-### ES7+ Property Initializers {#es7-property-initializers}
+### ES7+ Property Initializers
 
 Wait, assigning to properties seems like a very imperative way of defining classes! You're right, however, we designed it this way because it's idiomatic. We fully expect a more declarative syntax for property initialization to arrive in future version of JavaScript. It might look something like this:
 
@@ -81,7 +81,7 @@ export class Counter extends React.Component {
 
 This was inspired by TypeScript's property initializers.
 
-### Autobinding {#autobinding}
+### Autobinding
 
 `React.createClass` has a built-in magic feature that bound all methods to `this` automatically for you. This can be a little confusing for JavaScript developers that are not used to this feature in other classes, or it can be confusing when they move from React to other classes.
 
@@ -111,7 +111,7 @@ class Counter extends React.Component {
 }
 ```
 
-### Mixins {#mixins}
+### Mixins
 
 Unfortunately, we will not launch any mixin support for ES6 classes in React. That would defeat the purpose of only using idiomatic JavaScript concepts.
 
@@ -125,7 +125,7 @@ Luckily, if you want to keep using mixins, you can just keep using `React.create
 >
 > The classic `React.createClass` style of creating classes will continue to work just fine.
 
-## Other Languages! {#other-languages}
+## Other Languages!
 
 Since these classes are just plain old JavaScript classes, you can use other languages that compile to JavaScript classes, such as TypeScript.
 
diff --git a/content/blog/2015-02-18-react-conf-roundup-2015.md b/content/blog/2015-02-18-react-conf-roundup-2015.md
index 5adcf96b53..3f7d3dfc26 100644
--- a/content/blog/2015-02-18-react-conf-roundup-2015.md
+++ b/content/blog/2015-02-18-react-conf-roundup-2015.md
@@ -6,7 +6,7 @@ author: [steveluscher]
 
 It was a privilege to welcome the React community to Facebook HQ on January 28–29 for the first-ever React.js Conf, and a pleasure to be able to unveil three new technologies that we've been using internally at Facebook for some time: GraphQL, Relay, and React Native.
 
-## The talks {#the-talks}
+## The talks
 
 <div class="skinny-row">
   <div class="skinny-col">
@@ -241,7 +241,7 @@ It was a privilege to welcome the React community to Facebook HQ on January 28
   </div>
 </div>
 
-## Reactions {#reactions}
+## Reactions
 
 The conference is over, but the conversation has just begun.
 
diff --git a/content/blog/2015-02-20-introducing-relay-and-graphql.md b/content/blog/2015-02-20-introducing-relay-and-graphql.md
index 4bd8809ce5..90ab3093f0 100644
--- a/content/blog/2015-02-20-introducing-relay-and-graphql.md
+++ b/content/blog/2015-02-20-introducing-relay-and-graphql.md
@@ -4,7 +4,7 @@ layout: post
 author: [wincent]
 ---
 
-## Data fetching for React applications {#data-fetching-for-react-applications}
+## Data fetching for React applications
 
 There's more to building an application than creating a user interface. Data fetching is still a tricky problem, especially as applications become more complicated. At [React.js Conf](http://conf.reactjs.com/) we announced two projects we've created at Facebook to make data fetching simple for developers, even as a product grows to include dozens of contributors and the application becomes as complex as Facebook itself.
 
@@ -14,7 +14,7 @@ The two projects &mdash; Relay and GraphQL &mdash; have been in use in productio
 
 <script async class="speakerdeck-embed" data-id="7af7c2f33bf9451a892dcd91de55b7c2" data-ratio="1.29456384323641" src="//speakerdeck.com/assets/embed.js"></script>
 
-## What is Relay? {#what-is-relay}
+## What is Relay?
 
 Relay is a new framework from Facebook that provides data-fetching functionality for React applications. It was announced at React.js Conf (January 2015).
 
@@ -22,13 +22,13 @@ Each component specifies its own data dependencies declaratively using a query l
 
 Developers compose these React components naturally, and Relay takes care of composing the data queries into efficient batches, providing each component with exactly the data that it requested (and no more), updating those components when the data changes, and maintaining a client-side store (cache) of all data.
 
-## What is GraphQL? {#what-is-graphql}
+## What is GraphQL?
 
 GraphQL is a data querying language designed to describe the complex, nested data dependencies of modern applications. It's been in production use in Facebook's native apps for several years.
 
 On the server, we configure the GraphQL system to map queries to underlying data-fetching code. This configuration layer allows GraphQL to work with arbitrary underlying storage mechanisms. Relay uses GraphQL as its query language, but it is not tied to a specific implementation of GraphQL.
 
-## The value proposition {#the-value-proposition}
+## The value proposition
 
 Relay was born out of our experiences building large applications at Facebook. Our overarching goal is to enable developers to create correct, high-performance applications in a straightforward and obvious way. The design enables even large teams to make changes with a high degree of isolation and confidence. Fetching data is hard, dealing with ever-changing data is hard, and performance is hard. Relay aims to reduce these problems to simple ones, moving the tricky bits into the framework and freeing you to concentrate on building your application.
 
@@ -48,13 +48,13 @@ By handling all data-fetching via a single abstraction, we're able to handle a b
 - **Simplified server implementation:** Rather than having a proliferation of end-points (per action, per route), a single GraphQL endpoint can serve as a facade for any number of underlying resources.
 - **Uniform mutations:** There is one consistent pattern for performing mutations (writes), and it is conceptually baked into the data querying model itself. You can think of a mutation as a query with side-effects: you provide some parameters that describe the change to be made (eg. attaching a comment to a record) and a query that specifies the data you'll need to update your view of the world after the mutation completes (eg. the comment count on the record), and the data flows through the system using the normal flow. We can do an immediate "optimistic" update on the client (ie. update the view under the assumption that the write will succeed), and finally commit it, retry it or roll it back in the event of an error when the server payload comes back.
 
-## How does it relate to Flux? {#how-does-it-relate-to-flux}
+## How does it relate to Flux?
 
 In some ways Relay is inspired by Flux, but the mental model is much simpler. Instead of multiple stores, there is one central store that caches all GraphQL data. Instead of explicit subscriptions, the framework itself can track which data each component requests, and which components should be updated whenever the data change. Instead of actions, modifications take the form of mutations.
 
 At Facebook, we have apps built entirely using Flux, entirely using Relay, or with both. One pattern we see emerging is letting Relay manage the bulk of the data flow for an application, but using Flux stores on the side to handle a subset of application state.
 
-## Open source plans {#open-source-plans}
+## Open source plans
 
 We're working very hard right now on getting both GraphQL (a spec, and a reference implementation) and Relay ready for public release (no specific dates yet, but we are super excited about getting these out there).
 
diff --git a/content/blog/2015-02-24-react-v0.13-rc1.md b/content/blog/2015-02-24-react-v0.13-rc1.md
index 6bf6e84f5c..28ec58dbea 100644
--- a/content/blog/2015-02-24-react-v0.13-rc1.md
+++ b/content/blog/2015-02-24-react-v0.13-rc1.md
@@ -24,11 +24,11 @@ We've also published version `0.13.0-rc1` of the `react` and `react-tools` packa
 
 - - -
 
-## Changelog {#changelog}
+## Changelog
 
-### React Core {#react-core}
+### React Core
 
-#### Breaking Changes {#breaking-changes}
+#### Breaking Changes
 
 * Mutating `props` after an element is created is deprecated and will cause warnings in development mode; future versions of React will incorporate performance optimizations assuming that props aren't mutated
 * Static methods (defined in `statics`) are no longer autobound to the component class
@@ -37,7 +37,7 @@ We've also published version `0.13.0-rc1` of the `react` and `react-tools` packa
 * `setState` and `forceUpdate` on an unmounted component now warns instead of throwing. That avoids a possible race condition with Promises.
 * Access to most internal properties has been completely removed, including `this._pendingState` and `this._rootNodeID`.
 
-#### New Features {#new-features}
+#### New Features
 
 * Support for using ES6 classes to build React components; see the [v0.13.0 beta 1 notes](/blog/2015/01/27/react-v0.13.0-beta-1.html) for details
 * Added new top-level API `React.findDOMNode(component)`, which should be used in place of `component.getDOMNode()`. The base class for ES6-based components will not have `getDOMNode`. This change will enable some more patterns moving forward.
@@ -45,26 +45,26 @@ We've also published version `0.13.0-rc1` of the `react` and `react-tools` packa
 * `this.setState()` can now take a function as the first argument for transactional state updates, such as `this.setState((state, props) => ({count: state.count + 1}));` -- this means that you no longer need to use `this._pendingState`, which is now gone.
 * Support for iterators and immutable-js sequences as children
 
-#### Deprecations {#deprecations}
+#### Deprecations
 
 * `ComponentClass.type` is deprecated. Just use `ComponentClass` (usually as `element.type === ComponentClass`)
 * Some methods that are available on `createClass`-based components are removed or deprecated from ES6 classes (for example, `getDOMNode`, `setProps`, `replaceState`).
 
 
-### React with Add-Ons {#react-with-add-ons}
+### React with Add-Ons
 
-#### Deprecations {#deprecations-1}
+#### Deprecations
 
 * `React.addons.classSet` is now deprecated. This functionality can be replaced with several freely available modules. [classnames](https://www.npmjs.com/package/classnames) is one such module.
 
 
-### React Tools {#react-tools}
+### React Tools
 
-#### Breaking Changes {#breaking-changes-1}
+#### Breaking Changes
 
 * When transforming ES6 syntax, `class` methods are no longer enumerable by default, which requires `Object.defineProperty`; if you support browsers such as IE8, you can pass `--target es3` to mirror the old behavior
 
-#### New Features {#new-features-1}
+#### New Features
 
 * `--target` option is available on the jsx command, allowing users to specify and ECMAScript version to target.
   * `es5` is the default.
@@ -72,7 +72,7 @@ We've also published version `0.13.0-rc1` of the `react` and `react-tools` packa
 * The transform for the call spread operator has also been enabled.
 
 
-### JSX {#jsx}
+### JSX
 
-#### Breaking Changes {#breaking-changes-2}
+#### Breaking Changes
 * A change was made to how some JSX was parsed, specifically around the use of `>` or `}` when inside an element. Previously it would be treated as a string but now it will be treated as a parse error. We will be releasing a standalone executable to find and fix potential issues in your JSX code.
diff --git a/content/blog/2015-02-24-streamlining-react-elements.md b/content/blog/2015-02-24-streamlining-react-elements.md
index a5bb932778..aa76a70438 100644
--- a/content/blog/2015-02-24-streamlining-react-elements.md
+++ b/content/blog/2015-02-24-streamlining-react-elements.md
@@ -8,7 +8,7 @@ React v0.13 is right around the corner and so we wanted to discuss some upcoming
 
 If you use React in an idiomatic way, chances are, you’ll never see any of these warnings. In that case, you can skip this blog post. You can just enjoy the benefits! These changes will unlock simplified semantics, better error messages, stack traces and compiler optimizations!
 
-## Immutable Props {#immutable-props}
+## Immutable Props
 
 In React 0.12, the props object was mutable. It allows you to do patterns like this:
 
@@ -22,7 +22,7 @@ if (shouldUseFoo) {
 
 The problem is that we don’t have a convenient way to tell when you’re done mutating.
 
-### Problem: Mutating Props You Don’t Own {#problem-mutating-props-you-dont-own}
+### Problem: Mutating Props You Don’t Own
 
 If you mutate something, you destroy the original value. Therefore, there is nothing to diff against. Imagine something like this:
 
@@ -40,13 +40,13 @@ Additionally, if this element is reused in other places or used to switch back a
 
 It has always been broken to mutate the props of something passed into you. The problem is that we can’t warn you about this special case if you accidentally do this.
 
-### Problem: Too Late Validation {#problem-too-late-validation}
+### Problem: Too Late Validation
 
 In React 0.12, we do PropType validation very deep inside React during mounting. This means that by the time you get an error, the debugger stack is long gone. This makes it difficult to find complex issues during debugging. We have to do this since it is fairly common for extra props to be added between the call to React.createElement and the mount time. So the type is incomplete until then.
 
 The static analysis in Flow is also impaired by this. There is no convenient place in the code where Flow can determine that the props are finalized.
 
-### Solution: Immutable Props {#solution-immutable-props}
+### Solution: Immutable Props
 
 Therefore, we would like to be able to freeze the element.props object so that it is immediately immutable at the JSX callsite (or createElement). In React 0.13 we will start warning you if you mutate `element.props` after this point.
 
@@ -79,7 +79,7 @@ return <Foo nestedObject={this.state.myModel} />;
 
 In this case it's still ok to mutate the myModel object in state. We recommend that you use fully immutable models. E.g. by using immutable-js. However, we realize that mutable models are still convenient in many cases. Therefore we're only considering shallow freezing the props object that belongs to the ReactElement itself. Not nested objects.
 
-### Solution: Early PropType Warnings {#solution-early-proptype-warnings}
+### Solution: Early PropType Warnings
 
 We will also start warning you for PropTypes at the JSX or createElement callsite. This will help debugging as you’ll have the stack trace right there. Similarly, Flow also validates PropTypes at this callsite.
 
@@ -90,7 +90,7 @@ var element1 = <Foo />; // extra prop is optional
 var element2 = React.addons.cloneWithProps(element1, { extra: 'prop' });
 ```
 
-## Owner {#owner}
+## Owner
 
 In React each child has both a "parent" and an “owner”. The owner is the component that created a ReactElement. I.e. the render method which contains the JSX or createElement callsite.
 
@@ -106,7 +106,7 @@ In this example, the owner of the `span` is `Foo` but the parent is the `div`.
 
 There is also an undocumented feature called "context" that also relies on the concept of an “owner” to pass hidden props down the tree.
 
-### Problem: The Semantics are Opaque and Confusing {#problem-the-semantics-are-opaque-and-confusing}
+### Problem: The Semantics are Opaque and Confusing
 
 The problem is that these are hidden artifacts attached to the ReactElement. In fact, you probably didn’t even know about it. It silently changes semantics. Take this for example:
 
@@ -121,7 +121,7 @@ class Component {
 
 These two inputs have different owners, therefore React will not keep its state when the conditional switches. There is nothing in the code to indicate that. Similarly, if you use `React.addons.cloneWithProps`, the owner changes.
 
-### Problem: Timing Matters {#problem-timing-matters}
+### Problem: Timing Matters
 
 The owner is tracked by the currently executing stack. This means that the semantics of a ReactElement varies depending on when it is executed. Take this example:
 
@@ -140,25 +140,25 @@ class B {
 
 The owner of the `span` is actually `B`, not `A` because of the timing of the callback. This all adds complexity and suffers from similar problems as mutation.
 
-### Problem: It Couples JSX to React {#problem-it-couples-jsx-to-react}
+### Problem: It Couples JSX to React
 
 Have you wondered why JSX depends on React? Couldn’t the transpiler have that built-in to its runtime? The reason you need to have `React.createElement` in scope is because we depend on internal state of React to capture the current "owner". Without this, you wouldn’t need to have React in scope.
 
-### Solution: Make Context Parent-Based Instead of Owner-Based {#solution-make-context-parent-based-instead-of-owner-based}
+### Solution: Make Context Parent-Based Instead of Owner-Based
 
 The first thing we’re doing is warning you if you’re using the "owner" feature in a way that relies on it propagating through owners. Instead, we’re planning on propagating it through parents to its children. In almost all cases, this shouldn’t matter. In fact, parent-based contexts is simply a superset.
 
-### Solution: Remove the Semantic Implications of Owner {#solution-remove-the-semantic-implications-of-owner}
+### Solution: Remove the Semantic Implications of Owner
 
 It turns out that there are very few cases where owners are actually important part of state-semantics. As a precaution, we’ll warn you if it turns out that the owner is important to determine state. In almost every case this shouldn’t matter. Unless you’re doing some weird optimizations, you shouldn’t see this warning.
 
-### Pending: Change the refs Semantics {#pending-change-the-refs-semantics}
+### Pending: Change the refs Semantics
 
 Refs are still based on "owner". We haven’t fully solved this special case just yet.
 
 In 0.13 we introduced a new callback-refs API that doesn’t suffer from these problems but we’ll keep on a nice declarative alternative to the current semantics for refs. As always, we won’t deprecate something until we’re sure that you’ll have a nice upgrade path.
 
-## Keyed Objects as Maps {#keyed-objects-as-maps}
+## Keyed Objects as Maps
 
 In React 0.12, and earlier, you could use keyed objects to provide an external key to an element or a set. This pattern isn’t actually widely used. It shouldn’t be an issue for most of you.
 
@@ -166,11 +166,11 @@ In React 0.12, and earlier, you could use keyed objects to provide an external k
 <div>{ {a: <span />, b: <span />} }</div>
 ```
 
-### Problem: Relies on Enumeration Order {#problem-relies-on-enumeration-order}
+### Problem: Relies on Enumeration Order
 
 The problem with this pattern is that it relies on enumeration order of objects. This is technically unspecified, even though implementations now agree to use insertion order. Except for the special case when numeric keys are used.
 
-### Problem: Using Objects as Maps is Bad {#problem-using-objects-as-maps-is-bad}
+### Problem: Using Objects as Maps is Bad
 
 It is generally accepted that using objects as maps screw up type systems, VM optimizations, compilers etc. It is much better to use a dedicated data structure like ES6 Maps.
 
@@ -184,13 +184,13 @@ return <div>{children}</div>;
 
 Imagine if `item.title === '__proto__'` for example.
 
-### Problem: Can’t be Differentiated from Arbitrary Objects {#problem-cant-be-differentiated-from-arbitrary-objects}
+### Problem: Can’t be Differentiated from Arbitrary Objects
 
 Since these objects can have any keys with almost any value, we can’t differentiate them from a mistake. If you put some random object, we will try our best to traverse it and render it, instead of failing with a helpful warning. In fact, this is one of the few places where you can accidentally get an infinite loop in React.
 
 To differentiate ReactElements from one of these objects, we have to tag them with `_isReactElement`. This is another issue preventing us from inlining ReactElements as simple object literals.
 
-### Solution: Just use an Array and key={…} {#solution-just-use-an-array-and-key}
+### Solution: Just use an Array and key={…}
 
 Most of the time you can just use an array with keyed ReactElements.
 
@@ -199,7 +199,7 @@ var children = items.map(item => <span key={item.title} />);
 <div>{children}</div>
 ```
 
-### Solution: React.addons.createFragment {#solution-reactaddonscreatefragment}
+### Solution: React.addons.createFragment
 
 However, this is not always possible if you’re trying to add a prefix key to an unknown set (e.g. this.props.children). It is also not always the easiest upgrade path. Therefore, we are adding a helper to `React.addons` called `createFragment()`. This accepts a keyed object and returns an opaque type.
 
@@ -211,7 +211,7 @@ The exact signature of this kind of fragment will be determined later. It will l
 
 Note: This will still not be valid as the direct return value of `render()`. Unfortunately, they still need to be wrapped in a `<div />` or some other element.
 
-## Compiler Optimizations: Unlocked! {#compiler-optimizations-unlocked}
+## Compiler Optimizations: Unlocked!
 
 These changes also unlock several possible compiler optimizations for static content in React 0.14. These optimizations were previously only available to template-based frameworks. They will now also be possible for React code! Both for JSX and `React.createElement/Factory`*!
 
@@ -223,7 +223,7 @@ See these GitHub Issues for a deep dive into compiler optimizations:
 
 \* If you use the recommended pattern of explicit React.createFactory calls on the consumer side - since they are easily statically analyzed.
 
-## Rationale {#rationale}
+## Rationale
 
 I thought that these changes were particularly important because the mere existence of these patterns means that even components that DON’T use these patterns have to pay the price. There are other problematic patterns such as mutating state, but they’re at least localized to a component subtree so they don’t harm the ecosystem.
 
diff --git a/content/blog/2015-03-03-react-v0.13-rc2.md b/content/blog/2015-03-03-react-v0.13-rc2.md
index 10ab150a4f..76e6ec25cd 100644
--- a/content/blog/2015-03-03-react-v0.13-rc2.md
+++ b/content/blog/2015-03-03-react-v0.13-rc2.md
@@ -25,7 +25,7 @@ We've also published version `0.13.0-rc2` of the `react` and `react-tools` packa
 
 - - -
 
-## React.cloneElement {#reactcloneelement}
+## React.cloneElement
 
 In React v0.13 RC2 we will introduce a new API, similar to `React.addons.cloneWithProps`, with this signature:
 
diff --git a/content/blog/2015-03-04-community-roundup-25.md b/content/blog/2015-03-04-community-roundup-25.md
index c5a23249c4..c1f4e04bca 100644
--- a/content/blog/2015-03-04-community-roundup-25.md
+++ b/content/blog/2015-03-04-community-roundup-25.md
@@ -4,7 +4,7 @@ layout: post
 author: [matthewjohnston4]
 ---
 
-## React 101 {#react-101}
+## React 101
 
 Interest in React has been exploding recently, so it's a good time to explore some great recent tutorials and videos that cover getting started.
 
@@ -22,7 +22,7 @@ Our own [Sebastian Markbåge](https://github.com/sebmarkbage) was on the [Web Pl
 
 <iframe style="border: none" src="//html5-player.libsyn.com/embed/episode/id/3370114/height/75/width/200/theme/standard-mini/direction/no/autoplay/no/autonext/no/thumbnail/yes/preload/no/no_addthis/no/" height="26" width="100%" scrolling="no" allowfullscreen="" webkitallowfullscreen="" mozallowfullscreen="" oallowfullscreen="" msallowfullscreen=""></iframe>
 
-## Community Additions {#community-additions}
+## Community Additions
 
 [Formidable Labs](https://github.com/FormidableLabs) have been busy, as they've also[ just launched Radium](http://projects.formidablelabs.com/radium/), a React component that provides you with the ability to use inline styles instead of CSS. They're also [looking for some help](http://projects.formidablelabs.com/radium-bootstrap/) contributing to a Radium Bootstrap implementation.
 
@@ -34,7 +34,7 @@ Our own [Sebastian Markbåge](https://github.com/sebmarkbage) was on the [Web Pl
 
 [react-meteor](https://github.com/reactjs/react-meteor), a package that replaces the default templating system of the Meteor platform with React, recently received a big update.
 
-## Rebuilding with React {#rebuilding-with-react}
+## Rebuilding with React
 
 [Rich Manalang](https://github.com/rmanalan) from Atlassian [explains why](https://developer.atlassian.com/blog/2015/02/rebuilding-hipchat-with-react/) they rebuilt their HipChat web client from scratch using React, and how they're already using it to rebuild their native desktop clients.
 
@@ -46,11 +46,11 @@ A team from New Zealand called [Atomic](https://atomic.io/) is [building web and
 
 <center><a href="http://polarrist.tumblr.com/post/111290422225/polarr-photo-editor-2-0-alpha-is-here"><img src="../images/blog/polarr.jpg"></a></center>
 
-## It's F8! {#its-f8}
+## It's F8!
 
 F8 2015 is just around the corner, and you can [sign up for the video streams](https://www.fbf8.com/stream.html) in advance because we're sure to be covering all things React.
 
-## Meetups {#meetups}
+## Meetups
 
 <table><tr><td width="50%" valign="top">
 <blockquote class="twitter-tweet" lang="en"><p>Our <a href="https://twitter.com/reactjs">@reactjs</a> meetup is in full effect <a href="https://twitter.com/hashtag/ReactJS?src=hash">#ReactJS</a> &#10;&#10;btw bathroom code is 6012 lol <a href="http://t.co/7iUpvmm3zz">pic.twitter.com/7iUpvmm3zz</a></p>&mdash; littleBits (@littleBits) <a href="https://twitter.com/littleBits/status/570373833028472832">February 25, 2015</a></blockquote>
diff --git a/content/blog/2015-03-10-react-v0.13.md b/content/blog/2015-03-10-react-v0.13.md
index 47a450d2e5..76d1ca0253 100644
--- a/content/blog/2015-03-10-react-v0.13.md
+++ b/content/blog/2015-03-10-react-v0.13.md
@@ -29,11 +29,11 @@ We've also published version `0.13.0` of the `react` and `react-tools` packages
 
 - - -
 
-## Changelog {#changelog}
+## Changelog
 
-### React Core {#react-core}
+### React Core
 
-#### Breaking Changes {#breaking-changes}
+#### Breaking Changes
 
 * Deprecated patterns that warned in 0.12 no longer work: most prominently, calling component classes without using JSX or React.createElement and using non-component functions with JSX or createElement
 * Mutating `props` after an element is created is deprecated and will cause warnings in development mode; future versions of React will incorporate performance optimizations assuming that props aren't mutated
@@ -43,7 +43,7 @@ We've also published version `0.13.0` of the `react` and `react-tools` packages
 * `setState` and `forceUpdate` on an unmounted component now warns instead of throwing. That avoids a possible race condition with Promises.
 * Access to most internal properties has been completely removed, including `this._pendingState` and `this._rootNodeID`.
 
-#### New Features {#new-features}
+#### New Features
 
 * Support for using ES6 classes to build React components; see the [v0.13.0 beta 1 notes](/blog/2015/01/27/react-v0.13.0-beta-1.html) for details.
 * Added new top-level API `React.findDOMNode(component)`, which should be used in place of `component.getDOMNode()`. The base class for ES6-based components will not have `getDOMNode`. This change will enable some more patterns moving forward.
@@ -52,31 +52,31 @@ We've also published version `0.13.0` of the `react` and `react-tools` packages
 * `this.setState()` can now take a function as the first argument for transactional state updates, such as `this.setState((state, props) => ({count: state.count + 1}));` – this means that you no longer need to use `this._pendingState`, which is now gone.
 * Support for iterators and immutable-js sequences as children.
 
-#### Deprecations {#deprecations}
+#### Deprecations
 
 * `ComponentClass.type` is deprecated. Just use `ComponentClass` (usually as `element.type === ComponentClass`).
 * Some methods that are available on `createClass`-based components are removed or deprecated from ES6 classes (`getDOMNode`, `replaceState`, `isMounted`, `setProps`, `replaceProps`).
 
 
-### React with Add-Ons {#react-with-add-ons}
+### React with Add-Ons
 
-#### New Features {#new-features-1}
+#### New Features
 
 * [`React.addons.createFragment` was added](/docs/create-fragment.html) for adding keys to entire sets of children.
 
-#### Deprecations {#deprecations-1}
+#### Deprecations
 
 * `React.addons.classSet` is now deprecated. This functionality can be replaced with several freely available modules. [classnames](https://www.npmjs.com/package/classnames) is one such module.
 * Calls to `React.addons.cloneWithProps` can be migrated to use `React.cloneElement` instead – make sure to merge `style` and `className` manually if desired.
 
 
-### React Tools {#react-tools}
+### React Tools
 
-#### Breaking Changes {#breaking-changes-1}
+#### Breaking Changes
 
 * When transforming ES6 syntax, `class` methods are no longer enumerable by default, which requires `Object.defineProperty`; if you support browsers such as IE8, you can pass `--target es3` to mirror the old behavior
 
-#### New Features {#new-features-2}
+#### New Features
 
 * `--target` option is available on the jsx command, allowing users to specify and ECMAScript version to target.
   * `es5` is the default.
@@ -84,7 +84,7 @@ We've also published version `0.13.0` of the `react` and `react-tools` packages
 * The transform for the call spread operator has also been enabled.
 
 
-### JSX {#jsx}
+### JSX
 
-#### Breaking Changes {#breaking-changes-2}
+#### Breaking Changes
 * A change was made to how some JSX was parsed, specifically around the use of `>` or `}` when inside an element. Previously it would be treated as a string but now it will be treated as a parse error. The [`jsx_orphaned_brackets_transformer`](https://www.npmjs.com/package/jsx_orphaned_brackets_transformer) package on npm can be used to find and fix potential issues in your JSX code.
diff --git a/content/blog/2015-03-16-react-v0.13.1.md b/content/blog/2015-03-16-react-v0.13.1.md
index 89243418a4..16b2e1bc0d 100644
--- a/content/blog/2015-03-16-react-v0.13.1.md
+++ b/content/blog/2015-03-16-react-v0.13.1.md
@@ -22,26 +22,26 @@ We've also published version `0.13.1` of the `react` and `react-tools` packages
 
 - - -
 
-## Changelog {#changelog}
+## Changelog
 
-### React Core {#react-core}
+### React Core
 
-#### Bug Fixes {#bug-fixes}
+#### Bug Fixes
 
 * Don't throw when rendering empty `<select>` elements
 * Ensure updating `style` works when transitioning from `null`
 
-### React with Add-Ons {#react-with-add-ons}
+### React with Add-Ons
 
-#### Bug Fixes {#bug-fixes-1}
+#### Bug Fixes
 
 * TestUtils: Don't warn about `getDOMNode` for ES6 classes
 * TestUtils: Ensure wrapped full page components (`<html>`, `<head>`, `<body>`) are treated as DOM components
 * Perf: Stop double-counting DOM components
 
-### React Tools {#react-tools}
+### React Tools
 
-#### Bug Fixes {#bug-fixes-2}
+#### Bug Fixes
 
 * Fix option parsing for `--non-strict-es6module`
 
diff --git a/content/blog/2015-03-19-building-the-facebook-news-feed-with-relay.md b/content/blog/2015-03-19-building-the-facebook-news-feed-with-relay.md
index ffc443ae0f..18933939ab 100644
--- a/content/blog/2015-03-19-building-the-facebook-news-feed-with-relay.md
+++ b/content/blog/2015-03-19-building-the-facebook-news-feed-with-relay.md
@@ -9,7 +9,7 @@ We're working hard to prepare GraphQL and Relay for public release. In the meant
 
 <br/>
 
-## The Relay Architecture {#the-relay-architecture}
+## The Relay Architecture
 
 The diagram below shows the main parts of the Relay architecture on the client and the server:
 
@@ -26,7 +26,7 @@ This post will focus on **Relay components** that describe encapsulated units of
 
 <br/>
 
-## A Relay Application {#a-relay-application}
+## A Relay Application
 
 To see how components work and can be composed, let's implement a basic version of the Facebook News Feed in Relay. Our application will have two components: a `<NewsFeed>` that renders a list of `<Story>` items. We'll introduce the plain React version of each component first and then convert it to a Relay component. The goal is something like the following:
 
@@ -34,7 +34,7 @@ To see how components work and can be composed, let's implement a basic version
 
 <br/>
 
-## The `<Story>` Begins {#the-story-begins}
+## The `<Story>` Begins
 
 The first step is a React `<Story>` component that accepts a `story` prop with the story's text and author information. Note that all examples uses ES6 syntax and elide presentation details to focus on the pattern of data access.
 
@@ -56,7 +56,7 @@ export default class Story extends React.Component {
 
 <br/>
 
-## What's the `<Story>`? {#whats-the-story}
+## What's the `<Story>`?
 
 Relay automates the process of fetching data for components by wrapping existing React components in Relay containers (themselves React components):
 
@@ -102,7 +102,7 @@ Queries use ES6 template literals tagged with the `Relay.QL` function. Similar t
 
 <br/>
 
-## `<Story>`s on Demand {#storys-on-demand}
+## `<Story>`s on Demand
 
 We can render a Relay component by providing Relay with the component (`<Story>`) and the ID of the data (a story ID). Given this information, Relay will first fetch the results of the query and then `render()` the component. The value of `props.story` will be a plain JavaScript object such as the following:
 
@@ -126,7 +126,7 @@ The diagram below shows how Relay containers make data available to our React co
 
 <br/>
 
-## `<NewsFeed>` Worthy {#newsfeed-worthy}
+## `<NewsFeed>` Worthy
 
 Now that the `<Story>` is over we can continue with the `<NewsFeed>` component. Again, we'll start with a React version:
 
@@ -153,7 +153,7 @@ module.exports = NewsFeed;
 
 <br/>
 
-## All the News Fit to be Relayed {#all-the-news-fit-to-be-relayed}
+## All the News Fit to be Relayed
 
 `<NewsFeed>` has two new requirements: it composes `<Story>` and requests more data at runtime.
 
@@ -207,7 +207,7 @@ Now when `loadMore()` is called, Relay will send a GraphQL request for the addit
 
 <br/>
 
-## In Conclusion {#in-conclusion}
+## In Conclusion
 
 These two components form a solid core for our application. With the use of Relay containers and GraphQL queries, we've enabled the following benefits:
 
diff --git a/content/blog/2015-03-30-community-roundup-26.md b/content/blog/2015-03-30-community-roundup-26.md
index ae2dc49792..1ad461ad65 100644
--- a/content/blog/2015-03-30-community-roundup-26.md
+++ b/content/blog/2015-03-30-community-roundup-26.md
@@ -9,14 +9,14 @@ We open sourced React Native last week and the community reception blew away all
 <blockquote class="twitter-tweet" lang="en"><p><a href="https://twitter.com/hashtag/reactnative?src=hash">#reactnative</a> is like when you get a new expansion pack, and everybody is running around clueless about which NPC to talk to for the quests</p>&mdash; Ryan Florence (@ryanflorence) <a href="https://twitter.com/ryanflorence/status/581810423554543616">March 28, 2015</a></blockquote>
 
 
-## When is React Native Android coming? {#when-is-react-native-android-coming}
+## When is React Native Android coming?
 
 **Give us 6 months**. At Facebook, we strive to only open-source projects that we are using in production. While the Android backend for React Native is starting to work (see video below at 37min), it hasn't been shipped to any users yet. There's a lot of work that goes into open-sourcing a project, and we want to do it right so that you have a great experience when using it.
 
 <iframe width="650" height="315" src="https://www.youtube-nocookie.com/embed/X6YbAKiLCLU?start=2220" frameborder="0" allowfullscreen></iframe>
 
 
-## Ray Wenderlich - Property Finder {#ray-wenderlich---property-finder}
+## Ray Wenderlich - Property Finder
 
 If you are getting started with React Native, you should absolutely [use this tutorial](http://www.raywenderlich.com/99473/introducing-react-native-building-apps-javascript) from Colin Eberhardt. It goes through all the steps to make a reasonably complete app.
 
@@ -25,59 +25,59 @@ If you are getting started with React Native, you should absolutely [use this tu
 Colin also [blogged about his experience using React Native](http://blog.scottlogic.com/2015/03/26/react-native-retrospective.html) for a few weeks and gives his thoughts on why you would or wouldn't use it.
 
 
-## The Changelog {#the-changelog}
+## The Changelog
 
 Spencer Ahrens and I had the great pleasure to talk about React Native on [The Changelog](https://thechangelog.com/149/) podcast. It was really fun to chat for an hour, I hope that you'll enjoy listening to it. :)
 
 <audio src="http://fdlyr.co/d/changelog/cdn.5by5.tv/audio/broadcasts/changelog/2015/changelog-149.mp3" controls="controls" style="width: 100%"></audio>
 
 
-## Hacker News {#hacker-news}
+## Hacker News
 
 Less than 24 hours after React Native was open sourced, Simarpreet Singh built an [Hacker News reader app from scratch](https://github.com/iSimar/HackerNews-React-Native). It's unbelievable how fast he was able to pull it off!
 
 [![](../images/blog/hacker-news-react-native.png)](https://github.com/iSimar/HackerNews-React-Native)
 
 
-## Parse + React {#parse--react}
+## Parse + React
 
 There's a huge ecosystem of JavaScript modules on npm and React Native was designed to work well with the ones that don't have DOM dependencies. Parse is a great example; you can `npm install parse` on your React Native project and it'll work as is. :) We still have [a](https://github.com/facebook/react-native/issues/406) [few](https://github.com/facebook/react-native/issues/370) [issues](https://github.com/facebook/react-native/issues/316) to solve; please create an issue if your favorite library doesn't work out of the box.
 
 [![](../images/blog/parse-react.jpg)](http://blog.parse.com/2015/03/25/parse-and-react-shared-chemistry/)
 
 
-## tcomb-form-native {#tcomb-form-native}
+## tcomb-form-native
 
 Giulio Canti is the author of the [tcomb-form library](https://github.com/gcanti/tcomb-form) for React. He already [ported it to React Native](https://github.com/gcanti/tcomb-form-native) and it looks great!
 
 [![](../images/blog/tcomb-react-native.png)](https://github.com/gcanti/tcomb-form-native)
 
 
-## Facebook Login with React Native {#facebook-login-with-react-native}
+## Facebook Login with React Native
 
 One of the reason we built React Native is to be able to use all the libraries in the native ecosystem. Brent Vatne leads the way and explains [how to use Facebook Login with React Native](http://brentvatne.ca/facebook-login-with-react-native/).
 
 
-## Modus Create {#modus-create}
+## Modus Create
 
 Jay Garcia spent a lot of time during the beta working on a NES music player with React Native. He wrote a blog post to share his experience and explains some code snippets.
 
 [![](../images/blog/modus-create.gif)](http://moduscreate.com/react-native-has-landed/)
 
 
-## React Native with Babel and webpack {#react-native-with-babel-and-webpack}
+## React Native with Babel and webpack
 
 React Native ships with a custom packager and custom ES6 transforms instead of using what the open source community settled on such as [webpack](https://webpack.js.org/) and [Babel](https://babeljs.io/). The main reason for this is performance – we couldn't get those tools to have sub-second reload time on a large codebase.
 
 Roman Liutikov found a way to [use webpack and Babel to run on React Native](https://github.com/roman01la/react-native-babel)! In the future, we want to work with those projects to provide cleaner extension mechanisms.
 
 
-## A Dynamic, Crazy, Native Mobile Future—Powered by JavaScript {#a-dynamic-crazy-native-mobile-futurepowered-by-javascript}
+## A Dynamic, Crazy, Native Mobile Future—Powered by JavaScript
 
 Clay Allsopp wrote a post about [all the crazy things you could do with a JavaScript engine that renders native views](https://medium.com/@clayallsopp/a-dynamic-crazy-native-mobile-future-powered-by-javascript-70f2d56b1987). What about native embeds, seamless native browser, native search engine or even app generation...
 
 
-## Random Tweet {#random-tweet}
+## Random Tweet
 
 We've spent a lot of efforts getting the onboarding as easy as possible and we're really happy that people noticed. We still have a lot of work to do on documentation, stay tuned!
 
diff --git a/content/blog/2015-04-17-react-native-v0.4.md b/content/blog/2015-04-17-react-native-v0.4.md
index 6b3a2a627a..00fef05944 100644
--- a/content/blog/2015-04-17-react-native-v0.4.md
+++ b/content/blog/2015-04-17-react-native-v0.4.md
@@ -8,7 +8,7 @@ It's been three weeks since we open sourced React Native and there's been some i
 
 I'd especially like to thank community members Brent Vatne and James Ide who have both already contributed meaningfully to the project and have been extremely helpful on IRC and with issues and pull requests
 
-## Changelog {#changelog}
+## Changelog
 
 The main focus of the past few weeks has been to make React Native the best possible experience for people outside of Facebook. Here's a high level summary of what's happened since we open sourced:
 
@@ -20,6 +20,6 @@ The main focus of the past few weeks has been to make React Native the best poss
 * **Patent Grant**: Many of you had concerns and questions around the PATENTS file. We pushed [a new version of the grant](https://code.facebook.com/posts/1639473982937255/updating-our-open-source-patent-grant/).
 * **Per commit history**: In order to synchronize from Facebook to GitHub, we used to do one giant commit every few days. We improved our tooling and now have per commit history that maintains author information (both internal and external from pull requests), and we retroactively applied this to historical diffs to provide proper attribution.
 
-## Where are we going? {#where-are-we-going}
+## Where are we going?
 
 In addition to supporting pull requests, issues, and general improvements, we're also working hard on our internal React Native integrations and on React Native for Android.
diff --git a/content/blog/2015-04-18-react-v0.13.2.md b/content/blog/2015-04-18-react-v0.13.2.md
index c188fc3780..c0acbccf0f 100644
--- a/content/blog/2015-04-18-react-v0.13.2.md
+++ b/content/blog/2015-04-18-react-v0.13.2.md
@@ -20,11 +20,11 @@ We've also published version `0.13.2` of the `react` and `react-tools` packages
 
 - - -
 
-## Changelog {#changelog}
+## Changelog
 
-### React Core {#react-core}
+### React Core
 
-#### New Features {#new-features}
+#### New Features
 
 * Added `strokeDashoffset`, `flexPositive`, `flexNegative` to the list of unitless CSS properties
 * Added support for more DOM properties:
@@ -32,20 +32,20 @@ We've also published version `0.13.2` of the `react` and `react-tools` packages
   * `high`, `low`, `optimum` - for `<meter>` elements
   * `unselectable` - IE-specific property to prevent user selection
 
-#### Bug Fixes {#bug-fixes}
+#### Bug Fixes
 
 * Fixed a case where re-rendering after rendering null didn't properly pass context
 * Fixed a case where re-rendering after rendering with `style={null}` didn't properly update `style`
 * Update `uglify` dependency to prevent a bug in IE8
 * Improved warnings
 
-### React with Add-Ons {#react-with-add-ons}
+### React with Add-Ons
 
-#### Bug Fixes {#bug-fixes-1}
+#### Bug Fixes
 
 * Immutabilty Helpers: Ensure it supports `hasOwnProperty` as an object key
 
-### React Tools {#react-tools}
+### React Tools
 
 * Improve documentation for new options
 
diff --git a/content/blog/2015-05-01-graphql-introduction.md b/content/blog/2015-05-01-graphql-introduction.md
index e90ffc4df6..ff6759dac6 100644
--- a/content/blog/2015-05-01-graphql-introduction.md
+++ b/content/blog/2015-05-01-graphql-introduction.md
@@ -12,7 +12,7 @@ GraphQL was not invented to enable Relay. In fact, GraphQL predates Relay by nea
 We plan to open-source a reference implementation of a GraphQL server and publish a language specification in the coming months. Our goal is to evolve GraphQL to adapt to a wide range of backends, so that projects and companies can use this technology to access their own data. We believe that this is a compelling way to structure servers and to provide powerful abstractions, frameworks and tools – including, but not exclusively, Relay – for product developers.
 
 
-## What is GraphQL? {#what-is-graphql}
+## What is GraphQL?
 
 A GraphQL query is a string interpreted by a server that returns data in a specified format. Here is an example query: 
 
@@ -62,12 +62,12 @@ We will dig into the syntax and semantics of GraphQL in a later post, but even a
 * **Introspective:** GraphQL is introspective. Clients and tools can query the type system using the GraphQL syntax itself. This is a powerful platform for building tools and client software, such as automatic parsing of incoming data into strongly-typed interfaces. It is especially useful in statically typed languages such as Swift, Objective-C and Java, as it obviates the need for repetitive and error-prone code to shuffle raw, untyped JSON into strongly-typed business objects.
 
 
-## Why invent something new? {#why-invent-something-new}
+## Why invent something new?
 
 Obviously GraphQL is not the first system to manage client-server interactions. In today's world there are two dominant architectural styles for client-server interaction: REST and *ad hoc* endpoints. 
 
 
-### REST {#rest}
+### REST
 
 REST, an acronym for Representational State Transfer, is an architectural style rather than a formal protocol. There is actually much debate about what exactly REST is and is not. We wish to avoid such debates. We are interested in the typical attributes of systems that *self-identify* as REST, rather than systems which are formally REST.
 
@@ -85,7 +85,7 @@ Nearly all externally facing REST APIs we know of trend or end up in these non-i
 Because of multiple round-trips and over-fetching, applications built in the REST style inevitably end up building *ad hoc* endpoints that are superficially in the REST style. These actually couple the data to a particular view which explicitly violates one of REST's major goals. Most REST systems of any complexity end up as a continuum of endpoints that span from “traditional” REST to *ad hoc* endpoints.
 
 
-### Ad Hoc Endpoints {#ad-hoc-endpoints}
+### Ad Hoc Endpoints
 
 Many applications have no formalized client-server contract. Product developers access server capabilities through *ad hoc* endpoints and write custom code to fetch the data they need. Servers define procedures, and they return data. This approach has the virtue of simplicity, but can often become untenable as systems age.
 
@@ -101,7 +101,7 @@ This is a liberating platform for product developers. With GraphQL, no more cont
 Product developers are free to focus on their client software and requirements while rarely leaving their development environment; they can more confidently support shipped clients as a system evolves; and they are using a protocol designed to operate well within the constraints of mobile applications. Product developers can query for exactly what they want, in the way they think about it, across their entire application's data model. 
 
 
-## What's next? {#whats-next}
+## What's next?
 
 Over the coming months, we will share more technical details about GraphQL, including additional language features, tools that support it, and how it is built and used at Facebook. These posts will culminate in a formal specification of GraphQL to guide implementors across various languages and platforms. We also plan on releasing a reference implementation in the summer, in order to provide a basis for custom deployments and a platform for experimentation. We're incredibly excited to share this system and work with the open source community to improve it.
 
diff --git a/content/blog/2015-05-08-react-v0.13.3.md b/content/blog/2015-05-08-react-v0.13.3.md
index 00c72feded..05467d48bd 100644
--- a/content/blog/2015-05-08-react-v0.13.3.md
+++ b/content/blog/2015-05-08-react-v0.13.3.md
@@ -20,23 +20,23 @@ We've also published version `0.13.3` of the `react` and `react-tools` packages
 
 - - -
 
-## Changelog {#changelog}
+## Changelog
 
-### React Core {#react-core}
+### React Core
 
-#### New Features {#new-features}
+#### New Features
 
 * Added `clipPath` element and attribute for SVG
 * Improved warnings for deprecated methods in plain JS classes
 
-#### Bug Fixes {#bug-fixes}
+#### Bug Fixes
 
 * Loosened `dangerouslySetInnerHTML` restrictions so `{__html: undefined}` will no longer throw
 * Fixed extraneous context warning with non-pure `getChildContext`
 * Ensure `replaceState(obj)` retains prototype of `obj`
 
-### React with Add-ons {#react-with-add-ons}
+### React with Add-ons
 
-### Bug Fixes {#bug-fixes-1}
+### Bug Fixes
 
 * Test Utils: Ensure that shallow rendering works when components define `contextTypes`
diff --git a/content/blog/2015-06-12-deprecating-jstransform-and-react-tools.md b/content/blog/2015-06-12-deprecating-jstransform-and-react-tools.md
index 07b092fec1..b3c371d87b 100644
--- a/content/blog/2015-06-12-deprecating-jstransform-and-react-tools.md
+++ b/content/blog/2015-06-12-deprecating-jstransform-and-react-tools.md
@@ -9,21 +9,21 @@ As many people have noticed already, React and React Native have both switched t
 
 react-tools has always been a very thin wrapper around JSTransform. It has served as a great tool for the community to get up and running, but at this point we're ready to [let it go](https://www.youtube.com/watch?v=moSFlvxnbgk). We won't ship a new version for v0.14.
 
-## Migrating to Babel {#migrating-to-babel}
+## Migrating to Babel
 
 Many people in the React and broader JavaScript community have already adopted Babel. It has [integrations with a number of tools](http://babeljs.io/docs/setup/). Depending on your tool, you'll want to read up on the instructions.
 
 We've been working with the Babel team as we started making use of it and we're confident that it will be the right tool to use with React.
 
-## Other Deprecations {#other-deprecations}
+## Other Deprecations
 
-### esprima-fb {#esprima-fb}
+### esprima-fb
 
 As a result of no longer maintaining JSTransform, we no longer have a need to maintain our Esprima fork ([esprima-fb](https://github.com/facebook/esprima/)). The upstream Esprima and other esprima-based forks, like Espree, have been doing an excellent job of supporting new language features recently. If you have a need of an esprima-based parser, we encourage you to look into using one of those.
 
 Alternatively, if you need to parse JSX, take a look at [acorn](https://github.com/marijnh/acorn) parser in combination with [acorn-jsx](https://github.com/RReverser/acorn-jsx) plugin which is used inside of Babel and thus always supports the latest syntax.
 
-### JSXTransformer {#jsxtransformer}
+### JSXTransformer
 JSXTransformer is another tool we built specifically for consuming JSX in the browser. It was always intended as a quick way to prototype code before setting up a build process. It would look for `<script>` tags with `type="text/jsx"` and then transform and run. This ran the same code that react-tools ran on the server. Babel ships with [a nearly identical tool](https://babeljs.io/docs/usage/browser/), which has already been integrated into [JS Bin](https://jsbin.com/).
 
 We'll be deprecating JSXTransformer, however the current version will still be available from various CDNs and Bower.
diff --git a/content/blog/2015-07-03-react-v0.14-beta-1.md b/content/blog/2015-07-03-react-v0.14-beta-1.md
index e4171f0774..4f1450556a 100644
--- a/content/blog/2015-07-03-react-v0.14-beta-1.md
+++ b/content/blog/2015-07-03-react-v0.14-beta-1.md
@@ -9,7 +9,7 @@ With React 0.14, we're continuing to let React mature and to make minor changes
 
 You can install the new beta with `npm install react@0.14.0-beta1` and `npm install react-dom@0.14.0-beta1`. As mentioned in [Deprecating react-tools](/blog/2015/06/12/deprecating-jstransform-and-react-tools.html), we're no longer updating the react-tools package so this release doesn't include a new version of it. Please try the new version out and let us know what you think, and please do file issues on our GitHub repo if you run into any problems.
 
-## Two Packages {#two-packages}
+## Two Packages
 
 As we look at packages like [react-native](https://github.com/facebook/react-native), [react-art](https://github.com/reactjs/react-art), [react-canvas](https://github.com/Flipboard/react-canvas), and [react-three](https://github.com/Izzimach/react-three), it's become clear that the beauty and essence of React has nothing to do with browsers or the DOM.
 
@@ -42,7 +42,7 @@ The addons have moved to separate packages as well: `react-addons-clone-with-pro
 
 For now, please use the same version of `react` and `react-dom` in your apps to avoid versioning problems -- but we plan to remove this requirement later. (This release includes the old methods in the `react` package with a deprecation warning, but they'll be removed completely in 0.15.)
 
-## DOM node refs {#dom-node-refs}
+## DOM node refs
 
 The other big change we're making in this release is exposing refs to DOM components as the DOM node itself. That means: we looked at what you can do with a `ref` to a DOM component and realized that the only useful thing you can do with it is call `this.refs.giraffe.getDOMNode()` to get the underlying DOM node. In this release, `this.refs.giraffe` _is_ the actual DOM node.
 
diff --git a/content/blog/2015-08-03-new-react-devtools-beta.md b/content/blog/2015-08-03-new-react-devtools-beta.md
index 97e60181f4..8f7565cc0f 100644
--- a/content/blog/2015-08-03-new-react-devtools-beta.md
+++ b/content/blog/2015-08-03-new-react-devtools-beta.md
@@ -8,7 +8,7 @@ out!
 
 ![The full devtools gif](../images/blog/devtools-full.gif)
 
-## Why entirely new? {#why-entirely-new}
+## Why entirely new?
 
 Perhaps the biggest reason was to create a defined API for dealing with
 internals, so that other tools could benefit as well and not have to depend on
@@ -20,18 +20,18 @@ is imperative, mutation-driven, and tightly integrated with Chrome-specific
 APIs. The new devtools are much less coupled to Chrome, and easier to reason
 about thanks to React.
 
-## What are the benefits? {#what-are-the-benefits}
+## What are the benefits?
 
 - 100% React
 - Firefox compatible
 - React Native compatible
 - more extensible & hackable
 
-## Are there any new features? {#are-there-any-new-features}
+## Are there any new features?
 
 Yeah!
 
-### The Tree View {#the-tree-view}
+### The Tree View
 
 ![The new tree view of the devtools](../images/blog/devtools-tree-view.png)
 
@@ -47,21 +47,21 @@ Yeah!
   - Show the source for a component in the "Sources" pane
   - Show the element in the "Elements" pane
 
-### Searching {#searching}
+### Searching
 
 Select the search bar (or press "/"), and start searching for a component by
 name.
 
 ![](../images/blog/devtools-search.gif)
 
-### The Side Pane {#the-side-pane}
+### The Side Pane
 
 - Now shows the `context` for a component
 - Right-click to store a prop/state value as a global variable
 
 ![](../images/blog/devtools-side-pane.gif)
 
-## How do I install it? {#how-do-i-install-it}
+## How do I install it?
 
 First, disable the Chrome web store version, or it will break things. Then
 [download the .crx](https://github.com/facebook/react-devtools/releases) and
@@ -72,19 +72,19 @@ there.
 Once we've determined that there aren't any major regressions, we'll update
 the official web store version, and everyone will be automatically upgraded.
 
-### Also Firefox! {#also-firefox}
+### Also Firefox!
 
 We also have an initial version of the devtools for Firefox, which you can
 download from the same [release page](https://github.com/facebook/react-devtools/releases).
 
-## Feedback welcome {#feedback-welcome}
+## Feedback welcome
 
 Let us know what issues you run into
 [on GitHub](https://github.com/facebook/react-devtools/issues), and check out
 [the README](https://github.com/facebook/react-devtools/tree/devtools-next)
 for more info.
 
-## Update {#update}
+## Update
 *August 12, 2015*
 
 A second beta is out, with a number of bugfixes. It is also listed on the
diff --git a/content/blog/2015-08-11-relay-technical-preview.md b/content/blog/2015-08-11-relay-technical-preview.md
index c574ccce25..c3ee61c974 100644
--- a/content/blog/2015-08-11-relay-technical-preview.md
+++ b/content/blog/2015-08-11-relay-technical-preview.md
@@ -3,11 +3,11 @@ title: "Relay Technical Preview"
 author: [josephsavona]
 ---
 
-# Relay {#relay}
+# Relay
 
 Today we're excited to share an update on Relay - the technical preview is now open-source and [available on GitHub](http://github.com/facebook/relay).
 
-## Why Relay {#why-relay}
+## Why Relay
 
 While React simplified the process of developing complex user-interfaces, it left open the question of how to interact with data on the server. It turns out that this was a significant source of friction for our developers; fragile coupling between client and server caused data-related bugs and made iteration harder. Furthermore, developers were forced to constantly re-implement complex async logic instead of focusing on their apps. Relay addresses these concerns by borrowing important lessons from React: it provides *declarative, component-oriented data fetching for React applications*.
 
@@ -17,13 +17,13 @@ Relay is also component-oriented, extending the notion of a React component to i
 
 Relay is in use at Facebook in production apps, and we're using it more and more because *Relay lets developers focus on their products and move fast*. It's working for us and we'd like to share it with the community.
 
-## What's Included {#whats-included}
+## What's Included
 
 We're open-sourcing a technical preview of Relay - the core framework that we use internally, with some modifications for use outside Facebook. As this is the first release, it's good to keep in mind that there may be some incomplete or missing features. We'll continue to develop Relay and are working closely with the GraphQL community to ensure that Relay tracks updates during GraphQL's RFC period. But we couldn't wait any longer to get this in your hands, and we're looking forward to your feedback and contributions.
 
 Relay is available on [GitHub](http://github.com/facebook/relay) and [npm](https://www.npmjs.com/package/react-relay).
 
-## What's Next {#whats-next}
+## What's Next
 
 The team is super excited to be releasing Relay - and just as excited about what's next. Here are some of the things we'll be focusing on:
 
diff --git a/content/blog/2015-09-02-new-react-developer-tools.md b/content/blog/2015-09-02-new-react-developer-tools.md
index 1651cf2157..cf92d647a9 100644
--- a/content/blog/2015-09-02-new-react-developer-tools.md
+++ b/content/blog/2015-09-02-new-react-developer-tools.md
@@ -18,7 +18,7 @@ It contains a handful of new features, including:
 * Right-click any props or state value to make it available as `$tmp` from the console
 * Full React Native support
 
-## Installation {#installation}
+## Installation
 
 Download the new devtools from the [Chrome Web Store](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi) and on [Mozilla Add-ons](https://addons.mozilla.org/en-US/firefox/addon/react-devtools/) for Firefox. If you're developing using React, we highly recommend installing these devtools.
 
diff --git a/content/blog/2015-09-10-react-v0.14-rc1.md b/content/blog/2015-09-10-react-v0.14-rc1.md
index e69c93ab48..1992e3271b 100644
--- a/content/blog/2015-09-10-react-v0.14-rc1.md
+++ b/content/blog/2015-09-10-react-v0.14-rc1.md
@@ -7,7 +7,7 @@ We’re happy to announce our first release candidate for React 0.14! We gave yo
 
 Let us know if you run into any problems by filing issues on our [GitHub repo](https://github.com/facebook/react).
 
-## Installation {#installation}
+## Installation
 
 We recommend using React from `npm` and using a tool like browserify or webpack to build your code into a single package:
 
@@ -30,9 +30,9 @@ If you can’t use `npm` yet, we also provide pre-built browser builds for your
 
 These builds are also available in the `react` package on bower.
 
-## Changelog {#changelog}
+## Changelog
 
-### Major changes {#major-changes}
+### Major changes
 
 - #### Two Packages: React and React DOM
 
@@ -118,7 +118,7 @@ These builds are also available in the `react` package on bower.
     **Constant hoisting for React elements:** The `optimisation.react.constantElements` transform hoists element creation to the top level for subtrees that are fully static, which reduces calls to `React.createElement` and the resulting allocations. More importantly, it tells React that the subtree hasn’t changed so React can completely skip it when reconciling.
 
 
-### Breaking changes {#breaking-changes}
+### Breaking changes
 
 As always, we have a few breaking changes in this release. Whenever we make large changes, we warn for at least one release so you have time to update your code. The Facebook codebase has over 15,000 React components, so on the React team, we always try to minimize the pain of breaking changes.
 
@@ -133,7 +133,7 @@ And these two changes did not warn in 0.13 but should be easy to find and clean
 - `React.initializeTouchEvents` is no longer necessary and has been removed completely. Touch events now work automatically.
 - Add-Ons: Due to the DOM node refs change mentioned above, `TestUtils.findAllInRenderedTree` and related helpers are no longer able to take a DOM component, only a custom component.
 
-### New deprecations, introduced with a warning {#new-deprecations-introduced-with-a-warning}
+### New deprecations, introduced with a warning
 
 - Due to the DOM node refs change mentioned above, `this.getDOMNode()` is now deprecated and `ReactDOM.findDOMNode(this)` can be used instead. Note that in most cases, calling `findDOMNode` is now unnecessary – see the example above in the “DOM node refs” section.
 
@@ -145,7 +145,7 @@ And these two changes did not warn in 0.13 but should be easy to find and clean
 - Add-Ons: `cloneWithProps` is now deprecated. Use [`React.cloneElement`](/docs/top-level-api.html#react.cloneelement) instead (unlike `cloneWithProps`, `cloneElement` does not merge `className` or `style` automatically; you can merge them manually if needed).
 - Add-Ons: To improve reliability, `CSSTransitionGroup` will no longer listen to transition events. Instead, you should specify transition durations manually using props such as `transitionEnterTimeout={500}`.
 
-### Notable enhancements {#notable-enhancements}
+### Notable enhancements
 
 - Added `React.Children.toArray` which takes a nested children object and returns a flat array with keys assigned to each child. This helper makes it easier to manipulate collections of children in your `render` methods, especially if you want to reorder or slice `this.props.children` before passing it down. In addition, `React.Children.map` now returns plain arrays too.
 - React uses `console.error` instead of `console.warn` for warnings so that browsers show a full stack trace in the console. (Our warnings appear when you use patterns that will break in future releases and for code that is likely to behave unexpectedly, so we do consider our warnings to be “must-fix” errors.)
@@ -161,13 +161,13 @@ And these two changes did not warn in 0.13 but should be easy to find and clean
 - Add-Ons: A [`shallowCompare`](https://github.com/facebook/react/pull/3355) add-on has been added as a migration path for `PureRenderMixin` in ES6 classes.
 - Add-Ons: `CSSTransitionGroup` can now use [custom class names](https://github.com/facebook/react/blob/48942b85/docs/docs/10.1-animation.md#custom-classes) instead of appending `-enter-active` or similar to the transition name.
 
-### New helpful warnings {#new-helpful-warnings}
+### New helpful warnings
 
 - React DOM now warns you when nesting HTML elements invalidly, which helps you avoid surprising errors during updates.
 - Passing `document.body` directly as the container to `ReactDOM.render` now gives a warning as doing so can cause problems with browser extensions that modify the DOM.
 - Using multiple instances of React together is not supported, so we now warn when we detect this case to help you avoid running into the resulting problems.
 
-### Notable bug fixes {#notable-bug-fixes}
+### Notable bug fixes
 
 - Click events are handled by React DOM more reliably in mobile browsers, particularly in Mobile Safari.
 - SVG elements are created with the correct namespace in more cases.
diff --git a/content/blog/2015-09-14-community-roundup-27.md b/content/blog/2015-09-14-community-roundup-27.md
index 01e4b394a4..e2b832a97c 100644
--- a/content/blog/2015-09-14-community-roundup-27.md
+++ b/content/blog/2015-09-14-community-roundup-27.md
@@ -6,7 +6,7 @@ author: [steveluscher]
 
 In the weeks following the [open-source release](/blog/2015/08/11/relay-technical-preview.html) of the Relay technical preview, the community has been abuzz with activity. We are honored to have been able to enjoy a steady stream of ideas and contributions from such a talented group of individuals. Let's take a look at some of the things we've achieved, together!
 
-## Teaching servers to speak GraphQL {#teaching-servers-to-speak-graphql}
+## Teaching servers to speak GraphQL
 
 Every great Relay app starts by finding a GraphQL server to talk to. The community has spent the past few weeks teaching GraphQL to a few backend systems.
 
@@ -24,7 +24,7 @@ Espen Hovlandsdal ([rexxars](https://github.com/rexxars)) built a [sql-to-graphq
 
 Mick Hansen ([mickhansen](https://github.com/mickhansen)) offers a set of [schema-building helpers](https://github.com/mickhansen/graphql-sequelize) for use with the [Sequelize ORM](http://docs.sequelizejs.com/en/latest/) for MySQL, PostgreSQL, SQLite, and MSSQL.
 
-## GraphQL beyond JavaScript {#graphql-beyond-javascript}
+## GraphQL beyond JavaScript
 
 Robert Mosolgo ([rmosolgo](https://github.com/rmosolgo)) brought the full set of schema-building and query execution tools to Ruby, in the form of [graphql-ruby](https://github.com/rmosolgo/graphql-ruby) and [graphql-relay-ruby](https://github.com/rmosolgo/graphql-relay-ruby). Check out his [Rails-based demo](https://github.com/rmosolgo/graphql-ruby-demo).
 
@@ -38,7 +38,7 @@ Oleg Ilyenko ([OlegIlyenko](https://github.com/OlegIlyenko)) made a beautiful an
 
 Joe McBride ([joemcbride](https://github.com/joemcbride)) has an up-and-running example of GraphQL for .NET, [graphql-dotnet](https://github.com/joemcbride/graphql-dotnet).
 
-## Show me, don't tell me {#show-me-dont-tell-me}
+## Show me, don't tell me
 
 Interact with this [visual tour of Relay's architecture](http://sgwilym.github.io/relay-visual-learners/) by Sam Gwilym ([sgwilym](https://github.com/sgwilym)).
 
@@ -48,19 +48,19 @@ Interact with this [visual tour of Relay's architecture](http://sgwilym.github.i
 
 Sam has already launched a product that leverages Relay's data-fetching, optimistic responses, pagination, and mutations &ndash; all atop a Ruby GraphQL server: [new.comique.co](http://new.comique.co/)
 
-## Skeletons in the closet {#skeletons-in-the-closet}
+## Skeletons in the closet
 
 Joseph Rollins ([fortruce](https://github.com/fortruce)) created a hot-reloading, auto schema-regenerating, [Relay skeleton](https://github.com/fortruce/relay-skeleton) that you can use to get up and running quickly.
 
 Michael Hart ([mhart](https://mhart)) built a [simple-relay-starter](https://github.com/mhart/simple-relay-starter) kit using Browserify.
 
-## Routing around {#routing-around}
+## Routing around
 
 Jimmy Jia ([taion](@taion)) and Gerald Monaco ([devknoll](@devknoll)) have been helping lost URLs find their way to Relay apps through their work on [react-router-relay](relay-tools/react-router-relay). Check out Christoph Nakazawa's ([cpojer](@cpojer)) [blog post](medium.com/@cpojer/relay-and-routing-36b5439bad9) on the topic. Jimmy completed the Relay TodoMVC example with routing, which you can check out at [taion/relay-todomvc](taion/relay-todomvc).
 
 Chen Hung-Tu ([transedward](https://github.com/transedward)) built a chat app atop the above mentioned router, with threaded conversations and pagination. Check it out at [transedward/relay-chat](https://github.com/transedward/relay-chat).
 
-## In your words {#in-your-words}
+## In your words
 
 <div class="skinny-row">
   <div class="skinny-col">
diff --git a/content/blog/2015-10-01-react-render-and-top-level-api.md b/content/blog/2015-10-01-react-render-and-top-level-api.md
index 10d8e94a5f..4d7cdc22cc 100644
--- a/content/blog/2015-10-01-react-render-and-top-level-api.md
+++ b/content/blog/2015-10-01-react-render-and-top-level-api.md
@@ -24,7 +24,7 @@ This is important and often forgotten. Forgetting to call `unmountComponentAtNod
 
 It is not unique to the DOM. If you want to insert a React Native view in the middle of an existing iOS app you will hit similar issues.
 
-## Helpers {#helpers}
+## Helpers
 
 If you have multiple React roots, or a single root that gets deleted over time, we recommend that you always create your own wrapper API. These will all look slightly different depending on what your outer system looks like. For example, at Facebook we have a system that automatically ties into our page transition router to automatically call `unmountComponentAtNode`.
 
@@ -32,7 +32,7 @@ Rather than calling `ReactDOM.render()` directly everywhere, consider writing/us
 
 In your environment you may want to always configure internationalization, routers, user data etc. If you have many different React roots it can be a pain to set up configuration nodes all over the place. By creating your own wrapper you can unify that configuration into one place.
 
-## Object Oriented Updates {#object-oriented-updates}
+## Object Oriented Updates
 
 If you call `ReactDOM.render` a second time to update properties, all your props are completely replaced.
 
diff --git a/content/blog/2015-10-07-react-v0.14.md b/content/blog/2015-10-07-react-v0.14.md
index fd539f9158..3db41a7ad9 100644
--- a/content/blog/2015-10-07-react-v0.14.md
+++ b/content/blog/2015-10-07-react-v0.14.md
@@ -9,7 +9,7 @@ If you tried the release candidate, thank you – your support is invaluable and
 
 As with all of our releases, we consider this version to be stable enough to use in production and recommend that you upgrade in order to take advantage of our latest improvements.
 
-## Upgrade Guide {#upgrade-guide}
+## Upgrade Guide
 
 Like always, we have a few breaking changes in this release. We know changes can be painful (the Facebook codebase has over 15,000 React components), so we always try to make changes gradually in order to minimize the pain.
 
@@ -19,7 +19,7 @@ For the two major changes which require significant code changes, we've included
 
 See the changelog below for more details.
 
-## Installation {#installation}
+## Installation
 
 We recommend using React from `npm` and using a tool like browserify or webpack to build your code into a single bundle. To install the two packages:
 
@@ -39,9 +39,9 @@ If you can’t use `npm` yet, we provide pre-built browser builds for your conve
   Dev build with warnings: <https://fb.me/react-dom-0.14.0.js>  
   Minified build for production: <https://fb.me/react-dom-0.14.0.min.js>  
 
-## Changelog {#changelog}
+## Changelog
 
-### Major changes {#major-changes}
+### Major changes
 
 - #### Two Packages: React and React DOM
 
@@ -142,7 +142,7 @@ If you can’t use `npm` yet, we provide pre-built browser builds for your conve
     **Constant hoisting for React elements:** The `optimisation.react.constantElements` transform hoists element creation to the top level for subtrees that are fully static, which reduces calls to `React.createElement` and the resulting allocations. More importantly, it tells React that the subtree hasn’t changed so React can completely skip it when reconciling.
 
 
-### Breaking changes {#breaking-changes}
+### Breaking changes
 
 In almost all cases, we change our APIs gradually and warn for at least one release to give you time to clean up your code. These two breaking changes did not have a warning in 0.13 but should be easy to find and clean up:
 
@@ -155,7 +155,7 @@ These three breaking changes had a warning in 0.13, so you shouldn’t have to d
 - Plain objects are no longer supported as React children; arrays should be used instead. You can use the [`createFragment`](/docs/create-fragment.html) helper to migrate, which now returns an array.
 - Add-Ons: `classSet` has been removed. Use [classnames](https://github.com/JedWatson/classnames) instead.
 
-### New deprecations, introduced with a warning {#new-deprecations-introduced-with-a-warning}
+### New deprecations, introduced with a warning
 
 Each of these changes will continue to work as before with a new warning until the release of 0.15 so you can upgrade your code gradually.
 
@@ -169,7 +169,7 @@ Each of these changes will continue to work as before with a new warning until t
 - Add-Ons: `cloneWithProps` is now deprecated. Use [`React.cloneElement`](/docs/top-level-api.html#react.cloneelement) instead (unlike `cloneWithProps`, `cloneElement` does not merge `className` or `style` automatically; you can merge them manually if needed).
 - Add-Ons: To improve reliability, `CSSTransitionGroup` will no longer listen to transition events. Instead, you should specify transition durations manually using props such as `transitionEnterTimeout={500}`.
 
-### Notable enhancements {#notable-enhancements}
+### Notable enhancements
 
 - Added `React.Children.toArray` which takes a nested children object and returns a flat array with keys assigned to each child. This helper makes it easier to manipulate collections of children in your `render` methods, especially if you want to reorder or slice `this.props.children` before passing it down. In addition, `React.Children.map` now returns plain arrays too.
 - React uses `console.error` instead of `console.warn` for warnings so that browsers show a full stack trace in the console. (Our warnings appear when you use patterns that will break in future releases and for code that is likely to behave unexpectedly, so we do consider our warnings to be “must-fix” errors.)
@@ -185,13 +185,13 @@ Each of these changes will continue to work as before with a new warning until t
 - Add-Ons: A [`shallowCompare`](https://github.com/facebook/react/pull/3355) add-on has been added as a migration path for `PureRenderMixin` in ES6 classes.
 - Add-Ons: `CSSTransitionGroup` can now use [custom class names](https://github.com/facebook/react/blob/48942b85/docs/docs/10.1-animation.md#custom-classes) instead of appending `-enter-active` or similar to the transition name.
 
-### New helpful warnings {#new-helpful-warnings}
+### New helpful warnings
 
 - React DOM now warns you when nesting HTML elements invalidly, which helps you avoid surprising errors during updates.
 - Passing `document.body` directly as the container to `ReactDOM.render` now gives a warning as doing so can cause problems with browser extensions that modify the DOM.
 - Using multiple instances of React together is not supported, so we now warn when we detect this case to help you avoid running into the resulting problems.
 
-### Notable bug fixes {#notable-bug-fixes}
+### Notable bug fixes
 
 - Click events are handled by React DOM more reliably in mobile browsers, particularly in Mobile Safari.
 - SVG elements are created with the correct namespace in more cases.
diff --git a/content/blog/2015-10-19-reactiflux-is-moving-to-discord.md b/content/blog/2015-10-19-reactiflux-is-moving-to-discord.md
index 522ac658f5..00234b3b73 100644
--- a/content/blog/2015-10-19-reactiflux-is-moving-to-discord.md
+++ b/content/blog/2015-10-19-reactiflux-is-moving-to-discord.md
@@ -5,45 +5,45 @@ author: [benigeri]
 
 TL;DR: Slack decided that Reactiflux had too many members and disabled new invites. Reactiflux is moving to Discord. Join us: [http://join.reactiflux.com](http://join.reactiflux.com/)
 
-## What happened with Slack? {#what-happened-with-slack}
+## What happened with Slack?
 
 A few weeks ago, Reactiflux reached 7,500 members on Slack. Shortly after, Slack decided we were too big and disabled invites. There was no way for new users to join. Many of us were sad and upset. We loved Slack.  Our community was built around it.
 
 We reached out to Slack several times, but their decision was firm. Our large community caused performance issues. Slack wants to focus on building a great product for teams, not necessarily large open communities. Losing focus and building for too many use cases always leads to product bloat, and eventually a decrease in quality.
 
-## So… why Discord? {#so-why-discord}
+## So… why Discord?
 
 After a [long and thorough debate](https://github.com/reactiflux/volunteers/issues/25), Discord quickly emerged as the most promising service. After just a few days, 400 members had joined the Discord server, and many already loved it.
 
-### Easiest to join {#easiest-to-join}
+### Easiest to join
 
 Discord is the easiest platform to join. New users can immediately join our conversations without having to create an account. All they need to do is provide a name. No permission granting, no password, no email confirmation.
 
 This is critically useful for us, and will make Reactiflux even more open and accessible.
 
-### Great apps {#great-apps}
+### Great apps
 
 Out of all of the services we’ve tried, Discord’s apps are by far the most polished. They are well designed, easy to use, and surprisingly fast. In addition to the web app, they have mobile apps on both iOS and Android as well as desktop apps for OS X and Windows, with Linux support coming soon.
 
 Their desktop apps are built with React and Electron, and their iOS app is built with React Native.
 
-### Moderation tools {#moderation-tools}
+### Moderation tools
 
 So far, we’ve been fortunate not to have to deal with spammers and trolls. As our community continues to grow, that might change. Unsurprisingly, Discord is the only app we’ve seen with legitimate moderation tools. It was built for gaming communities, after all.
 
-### Great multiple Server support {#great-multiple-server-support}
+### Great multiple Server support
 
 Your  Discord account works with every Discord server, which is the equivalent of a Slack team. You don’t need to create a new account every time you join a new team. You can join new servers in one click, and it’s very easy to switch between them. Discord messages also work across servers, so your personal conversations are not scoped to a single server.
 
 Instead of having one huge, crowded Reactiflux server, we can branch off closely related channels into sub-servers. Communities will start overlapping, and it will be easy to interact with non-Reactiflux channels.
 
-### It’s hosted {#its-hosted}
+### It’s hosted
 
 Self-hosted apps require maintenance. We’re all busy, and we can barely find the time to keep our landing page up to date and running smoothly. More than anything, we need a stable platform, and we don’t have the resources to guarantee that right now.
 
 It’s a much safer bet to offload the hosting to Discord, who is already keeping the lights on for all their users.
 
-### We like the team {#we-like-the-team}
+### We like the team
 
 And they seem to like us back. They are excited for us to join them, and they’ve been very responsive to our feedback and suggestions.
 
@@ -51,11 +51,11 @@ They implemented code syntax highlighting just a few days after we told them we
 
 Discord’s team has already built a solid suite of apps, and they have shown us how much they care about their users. We’re excited to see how they will continue to improve their product.
 
-## And what’s the catch? {#and-whats-the-catch}
+## And what’s the catch?
 
 Choosing the best chat service is subjective. There are a million reasons why Discord *might be* a terrible idea. Here are the ones that we’re most worried about:
 
-### Difficult channel management {#difficult-channel-management}
+### Difficult channel management
 
 Channel management seems to be the biggest issue. There is no way to opt out of channels; you can only mute them. And you can only mute channels one by one. There is no way to star channels, and channels can only be sorted on the server level. Each user will see the list of channels in the same order.
 
@@ -63,23 +63,23 @@ As the number of channels grow, it will be challenging to keep things in order.
 
 We can build simple tools to make channel lookup easier, and the Discord team is working on improvements that should make this more manageable.
 
-### No Search {#no-search}
+### No Search
 
 Lack of search is clearly a bummer, but Discord is working on it. Search is coming!
 
-### Firewall {#firewall}
+### Firewall
 
 A couple of users aren’t able to access Discord at work since other corporate filters classify it as a gaming application. This sucks, but it seems to be a  rare case. So far, it seems only to affect 0.6% of our current community (3/500).
 
 We hope that these users can get Discord's domains whitelisted, and we’ll try to find a solution if this is a widespread issue. The Discord team is aware of the issue as well.
 
-## Is Discord going to disappear tomorrow? {#is-discord-going-to-disappear-tomorrow}
+## Is Discord going to disappear tomorrow?
 
 Probably not tomorrow. They have 14 people [full time](https://discordapp.com/company), and they’ve raised money from some of the best investors in Silicon Valley, including [Benchmark](http://www.benchmark.com/) and [Accel](http://www.accel.com/companies/).
 
 By focusing on gaming communities, Discord has differentiated itself from the many other communication apps. Discord is well received and has a rapidly growing user base.  They plan to keep their basic offerings free for unlimited users and hope to make money with premium offerings (themes, add-ons, content, and more).
 
-## Join us! {#join-us}
+## Join us!
 
 More than 500 of us have already migrated to the new Reactiflux.  Join us, we're one click away: [http://join.reactiflux.com](http://join.reactiflux.com/)
 
diff --git a/content/blog/2015-10-28-react-v0.14.1.md b/content/blog/2015-10-28-react-v0.14.1.md
index cf7fc27137..b63897b0f6 100644
--- a/content/blog/2015-10-28-react-v0.14.1.md
+++ b/content/blog/2015-10-28-react-v0.14.1.md
@@ -21,20 +21,20 @@ We've also published version `0.14.1` of the `react`, `react-dom`, and addons pa
 
 - - -
 
-## Changelog {#changelog}
+## Changelog
 
-### React DOM {#react-dom}
+### React DOM
 - Fixed bug where events wouldn't fire in old browsers when using React in development mode
 - Fixed bug preventing use of `dangerouslySetInnerHTML` with Closure Compiler Advanced mode
 - Added support for `srcLang`, `default`, and `kind` attributes for `<track>` elements
 - Added support for `color` attribute
 - Ensured legacy `.props` access on DOM nodes is updated on re-renders
 
-### React TestUtils Add-on {#react-testutils-add-on}
+### React TestUtils Add-on
 - Fixed `scryRenderedDOMComponentsWithClass` so it works with SVG
 
-### React CSSTransitionGroup Add-on {#react-csstransitiongroup-add-on}
+### React CSSTransitionGroup Add-on
 - Fix bug preventing `0` to be used as a timeout value
 
-### React on Bower {#react-on-bower}
+### React on Bower
 - Added `react-dom.js` to `main` to improve compatibility with tooling
diff --git a/content/blog/2015-11-02-react-v0.14.2.md b/content/blog/2015-11-02-react-v0.14.2.md
index abc2df4af3..85a7f2a34c 100644
--- a/content/blog/2015-11-02-react-v0.14.2.md
+++ b/content/blog/2015-11-02-react-v0.14.2.md
@@ -21,9 +21,9 @@ We've also published version `0.14.2` of the `react`, `react-dom`, and addons pa
 
 - - -
 
-## Changelog {#changelog}
+## Changelog
 
-### React DOM {#react-dom}
+### React DOM
 - Fixed bug with development build preventing events from firing in some versions of Internet Explorer & Edge
 - Fixed bug with development build when using es5-sham in older versions of Internet Explorer
 - Added support for `integrity` attribute
diff --git a/content/blog/2015-11-18-react-v0.14.3.md b/content/blog/2015-11-18-react-v0.14.3.md
index 19efc7576d..03f3c39b5e 100644
--- a/content/blog/2015-11-18-react-v0.14.3.md
+++ b/content/blog/2015-11-18-react-v0.14.3.md
@@ -24,17 +24,17 @@ We've also published version `0.14.3` of the `react`, `react-dom`, and addons pa
 
 - - -
 
-## Changelog {#changelog}
+## Changelog
 
-### React DOM {#react-dom}
+### React DOM
 - Added support for `nonce` attribute for `<script>` and `<style>` elements
 - Added support for `reversed` attribute for `<ol>` elements
 
-### React TestUtils Add-on {#react-testutils-add-on}
+### React TestUtils Add-on
 - Fixed bug with shallow rendering and function refs
 
-### React CSSTransitionGroup Add-on {#react-csstransitiongroup-add-on}
+### React CSSTransitionGroup Add-on
 - Fixed bug resulting in timeouts firing incorrectly when mounting and unmounting rapidly
 
-### React on Bower {#react-on-bower}
+### React on Bower
 - Added `react-dom-server.js` to expose `renderToString` and `renderToStaticMarkup` for usage in the browser
diff --git a/content/blog/2015-12-04-react-js-conf-2016-diversity-scholarship.md b/content/blog/2015-12-04-react-js-conf-2016-diversity-scholarship.md
index 7f0da6aa0b..5ff3d0020a 100644
--- a/content/blog/2015-12-04-react-js-conf-2016-diversity-scholarship.md
+++ b/content/blog/2015-12-04-react-js-conf-2016-diversity-scholarship.md
@@ -26,18 +26,18 @@ At Facebook, we believe that anyone anywhere can make a positive impact by devel
 
 To apply for the scholarship, please visit the application page: **<http://goo.gl/forms/PEmKj8oUp4>**
 
-## Award Includes {#award-includes}
+## Award Includes
 
 * Paid registration fee for the React.js Conf February 22 & 23 in downtown San Francisco, CA
 * Paid lodging expenses for February 21, 22, 23
 
-## Important Dates {#important-dates}
+## Important Dates
 
 * Sunday December 13th 2015 - 11:59 PST: Applications for the React.js Conf Scholarship must be submitted in full
 * Wednesday, December 16th, 2015: Award recipients will be notified by email of their acceptance
 * Monday & Tuesday, February 22 & 23, 2016: React.js Conf
 
-## Eligibility {#eligibility}
+## Eligibility
 
 * Must currently be studying or working in Computer Science or a related field
 * International applicants are welcome, but you will be responsible for securing your own visa to attend the conference
diff --git a/content/blog/2015-12-18-react-components-elements-and-instances.md b/content/blog/2015-12-18-react-components-elements-and-instances.md
index dd71836d09..45e7ed217b 100644
--- a/content/blog/2015-12-18-react-components-elements-and-instances.md
+++ b/content/blog/2015-12-18-react-components-elements-and-instances.md
@@ -5,7 +5,7 @@ author: [gaearon]
 
 The difference between **components, their instances, and elements** confuses many React beginners. Why are there three different terms to refer to something that is painted on screen?
 
-## Managing the Instances {#managing-the-instances}
+## Managing the Instances
 
 If you’re new to React, you probably only worked with component classes and instances before. For example, you may declare a `Button` *component* by creating a class. When the app is running, you may have several *instances* of this component on screen, each with its own properties and local state. This is the traditional object-oriented UI programming. Why introduce *elements*?
 
@@ -53,13 +53,13 @@ Each component instance has to keep references to its DOM node and to the instan
 
 So how is React different?
 
-## Elements Describe the Tree {#elements-describe-the-tree}
+## Elements Describe the Tree
 
 In React, this is where the *elements* come to rescue. **An element is a plain object *describing* a component instance or DOM node and its desired properties.** It contains only information about the component type (for example, a `Button`), its properties (for example, its `color`), and any child elements inside it.
 
 An element is not an actual instance. Rather, it is a way to tell React what you *want* to see on the screen. You can’t call any methods on the element. It’s just an immutable description object with two fields: `type: (string | ReactClass)` and `props: Object`[^1].
 
-### DOM Elements {#dom-elements}
+### DOM Elements
 
 When an element’s `type` is a string, it represents a DOM node with that tag name, and `props` correspond to its attributes. This is what React will render. For example:
 
@@ -94,7 +94,7 @@ What’s important is that both child and parent elements are *just descriptions
 
 React elements are easy to traverse, don’t need to be parsed, and of course they are much lighter than the actual DOM elements—they’re just objects!
 
-### Component Elements {#component-elements}
+### Component Elements
 
 However, the `type` of an element can also be a function or a class corresponding to a React component:
 
@@ -168,7 +168,7 @@ This mix and matching helps keep components decoupled from each other, as they c
 * `DangerButton` is a `Button` with specific properties.
 * `DeleteAccount` contains a `Button` and a `DangerButton` inside a `<div>`.
 
-### Components Encapsulate Element Trees {#components-encapsulate-element-trees}
+### Components Encapsulate Element Trees
 
 When React sees an element with a function or class `type`, it knows to ask *that* component what element it renders to, given the corresponding `props`.
 
@@ -236,7 +236,7 @@ That’s it! For a React component, props are the input, and an element tree is
 
 We let React create, update, and destroy instances. We *describe* them with elements we return from the components, and React takes care of managing the instances.
 
-### Components Can Be Classes or Functions {#components-can-be-classes-or-functions}
+### Components Can Be Classes or Functions
 
 In the code above, `Form`, `Message`, and `Button` are React components. They can either be written as functions, like above, or as classes descending from `React.Component`. These three ways to declare a component are mostly equivalent:
 
@@ -300,7 +300,7 @@ A function component is less powerful but is simpler, and acts like a class comp
 
 **However, whether functions or classes, fundamentally they are all components to React. They take the props as their input, and return the elements as their output.**
 
-### Top-Down Reconciliation {#top-down-reconciliation}
+### Top-Down Reconciliation
 
 When you call:
 
@@ -360,7 +360,7 @@ Only components declared as classes have instances, and you never create them di
 
 React takes care of creating an instance for every class component, so you can write components in an object-oriented way with methods and local state, but other than that, instances are not very important in the React’s programming model and are managed by React itself.
 
-## Summary {#summary}
+## Summary
 
 An *element* is a plain object describing what you want to appear on the screen in terms of the DOM nodes or other components. Elements can contain other elements in their props. Creating a React element is cheap. Once an element is created, it is never mutated.
 
@@ -374,7 +374,7 @@ Function components don’t have instances at all. Class components have instanc
 
 Finally, to create elements, use [`React.createElement()`](/docs/top-level-api.html#react.createelement), [JSX](/docs/jsx-in-depth.html), or an [element factory helper](/docs/top-level-api.html#react.createfactory). Don’t write elements as plain objects in the real code—just know that they are plain objects under the hood.
 
-## Further Reading {#further-reading}
+## Further Reading
 
 * [Introducing React Elements](/blog/2014/10/14/introducing-react-elements.html)
 * [Streamlining React Elements](/blog/2015/02/24/streamlining-react-elements.html)
diff --git a/content/blog/2015-12-29-react-v0.14.4.md b/content/blog/2015-12-29-react-v0.14.4.md
index 38161766af..d2acefd9a1 100644
--- a/content/blog/2015-12-29-react-v0.14.4.md
+++ b/content/blog/2015-12-29-react-v0.14.4.md
@@ -24,14 +24,14 @@ We've also published version `0.14.4` of the `react`, `react-dom`, and addons pa
 
 - - -
 
-## Changelog {#changelog}
+## Changelog
 
-### React {#react}
+### React
 - Minor internal changes for better compatibility with React Native
 
-### React DOM {#react-dom}
+### React DOM
 - The `autoCapitalize` and `autoCorrect` props are now set as attributes in the DOM instead of properties to improve cross-browser compatibility
 - Fixed bug with controlled `<select>` elements not handling updates properly
 
-### React Perf Add-on {#react-perf-add-on}
+### React Perf Add-on
 - Some DOM operation names have been updated for clarity in the output of `.printDOM()`
diff --git a/content/blog/2016-02-19-new-versioning-scheme.md b/content/blog/2016-02-19-new-versioning-scheme.md
index 375854eb0a..dec47e9ee4 100644
--- a/content/blog/2016-02-19-new-versioning-scheme.md
+++ b/content/blog/2016-02-19-new-versioning-scheme.md
@@ -9,7 +9,7 @@ This change shouldn't materially affect most of you. Moving to major semver vers
 
 The core of the React API has been stable for years. Our business as well as many of yours all depend heavily on the use of React as a core piece of our infrastructure. We're committed to the stability as well as the progress of React going forward.
 
-## Bring Everyone Along {#bring-everyone-along}
+## Bring Everyone Along
 
 React isn't just a library but an ecosystem. We know that your applications and ours are not just isolated islands of code. It is a network of your own application code, your own open source components and third party libraries that all depend on React.
 
@@ -19,7 +19,7 @@ Therefore it is important that we don't just upgrade our own codebases but that
 
 <img src="../images/blog/versioning-poll.png" width="596">
 
-## Introducing Minor Releases {#introducing-minor-releases}
+## Introducing Minor Releases
 
 Ideally everyone could just depend on the latest version of React all the time.
 
@@ -31,11 +31,11 @@ We know that in practice that is not possible. In the future, we expect more new
 
 That means that if one component needs a new API, there is no need for any of the other components to do any further work. They remain compatible.
 
-## What Happened to 1.0.0? {#what-happened-to-100}
+## What Happened to 1.0.0?
 
 Part of React's growth and popularity is that it is stable and performant in production. People have long asked what React v1.0 will look. Technically some breaking changes are important to avoid stagnating, but we still achieve stability by making it easy to upgrade. If major version numbers indicate API stability and engender trust that it can be used in production, then we got there a long time ago. There are too many preconceived notions of what v1.0 is. We're still following semver. We're just communicating stability by moving the 0 from the beginning to the end.
 
-## Breaking Changes {#breaking-changes}
+## Breaking Changes
 
 Minor revision releases will include deprecation warnings and tips for how to upgrade an API or pattern that will be removed or changed in the future.
 
@@ -43,7 +43,7 @@ We will continue to release [codemods](https://www.youtube.com/watch?v=d0pOgY8__
 
 Once we've reached the end of life for a particular major version, we'll release a new major version where all deprecated APIs have been removed.
 
-## Avoiding The Major Cliff {#avoiding-the-major-cliff}
+## Avoiding The Major Cliff
 
 If you try to upgrade your component to 16.0.0 you might find that your application no longer works if you still have other dependencies. E.g. if Ryan's and Jed's components are only compatible with 15.x.x.
 
diff --git a/content/blog/2016-03-07-react-v15-rc1.md b/content/blog/2016-03-07-react-v15-rc1.md
index 49066ef0c6..5fa53e2aa7 100644
--- a/content/blog/2016-03-07-react-v15-rc1.md
+++ b/content/blog/2016-03-07-react-v15-rc1.md
@@ -9,7 +9,7 @@ But now we're ready, so without further ado, we're shipping a release candidate
 
 Please try it out before we publish the final release. Let us know if you run into any problems by filing issues on our [GitHub repo](https://github.com/facebook/react).
 
-## Upgrade Guide {#upgrade-guide}
+## Upgrade Guide
 
 Like always, we have a few breaking changes in this release. We know changes can be painful (the Facebook codebase has over 15,000 React components), so we always try to make changes gradually in order to minimize the pain.
 
@@ -17,7 +17,7 @@ If your code is free of warnings when running under React 0.14, upgrading should
 
 See the changelog below for more details.
 
-## Installation {#installation}
+## Installation
 
 We recommend using React from `npm` and using a tool like browserify or webpack to build your code into a single bundle. To install the two packages:
 
@@ -37,9 +37,9 @@ If you can’t use `npm` yet, we provide pre-built browser builds for your conve
   Dev build with warnings: <https://fb.me/react-dom-15.0.0-rc.1.js>  
   Minified build for production: <https://fb.me/react-dom-15.0.0-rc.1.min.js>  
 
-## Changelog {#changelog}
+## Changelog
 
-### Major changes {#major-changes}
+### Major changes
 
 - #### `document.createElement` is in and `data-reactid` is out
 
@@ -59,7 +59,7 @@ If you can’t use `npm` yet, we provide pre-built browser builds for your conve
 
 
 
-### Breaking changes {#breaking-changes}
+### Breaking changes
 
 It's worth calling out the DOM structure changes above again, in particular the change from `<span>`s. In the course of updating the Facebook codebase, we found a very small amount of code that was depending on the markup that React generated. Some of these cases were integration tests like WebDriver which were doing very specific XPath queries to target nodes. Others were simply tests using `ReactDOM.renderToStaticMarkup` and comparing markup. Again, there were a very small number of changes that had to be made, but we don't want anybody to be blindsided. We encourage everybody to run their test suites when upgrading and consider alternative approaches when possible. One approach that will work for some cases is to explicitly use `<span>`s in your `render` method.
 
@@ -69,14 +69,14 @@ These deprecations were introduced in v0.14 with a warning and the APIs are now
 - Deprecated APIs removed from `React.addons`, specifically `batchedUpdates` and `cloneWithProps`.
 - Deprecated APIs removed from component instances, specifically `setProps`, `replaceProps`, and `getDOMNode`.
 
-### New deprecations, introduced with a warning {#new-deprecations-introduced-with-a-warning}
+### New deprecations, introduced with a warning
 
 Each of these changes will continue to work as before with a new warning until the release of React 16 so you can upgrade your code gradually.
 
 - `LinkedStateMixin` and `valueLink` are now deprecated due to very low popularity. If you need this, you can use a wrapper component that implements the same behavior: [react-linked-input](https://www.npmjs.com/package/react-linked-input).
 
 
-### New helpful warnings {#new-helpful-warnings}
+### New helpful warnings
 
 - If you use a minified copy of the _development_ build, React DOM kindly encourages you to use the faster production build instead.
 - React DOM: When specifying a unit-less CSS value as a string, a future version will not add `px` automatically. This version now warns in this case (ex: writing `style={{width: '300'}}`. (Unitless *number* values like `width: 300` are unchanged.)
@@ -84,7 +84,7 @@ Each of these changes will continue to work as before with a new warning until t
 - Elements will now warn when attempting to read `ref` and `key` from the props.
 - React DOM now attempts to warn for mistyped event handlers on DOM elements (ex: `onclick` which should be `onClick`)
 
-### Notable bug fixes {#notable-bug-fixes}
+### Notable bug fixes
 
 - Fixed multiple small memory leaks
 - Input events are handled more reliably in IE 10 and IE 11; spurious events no longer fire when using a placeholder.
diff --git a/content/blog/2016-03-16-react-v15-rc2.md b/content/blog/2016-03-16-react-v15-rc2.md
index c6711dca25..73030e9a45 100644
--- a/content/blog/2016-03-16-react-v15-rc2.md
+++ b/content/blog/2016-03-16-react-v15-rc2.md
@@ -11,7 +11,7 @@ The other change is to our SVG code. In RC1 we had made the decision to pass thr
 
 Thanks again to everybody who has tried the RC1 and reported issues. It has been extremely important and we wouldn't be able to do this without your help!
 
-## Installation {#installation}
+## Installation
 
 We recommend using React from `npm` and using a tool like browserify or webpack to build your code into a single bundle. To install the two packages:
 
diff --git a/content/blog/2016-03-29-react-v0.14.8.md b/content/blog/2016-03-29-react-v0.14.8.md
index 1e1cf6310e..2a5bc763fa 100644
--- a/content/blog/2016-03-29-react-v0.14.8.md
+++ b/content/blog/2016-03-29-react-v0.14.8.md
@@ -26,7 +26,7 @@ We've also published version `0.14.8` of the `react`, `react-dom`, and addons pa
 
 - - -
 
-## Changelog {#changelog}
+## Changelog
 
-### React {#react}
+### React
 - Fixed memory leak when rendering on the server
diff --git a/content/blog/2016-04-07-react-v15.md b/content/blog/2016-04-07-react-v15.md
index c847aa9d5a..1731d11a00 100644
--- a/content/blog/2016-04-07-react-v15.md
+++ b/content/blog/2016-04-07-react-v15.md
@@ -19,7 +19,7 @@ While this isn’t directly related to the release, we understand that in order
 
 We are also experimenting with a new changelog format in this post. Every change now links to the corresponding pull request and mentions the author. Let us know whether you find this useful!
 
-## Upgrade Guide {#upgrade-guide}
+## Upgrade Guide
 
 As usual with major releases, React 15 will remove support for some of the patterns deprecated nine months ago in React 0.14. We know changes can be painful (the Facebook codebase has over 20,000 React components, and that’s not even counting React Native), so we always try to make changes gradually in order to minimize the pain.
 
@@ -27,7 +27,7 @@ If your code is free of warnings when running under React 0.14, upgrading should
 
 See the changelog below for more details.
 
-## Installation {#installation}
+## Installation
 
 We recommend using React from `npm` and using a tool like browserify or webpack to build your code into a single bundle. To install the two packages:
 
@@ -47,9 +47,9 @@ If you can’t use `npm` yet, we provide pre-built browser builds for your conve
   Dev build with warnings: <https://fb.me/react-dom-15.0.0.js>  
   Minified build for production: <https://fb.me/react-dom-15.0.0.min.js>  
 
-## Changelog {#changelog}
+## Changelog
 
-### Major changes {#major-changes}
+### Major changes
 
 - #### `document.createElement` is in and `data-reactid` is out
 
@@ -83,7 +83,7 @@ If you can’t use `npm` yet, we provide pre-built browser builds for your conve
 
     <small>[@zpao](https://github.com/zpao) in [#6243](https://github.com/facebook/react/pull/6243)</small>
 
-### Breaking changes {#breaking-changes}
+### Breaking changes
 
 - #### No more extra `<span>`s
 
@@ -125,7 +125,7 @@ If you can’t use `npm` yet, we provide pre-built browser builds for your conve
     - React-specific properties on DOM `refs` (e.g. `this.refs.div.props`) were deprecated, and are removed now.  
     <small>[@jimfb](https://github.com/jimfb) in [#5495](https://github.com/facebook/react/pull/5495)</small>
 
-### New deprecations, introduced with a warning {#new-deprecations-introduced-with-a-warning}
+### New deprecations, introduced with a warning
 
 Each of these changes will continue to work as before with a new warning until the release of React 16 so you can upgrade your code gradually.
 
@@ -138,7 +138,7 @@ Each of these changes will continue to work as before with a new warning until t
 - `ReactPerf.printDOM()` was renamed to `ReactPerf.printOperations()`, and `ReactPerf.getMeasurementsSummaryMap()` was renamed to `ReactPerf.getWasted()`.  
 <small>[@gaearon](https://github.com/gaearon) in [#6287](https://github.com/facebook/react/pull/6287)</small>
 
-### New helpful warnings {#new-helpful-warnings}
+### New helpful warnings
 
 - If you use a minified copy of the _development_ build, React DOM kindly encourages you to use the faster production build instead.  
 <small>[@sophiebits](https://github.com/sophiebits) in [#5083](https://github.com/facebook/react/pull/5083)</small>
@@ -182,7 +182,7 @@ Each of these changes will continue to work as before with a new warning until t
 - PropTypes: `arrayOf()` and `objectOf()` provide better error messages for invalid arguments.  
 <small>[@chicoxyzzy](https://github.com/chicoxyzzy) in [#5390](https://github.com/facebook/react/pull/5390)</small>
 
-### Notable bug fixes {#notable-bug-fixes}
+### Notable bug fixes
 
 - Fixed multiple small memory leaks.  
 <small>[@sophiebits](https://github.com/sophiebits) in [#4983](https://github.com/facebook/react/pull/4983) and [@victor-homyakov](https://github.com/victor-homyakov) in [#6309](https://github.com/facebook/react/pull/6309)</small>
@@ -235,7 +235,7 @@ Each of these changes will continue to work as before with a new warning until t
 - Add-Ons: ReactPerf no longer instruments adding or removing an event listener because they don’t really touch the DOM due to event delegation.  
 <small>[@antoaravinth](https://github.com/antoaravinth) in [#5209](https://github.com/facebook/react/pull/5209)</small>
 
-### Other improvements {#improvements}
+### Other improvements
 
 - React now uses `loose-envify` instead of `envify` so it installs fewer transitive dependencies.  
 <small>[@qerub](https://github.com/qerub) in [#6303](https://github.com/facebook/react/pull/6303)</small>
diff --git a/content/blog/2016-04-08-react-v15.0.1.md b/content/blog/2016-04-08-react-v15.0.1.md
index 6db9cc4225..2f1b14bd07 100644
--- a/content/blog/2016-04-08-react-v15.0.1.md
+++ b/content/blog/2016-04-08-react-v15.0.1.md
@@ -23,12 +23,12 @@ As usual, you can get install the `react` package via npm or download a browser
   Dev build with warnings: <https://fb.me/react-dom-15.0.1.js>  
   Minified build for production: <https://fb.me/react-dom-15.0.1.min.js>  
 
-## Changelog {#changelog}
+## Changelog
 
-### React {#react}
+### React
 - Restore `React.__spread` API to unbreak code compiled with some tools making use of this undocumented API. It is now officially deprecated.  
   <small>[@zpao](https://github.com/zpao) in [#6444](https://github.com/facebook/react/pull/6444)</small>
 
-### ReactDOM {#reactdom}
+### ReactDOM
 - Fixed issue resulting in loss of cursor position in controlled inputs.  
   <small>[@sophiebits](https://github.com/sophiebits) in [#6449](https://github.com/facebook/react/pull/6449)</small>
diff --git a/content/blog/2016-07-13-mixins-considered-harmful.md b/content/blog/2016-07-13-mixins-considered-harmful.md
index 2ea907ea8a..957bd71ad1 100644
--- a/content/blog/2016-07-13-mixins-considered-harmful.md
+++ b/content/blog/2016-07-13-mixins-considered-harmful.md
@@ -13,7 +13,7 @@ Three years passed since React was released. The landscape has changed. Multiple
 
 In this post, we will consider the problems commonly caused by mixins. Then we will suggest several alternative patterns for the same use cases. We have found those patterns to scale better with the complexity of the codebase than mixins.
 
-## Why Mixins are Broken {#why-mixins-are-broken}
+## Why Mixins are Broken
 
 At Facebook, React usage has grown from a few components to thousands of them. This gives us a window into how people use React. Thanks to declarative rendering and top-down data flow, many teams were able to fix a bunch of bugs while shipping new features as they adopted React.
 
@@ -21,7 +21,7 @@ However it’s inevitable that some of our code using React gradually became inc
 
 This doesn’t mean that mixins themselves are bad. People successfully employ them in different languages and paradigms, including some functional languages. At Facebook, we extensively use traits in Hack which are fairly similar to mixins. Nevertheless, we think that mixins are unnecessary and problematic in React codebases. Here’s why.
 
-### Mixins introduce implicit dependencies {#mixins-introduce-implicit-dependencies}
+### Mixins introduce implicit dependencies
 
 Sometimes a component relies on a certain method defined in the mixin, such as `getClassName()`. Sometimes it’s the other way around, and mixin calls a method like `renderHeader()` on the component. JavaScript is a dynamic language so it’s hard to enforce or document these dependencies.
 
@@ -31,7 +31,7 @@ These implicit dependencies make it hard for new team members to contribute to a
 
 Often, mixins come to depend on other mixins, and removing one of them breaks the other. In these situations it is very tricky to tell how the data flows in and out of mixins, and what their dependency graph looks like. Unlike components, mixins don’t form a hierarchy: they are flattened and operate in the same namespace.
 
-### Mixins cause name clashes {#mixins-cause-name-clashes}
+### Mixins cause name clashes
 
 There is no guarantee that two particular mixins can be used together. For example, if `FluxListenerMixin` defines `handleChange()` and `WindowSizeMixin` defines `handleChange()`, you can’t use them together. You also can’t define a method with this name on your own component.
 
@@ -41,7 +41,7 @@ If you have a name conflict with a mixin from a third party package, you can’t
 
 The situation is no better for mixin authors. Even adding a new method to a mixin is always a potentially breaking change because a method with the same name might already exist on some of the components using it, either directly or through another mixin. Once written, mixins are hard to remove or change. Bad ideas don’t get refactored away because refactoring is too risky.
 
-### Mixins cause snowballing complexity {#mixins-cause-snowballing-complexity}
+### Mixins cause snowballing complexity
 
 Even when mixins start out simple, they tend to become complex over time. The example below is based on a real scenario I’ve seen play out in a codebase.
 
@@ -55,7 +55,7 @@ Every new requirement makes the mixins harder to understand. Components using th
 
 These are the same problems we faced building apps before React. We found that they are solved by declarative rendering, top-down data flow, and encapsulated components. At Facebook, we have been migrating our code to use alternative patterns to mixins, and we are generally happy with the results. You can read about those patterns below.
 
-## Migrating from Mixins {#migrating-from-mixins}
+## Migrating from Mixins
 
 Let’s make it clear that mixins are not technically deprecated. If you use `React.createClass()`, you may keep using them. We only say that they didn’t work well for us, and so we won’t recommend using them in the future.
 
@@ -63,7 +63,7 @@ Every section below corresponds to a mixin usage pattern that we found in the Fa
 
 We hope that you find this list helpful. Please let us know if we missed important use cases so we can either amend the list or be proven wrong!
 
-### Performance Optimizations {#performance-optimizations}
+### Performance Optimizations
 
 One of the most commonly used mixins is [`PureRenderMixin`](/docs/pure-render-mixin.html). You might be using it in some components to [prevent unnecessary re-renders](/docs/advanced-performance.html#shouldcomponentupdate-in-action) when the props and state are shallowly equal to the previous props and state:
 
@@ -78,7 +78,7 @@ var Button = React.createClass({
 });
 ```
 
-#### Solution {#solution}
+#### Solution
 
 To express the same without mixins, you can use the [`shallowCompare`](/docs/shallow-compare.html) function directly instead:
 
@@ -99,7 +99,7 @@ If you use a custom mixin implementing a `shouldComponentUpdate` function with d
 
 We understand that more typing can be annoying. For the most common case, we plan to [introduce a new base class](https://github.com/facebook/react/pull/7195) called `React.PureComponent` in the next minor release. It uses the same shallow comparison as `PureRenderMixin` does today.
 
-### Subscriptions and Side Effects {#subscriptions-and-side-effects}
+### Subscriptions and Side Effects
 
 The second most common type of mixins that we encountered are mixins that subscribe a React component to a third-party data source. Whether this data source is a Flux Store, an Rx Observable, or something else, the pattern is very similar: the subscription is created in `componentDidMount`, destroyed in `componentWillUnmount`, and the change handler calls `this.setState()`.
 
@@ -145,13 +145,13 @@ var CommentList = React.createClass({
 module.exports = CommentList;
 ```
 
-#### Solution {#solution-1}
+#### Solution
 
 If there is just one component subscribed to this data source, it is fine to embed the subscription logic right into the component. Avoid premature abstractions.
 
 If several components used this mixin to subscribe to a data source, a nice way to avoid repetition is to use a pattern called [“higher-order components”](https://medium.com/@dan_abramov/mixins-are-dead-long-live-higher-order-components-94a0d2f9e750). It can sound intimidating so we will take a closer look at how this pattern naturally emerges from the component model.
 
-#### Higher-Order Components Explained {#higher-order-components-explained}
+#### Higher-Order Components Explained
 
 Let’s forget about React for a second. Consider these two functions that add and multiply numbers, logging the results as they do that:
 
@@ -339,7 +339,7 @@ var CommentListWithSubscription = withSubscription(CommentList);
 module.exports = CommentListWithSubscription;
 ```
 
-#### Solution, Revisited {#solution-revisited}
+#### Solution, Revisited
 
 Now that we understand higher-order components better, let’s take another look at the complete solution that doesn’t involve mixins. There are a few minor changes that are annotated with inline comments:
 
@@ -395,7 +395,7 @@ Higher-order components are a powerful pattern. You can pass additional argument
 
 Like any solution, higher-order components have their own pitfalls. For example, if you heavily use [refs](/docs/more-about-refs.html), you might notice that wrapping something into a higher-order component changes the ref to point to the wrapping component. In practice we discourage using refs for component communication so we don’t think it’s a big issue. In the future, we might consider adding [ref forwarding](https://github.com/facebook/react/issues/4213) to React to solve this annoyance.
 
-### Rendering Logic {#rendering-logic}
+### Rendering Logic
 
 The next most common use case for mixins that we discovered in our codebase is sharing rendering logic between components.
 
@@ -436,7 +436,7 @@ var UserRow = React.createClass({
 
 Multiple components may be sharing `RowMixin` to render the header, and each of them would need to define `getHeaderText()`.
 
-#### Solution {#solution-2}
+#### Solution
 
 If you see rendering logic inside a mixin, it’s time to extract a component!
 
@@ -469,7 +469,7 @@ Props keep component dependencies explicit, easy to replace, and enforceable wit
 >
 > Defining components as functions is not required. There is also nothing wrong with using lifecycle methods and state—they are first-class React features. We use function components in this example because they are easier to read and we didn’t need those extra features, but classes would work just as fine.
 
-### Context {#context}
+### Context
 
 Another group of mixins we discovered were helpers for providing and consuming [React context](/docs/context.html). Context is an experimental unstable feature, has [certain issues](https://github.com/facebook/react/issues/2517), and will likely change its API in the future. We don’t recommend using it unless you’re confident there is no other way of solving your problem.
 
@@ -510,7 +510,7 @@ var Link = React.createClass({
 module.exports = Link;
 ```
 
-#### Solution {#solution-3}
+#### Solution
 
 We agree that hiding context usage from consuming components is a good idea until the context API stabilizes. However, we recommend using higher-order components instead of mixins for this.
 
@@ -555,7 +555,7 @@ module.exports = withRouter(Link);
 
 If you’re using a third party library that only provides a mixin, we encourage you to file an issue with them linking to this post so that they can provide a higher-order component instead. In the meantime, you can create a higher-order component around it yourself in exactly the same way.
 
-### Utility Methods {#utility-methods}
+### Utility Methods
 
 Sometimes, mixins are used solely to share utility functions between components:
 
@@ -584,7 +584,7 @@ var Button = React.createClass({
 });
 ```
 
-#### Solution {#solution-4}
+#### Solution
 
 Put utility functions into regular JavaScript modules and import them. This also makes it easier to test them or use them outside of your components:
 
@@ -603,7 +603,7 @@ var Button = React.createClass({
 });
 ```
 
-### Other Use Cases {#other-use-cases}
+### Other Use Cases
 
 Sometimes people use mixins to selectively add logging to lifecycle methods in some components. In the future, we intend to provide an [official DevTools API](https://github.com/facebook/react/issues/5306) that would let you implement something similar without touching the components. However it’s still very much a work in progress. If you heavily depend on logging mixins for debugging, you might want to keep using those mixins for a little longer.
 
diff --git a/content/blog/2016-07-22-create-apps-with-no-configuration.md b/content/blog/2016-07-22-create-apps-with-no-configuration.md
index f7ae427308..3c09e321f4 100644
--- a/content/blog/2016-07-22-create-apps-with-no-configuration.md
+++ b/content/blog/2016-07-22-create-apps-with-no-configuration.md
@@ -5,9 +5,9 @@ author: [gaearon]
 
 **[Create React App](https://github.com/facebookincubator/create-react-app)** is a new officially supported way to create single-page React applications. It offers a modern build setup with no configuration.
 
-## Getting Started {#getting-started}
+## Getting Started
 
-### Installation {#installation}
+### Installation
 
 First, install the global package:
 
@@ -17,7 +17,7 @@ npm install -g create-react-app
 
 Node.js 4.x or higher is required.
 
-### Creating an App {#creating-an-app}
+### Creating an App
 
 Now you can use it to create a new app:
 
@@ -29,7 +29,7 @@ This will take a while as npm installs the transitive dependencies, but once it
 
 ![created folder](../images/blog/create-apps-with-no-configuration/created-folder.png)
 
-### Starting the Server {#starting-the-server}
+### Starting the Server
 
 Run `npm start` to launch the development server. The browser will open automatically with the created app’s URL.
 
@@ -46,7 +46,7 @@ ESLint is also integrated so lint warnings are displayed right in the console:
 
 We only picked a small subset of lint rules that often lead to bugs.
 
-### Building for Production {#building-for-production}
+### Building for Production
 
 To build an optimized bundle, run `npm run build`:
 
@@ -54,7 +54,7 @@ To build an optimized bundle, run `npm run build`:
 
 It is minified, correctly envified, and the assets include content hashes for caching.
 
-### One Dependency {#one-dependency}
+### One Dependency
 
 Your `package.json` contains only a single build dependency and a few scripts:
 
@@ -78,7 +78,7 @@ Your `package.json` contains only a single build dependency and a few scripts:
 
 We take care of updating Babel, ESLint, and webpack to stable compatible versions so you can update a single dependency to get them all.
 
-### Zero Configuration {#zero-configuration}
+### Zero Configuration
 
 It is worth repeating: there are no configuration files or complicated folder structures. The tool only generates the files you need to build your app.
 
@@ -99,7 +99,7 @@ hello-world/
 
 All the build settings are preconfigured and can’t be changed. Some features, such as testing, are currently missing. This is an intentional limitation, and we recognize it might not work for everybody. And this brings us to the last point.
 
-### No Lock-In {#no-lock-in}
+### No Lock-In
 
 We first saw this feature in [Enclave](https://github.com/eanplatter/enclave), and we loved it. We talked to [Ean](https://twitter.com/EanPlatter), and he was excited to collaborate with us. He already sent a few pull requests!
 
@@ -107,7 +107,7 @@ We first saw this feature in [Enclave](https://github.com/eanplatter/enclave), a
 
 We expect that at early stages, many people will “eject” for one reason or another, but as we learn from them, we will make the default setup more and more compelling while still providing no configuration.
 
-## Try It Out! {#try-it-out}
+## Try It Out!
 
 You can find [**Create React App**](https://github.com/facebookincubator/create-react-app) with additional instructions on GitHub.
 
@@ -115,7 +115,7 @@ This is an experiment, and only time will tell if it becomes a popular way of cr
 
 We welcome you to participate in this experiment. Help us build the React tooling that more people can use. We are always [open to feedback](https://github.com/facebookincubator/create-react-app/issues/11).
 
-## The Backstory {#the-backstory}
+## The Backstory
 
 React was one of the first libraries to embrace transpiling JavaScript. As a result, even though you can [learn React without any tooling](https://github.com/facebook/react/blob/3fd582643ef3d222a00a0c756292c15b88f9f83c/examples/basic-jsx/index.html), the React ecosystem has commonly become associated with an overwhelming explosion of tools.
 
@@ -135,7 +135,7 @@ This doesn’t mean those tools aren’t great. To many of us, they have become
 
 Still, we knew it was frustrating to spend days setting up a project when all you wanted was to learn React. We wanted to fix this.
 
-## Could We Fix This? {#could-we-fix-this}
+## Could We Fix This?
 
 We found ourselves in an unusual dilemma.
 
@@ -145,7 +145,7 @@ However, tooling at Facebook is different than at many smaller companies. Lintin
 
 The React community is very important to us. We knew that we couldn’t fix the problem within the limits of our open source philosophy. This is why we decided to make an exception, and to ship something that we didn’t use ourselves, but that we thought would be useful to the community.
 
-## The Quest for a React <abbr title="Command Line Interface">CLI</abbr> {#the-quest-for-a-react-abbr-titlecommand-line-interfacecliabbr}
+## The Quest for a React <abbr title="Command Line Interface">CLI</abbr>
 
 Having just attended [EmberCamp](http://embercamp.com/) a week ago, I was excited about [Ember CLI](https://ember-cli.com/). Ember users have a great “getting started” experience thanks to a curated set of tools united under a single command-line interface. I have heard similar feedback about [Elm Reactor](https://github.com/elm-lang/elm-reactor).
 
diff --git a/content/blog/2016-08-05-relay-state-of-the-state.md b/content/blog/2016-08-05-relay-state-of-the-state.md
index 7ed34e9c0a..3248738fee 100644
--- a/content/blog/2016-08-05-relay-state-of-the-state.md
+++ b/content/blog/2016-08-05-relay-state-of-the-state.md
@@ -5,7 +5,7 @@ author: [josephsavona]
 
 This month marks a year since we released Relay and we'd like to share an update on the project and what's next.
 
-## A Year In Review {#a-year-in-review}
+## A Year In Review
 
 A year after launch, we're incredibly excited to see an active community forming around Relay and that companies such as Twitter are [using Relay in production](https://fabric.io/blog/building-fabric-mission-control-with-graphql-and-relay):
 
@@ -28,11 +28,11 @@ We've also seen some great open-source projects spring up around Relay:
 
 This is just a small sampling of the community's contributions. So far we've merged over 300 PRs - about 25% of our commits - from over 80 of you. These PRs have improved everything from the website and docs down the very core of the framework. We're humbled by these outstanding contributions and excited to keep working with each of you!
 
-# Retrospective & Roadmap {#retrospective--roadmap}
+# Retrospective & Roadmap
 
 Earlier this year we paused to reflect on the state of the project. What was working well? What could be improved? What features should we add, and what could we remove? A few themes emerged: performance on mobile, developer experience, and empowering the community.
 
-## Mobile Perf {#mobile-perf}
+## Mobile Perf
 
 First, Relay was built to serve the needs of product developers at Facebook. In 2016, that means helping developers to build apps that work well on [mobile devices connecting on slower networks](https://newsroom.fb.com/news/2015/10/news-feed-fyi-building-for-all-connectivity/). For example, people in developing markets commonly use [2011 year-class phones](https://code.facebook.com/posts/307478339448736/year-class-a-classification-system-for-android/) and connect via [2G class networks](https://code.facebook.com/posts/952628711437136/classes-performance-and-network-segmentation-on-android/). These scenarios present their own challenges.
 
@@ -44,17 +44,17 @@ Ideally, though, we could begin fetching data as soon as the native code had loa
 
 The key is that GraphQL is already static - we just need to fully embrace this fact. More on this later.
 
-## Developer Experience {#developer-experience}
+## Developer Experience
 
 Next, we've paid attention to the community's feedback and know that, to put it simply, Relay could be "easier" to use (and "simpler" too). This isn't entirely surprising to us - Relay was originally designed as a routing library and gradually morphed into a data-fetching library. Concepts like Relay "routes", for example, no longer serve as critical a role and are just one more concept that developers have to learn about. Another example is mutations: while writes *are* inherently more complex than reads, our API doesn't make the simple things simple enough.
 
 Alongside our focus on mobile performance, we've also kept the developer experience in mind as we evolve Relay core.
 
-## Empowering the Community {#empowering-the-community}
+## Empowering the Community
 
 Finally, we want to make it easier for people in the community to develop useful libraries that work with Relay. By comparison, React's small surface area - components - allows developers to build cool things like routing, higher-order components, or reusable text editors. For Relay, this would mean having the framework provide core primitives that users can build upon. We want it to be possible for the community to integrate Relay with view libraries other than React, or to build real-time subscriptions as a complementary library.
 
-# What's Next {#whats-next}
+# What's Next
 
 These were big goals, and also a bit scary; we knew that incremental improvements would only allow us to move so fast. So in April we started a project to build a new implementation of Relay core targeting low-end mobile devices from the start.
 
@@ -71,7 +71,7 @@ Stepping back, we recognize that any API changes will require an investment on y
 
 Ultimately, we're making these changes because we believe they make Relay better all around: simpler for developers building apps and faster for the people using them.
 
-# Conclusion {#conclusion}
+# Conclusion
 
 If you made it this far, congrats and thanks for reading! We'll be sharing more information about these changes in some upcoming talks:
 
diff --git a/content/blog/2016-09-28-our-first-50000-stars.md b/content/blog/2016-09-28-our-first-50000-stars.md
index de9f9c8225..07d78020d0 100644
--- a/content/blog/2016-09-28-our-first-50000-stars.md
+++ b/content/blog/2016-09-28-our-first-50000-stars.md
@@ -5,7 +5,7 @@ author: [vjeux]
 
 Just three and a half years ago we open sourced a little JavaScript library called React. The journey since that day has been incredibly exciting.
 
-## Commemorative T-Shirt {#commemorative-t-shirt}
+## Commemorative T-Shirt
 
 In order to celebrate 50,000 GitHub stars, [Maggie Appleton](http://www.maggieappleton.com/) from [egghead.io](http://egghead.io/) has designed us a special T-shirt, which will be available for purchase from Teespring **only for a week** through Thursday, October 6. Maggie also wrote [a blog post](https://www.behance.net/gallery/43269677/Reacts-50000-Stars-Shirt) showing all the different concepts she came up with before settling on the final design.
 
@@ -20,7 +20,7 @@ The T-shirts are super soft using American Apparel's tri-blend fabric; we also h
 
 Proceeds from the shirts will be donated to [CODE2040](http://www.code2040.org/), a nonprofit that creates access, awareness, and opportunities in technology for underrepresented minorities with a specific focus on Black and Latinx talent.
 
-## Archeology {#archeology}
+## Archeology
 
 We've spent a lot of time trying to explain the concepts behind React and the problems it attempts to solve, but we haven't talked much about how React evolved before being open sourced. This milestone seemed like as good a time as any to dig through the earliest commits and share some of the more important moments and fun facts.
 
@@ -81,7 +81,7 @@ TestProject.PersonDisplayer = {
 };
 ```
 
-## FBolt is Born {#fbolt-is-born}
+## FBolt is Born
 
 Through his FaxJS experiment, Jordan became convinced that functional APIs  — which discouraged mutation —  offered a better, more scalable way to build user interfaces. He imported his library into Facebook's codebase in March of 2012 and renamed it “FBolt”, signifying an extension of Bolt where components are written in a functional programming style. Or maybe “FBolt” was a nod to FaxJS – he didn't tell us! ;)
 
@@ -96,7 +96,7 @@ I might add for the sake of discussion, that many systems advertise some kind of
 
 Most of Tom's other commits at the time were on the first version of [GraphiQL](https://github.com/graphql/graphiql), a project which was recently open sourced.
 
-## Adding JSX {#adding-jsx}
+## Adding JSX
 
 Since about 2010 Facebook has been using an extension of PHP called [XHP](https://www.facebook.com/notes/facebook-engineering/xhp-a-new-way-to-write-php/294003943919/), which enables engineers to create UIs using XML literals right inside their PHP code. It was first introduced to help prevent XSS holes but ended up being an excellent way to structure applications with custom components.
 
@@ -180,7 +180,7 @@ Adam made a very insightful comment, which is now the default way we write lists
 
 React didn't end up using Adam's implementation directly. Instead, we created JSX by forking [js-xml-literal](https://github.com/laverdet/js-xml-literal), a side project by XHP creator Marcel Laverdet. JSX took its name from js-xml-literal, which Jordan modified to just be syntactic sugar for deeply nested function calls.
 
-## API Churn {#api-churn}
+## API Churn
 
 During the first year of React, internal adoption was growing quickly but there was quite a lot of churn in the component APIs and naming conventions:
 
@@ -214,7 +214,7 @@ As the project was about to be open sourced, [Lee Byron](https://twitter.com/lee
     * objectWillAction
     * objectDidAction
 
-## Instagram {#instagram}
+## Instagram
 
 In 2012, Instagram got acquired by Facebook. [Pete Hunt](https://twitter.com/floydophone), who was working on Facebook photos and videos at the time, joined their newly formed web team. He wanted to build their website completely in React, which was in stark contrast with the incremental adoption model that had been used at Facebook.
 
diff --git a/content/blog/2016-11-16-react-v15.4.0.md b/content/blog/2016-11-16-react-v15.4.0.md
index 4c92845956..f1322c7c08 100644
--- a/content/blog/2016-11-16-react-v15.4.0.md
+++ b/content/blog/2016-11-16-react-v15.4.0.md
@@ -7,7 +7,7 @@ Today we are releasing React 15.4.0.
 
 We didn't announce the [previous](https://github.com/facebook/react/blob/master/CHANGELOG.md#1510-may-20-2016) [minor](https://github.com/facebook/react/blob/master/CHANGELOG.md#1520-july-1-2016) [releases](https://github.com/facebook/react/blob/master/CHANGELOG.md#1530-july-29-2016) on the blog because most of the changes were bug fixes. However, 15.4.0 is a special release, and we would like to highlight a few notable changes in it.
 
-### Separating React and React DOM {#separating-react-and-react-dom}
+### Separating React and React DOM
 
 [More than a year ago](/blog/2015/09/10/react-v0.14-rc1.html#two-packages-react-and-react-dom), we started separating React and React DOM into separate packages. We deprecated `React.render()` in favor of `ReactDOM.render()` in React 0.14, and removed DOM-specific APIs from `React` completely in React 15. However, the React DOM implementation still [secretly lived inside the React package](https://www.reddit.com/r/javascript/comments/3m6wyu/found_this_line_in_the_react_codebase_made_me/cvcyo4a/).
 
@@ -21,7 +21,7 @@ However, there is a possibility that you imported private APIs from `react/lib/*
 
 Another thing to watch out for is that React DOM Server is now about the same size as React DOM since it contains its own copy of the React reconciler. We don't recommend using React DOM Server on the client in most cases.
 
-### Profiling Components with Chrome Timeline {#profiling-components-with-chrome-timeline}
+### Profiling Components with Chrome Timeline
 
 You can now visualize React components in the Chrome Timeline. This lets you see which components exactly get mounted, updated, and unmounted, how much time they take relative to each other.
 
@@ -43,7 +43,7 @@ Note that the numbers are relative so components will render faster in productio
 
 Currently Chrome, Edge, and IE are the only browsers supporting this feature, but we use the standard [User Timing API](https://developer.mozilla.org/en-US/docs/Web/API/User_Timing_API) so we expect more browsers to add support for it.
 
-### Mocking Refs for Snapshot Testing {#mocking-refs-for-snapshot-testing}
+### Mocking Refs for Snapshot Testing
 
 If you're using Jest [snapshot testing](https://facebook.github.io/jest/blog/2016/07/27/jest-14.html), you might have had [issues](https://github.com/facebook/react/issues/7371) with components that rely on refs. With React 15.4.0, we introduce a way to provide mock refs to the test renderer. For example, consider this component using a ref in `componentDidMount`:
 
@@ -94,7 +94,7 @@ You can learn more about snapshot testing in [this Jest blog post](https://faceb
 
 ---
 
-## Installation {#installation}
+## Installation
 
 We recommend using [Yarn](https://yarnpkg.com/) or [npm](https://www.npmjs.com/) for managing front-end dependencies. If you're new to package managers, the [Yarn documentation](https://yarnpkg.com/en/docs/getting-started) is a good place to get started.
 
@@ -133,9 +133,9 @@ We've also published version `15.4.0` of the `react`, `react-dom`, and addons pa
 
 - - -
 
-## Changelog {#changelog}
+## Changelog
 
-### React {#react}
+### React
 * React package and browser build no longer "secretly" includes React DOM.  
   <small>([@sebmarkbage](https://github.com/sebmarkbage) in [#7164](https://github.com/facebook/react/pull/7164) and [#7168](https://github.com/facebook/react/pull/7168))</small>
 * Required PropTypes now fail with specific messages for null and undefined.  
@@ -143,7 +143,7 @@ We've also published version `15.4.0` of the `react`, `react-dom`, and addons pa
 * Improved development performance by freezing children instead of copying.  
   <small>([@keyanzhang](https://github.com/keyanzhang) in [#7455](https://github.com/facebook/react/pull/7455))</small>
 
-### React DOM {#react-dom}
+### React DOM
 * Fixed occasional test failures when React DOM is used together with shallow renderer.  
   <small>([@goatslacker](https://github.com/goatslacker) in [#8097](https://github.com/facebook/react/pull/8097))</small>
 * Added a warning for invalid `aria-` attributes.  
@@ -159,15 +159,15 @@ We've also published version `15.4.0` of the `react`, `react-dom`, and addons pa
 * Fixed a bug with updating text in IE 8.  
   <small>([@mnpenner](https://github.com/mnpenner) in [#7832](https://github.com/facebook/react/pull/7832))</small>
 
-### React Perf {#react-perf}
+### React Perf
 * When ReactPerf is started, you can now view the relative time spent in components as a chart in Chrome Timeline.  
   <small>([@gaearon](https://github.com/gaearon) in [#7549](https://github.com/facebook/react/pull/7549))</small>
 
-### React Test Utils {#react-test-utils}
+### React Test Utils
 * If you call `Simulate.click()` on a `<input disabled onClick={foo} />` then `foo` will get called whereas it didn't before.  
   <small>([@nhunzaker](https://github.com/nhunzaker) in [#7642](https://github.com/facebook/react/pull/7642))</small>
 
-### React Test Renderer {#react-test-renderer}
+### React Test Renderer
 * Due to packaging changes, it no longer crashes when imported together with React DOM in the same file.  
   <small>([@sebmarkbage](https://github.com/sebmarkbage) in [#7164](https://github.com/facebook/react/pull/7164) and [#7168](https://github.com/facebook/react/pull/7168))</small>
 * `ReactTestRenderer.create()` now accepts `{createNodeMock: element => mock}` as an optional argument so you can mock refs with snapshot testing.  
diff --git a/content/blog/2017-04-07-react-v15.5.0.md b/content/blog/2017-04-07-react-v15.5.0.md
index b5741f9ab9..9446f0e834 100644
--- a/content/blog/2017-04-07-react-v15.5.0.md
+++ b/content/blog/2017-04-07-react-v15.5.0.md
@@ -7,7 +7,7 @@ It's been exactly one year since the last breaking change to React. Our next maj
 
 To that end, today we're releasing React 15.5.0.
 
-### New Deprecation Warnings {#new-deprecation-warnings}
+### New Deprecation Warnings
 
 The biggest change is that we've extracted `React.PropTypes` and `React.createClass` into their own packages. Both are still accessible via the main `React` object, but using either will log a one-time deprecation warning to the console when in development mode. This will enable future code size optimizations.
 
@@ -19,7 +19,7 @@ So while the warnings may cause frustration in the short-term, we believe **prod
 
 For each of these new deprecations, we've provided a codemod to automatically migrate your code. They are available as part of the [react-codemod](https://github.com/reactjs/react-codemod) project.
 
-### Migrating from React.PropTypes {#migrating-from-reactproptypes}
+### Migrating from React.PropTypes
 
 Prop types are a feature for runtime validation of props during development. We've extracted the built-in prop types to a separate package to reflect the fact that not everybody uses them.
 
@@ -65,7 +65,7 @@ The `propTypes`, `contextTypes`, and `childContextTypes` APIs will work exactly
 
 You may also consider using [Flow](https://flow.org/) to statically type check your JavaScript code, including [React components](https://flow.org/en/docs/react/components/).
 
-### Migrating from React.createClass {#migrating-from-reactcreateclass}
+### Migrating from React.createClass
 
 When React was initially released, there was no idiomatic way to create classes in JavaScript, so we provided our own: `React.createClass`.
 
@@ -106,7 +106,7 @@ Basic usage:
 jscodeshift -t react-codemod/transforms/class.js path/to/components
 ```
 
-### Discontinuing support for React Addons {#discontinuing-support-for-react-addons}
+### Discontinuing support for React Addons
 
 We're discontinuing active maintenance of React Addons packages. In truth, most of these packages haven't been actively maintained in a long time. They will continue to work indefinitely, but we recommend migrating away as soon as you can to prevent future breakages.
 
@@ -121,7 +121,7 @@ We're discontinuing active maintenance of React Addons packages. In truth, most
 
 We're also discontinuing support for the `react-with-addons` UMD build. It will be removed in React 16.
 
-### React Test Utils {#react-test-utils}
+### React Test Utils
 
 Currently, the React Test Utils live inside `react-addons-test-utils`. As of 15.5, we're deprecating that package and moving them to `react-dom/test-utils` instead:
 
@@ -147,7 +147,7 @@ import { createRenderer } from 'react-test-renderer/shallow';
 
 ---
 
-## Acknowledgements {#acknowledgements}
+## Acknowledgements
 
 A special thank you to these folks for transferring ownership of npm package names:
 
@@ -157,7 +157,7 @@ A special thank you to these folks for transferring ownership of npm package nam
 
 ---
 
-## Installation {#installation}
+## Installation
 
 We recommend using [Yarn](https://yarnpkg.com/) or [npm](https://www.npmjs.com/) for managing front-end dependencies. If you're new to package managers, the [Yarn documentation](https://yarnpkg.com/en/docs/getting-started) is a good place to get started.
 
@@ -196,11 +196,11 @@ We've also published version `15.5.0` of the `react`, `react-dom`, and addons pa
 
 ---
 
-## Changelog {#changelog}
+## Changelog
 
-## 15.5.0 (April 7, 2017) {#1550-april-7-2017}
+## 15.5.0 (April 7, 2017)
 
-### React {#react}
+### React
 
 * Added a deprecation warning for `React.createClass`. Points users to create-react-class instead. ([@acdlite](https://github.com/acdlite) in [d9a4fa4](https://github.com/facebook/react/commit/d9a4fa4f51c6da895e1655f32255cf72c0fe620e))
 * Added a deprecation warning for `React.PropTypes`. Points users to prop-types instead. ([@acdlite](https://github.com/acdlite) in [043845c](https://github.com/facebook/react/commit/043845ce75ea0812286bbbd9d34994bb7e01eb28))
@@ -209,17 +209,17 @@ We've also published version `15.5.0` of the `react`, `react-dom`, and addons pa
 * Another fix for Closure Compiler. ([@Shastel](https://github.com/Shastel) in [#8882](https://github.com/facebook/react/pull/8882))
 * Added component stack info to invalid element type warning. ([@n3tr](https://github.com/n3tr) in [#8495](https://github.com/facebook/react/pull/8495))
 
-### React DOM {#react-dom}
+### React DOM
 
 * Fixed Chrome bug when backspacing in number inputs. ([@nhunzaker](https://github.com/nhunzaker) in [#7359](https://github.com/facebook/react/pull/7359))
 * Added `react-dom/test-utils`, which exports the React Test Utils. ([@bvaughn](https://github.com/bvaughn))
 
-### React Test Renderer {#react-test-renderer}
+### React Test Renderer
 
 * Fixed bug where `componentWillUnmount` was not called for children. ([@gre](https://github.com/gre) in [#8512](https://github.com/facebook/react/pull/8512))
 * Added `react-test-renderer/shallow`, which exports the shallow renderer. ([@bvaughn](https://github.com/bvaughn))
 
-### React Addons {#react-addons}
+### React Addons
 
 * Last release for addons; they will no longer be actively maintained.
 * Removed `peerDependencies` so that addons continue to work indefinitely. ([@acdlite](https://github.com/acdlite) and [@bvaughn](https://github.com/bvaughn) in [8a06cd7](https://github.com/facebook/react/commit/8a06cd7a786822fce229197cac8125a551e8abfa) and [67a8db3](https://github.com/facebook/react/commit/67a8db3650d724a51e70be130e9008806402678a))
diff --git a/content/blog/2017-05-18-whats-new-in-create-react-app.md b/content/blog/2017-05-18-whats-new-in-create-react-app.md
index 9446de7e9e..dce35748e6 100644
--- a/content/blog/2017-05-18-whats-new-in-create-react-app.md
+++ b/content/blog/2017-05-18-whats-new-in-create-react-app.md
@@ -11,7 +11,7 @@ As usual with Create React App, **you can enjoy these improvements in your exist
 
 Newly created apps will get these improvements automatically.
 
-### webpack 2 {#webpack-2}
+### webpack 2
 
 >*This change was contributed by [@Timer](https://github.com/Timer) in [#1291](https://github.com/facebookincubator/create-react-app/pull/1291).*
 
@@ -27,7 +27,7 @@ The biggest notable webpack 2 feature is the ability to write and import [ES6 mo
 
 In the future, as the ecosystem around ES6 modules matures, you can expect more improvements to your app's bundle size thanks to [tree shaking](https://webpack.js.org/guides/tree-shaking/).
 
-### Runtime Error Overlay {#error-overlay}
+### Runtime Error Overlay
 
 >*This change was contributed by [@Timer](https://github.com/Timer) and [@nicinabox](https://github.com/nicinabox) in [#1101](https://github.com/facebookincubator/create-react-app/pull/1101), [@bvaughn](https://github.com/bvaughn) in [#2201](https://github.com/facebookincubator/create-react-app/pull/2201).*
 
@@ -44,7 +44,7 @@ A GIF is worth a thousand words:
 In the future, we plan to teach the runtime error overlay to understand more about your React app. For example, after React 16 we plan to show React component stacks in addition to the JavaScript stacks when an error is thrown.
 
 
-### Progressive Web Apps by Default {#progressive-web-apps-by-default}
+### Progressive Web Apps by Default
 
 >*This change was contributed by [@jeffposnick](https://github.com/jeffposnick) in [#1728](https://github.com/facebookincubator/create-react-app/pull/1728).*
 
@@ -57,7 +57,7 @@ New apps automatically have these features, but you can easily convert an existi
 We will be adding [more documentation](https://github.com/facebookincubator/create-react-app/blob/master/packages/react-scripts/template/README.md#making-a-progressive-web-app) on this topic in the coming weeks. Please feel free to [ask any questions](https://github.com/facebookincubator/create-react-app/issues/new) on the issue tracker!
 
 
-### Jest 20 {#jest-20}
+### Jest 20
 
 >*This change was contributed by [@rogeliog](https://github.com/rogeliog) in [#1614](https://github.com/facebookincubator/create-react-app/pull/1614) and [@gaearon](https://github.com/gaearon) in [#2171](https://github.com/facebookincubator/create-react-app/pull/2171).*
    
@@ -69,7 +69,7 @@ Highlights include a new [immersive watch mode](https://facebook.github.io/jest/
 
 Additionally, Create React App now support configuring a few Jest options related to coverage reporting.
 
-### Code Splitting with Dynamic import() {#code-splitting-with-dynamic-import}
+### Code Splitting with Dynamic import()
 
 >*This change was contributed by [@Timer](https://github.com/Timer) in [#1538](https://github.com/facebookincubator/create-react-app/pull/1538) and [@tharakawj](https://github.com/tharakawj) in [#1801](https://github.com/facebookincubator/create-react-app/pull/1801).*
    
@@ -79,7 +79,7 @@ In this release, we are adding support for the [dynamic `import()` proposal](htt
 
 ![Creating chunks with dynamic import](../images/blog/cra-dynamic-import.gif)
 
-### Better Console Output {#better-console-output}
+### Better Console Output
 
 >*This change was contributed by [@gaearon](https://github.com/gaearon) in [#2120](https://github.com/facebookincubator/create-react-app/pull/2120), [#2125](https://github.com/facebookincubator/create-react-app/pull/2125), and [#2161](https://github.com/facebookincubator/create-react-app/pull/2161).*
 
@@ -91,13 +91,13 @@ For example, when you start the development server, we now display the LAN addre
 
 When lint errors are reported, we no longer show the warnings so that you can concentrate on more critical issues. Errors and warnings in the production build output are better formatted, and the build error overlay font size now matches the browser font size more closely.
 
-### But Wait... There's More! {#but-wait-theres-more}
+### But Wait... There's More!
 
 You can only fit so much in a blog post, but there are other long-requested features in this release, such as [environment-specific and local `.env` files](https://github.com/facebookincubator/create-react-app/pull/1344), [a lint rule against confusingly named globals](https://github.com/facebookincubator/create-react-app/pull/2130), [support for multiple proxies in development](https://github.com/facebookincubator/create-react-app/pull/1790), [a customizable browser launch script](https://github.com/facebookincubator/create-react-app/pull/1590), and many bugfixes.
 
 You can read the full changelog and the migration guide in the [v1.0.0 release notes](https://github.com/facebookincubator/create-react-app/releases/tag/v1.0.0).
 
-### Acknowledgements {#acknowledgements}
+### Acknowledgements
 
 This release is a result of months of work from many people in the React community. It is focused on improving both developer and end user experience, as we believe they are complementary and go hand in hand.
 
diff --git a/content/blog/2017-06-13-react-v15.6.0.md b/content/blog/2017-06-13-react-v15.6.0.md
index 55aeccd514..f2f697b95e 100644
--- a/content/blog/2017-06-13-react-v15.6.0.md
+++ b/content/blog/2017-06-13-react-v15.6.0.md
@@ -5,7 +5,7 @@ author: [flarnie]
 
 Today we are releasing React 15.6.0. As we prepare for React 16.0, we have been fixing and cleaning up many things. This release continues to pave the way.
 
-## Improving Inputs {#improving-inputs}
+## Improving Inputs
 
 In React 15.6.0 the `onChange` event for inputs is a little bit more reliable and handles more edge cases, including the following:
 
@@ -18,7 +18,7 @@ In React 15.6.0 the `onChange` event for inputs is a little bit more reliable an
 
 Thanks to [Jason Quense](https://github.com/jquense) and everyone who helped out on those issues and PRs.
 
-## Less Noisy Deprecation Warnings {#less-noisy-deprecation-warnings}
+## Less Noisy Deprecation Warnings
 
 We are also including a couple of new warnings for upcoming deprecations. These should not affect most users, and for more details see the changelog below.
 
@@ -26,7 +26,7 @@ After the last release, we got valuable community feedback that deprecation warn
 
 ---
 
-## Installation {#installation}
+## Installation
 
 We recommend using [Yarn](https://yarnpkg.com/) or [npm](https://www.npmjs.com/) for managing front-end dependencies. If you're new to package managers, the [Yarn documentation](https://yarnpkg.com/en/docs/getting-started) is a good place to get started.
 
@@ -65,18 +65,18 @@ We've also published version `15.6.0` of `react` and `react-dom` on npm, and the
 
 ---
 
-## Changelog {#changelog}
+## Changelog
 
-## 15.6.0 (June 13, 2017) {#1560-june-13-2017}
+## 15.6.0 (June 13, 2017)
 
-### React {#react}
+### React
 
 * Downgrade deprecation warnings to use `console.warn` instead of `console.error`. ([@flarnie](https://github.com/flarnie) in [#9753](https://github.com/facebook/react/pull/9753))
 * Add a deprecation warning for `React.createClass`. Points users to `create-react-class` instead. ([@flarnie](https://github.com/flarnie) in [#9771](https://github.com/facebook/react/pull/9771))
 * Add deprecation warnings and separate module for `React.DOM` factory helpers. ([@nhunzaker](https://github.com/nhunzaker) in [#8356](https://github.com/facebook/react/pull/8356))
 * Warn for deprecation of `React.createMixin` helper, which was never used. ([@aweary](https://github.com/aweary) in [#8853](https://github.com/facebook/react/pull/8853))
 
-### React DOM {#react-dom}
+### React DOM
 
 * Add support for CSS variables in `style` attribute. ([@aweary](https://github.com/aweary) in [#9302](https://github.com/facebook/react/pull/9302))
 * Add support for CSS Grid style properties. ([@ericsakmar](https://github.com/ericsakmar) in [#9185](https://github.com/facebook/react/pull/9185))
@@ -85,7 +85,7 @@ We've also published version `15.6.0` of `react` and `react-dom` on npm, and the
 * Fix bug where controlled number input mistakenly allowed period. ([@nhunzaker](https://github.com/nhunzaker) in [#9584](https://github.com/facebook/react/pull/9584))
 * Fix bug where performance entries were being cleared. ([@chrisui](https://github.com/chrisui) in [#9451](https://github.com/facebook/react/pull/9451))
 
-### React Addons {#react-addons}
+### React Addons
 
 * Fix AMD support for addons depending on `react`. ([@flarnie](https://github.com/flarnie) in [#9919](https://github.com/facebook/react/issues/9919))
 * Fix `isMounted()` to return `true` in `componentWillUnmount`. ([@mridgway](https://github.com/mridgway) in [#9638](https://github.com/facebook/react/issues/9638))
diff --git a/content/blog/2017-07-26-error-handling-in-react-16.md b/content/blog/2017-07-26-error-handling-in-react-16.md
index 7625de7b4a..0fd496ee44 100644
--- a/content/blog/2017-07-26-error-handling-in-react-16.md
+++ b/content/blog/2017-07-26-error-handling-in-react-16.md
@@ -7,11 +7,11 @@ As React 16 release is getting closer, we would like to announce a few changes t
 
 **By the way, [we just released the first beta of React 16 for you to try!](https://github.com/facebook/react/issues/10294)**
 
-## Behavior in React 15 and Earlier {#behavior-in-react-15-and-earlier}
+## Behavior in React 15 and Earlier
 
 In the past, JavaScript errors inside components used to corrupt React’s internal state and cause it to [emit](https://github.com/facebook/react/issues/4026) [cryptic](https://github.com/facebook/react/issues/6895) [errors](https://github.com/facebook/react/issues/8579) on next renders. These errors were always caused by an earlier error in the application code, but React did not provide a way to handle them gracefully in components, and could not recover from them.
 
-## Introducing Error Boundaries {#introducing-error-boundaries}
+## Introducing Error Boundaries
 
 A JavaScript error in a part of the UI shouldn’t break the whole app. To solve this problem for React users, React 16 introduces a new concept of an “error boundary”.
 
@@ -55,15 +55,15 @@ The `componentDidCatch()` method works like a JavaScript `catch {}` block, but f
 
 Note that **error boundaries only catch errors in the components below them in the tree**. An error boundary can’t catch an error within itself. If an error boundary fails trying to render the error message, the error will propagate to the closest error boundary above it. This, too, is similar to how `catch {}` block works in JavaScript.
 
-## Live Demo {#live-demo}
+## Live Demo
 
 Check out [this example of declaring and using an error boundary](https://codepen.io/gaearon/pen/wqvxGa?editors=0010) with [React 16 beta](https://github.com/facebook/react/issues/10294).
 
-## Where to Place Error Boundaries {#where-to-place-error-boundaries}
+## Where to Place Error Boundaries
 
 The granularity of error boundaries is up to you. You may wrap top-level route components to display a “Something went wrong” message to the user, just like server-side frameworks often handle crashes. You may also wrap individual widgets in an error boundary to protect them from crashing the rest of the application.
 
-## New Behavior for Uncaught Errors {#new-behavior-for-uncaught-errors}
+## New Behavior for Uncaught Errors
 
 This change has an important implication. **As of React 16, errors that were not caught by any error boundary will result in unmounting of the whole React component tree.**
 
@@ -75,7 +75,7 @@ For example, Facebook Messenger wraps content of the sidebar, the info panel, th
 
 We also encourage you to use JS error reporting services (or build your own) so that you can learn about unhandled exceptions as they happen in production, and fix them.
 
-## Component Stack Traces {#component-stack-traces}
+## Component Stack Traces
 
 React 16 prints all errors that occurred during rendering to the console in development, even if the application accidentally swallows them. In addition to the error message and the JavaScript stack, it also provides component stack traces. Now you can see where exactly in the component tree the failure has happened:
 
@@ -87,7 +87,7 @@ You can also see the filenames and line numbers in the component stack trace. Th
 
 If you don’t use Create React App, you can add [this plugin](https://www.npmjs.com/package/babel-plugin-transform-react-jsx-source) manually to your Babel configuration. Note that it’s intended only for development and **must be disabled in production**.
 
-## Why Not Use `try` / `catch`? {#why-not-use-try--catch}
+## Why Not Use `try` / `catch`?
 
 `try` / `catch` is great but it only works for imperative code:
 
@@ -107,7 +107,7 @@ However, React components are declarative and specify *what* should be rendered:
 
 Error boundaries preserve the declarative nature of React, and behave as you would expect. For example, even if an error occurs in a `componentDidUpdate` method caused by a `setState` somewhere deep in the tree, it will still correctly propagate to the closest error boundary.
 
-## Naming Changes from React 15 {#naming-changes-from-react-15}
+## Naming Changes from React 15
 
 React 15 included a very limited support for error boundaries under a different method name: `unstable_handleError`. This method no longer works, and you will need to change it to `componentDidCatch` in your code starting from the first 16 beta release.
 
diff --git a/content/blog/2017-09-08-dom-attributes-in-react-16.md b/content/blog/2017-09-08-dom-attributes-in-react-16.md
index 31c66e53e6..b8953997cf 100644
--- a/content/blog/2017-09-08-dom-attributes-in-react-16.md
+++ b/content/blog/2017-09-08-dom-attributes-in-react-16.md
@@ -24,7 +24,7 @@ In React 16, we are making a change. Now, any unknown attributes will end up in
 <div mycustomattribute="something" />
 ```
 
-## Why Are We Changing This? {#why-are-we-changing-this}
+## Why Are We Changing This?
 
 React has always provided a JavaScript-centric API to the DOM. Since React components often take both custom and DOM-related props, it makes sense for React to use the `camelCase` convention just like the DOM APIs:
 
@@ -63,13 +63,13 @@ With the new approach, both of these problems are solved. With React 16, you can
 
 In other words, the way you use DOM components in React hasn't changed, but now you have some new capabilities.
 
-## Should I Keep Data in Custom Attributes? {#should-i-keep-data-in-custom-attributes}
+## Should I Keep Data in Custom Attributes?
 
 No. We don't encourage you to keep data in DOM attributes. Even if you have to, `data-` attributes are probably a better approach, but in most cases data should be kept in React component state or external stores.
 
 However, the new feature is handy if you need to use a non-standard or a new DOM attribute, or if you need to integrate with a third-party library that relies on such attributes.
 
-## Data and ARIA Attributes {#data-and-aria-attributes}
+## Data and ARIA Attributes
 
 Just like before, React lets you pass `data-` and `aria-` attributes freely:
 
@@ -82,7 +82,7 @@ This has not changed.
 
 [Accessibility](/docs/accessibility.html) is very important, so even though React 16 passes any attributes through, it still validates that `aria-` props have correct names in development mode, just like React 15 did.
 
-## Migration Path {#migration-path}
+## Migration Path
 
 We have included [a warning about unknown attributes](/warnings/unknown-prop.html) since [React 15.2.0](https://github.com/facebook/react/releases/tag/v15.2.0) which came out more than a year ago. The vast majority of third-party libraries have already updated their code. If your app doesn't produce warnings with React 15.2.0 or higher, this change should not require modifications in your application code.
 
@@ -96,7 +96,7 @@ This is somewhat safe (the browser will just ignore them) but we recommend to fi
 
 To avoid these problems, we suggest to fix the warnings you see in React 15 before upgrading to React 16.
 
-## Changes in Detail {#changes-in-detail}
+## Changes in Detail
 
 We've made a few other changes to make the behavior more predictable and help ensure you're not making mistakes. We don't anticipate that these changes are likely to break real-world applications.
 
@@ -167,12 +167,12 @@ Below is a detailed list of them.
 
 While testing this release, we have also [created an automatically generated table](https://github.com/facebook/react/blob/master/fixtures/attribute-behavior/AttributeTableSnapshot.md) for all known attributes to track potential regressions.
 
-## Try It! {#try-it}
+## Try It!
 
 You can try the change in [this CodePen](https://codepen.io/gaearon/pen/gxNVdP?editors=0010).  
 It uses React 16 RC, and you can [help us by testing the RC in your project!](https://github.com/facebook/react/issues/10294)
 
-## Thanks {#thanks}
+## Thanks
 
 This effort was largely driven by [Nathan Hunzaker](https://github.com/nhunzaker) who has been a [prolific outside contributor to React](https://github.com/facebook/react/pulls?q=is:pr+author:nhunzaker+is:closed).
 
@@ -182,6 +182,6 @@ Major changes in a popular project can take a lot of time and research. Nathan d
 
 We would also like to thank [Brandon Dail](https://github.com/aweary) and [Jason Quense](https://github.com/jquense) for their invaluable help maintaining React this year.
 
-## Future Work {#future-work}
+## Future Work
 
 We are not changing how [custom elements](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Custom_Elements) work in React 16, but there are [existing discussions](https://github.com/facebook/react/issues/7249) about setting properties instead of attributes, and we might revisit this in React 17. Feel free to chime in if you'd like to help!
diff --git a/content/blog/2017-09-25-react-v15.6.2.md b/content/blog/2017-09-25-react-v15.6.2.md
index 71ddd7346b..d9b3e974c3 100644
--- a/content/blog/2017-09-25-react-v15.6.2.md
+++ b/content/blog/2017-09-25-react-v15.6.2.md
@@ -7,7 +7,7 @@ Today we're sending out React 15.6.2. In 15.6.1, we shipped a few fixes for chan
 
 Additionally, 15.6.2 adds support for the [`controlList`](https://developers.google.com/web/updates/2017/03/chrome-58-media-updates#controlslist) attribute, and CSS columns are no longer appended with a `px` suffix.
 
-## Installation {#installation}
+## Installation
 
 We recommend using [Yarn](https://yarnpkg.com/) or [npm](https://www.npmjs.com/) for managing front-end dependencies. If you're new to package managers, the [Yarn documentation](https://yarnpkg.com/en/docs/getting-started) is a good place to get started.
 
@@ -46,14 +46,14 @@ We've also published version `15.6.2` of `react` and `react-dom` on npm, and the
 
 ---
 
-## Changelog {#changelog}
+## Changelog
 
-## 15.6.2 (September 25, 2017) {#1562-september-25-2017}
+## 15.6.2 (September 25, 2017)
 
-### All Packages {#all-packages}
+### All Packages
 * Switch from BSD + Patents to MIT license
 
-### React DOM {#react-dom}
+### React DOM
 
 * Fix a bug where modifying `document.documentMode` would trigger IE detection in other browsers, breaking change events. ([@aweary](https://github.com/aweary) in [#10032](https://github.com/facebook/react/pull/10032))
 * CSS Columns are treated as unitless numbers. ([@aweary](https://github.com/aweary) in [#10115](https://github.com/facebook/react/pull/10115))
diff --git a/content/blog/2017-09-26-react-v16.0.md b/content/blog/2017-09-26-react-v16.0.md
index b9f3778514..1e3a41942a 100644
--- a/content/blog/2017-09-26-react-v16.0.md
+++ b/content/blog/2017-09-26-react-v16.0.md
@@ -5,7 +5,7 @@ author: [acdlite]
 
 We're excited to announce the release of React v16.0! Among the changes are some long-standing feature requests, including [**fragments**](#new-render-return-types-fragments-and-strings), [**error boundaries**](#better-error-handling), [**portals**](#portals), support for [**custom DOM attributes**](#support-for-custom-dom-attributes), improved [**server-side rendering**](#better-server-side-rendering), and [**reduced file size**](#reduced-file-size).
 
-### New render return types: fragments and strings {#new-render-return-types-fragments-and-strings}
+### New render return types: fragments and strings
 
 You can now return an array of elements from a component's `render` method. Like with other arrays, you'll need to add a key to each element to avoid the key warning:
 
@@ -33,7 +33,7 @@ render() {
 
 [See the full list of supported return types](/docs/react-component.html#render).
 
-### Better error handling {#better-error-handling}
+### Better error handling
 
 Previously, runtime errors during rendering could put React in a broken state, producing cryptic error messages and requiring a page refresh to recover. To address this problem, React 16 uses a more resilient error-handling strategy. By default, if an error is thrown inside a component's render or lifecycle methods, the whole component tree is unmounted from the root. This prevents the display of corrupted data. However, it's probably not the ideal user experience.
 
@@ -42,7 +42,7 @@ Instead of unmounting the whole app every time there's an error, you can use err
 For more details, check out our [previous post on error handling in React 16](/blog/2017/07/26/error-handling-in-react-16.html).
 
 
-### Portals {#portals}
+### Portals
 
 Portals provide a first-class way to render children into a DOM node that exists outside the DOM hierarchy of the parent component.
 
@@ -59,7 +59,7 @@ render() {
 
 See a full example in the [documentation for portals](/docs/portals.html).
 
-### Better server-side rendering {#better-server-side-rendering}
+### Better server-side rendering
 
 React 16 includes a completely rewritten server renderer. It's really fast. It supports **streaming**, so you can start sending bytes to the client faster. And thanks to a [new packaging strategy](#reduced-file-size) that compiles away `process.env` checks (Believe it or not, reading `process.env` in Node is really slow!), you no longer need to bundle React to get good server-rendering performance.
 
@@ -69,11 +69,11 @@ In addition, React 16 is better at hydrating server-rendered HTML once it reache
 
 See the [documentation for `ReactDOMServer`](/docs/react-dom-server.html) for more details.
 
-### Support for custom DOM attributes {#support-for-custom-dom-attributes}
+### Support for custom DOM attributes
 
 Instead of ignoring unrecognized HTML and SVG attributes, React will now [pass them through to the DOM](/blog/2017/09/08/dom-attributes-in-react-16.html). This has the added benefit of allowing us to get rid of most of React's attribute whitelist, resulting in reduced file sizes.
 
-### Reduced file size {#reduced-file-size}
+### Reduced file size
 
 Despite all these additions, React 16 is actually **smaller** compared to 15.6.1!
 
@@ -85,11 +85,11 @@ That amounts to a combined **32% size decrease compared to the previous version
 
 The size difference is partly attributable to a change in packaging. React now uses [Rollup](https://rollupjs.org/) to create flat bundles for each of its different target formats, resulting in both size and runtime performance wins. The flat bundle format also means that React's impact on bundle size is roughly consistent regardless of how you ship your app, whether it's with Webpack, Browserify, the pre-built UMD bundles, or any other system.
 
-### MIT licensed {#mit-licensed}
+### MIT licensed
 
 [In case you missed it](https://code.facebook.com/posts/300798627056246/relicensing-react-jest-flow-and-immutable-js/), React 16 is available under the MIT license. We've also published React 15.6.2 under MIT, for those who are unable to upgrade immediately.
 
-### New core architecture {#new-core-architecture}
+### New core architecture
 
 React 16 is the first version of React built on top of a new core architecture, codenamed "Fiber." You can read all about this project over on [Facebook's engineering blog](https://code.facebook.com/posts/1716776591680069/react-16-a-look-inside-an-api-compatible-rewrite-of-our-frontend-ui-library/). (Spoiler: we rewrote React!)
 
@@ -105,7 +105,7 @@ This demo provides an early peek at the types of problems async rendering can so
 
 We think async rendering is a big deal, and represents the future of React. To make migration to v16.0 as smooth as possible, we're not enabling any async features yet, but we're excited to start rolling them out in the coming months. Stay tuned!
 
-## Installation {#installation}
+## Installation
 
 React v16.0.0 is available on the npm registry.
 
@@ -130,18 +130,18 @@ We also provide UMD builds of React via a CDN:
 
 Refer to the documentation for [detailed installation instructions](/docs/installation.html).
 
-## Upgrading {#upgrading}
+## Upgrading
 
 Although React 16 includes significant internal changes, in terms of upgrading, you can think of this like any other major React release. We've been serving React 16 to Facebook and Messenger.com users since earlier this year, and we released several beta and release candidate versions to flush out additional issues. With minor exceptions, **if your app runs in 15.6 without any warnings, it should work in 16.**
 
 For deprecations listed in [packaging](#packaging) below, codemods are provided to automatically transform your deprecated code.
 See the [15.5.0](/blog/2017/04/07/react-v15.5.0.html) blog post for more information, or browse the codemods in the [react-codemod](https://github.com/reactjs/react-codemod) project.
 
-### New deprecations {#new-deprecations}
+### New deprecations
 
 Hydrating a server-rendered container now has an explicit API. If you're reviving server-rendered HTML, use [`ReactDOM.hydrate`](/docs/react-dom.html#hydrate) instead of `ReactDOM.render`. Keep using `ReactDOM.render` if you're just doing client-side rendering.
 
-### React Addons {#react-addons}
+### React Addons
 
 As previously announced, we've [discontinued support for React Addons](/blog/2017/04/07/react-v15.5.0.html#discontinuing-support-for-react-addons). We expect the latest version of each addon (except `react-addons-perf`; see below) to work for the foreseeable future, but we won't publish additional updates.
 
@@ -149,7 +149,7 @@ Refer to the previous announcement for [suggestions on how to migrate](/blog/201
 
 `react-addons-perf` no longer works at all in React 16. It's likely that we'll release a new version of this tool in the future. In the meantime, you can [use your browser's performance tools to profile React components](/docs/optimizing-performance.html#profiling-components-with-the-chrome-performance-tab).
 
-### Breaking changes {#breaking-changes}
+### Breaking changes
 
 React 16 includes a number of small breaking changes. These only affect uncommon use cases and we don't expect them to break most apps.
 
@@ -167,7 +167,7 @@ React 16 includes a number of small breaking changes. These only affect uncommon
 * Shallow renderer does not implement `unstable_batchedUpdates` anymore.
 * `ReactDOM.unstable_batchedUpdates` now only takes one extra argument after the callback.
 
-### Packaging {#packaging}
+### Packaging
 
 * There is no `react/lib/*` and `react-dom/lib/*` anymore. Even in CommonJS environments, React and ReactDOM are precompiled to single files (“flat bundles”). If you previously relied on undocumented React internals, and they don’t work anymore, let us know about your specific case in a new issue, and we’ll try to figure out a migration strategy for you.
 * There is no `react-with-addons.js` build anymore. All compatible addons are published separately on npm, and have single-file browser versions if you need them.
@@ -178,7 +178,7 @@ React 16 includes a number of small breaking changes. These only affect uncommon
     * `react-dom/dist/react-dom.js` → `react-dom/umd/react-dom.development.js`
     * `react-dom/dist/react-dom.min`.js → `react-dom/umd/react-dom.production.min.js`
 
-## JavaScript Environment Requirements {#javascript-environment-requirements}
+## JavaScript Environment Requirements
 
 React 16 depends on the collection types [Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) and [Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set). If you support older browsers and devices which may not yet provide these natively (e.g. IE < 11), consider including a global polyfill in your bundled application, such as [core-js](https://github.com/zloirock/core-js) or [babel-polyfill](https://babeljs.io/docs/usage/polyfill/).
 
@@ -204,7 +204,7 @@ You can use the [raf](https://www.npmjs.com/package/raf) package to shim `reques
 import 'raf/polyfill';
 ```
 
-## Acknowledgments {#acknowledgments}
+## Acknowledgments
 
 As always, this release would not have been possible without our open source contributors. Thanks to everyone who filed bugs, opened PRs, responded to issues, wrote documentation, and more!
 
diff --git a/content/blog/2017-11-28-react-v16.2.0-fragment-support.md b/content/blog/2017-11-28-react-v16.2.0-fragment-support.md
index a8db2b0bd7..3d612d67aa 100644
--- a/content/blog/2017-11-28-react-v16.2.0-fragment-support.md
+++ b/content/blog/2017-11-28-react-v16.2.0-fragment-support.md
@@ -21,7 +21,7 @@ render() {
 
 This exciting new feature is made possible by additions to both React and JSX.
 
-## What Are Fragments? {#what-are-fragments}
+## What Are Fragments?
 
 A common pattern is for a component to return a list of children. Take this example HTML:
 
@@ -107,7 +107,7 @@ const Fragment = React.Fragment;
 </React.Fragment>
 ```
 
-## JSX Fragment Syntax {#jsx-fragment-syntax}
+## JSX Fragment Syntax
 
 Fragments are a common pattern in our codebases at Facebook. We anticipate they'll be widely adopted by other teams, too. To make the authoring experience as convenient as possible, we're adding syntactical support for fragments to JSX:
 
@@ -129,7 +129,7 @@ In React, this desugars to a `<React.Fragment/>` element, as in the example from
 
 Fragment syntax in JSX was inspired by prior art such as the `XMLList() <></>` constructor in [E4X](https://developer.mozilla.org/en-US/docs/Archive/Web/E4X/E4X_for_templating). Using a pair of empty tags is meant to represent the idea it won't add an actual element to the DOM.
 
-### Keyed Fragments {#keyed-fragments}
+### Keyed Fragments
 
 Note that the `<></>` syntax does not accept attributes, including keys.
 
@@ -153,19 +153,19 @@ function Glossary(props) {
 
 `key` is the only attribute that can be passed to `Fragment`. In the future, we may add support for additional attributes, such as event handlers.
 
-### Live Demo {#live-demo}
+### Live Demo
 
 You can experiment with JSX fragment syntax with this [CodePen](https://codepen.io/reactjs/pen/VrEbjE?editors=1000).
 
-## Support for Fragment Syntax {#support-for-fragment-syntax}
+## Support for Fragment Syntax
 
 Support for fragment syntax in JSX will vary depending on the tools you use to build your app. Please be patient as the JSX community works to adopt the new syntax. We've been working closely with maintainers of the most popular projects:
 
-### Create React App {#create-react-app}
+### Create React App
 
 Experimental support for fragment syntax will be added to Create React App within the next few days. A stable release may take a bit longer as we await adoption by upstream projects.
 
-### Babel {#babel}
+### Babel
 
 Support for JSX fragments is available in [Babel v7.0.0-beta.31](https://github.com/babel/babel/releases/tag/v7.0.0-beta.31) and above! If you are already on Babel 7, simply update to the latest Babel and plugin transform:
 
@@ -189,15 +189,15 @@ Note that Babel 7 is technically still in beta, but a [stable release is coming
 
 Unfortunately, support for Babel 6.x is not available, and there are currently no plans to backport.
 
-#### Babel with Webpack (babel-loader) {#babel-with-webpack-babel-loader}
+#### Babel with Webpack (babel-loader)
 
 If you are using Babel with [Webpack](https://webpack.js.org/), no additional steps are needed because [babel-loader](https://github.com/babel/babel-loader) will use your peer-installed version of Babel.
 
-#### Babel with Other Frameworks {#babel-with-other-frameworks}
+#### Babel with Other Frameworks
 
 If you use JSX with a non-React framework like Inferno or Preact, there is a [pragma option available in babel-plugin-transform-react-jsx](https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-react-jsx#pragmafrag) that configures the Babel compiler to de-sugar the `<></>` syntax to a custom identifier.
 
-### TypeScript {#typescript}
+### TypeScript
 
 TypeScript has full support for fragment syntax! Please upgrade to [version 2.6.2](https://github.com/Microsoft/TypeScript/releases/tag/v2.6.2). (Note that this is important even if you are already on version 2.6.1, since support was added as patch release in 2.6.2.)
 
@@ -210,7 +210,7 @@ yarn upgrade typescript
 npm update typescript
 ```
 
-### Flow {#flow}
+### Flow
 
 [Flow](https://flow.org/) support for JSX fragments is available starting in [version 0.59](https://github.com/facebook/flow/releases/tag/v0.59.0)! Simply run
 
@@ -223,11 +223,11 @@ npm update flow-bin
 
 to update Flow to the latest version.
 
-### Prettier {#prettier}
+### Prettier
 
 [Prettier](https://github.com/prettier/prettier) added support for fragments in their [1.9 release](https://prettier.io/blog/2017/12/05/1.9.0.html#jsx-fragment-syntax-3237-https-githubcom-prettier-prettier-pull-3237-by-duailibe-https-githubcom-duailibe).
 
-### ESLint {#eslint}
+### ESLint
 
 JSX Fragments are supported by [ESLint](https://eslint.org/) 3.x when it is used together with [babel-eslint](https://github.com/babel/babel-eslint):
 
@@ -257,19 +257,19 @@ That's it!
 
 Note that `babel-eslint` is not officially supported by ESLint. We'll be looking into adding support for fragments to ESLint 4.x itself in the coming weeks (see [issue #9662](https://github.com/eslint/eslint/issues/9662)).
 
-### Editor Support {#editor-support}
+### Editor Support
 
 It may take a while for fragment syntax to be supported in your text editor. Please be patient as the community works to adopt the latest changes. In the meantime, you may see errors or inconsistent highlighting if your editor does not yet support fragment syntax. Generally, these errors can be safely ignored.
 
-#### TypeScript Editor Support {#typescript-editor-support}
+#### TypeScript Editor Support
 
 If you're a TypeScript user -- great news! Editor support for JSX fragments is already available in [Visual Studio 2015](https://www.microsoft.com/en-us/download/details.aspx?id=48593), [Visual Studio 2017](https://www.microsoft.com/en-us/download/details.aspx?id=55258), [Visual Studio Code](https://code.visualstudio.com/updates/v1_19#_jsx-fragment-syntax) and [Sublime Text via Package Control](https://packagecontrol.io/packages/TypeScript).
 
-### Other Tools {#other-tools}
+### Other Tools
 
 For other tools, please check with the corresponding documentation to check if there is support available. However, if you're blocked by your tooling, you can always start with using the `<Fragment>` component and perform a codemod later to replace it with the shorthand syntax when the appropriate support is available.
 
-## Installation {#installation}
+## Installation
 
 React v16.2.0 is available on the npm registry.
 
@@ -294,31 +294,31 @@ We also provide UMD builds of React via a CDN:
 
 Refer to the documentation for [detailed installation instructions](/docs/installation.html).
 
-## Changelog {#changelog}
+## Changelog
 
-### React {#react}
+### React
 
 * Add `Fragment` as named export to React. ([@clemmy](https://github.com/clemmy) in [#10783](https://github.com/facebook/react/pull/10783))
 * Support experimental Call/Return types in `React.Children` utilities. ([@MatteoVH](https://github.com/MatteoVH) in [#11422](https://github.com/facebook/react/pull/11422))
 
-### React DOM {#react-dom}
+### React DOM
 
 * Fix radio buttons not getting checked when using multiple lists of radios. ([@landvibe](https://github.com/landvibe) in [#11227](https://github.com/facebook/react/pull/11227))
 * Fix radio buttons not receiving the `onChange` event in some cases. ([@jquense](https://github.com/jquense) in [#11028](https://github.com/facebook/react/pull/11028))
 
-### React Test Renderer {#react-test-renderer}
+### React Test Renderer
 
 * Fix `setState()` callback firing too early when called from `componentWillMount`. ([@accordeiro](https://github.com/accordeiro) in [#11507](https://github.com/facebook/react/pull/11507))
 
-### React Reconciler {#react-reconciler}
+### React Reconciler
 
 * Expose `react-reconciler/reflection` with utilities useful to custom renderers. ([@rivenhk](https://github.com/rivenhk) in [#11683](https://github.com/facebook/react/pull/11683))
 
-### Internal Changes {#internal-changes}
+### Internal Changes
 
 * Many tests were rewritten against the public API. Big thanks to [everyone who contributed](https://github.com/facebook/react/issues/11299)!
 
-## Acknowledgments {#acknowledgments}
+## Acknowledgments
 
 This release was made possible by our open source contributors. A big thanks to everyone who filed issues, contributed to syntax discussions, reviewed pull requests, added support for JSX fragments in third party libraries, and more!
 
diff --git a/content/blog/2017-12-07-introducing-the-react-rfc-process.md b/content/blog/2017-12-07-introducing-the-react-rfc-process.md
index 349b0e5d67..595b7f37c9 100644
--- a/content/blog/2017-12-07-introducing-the-react-rfc-process.md
+++ b/content/blog/2017-12-07-introducing-the-react-rfc-process.md
@@ -15,13 +15,13 @@ Inspired by [Yarn](https://github.com/yarnpkg/rfcs), [Ember](https://github.com/
 
 RFCs are accepted when they are approved for implementation in React. A more thorough description of the process is available in the repository's [README](https://github.com/reactjs/rfcs/blob/master/README.md). The exact details may be refined in the future.
 
-## Who Can Submit RFCs? {#who-can-submit-rfcs}
+## Who Can Submit RFCs?
 
 Anyone! No knowledge of React's internals is required, nor are you expected to implement the proposal yourself.
 
 As with our other repositories, we do ask that you complete a [Contributor License Agreement](https://github.com/reactjs/rfcs#contributor-license-agreement-cla) before we can accept your PR.
 
-## What Types of Changes Should Be Submitted As RFCs? {#what-types-of-changes-should-be-submitted-as-rfcs}
+## What Types of Changes Should Be Submitted As RFCs?
 
 Generally, any idea that would benefit from additional review or design before being implemented is a good candidate for an RFC. As a rule of thumb, this means any proposal that adds, changes, or removes a React API.
 
@@ -33,7 +33,7 @@ We now have several repositories where you can submit contributions to React:
 - **Website and documentation**: [reactjs/reactjs.org](https://github.com/reactjs/reactjs.org)
 - **Ideas for changes that need additional review before being implemented**: [reactjs/rfcs](https://github.com/reactjs/rfcs)
 
-## RFC for A New Context API {#rfc-for-a-new-context-api}
+## RFC for A New Context API
 
 Coinciding with the launch of our RFC process, we've submitted a [proposal for a new version of context](https://github.com/reactjs/rfcs/pull/2). The proposal has already received many valuable comments from the community that we will incorporate into the design of the new API.
 
diff --git a/content/blog/2017-12-15-improving-the-repository-infrastructure.md b/content/blog/2017-12-15-improving-the-repository-infrastructure.md
index ae3cad65ce..938a530570 100644
--- a/content/blog/2017-12-15-improving-the-repository-infrastructure.md
+++ b/content/blog/2017-12-15-improving-the-repository-infrastructure.md
@@ -7,7 +7,7 @@ As we worked on [React 16](/blog/2017/09/26/react-v16.0.html), we revamped the f
 
 While these changes helped us make React better, they don't affect most React users directly. However, we hope that blogging about them might help other library authors solve similar problems. Our contributors might also find these notes helpful!
 
-## Formatting Code with Prettier {#formatting-code-with-prettier}
+## Formatting Code with Prettier
 
 React was one of the first large repositories to [fully embrace](https://github.com/facebook/react/pull/9101) opinionated automatic code formatting with [Prettier](https://prettier.io/). Our current Prettier setup consists of:
 
@@ -16,11 +16,11 @@ React was one of the first large repositories to [fully embrace](https://github.
 
 Some team members have also set up the [editor integrations](https://prettier.io/docs/en/editors.html). Our experience with Prettier has been fantastic, and we recommend it to any team that writes JavaScript.
 
-## Restructuring the Monorepo {#restructuring-the-monorepo}
+## Restructuring the Monorepo
 
 Ever since React was split into packages, it has been a [monorepo](https://danluu.com/monorepo/): a set of packages under the umbrella of a single repository. This made it easier to coordinate changes and share the tooling, but our folder structure was deeply nested and difficult to understand. It was not clear which files belonged to which package. After releasing React 16, we've decided to completely reorganize the repository structure. Here is how we did it.
 
-### Migrating to Yarn Workspaces {#migrating-to-yarn-workspaces}
+### Migrating to Yarn Workspaces
 
 The Yarn package manager [introduced a feature called Workspaces](https://yarnpkg.com/blog/2017/08/02/introducing-workspaces/) a few months ago. This feature lets you tell Yarn where your monorepo's packages are located in the source tree. Every time you run `yarn`, in addition to installing your dependencies it also sets up the symlinks that point from your project's `node_modules` to the source folders of your packages.
 
@@ -32,7 +32,7 @@ Each package is structured in a similar way. For every public API entry point su
 
 Not all packages have to be published on npm. For example, we keep some utilities that are tiny enough and can be safely duplicated in a [pseudo-package called `shared`](https://github.com/facebook/react/tree/cc52e06b490e0dc2482b345aa5d0d65fae931095/packages/shared). Our bundler is configured to [only treat `dependencies` declared from `package.json` as externals](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/rollup/build.js#L326-L329) so it happily bundles the `shared` code into `react` and `react-dom` without leaving any references to `shared/` in the build artifacts. So you can use Yarn Workspaces even if you don't plan to publish actual npm packages!
 
-### Removing the Custom Module System {#removing-the-custom-module-system}
+### Removing the Custom Module System
 
 In the past, we used a non-standard module system called "Haste" that lets you import any file from any other file by its unique `@providesModule` directive no matter where it is in the tree. It neatly avoids the problem of deep relative imports with paths like `../../../../` and is great for the product code. However, this makes it hard to understand the dependencies between packages. We also had to resort to hacks to make it work with different tools.
 
@@ -55,7 +55,7 @@ This way, the relative paths can only contain one `./` or `../` followed by the
 
 In practice, we still have [some cross-package "internal" imports](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/packages/react-dom/src/client/ReactDOMFiberComponent.js#L10-L11) that violate this principle, but they're explicit, and we plan to gradually get rid of them.
 
-## Compiling Flat Bundles {#compiling-flat-bundles}
+## Compiling Flat Bundles
 
 Historically, React was distributed in two different formats: as a single-file build that you can add as a `<script>` tag in the browser, and as a collection of CommonJS modules that you can bundle with a tool like webpack or Browserify. 
 
@@ -89,7 +89,7 @@ For example, [`react.development.js`](https://unpkg.com/react@16/cjs/react.devel
 
 Note how this is essentially the same strategy that we've been using for the single-file browser builds (which now reside in the [`umd` directory](https://unpkg.com/react@16/umd/), short for [Universal Module Definition](https://www.davidbcalhoun.com/2014/what-is-amd-commonjs-and-umd/)). Now we just apply the same strategy to the CommonJS builds as well.
 
-### Migrating to Rollup {#migrating-to-rollup}
+### Migrating to Rollup
 
 Just compiling CommonJS modules into single-file bundles doesn't solve all of the above problems. The really significant wins came from [migrating our build system](https://github.com/facebook/react/pull/9327) from Browserify to [Rollup](https://rollupjs.org/).
 
@@ -99,7 +99,7 @@ Rollup currently doesn't support some features that are important to application
 
 You can find our Rollup build configuration [here](https://github.com/facebook/react/blob/8ec146c38ee4f4c84b6ecf59f52de3371224e8bd/scripts/rollup/build.js#L336-L362), with a [list of plugins we currently use](https://github.com/facebook/react/blob/8ec146c38ee4f4c84b6ecf59f52de3371224e8bd/scripts/rollup/build.js#L196-L273).
 
-### Migrating to Google Closure Compiler {#migrating-to-google-closure-compiler}
+### Migrating to Google Closure Compiler
 
 After migrating to flat bundles, we [started](https://github.com/facebook/react/pull/10236) using [the JavaScript version of the Google Closure Compiler](https://github.com/google/closure-compiler-js) in its "simple" mode. In our experience, even with the advanced optimizations disabled, it still provided a significant advantage over Uglify, as it was able to better eliminate dead code and automatically inline small functions when appropriate.
 
@@ -107,7 +107,7 @@ At first, we could only use Google Closure Compiler for the React bundles we shi
 
 Currently, all production React bundles [run through Google Closure Compiler in simple mode](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/rollup/build.js#L235-L248), and we may look into enabling advanced optimizations in the future.
 
-### Protecting Against Weak Dead Code Elimination {#protecting-against-weak-dead-code-elimination}
+### Protecting Against Weak Dead Code Elimination
 
 While we use an efficient [dead code elimination](https://en.wikipedia.org/wiki/Dead_code_elimination) solution in React itself, we can't make a lot of assumptions about the tools used by the React consumers.
 
@@ -129,7 +129,7 @@ if ("production" !== "production") {
 
 However, if the bundler is misconfigured, you can accidentally ship development code into production. We can't completely prevent this, but we took a few steps to mitigate the common cases when it happens.
 
-#### Protecting Against Late Envification {#protecting-against-late-envification}
+#### Protecting Against Late Envification
 
 As mentioned above, our entry points now look like this:
 
@@ -161,7 +161,7 @@ This way, even if the application bundle includes both the development and the p
 
 The additional [IIFE](https://en.wikipedia.org/wiki/Immediately-invoked_function_expression) wrapper is necessary because some declarations (e.g. functions) can't be placed inside an `if` statement in JavaScript.
 
-#### Detecting Misconfigured Dead Code Elimination {#detecting-misconfigured-dead-code-elimination}
+#### Detecting Misconfigured Dead Code Elimination
 
 Even though [the situation is changing](https://twitter.com/iamakulov/status/941336777188696066), many popular bundlers don't yet force the users to specify the development or production mode. In this case `process.env.NODE_ENV` is typically provided by a runtime polyfill, but the dead code elimination doesn't work.
 
@@ -179,11 +179,11 @@ We can write a function that contains a [development-only branch](https://github
 
 We recognize this approach is somewhat fragile. The `toString()` method is not reliable and may change its behavior in future browser versions. This is why we put that logic into React DevTools itself rather than into React. This allows us to remove it later if it becomes problematic. We also warn only if we *found* the special string literal rather than if we *didn't* find it. This way, if the `toString()` output becomes opaque, or is overridden, the warning just won't fire.
 
-## Catching Mistakes Early {#catching-mistakes-early}
+## Catching Mistakes Early
 
 We want to catch bugs as early as possible. However, even with our extensive test coverage, occasionally we make a blunder. We made several changes to our build and test infrastructure this year to make it harder to mess up.
 
-### Migrating to ES Modules {#migrating-to-es-modules}
+### Migrating to ES Modules
 
 With the CommonJS `require()` and `module.exports`, it is easy to import a function that doesn't really exist, and not realize that until you call it. However, tools like Rollup that natively support [`import`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import) and [`export`](https://developer.mozilla.org/en-US/docs/web/javascript/reference/statements/export) syntax fail the build if you mistype a named import. After releasing React 16, [we have converted the entire React source code](https://github.com/facebook/react/pull/11389) to the ES Modules syntax.
 
@@ -191,13 +191,13 @@ Not only did this provide some extra protection, but it also helped improve the
 
 For now, have decided to only convert the source code to ES Modules, but not the tests. We use powerful utilities like `jest.resetModules()` and want to retain tighter control over when the modules get initialized in tests. In order to consume ES Modules from our tests, we enabled the [Babel CommonJS transform](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/jest/preprocessor.js#L28-L29), but only for the test environment.
 
-### Running Tests in Production Mode {#running-tests-in-production-mode}
+### Running Tests in Production Mode
 
 Historically, we've been running all tests in a development environment. This let us assert on the warning messages produced by React, and seemed to make general sense. However, even though we try to keep the differences between the development and production code paths minimal, occasionally we would make a mistake in production-only code branches that weren't covered by tests, and cause an issue at Facebook.
 
 To solve this problem, we have added a new [`yarn test-prod`](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/package.json#L110) command that runs on CI for every pull request, and [executes all React test cases in the production mode](https://github.com/facebook/react/pull/11616). We wrapped any assertions about warning messages into development-only conditional blocks in all tests so that they can still check the rest of the expected behavior in both environments. Since we have a custom Babel transform that replaces production error messages with the [error codes](/blog/2016/07/11/introducing-reacts-error-code-system.html), we also added a [reverse transformation](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/jest/setupTests.js#L91-L126) as part of the production test run.
 
-### Using Public API in Tests {#using-public-api-in-tests}
+### Using Public API in Tests
 
 When we were [rewriting the React reconciler](https://code.facebook.com/posts/1716776591680069/react-16-a-look-inside-an-api-compatible-rewrite-of-our-frontend-ui-library/), we recognized the importance of writing tests against the public API instead of internal modules. If the test is written against the public API, it is clear what is being tested from the user's perspective, and you can run it even if you rewrite the implementation from scratch.
 
@@ -205,7 +205,7 @@ We reached out to the wonderful React community [asking for help](https://github
 
 We would like to give our deepest thanks to [everyone who contributed to this effort](https://github.com/facebook/react/issues?q=is%3Apr+11299+is%3Aclosed).
 
-### Running Tests on Compiled Bundles {#running-tests-on-compiled-bundles}
+### Running Tests on Compiled Bundles
 
 There is also one more benefit to writing tests against the public API: now we can [run them against the compiled bundles](https://github.com/facebook/react/pull/11633).
 
@@ -221,17 +221,17 @@ There are still some test files that we intentionally don't run against the bund
 
 Currently, over 93% out of 2,650 React tests run against the compiled bundles.
 
-### Linting Compiled Bundles {#linting-compiled-bundles}
+### Linting Compiled Bundles
 
 In addition to linting our source code, we run a much more limited set of lint rules (really, [just two of them](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/rollup/validate/eslintrc.cjs.js#L26-L27)) on the compiled bundles. This gives us an extra layer of protection against regressions in the underlying tools and [ensures](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/rollup/validate/eslintrc.cjs.js#L22) that the bundles don't use any language features that aren't supported by older browsers.
 
-### Simulating Package Publishing {#simulating-package-publishing}
+### Simulating Package Publishing
 
 Even running the tests on the built packages is not enough to avoid shipping a broken update. For example, we use the `files` field in our `package.json` files to specify a whitelist of folders and files that should be published on npm. However, it is easy to add a new entry point to a package but forget to add it to the whitelist. Even the bundle tests would pass, but after publishing the new entry point would be missing.
 
 To avoid situations like this, we are now simulating the npm publish by [running `npm pack` and then immediately unpacking the archive](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/rollup/packaging.js#L129-L134) after the build. Just like `npm publish`, this command filters out anything that isn't in the `files` whitelist. With this approach, if we were to forget adding an entry point to the list, it would be missing in the build folder, and the bundle tests relying on it would fail.
 
-### Creating Manual Test Fixtures {#creating-manual-test-fixtures}
+### Creating Manual Test Fixtures
 
 Our unit tests run only in the Node environment, but not in the browsers. This was an intentional decision because browser-based testing tools were flaky in our experience, and didn't catch many issues anyway.
 
@@ -255,7 +255,7 @@ In some cases, a change proved to be so complex that it necessitated a standalon
 
 Going through the fixtures is still a lot of work, and we are considering automating some of it. Still, the fixture app is invaluable even as documentation for the existing behavior and all the edge cases and browser bugs that React currently handles. Having it gives us confidence in making significant changes to the logic without breaking important use cases. Another improvement we're considering is to have a GitHub bot build and deploy the fixtures automatically for every pull request that touches the relevant files so anyone can help with browser testing.
 
-### Preventing Infinite Loops {#preventing-infinite-loops}
+### Preventing Infinite Loops
 
 The React 16 codebase contains many `while` loops. They let us avoid the dreaded deep stack traces that occurred with earlier versions of React, but can make development of React really difficult. Every time there is a mistake in an exit condition our tests would just hang, and it took a while to figure out which of the loops is causing the issue.
 
@@ -263,11 +263,11 @@ Inspired by the [strategy adopted by Repl.it](https://repl.it/site/blog/infinite
 
 This approach has a pitfall. If an error thrown from the Babel plugin gets caught and ignored up the call stack, the test will pass even though it has an infinite loop. This is really, really bad. To solve this problem, we [set a global field](https://github.com/facebook/react/blob/d906de7f602df810c38aa622c83023228b047db6/scripts/babel/transform-prevent-infinite-loops.js#L26-L30) before throwing the error. Then, after every test run, we [rethrow that error if the global field has been set](https://github.com/facebook/react/blob/d906de7f602df810c38aa622c83023228b047db6/scripts/jest/setupTests.js#L42-L56). This way any infinite loop will cause a test failure, no matter whether the error from the Babel plugin was caught or not.
 
-## Customizing the Build {#customizing-the-build}
+## Customizing the Build
 
 There were a few things that we had to fine-tune after introducing our new build process. It took us a while to figure them out, but we're moderately happy with the solutions that we arrived at.
 
-### Dead Code Elimination {#dead-code-elimination}
+### Dead Code Elimination
 
 The combination of Rollup and Google Closure Compiler already gets us pretty far in terms of stripping development-only code in production bundles. We [replace](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/rollup/build.js#L223-L226) the `__DEV__` literal with a boolean constant during the build, and both Rollup together and Google Closure Compiler can strip out the `if (false) {}` code branches and even some more sophisticated patterns. However, there is one particularly nasty case:
 
@@ -285,7 +285,7 @@ To solve this problem, we use the [`treeshake.pureExternalModules` Rollup option
 
 When we optimize something, we need to ensure it doesn't regress in the future. What if somebody introduces a new development-only import of an external module, and not realize they also need to add it to `pureExternalModules`? Rollup prints a warning in such cases but we've [decided to fail the build completely](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/rollup/build.js#L395-L412) instead. This forces the person adding a new external development-only import to [explicitly specify whether it has side effects or not](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/rollup/modules.js#L10-L22) every time.
 
-### Forking Modules {#forking-modules}
+### Forking Modules
 
 In some cases, different bundles need to contain slightly different code. For example, React Native bundles have a different error handling mechanism that shows a redbox instead of printing a message to the console. However, it can be very inconvenient to thread these differences all the way through the calling modules.
 
@@ -330,7 +330,7 @@ This works by essentially forcing Flow to verify that two types are assignable t
 
 To conclude this section, it is important to note that you can't specify your own module forks if you consume React from npm. This is intentional because none of these files are public API, and they are not covered by the [semver](https://semver.org/) guarantees. However, you are always welcome to build React from master or even fork it if you don't mind the instability and the risk of divergence. We hope that this writeup was still helpful in documenting one possible approach to targeting different environments from a single JavaScript library.
 
-### Tracking Bundle Size {#tracking-bundle-size}
+### Tracking Bundle Size
 
 As a final build step, we now [record build sizes for all bundles](https://github.com/facebook/react/blob/d906de7f602df810c38aa622c83023228b047db6/scripts/rollup/build.js#L264-L272) and write them to a file that [looks like this](https://github.com/facebook/react/blob/d906de7f602df810c38aa622c83023228b047db6/scripts/rollup/results.json). When you run `yarn build`, it prints a table with the results:
 
@@ -344,17 +344,17 @@ Keeping the file sizes committed for everyone to see was helpful for tracking si
 
 We haven't been entirely happy with this strategy because the JSON file often causes merge conflicts on larger branches. Updating it is also not currently enforced so it gets out of date. In the future, we're considering integrating a bot that would comment on pull requests with the size changes.
 
-## Simplifying the Release Process {#simplifying-the-release-process}
+## Simplifying the Release Process
 
 We like to release updates to the open source community often. Unfortunately, the old process of creating a release was slow and would typically take an entire day. After some changes to this process, we're now able to do a full release in less than an hour. Here's what we changed.
 
-### Branching Strategy {#branching-strategy}
+### Branching Strategy
 
 Most of the time spent in the old release process was due to our branching strategy. The `master` branch was assumed to be unstable and would often contain breaking changes. Releases were done from a `stable` branch, and changes were manually cherry-picked into this branch prior to a release. We had [tooling to help automate](https://github.com/facebook/react/pull/7330) some of this process, but it was still [pretty complicated to use](https://github.com/facebook/react/blob/b5a2a1349d6e804d534f673612357c0be7e1d701/scripts/release-manager/Readme.md).
 
 As of version 16, we now release from the `master` branch. Experimental features and breaking changes are allowed, but must be hidden behind [feature flags](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/packages/shared/ReactFeatureFlags.js) so they can be removed during the build process. The new flat bundles and dead code elimination make it possible for us to do this without fear of leaking unwanted code into open source builds.
 
-### Automated Scripts {#automated-scripts}
+### Automated Scripts
 
 After changing to a stable `master`, we created a new [release process checklist](https://github.com/facebook/react/issues/10620). Although much simpler than the previous process, this still involved dozens of steps and forgetting one could result in a broken release.
 
@@ -372,13 +372,13 @@ All that's left is to tag and publish the release to NPM using the _publish_ scr
 
 (You may have noticed a `--dry` flag in the screenshots above. This flag allows us to run a release, end-to-end, without actually publishing to NPM. This is useful when working on the release script itself.)
 
-## In Conclusion {#in-conclusion}
+## In Conclusion
 
 Did this post inspire you to try some of these ideas in your own projects? We certainly hope so! If you have other ideas about how React build, test, or contribution workflow could be improved, please let us know on [our issue tracker](https://github.com/facebook/react/issues).
 
 You can find the related issues by the [build infrastructure label](https://github.com/facebook/react/labels/Component%3A%20Build%20Infrastructure). These are often great first contribution opportunities!
 
-## Acknowledgements {#acknowledgements}
+## Acknowledgements
 
 We would like to thank:
 
diff --git a/content/blog/2018-03-01-sneak-peek-beyond-react-16.md b/content/blog/2018-03-01-sneak-peek-beyond-react-16.md
index cc853aec60..1ab9f4db7f 100644
--- a/content/blog/2018-03-01-sneak-peek-beyond-react-16.md
+++ b/content/blog/2018-03-01-sneak-peek-beyond-react-16.md
@@ -13,7 +13,7 @@ Here's the video courtesy of JSConf Iceland:
 
 I think you'll enjoy the talk more if you stop reading here and just watch the video. If you don't have time to watch, a (very) brief summary follows.
 
-## About the Two Demos {#about-the-two-demos}
+## About the Two Demos
 
 On the first demo, Dan says: "We've built a generic way to ensure that high-priority updates don't get blocked by a low-priority update, called **time slicing**. If my device is fast enough, it feels almost like it's synchronous; if my device is slow, the app still feels responsive. It adapts to the device thanks to the [requestIdleCallback](https://developers.google.com/web/updates/2015/08/using-requestidlecallback) API. Notice that only the final state was displayed; the rendered screen is always consistent and we don't see visual artifacts of slow rendering causing a janky user experience."
 
diff --git a/content/blog/2018-03-27-update-on-async-rendering.md b/content/blog/2018-03-27-update-on-async-rendering.md
index de19850eea..f557e89c06 100644
--- a/content/blog/2018-03-27-update-on-async-rendering.md
+++ b/content/blog/2018-03-27-update-on-async-rendering.md
@@ -13,7 +13,7 @@ One of the biggest lessons we've learned is that some of our legacy component li
 
 These lifecycle methods have often been misunderstood and subtly misused; furthermore, we anticipate that their potential misuse may be more problematic with async rendering. Because of this, we will be adding an "UNSAFE_" prefix to these lifecycles in an upcoming release. (Here, "unsafe" refers not to security but instead conveys that code using these lifecycles will be more likely to have bugs in future versions of React, especially once async rendering is enabled.)
 
-## Gradual Migration Path {#gradual-migration-path}
+## Gradual Migration Path
 
 [React follows semantic versioning](/blog/2016/02/19/new-versioning-scheme.html), so this change will be gradual. Our current plan is:
 
@@ -27,7 +27,7 @@ We maintain over 50,000 React components at Facebook, and we don't plan to rewri
 
 ---
 
-## Migrating from Legacy Lifecycles {#migrating-from-legacy-lifecycles}
+## Migrating from Legacy Lifecycles
 
 If you'd like to start using the new component APIs introduced in React 16.3 (or if you're a maintainer looking to update your library in advance) here are a few examples that we hope will help you to start thinking about components a bit differently. Over time, we plan to add additional "recipes" to our documentation that show how to perform common tasks in a way that avoids the problematic lifecycles.
 
@@ -35,7 +35,7 @@ Before we begin, here's a quick overview of the lifecycle changes planned for ve
 * We are **adding the following lifecycle aliases**: `UNSAFE_componentWillMount`, `UNSAFE_componentWillReceiveProps`, and `UNSAFE_componentWillUpdate`. (Both the old lifecycle names and the new aliases will be supported.)
 * We are **introducing two new lifecycles**, static `getDerivedStateFromProps` and `getSnapshotBeforeUpdate`.
 
-### New lifecycle: `getDerivedStateFromProps` {#new-lifecycle-getderivedstatefromprops}
+### New lifecycle: `getDerivedStateFromProps`
 
 `embed:update-on-async-rendering/definition-getderivedstatefromprops.js`
 
@@ -47,7 +47,7 @@ Together with `componentDidUpdate`, this new lifecycle should cover all use case
 >
 >Both the older `componentWillReceiveProps` and the new `getDerivedStateFromProps` methods add significant complexity to components. This often leads to [bugs](/blog/2018/06/07/you-probably-dont-need-derived-state.html#common-bugs-when-using-derived-state). Consider **[simpler alternatives to derived state](/blog/2018/06/07/you-probably-dont-need-derived-state.html)** to make components predictable and maintainable.
 
-### New lifecycle: `getSnapshotBeforeUpdate` {#new-lifecycle-getsnapshotbeforeupdate}
+### New lifecycle: `getSnapshotBeforeUpdate`
 
 `embed:update-on-async-rendering/definition-getsnapshotbeforeupdate.js`
 
@@ -59,7 +59,7 @@ You can find their type signatures [in this gist](https://gist.github.com/gaearo
 
 We'll look at examples of how both of these lifecycles can be used below.
 
-## Examples {#examples}
+## Examples
 - [Initializing state](#initializing-state)
 - [Fetching external data](#fetching-external-data)
 - [Adding event listeners (or subscriptions)](#adding-event-listeners-or-subscriptions)
@@ -73,7 +73,7 @@ We'll look at examples of how both of these lifecycles can be used below.
 >
 > For brevity, the examples below are written using the experimental class properties transform, but the same migration strategies apply without it.
 
-### Initializing state {#initializing-state}
+### Initializing state
 
 This example shows a component with `setState` calls inside of `componentWillMount`:
 `embed:update-on-async-rendering/initializing-state-before.js`
@@ -81,7 +81,7 @@ This example shows a component with `setState` calls inside of `componentWillMou
 The simplest refactor for this type of component is to move state initialization to the constructor or to a property initializer, like so:
 `embed:update-on-async-rendering/initializing-state-after.js`
 
-### Fetching external data {#fetching-external-data}
+### Fetching external data
 
 Here is an example of a component that uses `componentWillMount` to fetch external data:
 `embed:update-on-async-rendering/fetching-external-data-before.js`
@@ -101,7 +101,7 @@ There is a common misconception that fetching in `componentWillMount` lets you a
 >
 > When supporting server rendering, it's currently necessary to provide the data synchronously – `componentWillMount` was often used for this purpose but the constructor can be used as a replacement. The upcoming suspense APIs will make async data fetching cleanly possible for both client and server rendering.
 
-### Adding event listeners (or subscriptions) {#adding-event-listeners-or-subscriptions}
+### Adding event listeners (or subscriptions)
 
 Here is an example of a component that subscribes to an external event dispatcher when mounting:
 `embed:update-on-async-rendering/adding-event-listeners-before.js`
@@ -123,7 +123,7 @@ Rather than passing a subscribable `dataSource` prop as we did in the example ab
 > 
 > Libraries like Relay/Apollo should manage subscriptions manually with the same techniques as `create-subscription` uses under the hood (as referenced [here](https://gist.github.com/bvaughn/d569177d70b50b58bff69c3c4a5353f3)) in a way that is most optimized for their library usage.
 
-### Updating `state` based on `props` {#updating-state-based-on-props}
+### Updating `state` based on `props`
 
 >Note:
 >
@@ -147,7 +147,7 @@ You may wonder why we don't just pass previous props as a parameter to `getDeriv
 >
 > If you're writing a shared component, the [`react-lifecycles-compat`](https://github.com/reactjs/react-lifecycles-compat) polyfill enables the new `getDerivedStateFromProps` lifecycle to be used with older versions of React as well. [Learn more about how to use it below.](#open-source-project-maintainers)
 
-### Invoking external callbacks {#invoking-external-callbacks}
+### Invoking external callbacks
 
 Here is an example of a component that calls an external function when its internal state changes:
 `embed:update-on-async-rendering/invoking-external-callbacks-before.js`
@@ -157,7 +157,7 @@ Sometimes people use `componentWillUpdate` out of a misplaced fear that by the t
 Either way, it is unsafe to use `componentWillUpdate` for this purpose in async mode, because the external callback might get called multiple times for a single update. Instead, the `componentDidUpdate` lifecycle should be used since it is guaranteed to be invoked only once per update:
 `embed:update-on-async-rendering/invoking-external-callbacks-after.js`
 
-### Side effects on props change {#side-effects-on-props-change}
+### Side effects on props change
 
 Similar to the [example above](#invoking-external-callbacks), sometimes components have side effects when `props` change.
 
@@ -167,7 +167,7 @@ Like `componentWillUpdate`, `componentWillReceiveProps` might get called multipl
 
 `embed:update-on-async-rendering/side-effects-when-props-change-after.js`
 
-### Fetching external data when `props` change {#fetching-external-data-when-props-change}
+### Fetching external data when `props` change
 
 Here is an example of a component that fetches external data based on `props` values:
 `embed:update-on-async-rendering/updating-external-data-when-props-change-before.js`
@@ -179,7 +179,7 @@ The recommended upgrade path for this component is to move data updates into `co
 >
 > If you're using an HTTP library that supports cancellation, like [axios](https://www.npmjs.com/package/axios), then it's simple to cancel an in-progress request when unmounting. For native Promises, you can use an approach like [the one shown here](https://gist.github.com/bvaughn/982ab689a41097237f6e9860db7ca8d6).
 
-### Reading DOM properties before an update {#reading-dom-properties-before-an-update}
+### Reading DOM properties before an update
 
 Here is an example of a component that reads a property from the DOM before an update in order to maintain scroll position within a list:
 `embed:update-on-async-rendering/react-dom-properties-before-update-before.js`
@@ -196,11 +196,11 @@ The two lifecycles can be used together like this:
 >
 > If you're writing a shared component, the [`react-lifecycles-compat`](https://github.com/reactjs/react-lifecycles-compat) polyfill enables the new `getSnapshotBeforeUpdate` lifecycle to be used with older versions of React as well. [Learn more about how to use it below.](#open-source-project-maintainers)
 
-## Other scenarios {#other-scenarios}
+## Other scenarios
 
 While we tried to cover the most common use cases in this post, we recognize that we might have missed some of them. If you are using `componentWillMount`, `componentWillUpdate`, or `componentWillReceiveProps` in ways that aren't covered by this blog post, and aren't sure how to migrate off these legacy lifecycles, please [file a new issue against our documentation](https://github.com/reactjs/reactjs.org/issues/new) with your code examples and as much background information as you can provide. We will update this document with new alternative patterns as they come up.
 
-## Open source project maintainers {#open-source-project-maintainers}
+## Open source project maintainers
 
 Open source maintainers might be wondering what these changes mean for shared components. If you implement the above suggestions, what happens with components that depend on the new static `getDerivedStateFromProps` lifecycle? Do you also have to release a new major version and drop compatibility for React 16.2 and older?
 
diff --git a/content/blog/2018-03-29-react-v-16-3.md b/content/blog/2018-03-29-react-v-16-3.md
index 9d43b68f6b..23ea0f54a5 100644
--- a/content/blog/2018-03-29-react-v-16-3.md
+++ b/content/blog/2018-03-29-react-v-16-3.md
@@ -7,7 +7,7 @@ A few days ago, we [wrote a post about upcoming changes to our legacy lifecycle
 
 Read on to learn more about the release.
 
-## Official Context API {#official-context-api}
+## Official Context API
 
 For many years, React has offered an experimental API for context. Although it was a powerful tool, its use was discouraged because of inherent problems in the API, and because we always intended to replace the experimental API with a better one.
 
@@ -22,7 +22,7 @@ Here is an example illustrating how you might inject a "theme" using the new con
 
 [Learn more about the new context API here.](/docs/context.html)
 
-## `createRef` API {#createref-api}
+## `createRef` API
 
 Previously, React provided two ways of managing refs: the legacy string ref API and the callback API. Although the string ref API was the more convenient of the two, it had [several downsides](https://github.com/facebook/react/issues/1373) and so our official recommendation was to use the callback form instead.
 
@@ -37,7 +37,7 @@ Version 16.3 adds a new option for managing refs that offers the convenience of
 
 [Learn more about the new `createRef` API here.](/docs/refs-and-the-dom.html)
 
-## `forwardRef` API {#forwardref-api}
+## `forwardRef` API
 
 Generally, React components are declarative, but sometimes imperative access to the component instances and the underlying DOM nodes is necessary. This is common for use cases like managing focus, selection, or animations. React provides [refs](/docs/refs-and-the-dom.html) as a way to solve this problem. However, component encapsulation poses some challenges with refs.
 
@@ -53,7 +53,7 @@ Ref forwarding is not limited to "leaf" components that render DOM nodes. If you
 
 [Learn more about the forwardRef API here.](/docs/forwarding-refs.html)
 
-## Component Lifecycle Changes {#component-lifecycle-changes}
+## Component Lifecycle Changes
 
 React's class component API has been around for years with little change. However, as we add support for more advanced features (such as [error boundaries](/docs/react-component.html#componentdidcatch) and the upcoming [async rendering mode](/blog/2018/03/01/sneak-peek-beyond-react-16.html)) we stretch this model in ways that it was not originally intended.
 
@@ -75,7 +75,7 @@ In addition to deprecating unsafe lifecycles, we are also adding a couple of new
 
 [Learn more about these lifecycle changes here.](/blog/2018/03/27/update-on-async-rendering.html)
 
-## `StrictMode` Component {#strictmode-component}
+## `StrictMode` Component
 
 `StrictMode` is a tool for highlighting potential problems in an application. Like `Fragment`, `StrictMode` does not render any visible UI. It activates additional checks and warnings for its descendants.
 
diff --git a/content/blog/2018-05-23-react-v-16-4.md b/content/blog/2018-05-23-react-v-16-4.md
index dd1edf4caf..b6bb523871 100644
--- a/content/blog/2018-05-23-react-v-16-4.md
+++ b/content/blog/2018-05-23-react-v-16-4.md
@@ -7,7 +7,7 @@ The latest minor release adds support for an oft-requested feature: pointer even
 
 It also includes a bugfix for `getDerivedStateFromProps`. Check out the full [changelog](#changelog) below.
 
-## Pointer Events {#pointer-events}
+## Pointer Events
 
 The following event types are now available in React DOM:
 
@@ -28,19 +28,19 @@ Please note that these events will only work in browsers that support the [Point
 
 Huge thanks to [Philipp Spiess](https://github.com/philipp-spiess) for contributing this change!
 
-## Bugfix for `getDerivedStateFromProps` {#bugfix-for-getderivedstatefromprops}
+## Bugfix for `getDerivedStateFromProps`
 
 `getDerivedStateFromProps` is now called every time a component is rendered, regardless of the cause of the update. Previously, it was only called if the component was re-rendered by its parent, and would not fire as the result of a local `setState`. This was an oversight in the initial implementation that has now been corrected. The previous behavior was more similar to `componentWillReceiveProps`, but the improved behavior ensures compatibility with React's upcoming asynchronous rendering mode.
 
 **This bug fix will not affect most apps**, but it may cause issues with a small fraction of components. The rare cases where it does matter fall into one of two categories:
 
-### 1. Avoid Side Effects in `getDerivedStateFromProps` {#1-avoid-side-effects-in-getderivedstatefromprops}
+### 1. Avoid Side Effects in `getDerivedStateFromProps`
 
 Like the render method, `getDerivedStateFromProps` should be a pure function of props and state. Side effects in `getDerivedStateFromProps` were never supported, but since it now fires more often than it used to, the recent change may expose previously undiscovered bugs.
 
 Side effectful code should be moved to other methods: for example, Flux dispatches typically belong inside the originating event handler, and manual DOM mutations belong inside componentDidMount or componentDidUpdate. You can read more about this in our recent post about [preparing for asynchronous rendering](/blog/2018/03/27/update-on-async-rendering.html).
 
-### 2. Compare Incoming Props to Previous Props When Computing Controlled Values {#2-compare-incoming-props-to-previous-props-when-computing-controlled-values}
+### 2. Compare Incoming Props to Previous Props When Computing Controlled Values
 
 The following code assumes `getDerivedStateFromProps` only fires on prop changes:
 
@@ -78,7 +78,7 @@ static getDerivedStateFromProps(props, state) {
 
 However, **code that "mirrors" props in state usually contains bugs**, whether you use the newer `getDerivedStateFromProps` or the legacy `componentWillReceiveProps`. We published a follow-up blog post that explains these problems in more detail, and suggests [simpler solutions that don't involve `getDerivedStateFromProps()`](/blog/2018/06/07/you-probably-dont-need-derived-state.html).
 
-## Installation {#installation}
+## Installation
 
 React v16.4.0 is available on the npm registry.
 
@@ -103,13 +103,13 @@ We also provide UMD builds of React via a CDN:
 
 Refer to the documentation for [detailed installation instructions](/docs/installation.html).
 
-## Changelog {#changelog}
+## Changelog
 
-### React {#react}
+### React
 
 * Add a new [experimental](https://github.com/reactjs/rfcs/pull/51) `React.unstable_Profiler` component for measuring performance. ([@bvaughn](https://github.com/bvaughn) in [#12745](https://github.com/facebook/react/pull/12745))
 
-### React DOM {#react-dom}
+### React DOM
 
 * Add support for the Pointer Events specification. ([@philipp-spiess](https://github.com/philipp-spiess) in [#12507](https://github.com/facebook/react/pull/12507))
 * Properly call `getDerivedStateFromProps()` regardless of the reason for re-rendering. ([@acdlite](https://github.com/acdlite) in [#12600](https://github.com/facebook/react/pull/12600) and [#12802](https://github.com/facebook/react/pull/12802))
@@ -123,21 +123,21 @@ Refer to the documentation for [detailed installation instructions](/docs/instal
 * Improve how `forwardRef()` and context consumers are displayed in the component stack. ([@sophiebits](https://github.com/sophiebits) in [#12777](https://github.com/facebook/react/pull/12777))
 * Change internal event names. This can break third-party packages that rely on React internals in unsupported ways. ([@philipp-spiess](https://github.com/philipp-spiess) in [#12629](https://github.com/facebook/react/pull/12629))
 
-### React Test Renderer {#react-test-renderer}
+### React Test Renderer
 
 * Fix the `getDerivedStateFromProps()` support to match the new React DOM behavior. ([@koba04](https://github.com/koba04) in [#12676](https://github.com/facebook/react/pull/12676))
 * Fix a `testInstance.parent` crash when the parent is a fragment or another special node. ([@gaearon](https://github.com/gaearon) in [#12813](https://github.com/facebook/react/pull/12813))
 * `forwardRef()` components are now discoverable by the test renderer traversal methods. ([@gaearon](https://github.com/gaearon) in [#12725](https://github.com/facebook/react/pull/12725))
 * Shallow renderer now ignores `setState()` updaters that return `null` or `undefined`. ([@koba04](https://github.com/koba04) in [#12756](https://github.com/facebook/react/pull/12756))
 
-### React ART {#react-art}
+### React ART
 
 * Fix reading context provided from the tree managed by React DOM. ([@acdlite](https://github.com/acdlite) in [#12779](https://github.com/facebook/react/pull/12779))
 
-### React Call Return (Experimental) {#react-call-return-experimental}
+### React Call Return (Experimental)
 
 * This experiment was deleted because it was affecting the bundle size and the API wasn't good enough. It's likely to come back in the future in some other form. ([@gaearon](https://github.com/gaearon) in [#12820](https://github.com/facebook/react/pull/12820))
 
-### React Reconciler (Experimental) {#react-reconciler-experimental}
+### React Reconciler (Experimental)
 
 * The [new host config shape](https://github.com/facebook/react/blob/c601f7a64640290af85c9f0e33c78480656b46bc/packages/react-noop-renderer/src/createReactNoop.js#L82-L285) is flat and doesn't use nested objects. ([@gaearon](https://github.com/gaearon) in [#12792](https://github.com/facebook/react/pull/12792))
diff --git a/content/blog/2018-06-07-you-probably-dont-need-derived-state.md b/content/blog/2018-06-07-you-probably-dont-need-derived-state.md
index 7709054b8a..6e71ef8384 100644
--- a/content/blog/2018-06-07-you-probably-dont-need-derived-state.md
+++ b/content/blog/2018-06-07-you-probably-dont-need-derived-state.md
@@ -19,7 +19,7 @@ For a long time, the lifecycle `componentWillReceiveProps` was the only way to u
 * [Preferred solutions](#preferred-solutions)
 * [What about memoization?](#what-about-memoization)
 
-## When to Use Derived State {#when-to-use-derived-state}
+## When to Use Derived State
 
 `getDerivedStateFromProps` exists for only one purpose. It enables a component to update its internal state as the result of **changes in props**. Our previous blog post provided some examples, like [recording the current scroll direction based on a changing offset prop](/blog/2018/03/27/update-on-async-rendering.html#updating-state-based-on-props) or [loading external data specified by a source prop](/blog/2018/03/27/update-on-async-rendering.html#fetching-external-data-when-props-change).
 
@@ -28,7 +28,7 @@ We did not provide many examples, because as a general rule, **derived state sho
 * If you're using derived state to memoize some computation based only on the current props, you don't need derived state. See [What about memoization?](#what-about-memoization) below.
 * If you're updating derived state unconditionally or updating it whenever props and state don't match, your component likely resets its state too frequently. Read on for more details.
 
-## Common Bugs When Using Derived State {#common-bugs-when-using-derived-state}
+## Common Bugs When Using Derived State
 
 The terms ["controlled"](/docs/forms.html#controlled-components) and ["uncontrolled"](/docs/uncontrolled-components.html) usually refer to form inputs, but they can also describe where any component's data lives. Data passed in as props can be thought of as **controlled** (because the parent component _controls_ that data). Data that exists only in internal state can be thought of as **uncontrolled** (because the parent can't directly change it).
 
@@ -36,7 +36,7 @@ The most common mistake with derived state is mixing these two; when a derived s
 
 Problems arise when any of these constraints are changed. This typically comes in two forms. Let's take a look at both.
 
-### Anti-pattern: Unconditionally copying props to state {#anti-pattern-unconditionally-copying-props-to-state}
+### Anti-pattern: Unconditionally copying props to state
 
 A common misconception is that `getDerivedStateFromProps` and `componentWillReceiveProps` are only called when props "change". These lifecycles are called any time a parent component rerenders, regardless of whether the props are "different" from before. Because of this, it has always been unsafe to _unconditionally_ override state using either of these lifecycles. **Doing so will cause state updates to be lost.**
 
@@ -67,7 +67,7 @@ In this simple example, adding `shouldComponentUpdate` to rerender only when the
 
 Hopefully it's clear by now why **it is a bad idea to unconditionally copy props to state**. Before reviewing possible solutions, let's look at a related problematic pattern: what if we were to only update the state when the email prop changes?
 
-### Anti-pattern: Erasing state when props change {#anti-pattern-erasing-state-when-props-change}
+### Anti-pattern: Erasing state when props change
 
 Continuing the example above, we could avoid accidentally erasing state by only updating it when `props.email` changes:
 
@@ -100,9 +100,9 @@ There is still a subtle problem. Imagine a password manager app using the above
 
 This design is fundamentally flawed, but it's also an easy mistake to make. ([I've made it myself!](https://twitter.com/brian_d_vaughn/status/959600888242307072)) Fortunately there are two alternatives that work better. The key to both is that **for any piece of data, you need to pick a single component that owns it as the source of truth, and avoid duplicating it in other components.** Let's take a look at each of the alternatives.
 
-## Preferred Solutions {#preferred-solutions}
+## Preferred Solutions
 
-### Recommendation: Fully controlled component {#recommendation-fully-controlled-component}
+### Recommendation: Fully controlled component
 
 One way to avoid the problems mentioned above is to remove state from our component entirely. If the email address only exists as a prop, then we don't have to worry about conflicts with state. We could even convert `EmailInput` to a lighter-weight function component:
 ```js
@@ -113,7 +113,7 @@ function EmailInput(props) {
 
 This approach simplifies the implementation of our component, but if we still want to store a draft value, the parent form component will now need to do that manually. ([Click here to see a demo of this pattern.](https://codesandbox.io/s/7154w1l551))
 
-### Recommendation: Fully uncontrolled component with a `key` {#recommendation-fully-uncontrolled-component-with-a-key}
+### Recommendation: Fully uncontrolled component with a `key`
 
 Another alternative would be for our component to fully own the "draft" email state. In that case, our component could still accept a prop for the _initial_ value, but it would ignore subsequent changes to that prop:
 
@@ -148,7 +148,7 @@ In most cases, this is the best way to handle state that needs to be reset.
 >
 > While this may sound slow, the performance difference is usually insignificant. Using a key can even be faster if the components have heavy logic that runs on updates since diffing gets bypassed for that subtree.
 
-#### Alternative 1: Reset uncontrolled component with an ID prop {#alternative-1-reset-uncontrolled-component-with-an-id-prop}
+#### Alternative 1: Reset uncontrolled component with an ID prop
 
 If `key` doesn't work for some reason (perhaps the component is very expensive to initialize), a workable but cumbersome solution would be to watch for changes to "userID" in `getDerivedStateFromProps`:
 
@@ -182,7 +182,7 @@ This also provides the flexibility to only reset parts of our component's intern
 >
 > Even though the example above shows `getDerivedStateFromProps`, the same technique can be used with `componentWillReceiveProps`.
 
-#### Alternative 2: Reset uncontrolled component with an instance method {#alternative-2-reset-uncontrolled-component-with-an-instance-method}
+#### Alternative 2: Reset uncontrolled component with an instance method
 
 More rarely, you may need to reset state even if there's no appropriate ID to use as `key`. One solution is to reset the key to a random value or autoincrementing number each time you want to reset. One other viable alternative is to expose an instance method to imperatively reset the internal state:
 
@@ -206,7 +206,7 @@ Refs can be useful in certain cases like this one, but generally we recommend yo
 
 -----
 
-### Recap {#recap}
+### Recap
 
 To recap, when designing a component, it is important to decide whether its data will be controlled or uncontrolled.
 
@@ -217,7 +217,7 @@ For **uncontrolled** components, if you're trying to reset state when a particul
 * Alternative 1: To reset _only certain state fields_, watch for changes in a special property (e.g. `props.userID`).
 * Alternative 2: You can also consider fall back to an imperative instance method using refs.
 
-## What about memoization? {#what-about-memoization}
+## What about memoization?
 
 We've also seen derived state used to ensure an expensive value used in `render` is recomputed only when the inputs change. This technique is known as [memoization](https://en.wikipedia.org/wiki/Memoization).
 
@@ -340,7 +340,7 @@ When using memoization, remember a couple of constraints:
 1. Typically you'll want to use a memoization helper with a **limited cache size** in order to prevent memory leaks over time. (In the example above, we used `memoize-one` because it only caches the most recent arguments and result.)
 1. None of the implementations shown in this section will work if `props.list` is recreated each time the parent component renders. But in most cases, this setup is appropriate.
 
-## In closing {#in-closing}
+## In closing
 
 In real world applications, components often contain a mix of controlled and uncontrolled behaviors. This is okay! If each value has a clear source of truth, you can avoid the anti-patterns mentioned above.
 
diff --git a/content/blog/2018-08-01-react-v-16-4-2.md b/content/blog/2018-08-01-react-v-16-4-2.md
index 9514b2700d..2ae8baf5eb 100644
--- a/content/blog/2018-08-01-react-v-16-4-2.md
+++ b/content/blog/2018-08-01-react-v-16-4-2.md
@@ -5,7 +5,7 @@ author: [gaearon]
 
 We discovered a minor vulnerability that might affect some apps using ReactDOMServer. We are releasing a patch version for every affected React minor release so that you can upgrade with no friction. Read on for more details.
 
-## Short Description {#short-description}
+## Short Description
 
 Today, we are releasing a fix for a vulnerability we discovered in the `react-dom/server` implementation. It was introduced with the version 16.0.0 and has existed in all subsequent releases until today.
 
@@ -13,11 +13,11 @@ This vulnerability **can only affect some server-rendered React apps.** Purely c
 
 While we were investigating this vulnerability, we found similar vulnerabilities in a few other popular front-end libraries. We have coordinated this release together with [Vue](https://github.com/vuejs/vue/releases/tag/v2.5.17) and [Preact](https://github.com/developit/preact-render-to-string/releases/tag/3.7.1) releases fixing the same issue. The tracking number for this vulnerability is `CVE-2018-6341`.
 
-## Mitigation {#mitigation}
+## Mitigation
 
 **We have prepared a patch release with a fix for every affected minor version.**
 
-### 16.0.x {#160x}
+### 16.0.x
 
 If you're using `react-dom/server` with this version:
 
@@ -27,7 +27,7 @@ Update to this version instead:
 
 - `react-dom@16.0.1` **(contains the mitigation)**
 
-### 16.1.x {#161x}
+### 16.1.x
 
 If you're using `react-dom/server` with one of these versions:
 
@@ -38,7 +38,7 @@ Update to this version instead:
 
 - `react-dom@16.1.2` **(contains the mitigation)**
 
-### 16.2.x {#162x}
+### 16.2.x
 
 If you're using `react-dom/server` with this version:
 
@@ -48,7 +48,7 @@ Update to this version instead:
 
 - `react-dom@16.2.1` **(contains the mitigation)**
 
-### 16.3.x {#163x}
+### 16.3.x
 
 If you're using `react-dom/server` with one of these versions:
 
@@ -60,7 +60,7 @@ Update to this version instead:
 
 - `react-dom@16.3.3` **(contains the mitigation)**
 
-### 16.4.x {#164x}
+### 16.4.x
 
 If you're using `react-dom/server` with one of these versions:
 
@@ -75,7 +75,7 @@ If you're using a newer version of `react-dom`, no action is required.
 
 Note that only the `react-dom` package needs to be updated.
 
-## Detailed Description {#detailed-description}
+## Detailed Description
 
 Your app might be affected by this vulnerability only if both of these two conditions are true:
 
@@ -113,7 +113,7 @@ You would also see a warning about an invalid attribute name.
 
 Note that **we expect attribute names based on user input to be very rare in practice.** It doesn't serve any common practical use case, and has other potential security implications that React can't guard against.
 
-## Installation {#installation}
+## Installation
 
 React v16.4.2 is available on the npm registry.
 
@@ -138,9 +138,9 @@ We also provide UMD builds of React via a CDN:
 
 Refer to the documentation for [detailed installation instructions](/docs/installation.html).
 
-## Changelog {#changelog}
+## Changelog
 
-### React DOM Server {#react-dom-server}
+### React DOM Server
 
 * Fix a potential XSS vulnerability when the attacker controls an attribute name (`CVE-2018-6341`). This fix is available in the latest `react-dom@16.4.2`, as well as in previous affected minor versions: `react-dom@16.0.1`, `react-dom@16.1.2`, `react-dom@16.2.1`, and `react-dom@16.3.3`. ([@gaearon](https://github.com/gaearon) in [#13302](https://github.com/facebook/react/pull/13302))
 
diff --git a/content/blog/2018-09-10-introducing-the-react-profiler.md b/content/blog/2018-09-10-introducing-the-react-profiler.md
index 725a22076b..d73131fcb0 100644
--- a/content/blog/2018-09-10-introducing-the-react-profiler.md
+++ b/content/blog/2018-09-10-introducing-the-react-profiler.md
@@ -20,7 +20,7 @@ This blog post covers the following topics:
   * [No timing data to display for the selected commit](#no-timing-data-to-display-for-the-selected-commit)
 * [Deep dive video](#deep-dive-video)
 
-## Profiling an application {#profiling-an-application}
+## Profiling an application
 
 DevTools will show a "Profiler" tab for applications that support the new profiling API:
 
@@ -45,9 +45,9 @@ When you are finished profiling, click the "Stop" button.
 Assuming your application rendered at least once while profiling, DevTools will show several ways to view the performance data.
 We'll [take a look at each of these below](#reading-performance-data).
 
-## Reading performance data {#reading-performance-data}
+## Reading performance data
 
-### Browsing commits {#browsing-commits}
+### Browsing commits
 Conceptually, React does work in two phases:
 
 * The **render** phase determines what changes need to be made to e.g. the DOM. During this phase, React calls `render` and then compares the result to the previous render.
@@ -64,7 +64,7 @@ You can click on a bar (or the left/right arrow buttons) to select a different
 The color and height of each bar corresponds to how long that commit took to render.
 (Taller, yellow bars took longer than shorter, blue bars.)
 
-### Filtering commits {#filtering-commits}
+### Filtering commits
 
 The longer you profile, the more times your application will render.
 In some cases you may end up with _too many commits_ to easily process.
@@ -73,7 +73,7 @@ Use it to specify a threshold and the profiler will hide all commits that were _
 
 ![Filtering commits by time](../images/blog/introducing-the-react-profiler/filtering-commits.gif)
 
-### Flame chart {#flame-chart}
+### Flame chart
 
 The flame chart view represents the state of your application for a particular commit.
 Each bar in the chart represents a React component (e.g. `App`, `Nav`).
@@ -111,7 +111,7 @@ In some cases, selecting a component and stepping between commits may also provi
 The above image shows that `state.scrollOffset` changed between commits.
 This is likely what caused the `List` component to re-render.
 
-### Ranked chart {#ranked-chart}
+### Ranked chart
 
 The ranked chart view represents a single commit.
 Each bar in the chart represents a React component (e.g. `App`, `Nav`).
@@ -126,7 +126,7 @@ The chart is ordered so that the components which took the longest to render are
 
 As with the flame chart, you can zoom in or out on a ranked chart by clicking on components.
 
-### Component chart {#component-chart}
+### Component chart
 
 Sometimes it's useful to see how many times a particular component rendered while you were profiling.
 The component chart provides this information in the form of a bar chart.
@@ -148,7 +148,7 @@ If the selected component did not render at all during the profiling session, th
 
 ![No render times for the selected component](../images/blog/introducing-the-react-profiler/no-render-times-for-selected-component.png)
 
-### Interactions {#interactions}
+### Interactions
 
 React recently added another [experimental API](https://fb.me/react-interaction-tracing) for tracing the _cause_ of an update.
 "Interactions" traced with this API will also be shown in the profiler:
@@ -169,9 +169,9 @@ You can navigate between interactions and commits by clicking on them:
 
 The tracing API is still new and we will cover it in more detail in a future blog post.
 
-## Troubleshooting {#troubleshooting}
+## Troubleshooting
 
-### No profiling data has been recorded for the selected root {#no-profiling-data-has-been-recorded-for-the-selected-root}
+### No profiling data has been recorded for the selected root
 
 If your application has multiple "roots", you may see the following message after profiling:
 ![No profiling data has been recorded for the selected root](../images/blog/introducing-the-react-profiler/no-profiler-data-multi-root.png)
@@ -181,14 +181,14 @@ In this case, try selecting a different root in that panel to view profiling inf
 
 ![Select a root in the "Elements" panel to view its performance data](../images/blog/introducing-the-react-profiler/select-a-root-to-view-profiling-data.gif)
 
-### No timing data to display for the selected commit {#no-timing-data-to-display-for-the-selected-commit}
+### No timing data to display for the selected commit
 
 Sometimes a commit may be so fast that `performance.now()` doesn't give DevTools any meaningful timing information.
 In this case, the following message will be shown:
 
 ![No timing data to display for the selected commit](../images/blog/introducing-the-react-profiler/no-timing-data-for-commit.png)
 
-## Deep dive video {#deep-dive-video}
+## Deep dive video
 
 The following video demonstrates how the React profiler can be used to detect and improve performance bottlenecks in an actual React application.
 
diff --git a/content/blog/2018-10-01-create-react-app-v2.md b/content/blog/2018-10-01-create-react-app-v2.md
index 31a7e16b90..164f76d7b8 100644
--- a/content/blog/2018-10-01-create-react-app-v2.md
+++ b/content/blog/2018-10-01-create-react-app-v2.md
@@ -15,7 +15,7 @@ Now that Create React App 2.0 is out of beta, let's see what's new and how you c
 >
 >Don't feel pressured to upgrade anything. If you're satisfied with the current feature set, its performance, and reliability, you can keep using the version you're currently at! It might also be a good idea to let the 2.0 release stabilize a little bit before switching to it in production.
 
-## What's New {#whats-new}
+## What's New
 
 Here's a short summary of what's new in this release:
 
@@ -34,13 +34,13 @@ Here's a short summary of what's new in this release:
 
 **All of these features work out of the box** -- to enable them, follow the below instructions.
 
-## Starting a Project with Create React App 2.0 {#starting-a-project-with-create-react-app-20}
+## Starting a Project with Create React App 2.0
 
 You don't need to update anything special. Starting from today, when you run `create-react-app` it will use the 2.0 version of the template by default. Have fun!
 
 If you want to **use the old 1.x template** for some reason, you can do that by passing `--scripts-version=react-scripts@1.x` as an argument to `create-react-app`.
 
-## Updating a Project to Create React App 2.0 {#updating-a-project-to-create-react-app-20}
+## Updating a Project to Create React App 2.0
 
 Upgrading a non-ejected project to Create React App 2.0 should usually be straightforward. Open `package.json` in the root of your project and find `react-scripts` there.
 
@@ -67,7 +67,7 @@ Here are a few more tips to get you started.
 >
 >Due to a possible bug in npm, you might see warnings about unsatisfied peer dependencies. You should be able to ignore them. As far as we're aware, this issue isn't present with Yarn.
 
-## Breaking Changes {#breaking-changes}
+## Breaking Changes
 
 Here's a short list of breaking changes in this release:
 
@@ -81,7 +81,7 @@ Here's a short list of breaking changes in this release:
 
 If either of these points affects you, [2.0.3 release notes](https://github.com/facebook/create-react-app/releases/tag/v2.0.3) contain more detailed instructions.
 
-## Learn More {#learn-more}
+## Learn More
 
 You can find the full changelog in the [release notes](https://github.com/facebook/create-react-app/releases/tag/v2.0.3). This was a large release, and we may have missed something. Please report any problems to our [issue tracker](https://github.com/facebook/create-react-app/issues/new) and we'll try to help.
 
@@ -89,6 +89,6 @@ You can find the full changelog in the [release notes](https://github.com/facebo
 >
 >If you've been using 2.x alpha versions, we provide [separate migration instructions](https://gist.github.com/gaearon/8650d1c70e436e5eff01f396dffc4114) for them.
 
-## Thanks {#thanks}
+## Thanks
 
 This release wouldn't be possible without our wonderful community of contributors. We'd like to thank [Andreas Cederström](https://github.com/andriijas), [Clement Hoang](https://github.com/clemmy), [Brian Ng](https://github.com/existentialism), [Kent C. Dodds](https://github.com/kentcdodds), [Ade Viankakrisna Fadlil](https://github.com/viankakrisna), [Andrey Sitnik](https://github.com/ai), [Ro Savage](https://github.com/ro-savage), [Fabiano Brito](https://github.com/Fabianopb), [Ian Sutherland](https://github.com/iansu), [Pete Nykänen](https://github.com/petetnt), [Jeffrey Posnick](https://github.com/jeffposnick), [Jack Zhao](https://github.com/bugzpodder), [Tobias Koppers](https://github.com/sokra), [Henry Zhu](https://github.com/hzoo), [Maël Nison](https://github.com/arcanis), [XiaoYan Li](https://github.com/lixiaoyan), [Marko Trebizan](https://github.com/themre), [Marek Suscak](https://github.com/mareksuscak), [Mikhail Osher](https://github.com/miraage), and many others who provided feedback and testing for this release.
diff --git a/content/blog/2018-10-23-react-v-16-6.md b/content/blog/2018-10-23-react-v-16-6.md
index eb8cf39bf0..d66d44cbd3 100644
--- a/content/blog/2018-10-23-react-v-16-6.md
+++ b/content/blog/2018-10-23-react-v-16-6.md
@@ -7,7 +7,7 @@ Today we're releasing React 16.6 with a few new convenient features. A form of P
 
 Check out the full [changelog](#changelog) below.
 
-## [`React.memo`](/docs/react-api.html#reactmemo) {#reactmemodocsreact-apihtmlreactmemo}
+## [`React.memo`](/docs/react-api.html#reactmemo)
 
 Class components can bail out from rendering when their input props are the same using [`PureComponent`](/docs/react-api.html#reactpurecomponent) or [`shouldComponentUpdate`](/docs/react-component.html#shouldcomponentupdate). Now you can do the same with function components by wrapping them in [`React.memo`](/docs/react-api.html#reactmemo).
 
@@ -17,7 +17,7 @@ const MyComponent = React.memo(function MyComponent(props) {
 });
 ```
 
-## [`React.lazy`](/docs/code-splitting.html#reactlazy): Code-Splitting with `Suspense` {#reactlazydocscode-splittinghtmlreactlazy-code-splitting-with-suspense}
+## [`React.lazy`](/docs/code-splitting.html#reactlazy): Code-Splitting with `Suspense`
 
 You may have seen [Dan's talk about React Suspense at JSConf Iceland](/blog/2018/03/01/sneak-peek-beyond-react-16.html). Now you can use the Suspense component to do [code-splitting](/docs/code-splitting.html#reactlazy) by wrapping a dynamic import in a call to `React.lazy()`.
 
@@ -38,7 +38,7 @@ The Suspense component will also allow library authors to start building data fe
 
 > Note: This feature is not yet available for server-side rendering. Suspense support will be added in a later release.
 
-## [`static contextType`](/docs/context.html#classcontexttype) {#static-contexttypedocscontexthtmlclasscontexttype}
+## [`static contextType`](/docs/context.html#classcontexttype)
 
 In [React 16.3](/blog/2018/03/29/react-v-16-3.html) we introduced the official Context API as a replacement to the previous [Legacy Context](/docs/legacy-context.html) API.
 
@@ -70,7 +70,7 @@ class MyClass extends React.Component {
 }
 ```
 
-## [`static getDerivedStateFromError()`](/docs/react-component.html#static-getderivedstatefromerror) {#static-getderivedstatefromerrordocsreact-componenthtmlstatic-getderivedstatefromerror}
+## [`static getDerivedStateFromError()`](/docs/react-component.html#static-getderivedstatefromerror)
 
 React 16 introduced [Error Boundaries](/blog/2017/07/26/error-handling-in-react-16.html) for handling errors thrown in React renders. We already had the `componentDidCatch` lifecycle method which gets fired after an error has already happened. It's great for logging errors to the server. It also lets you show a different UI to the user by calling `setState`.
 
@@ -80,7 +80,7 @@ We're adding another error method that lets you render the fallback UI before th
 
 > Note: `getDerivedStateFromError()` is not yet available for server-side rendering. It is designed to work with server-side rendering in a future release. We're releasing it early so that you can start preparing to use it.
 
-## Deprecations in StrictMode {#deprecations-in-strictmode}
+## Deprecations in StrictMode
 
 In [16.3](/blog/2018/03/29/react-v-16-3.html#strictmode-component) we introduced the [`StrictMode`](/docs/strict-mode.html) component. It lets you opt-in to early warnings for patterns that might cause problems in the future.
 
@@ -91,7 +91,7 @@ We've added two more APIs to the list of deprecated APIs in `StrictMode`. If you
 
 If you're having trouble upgrading, we'd like to hear your feedback.
 
-## Installation {#installation}
+## Installation
 
 React v16.6.0 is available on the npm registry.
 
@@ -116,9 +116,9 @@ We also provide UMD builds of React via a CDN:
 
 Refer to the documentation for [detailed installation instructions](/docs/installation.html).
 
-## Changelog {#changelog}
+## Changelog
 
-### React {#react}
+### React
 
 * Add `React.memo()` as an alternative to `PureComponent` for functions. ([@acdlite](https://github.com/acdlite) in [#13748](https://github.com/facebook/react/pull/13748))
 * Add `React.lazy()` for code splitting components. ([@acdlite](https://github.com/acdlite) in [#13885](https://github.com/facebook/react/pull/13885))
@@ -127,7 +127,7 @@ Refer to the documentation for [detailed installation instructions](/docs/instal
 * Rename `unstable_AsyncMode` to `unstable_ConcurrentMode`. ([@trueadm](https://github.com/trueadm) in [#13732](https://github.com/facebook/react/pull/13732))
 * Rename `unstable_Placeholder` to `Suspense`, and `delayMs` to `maxDuration`. ([@gaearon](https://github.com/gaearon) in [#13799](https://github.com/facebook/react/pull/13799) and [@sebmarkbage](https://github.com/sebmarkbage) in [#13922](https://github.com/facebook/react/pull/13922))
 
-### React DOM {#react-dom}
+### React DOM
 
 * Add `contextType` as a more ergonomic way to subscribe to context from a class. ([@bvaughn](https://github.com/bvaughn) in [#13728](https://github.com/facebook/react/pull/13728))
 * Add `getDerivedStateFromError` lifecycle method for catching errors in a future asynchronous server-side renderer. ([@bvaughn](https://github.com/bvaughn) in [#13746](https://github.com/facebook/react/pull/13746))
@@ -135,12 +135,12 @@ Refer to the documentation for [detailed installation instructions](/docs/instal
 * Fix gray overlay on iOS Safari. ([@philipp-spiess](https://github.com/philipp-spiess) in [#13778](https://github.com/facebook/react/pull/13778))
 * Fix a bug caused by overwriting `window.event` in development. ([@sergei-startsev](https://github.com/sergei-startsev) in [#13697](https://github.com/facebook/react/pull/13697))
 
-### React DOM Server {#react-dom-server}
+### React DOM Server
 
 * Add support for `React.memo()`. ([@alexmckenley](https://github.com/alexmckenley) in [#13855](https://github.com/facebook/react/pull/13855))
 * Add support for `contextType`. ([@alexmckenley](https://github.com/alexmckenley) and [@sebmarkbage](https://github.com/sebmarkbage) in [#13889](https://github.com/facebook/react/pull/13889))
 
-### Scheduler (Experimental) {#scheduler-experimental}
+### Scheduler (Experimental)
 
 * Rename the package to `scheduler`. ([@gaearon](https://github.com/gaearon) in [#13683](https://github.com/facebook/react/pull/13683))
 * Support priority levels, continuations, and wrapped callbacks. ([@acdlite](https://github.com/acdlite) in [#13720](https://github.com/facebook/react/pull/13720) and [#13842](https://github.com/facebook/react/pull/13842))
diff --git a/content/blog/2018-11-27-react-16-roadmap.md b/content/blog/2018-11-27-react-16-roadmap.md
index 26cb101fb5..f7c4088f1a 100644
--- a/content/blog/2018-11-27-react-16-roadmap.md
+++ b/content/blog/2018-11-27-react-16-roadmap.md
@@ -5,7 +5,7 @@ author: [gaearon]
 
 You might have heard about features like "Hooks", "Suspense", and "Concurrent Rendering" in the previous blog posts and talks. In this post, we'll look at how they fit together and the expected timeline for their availability in a stable release of React.
  
-## tl;dr {#tldr}
+## tl;dr
 
 We plan to split the rollout of new React features into the following milestones:
 
@@ -28,13 +28,13 @@ We expect to get more clarity on their timeline in the coming months.
 >
 >This post is just a roadmap -- there is nothing in it that requires your immediate attention. When each of these features are released, we'll publish a full blog post announcing them.
 
-## Release Timeline {#release-timeline}
+## Release Timeline
 
 We have a single vision for how all of these features fit together, but we're releasing each part as soon as it is ready so that you can test and start using them sooner. The API design doesn't always make sense when looking at one piece in isolation; this post lays out the major parts of our plan to help you see the whole picture. (See our [versioning policy](/docs/faq-versioning.html) to learn more about our commitment to stability.)
 
 The gradual release strategy helps us refine the APIs, but the transitional period when some things aren't ready can be confusing. Let's look at what these different features mean for your app, how they relate to each other, and when you can expect to start learning and using them.
 
-### [React 16.6](/blog/2018/10/23/react-v-16-6.html) (shipped): The One with Suspense for Code Splitting {#react-166blog20181023react-v-16-6html-shipped-the-one-with-suspense-for-code-splitting}
+### [React 16.6](/blog/2018/10/23/react-v-16-6.html) (shipped): The One with Suspense for Code Splitting
 
 *Suspense* refers to React's new ability to "suspend" rendering while components are waiting for something, and display a loading indicator. In React 16.6, Suspense supports only one use case: lazy loading components with `React.lazy()` and `<React.Suspense>`.
 
@@ -67,7 +67,7 @@ Code splitting is just the first step for Suspense. Our longer term vision for S
 
 **Recommendation:** If you only do client rendering, we recommend widely adopting `React.lazy()` and `<React.Suspense>` for code splitting React components. If you do server rendering, you'll have to wait with adoption until the new server renderer is ready.
 
-### React 16.x (~Q1 2019): The One with Hooks {#react-16x-q1-2019-the-one-with-hooks}
+### React 16.x (~Q1 2019): The One with Hooks
 
 *Hooks* let you use features like state and lifecycle from function components. They also let you reuse stateful logic between components without introducing extra nesting in your tree.
 
@@ -101,7 +101,7 @@ Hooks represent our vision for the future of React. They solve both problems tha
 
 **Recommendation:** When you’re ready, we encourage you to start trying Hooks in new components you write. Make sure everyone on your team is on board with using them and familiar with this documentation. We don’t recommend rewriting your existing classes to Hooks unless you planned to rewrite them anyway (e.g. to fix bugs). Read more about the adoption strategy [here](/docs/hooks-faq.html#adoption-strategy).
 
-### React 16.x (~Q2 2019): The One with Concurrent Mode {#react-16x-q2-2019-the-one-with-concurrent-mode}
+### React 16.x (~Q2 2019): The One with Concurrent Mode
 
 *Concurrent Mode* lets React apps be more responsive by rendering component trees without blocking the main thread. It is opt-in and allows React to interrupt a long-running render (for example, rendering a new feed story) to handle a high-priority event (for example, text input or hover). Concurrent Mode also improves the user experience of Suspense by skipping unnecessary loading states on fast connections.
 
@@ -135,7 +135,7 @@ Concurrent Mode is a big part of our vision for React. For CPU-bound work, it al
 
 **Recommendation:** If you wish to adopt Concurrent Mode in the future, wrapping some component subtrees in [`<React.StrictMode>`](https://reactjs.org/docs/strict-mode.html) and fixing the resulting warnings is a good first step. In general it's not expected that legacy code would immediately be compatible. For example, at Facebook we mostly intend to use the Concurrent Mode in the more recently developed codebases, and keep the legacy ones running in the synchronous mode for the near future.
 
-### React 16.x (~mid 2019): The One with Suspense for Data Fetching {#react-16x-mid-2019-the-one-with-suspense-for-data-fetching}
+### React 16.x (~mid 2019): The One with Suspense for Data Fetching
 
 As mentioned earlier, *Suspense* refers to React's ability to "suspend" rendering while components are waiting for something, and display a loading indicator. In the already shipped React 16.6, the only supported use case for Suspense is code splitting. In this future minor release, we'd like to provide officially supported ways to use it for data fetching too. We'll provide a reference implementation of a basic "React Cache" that's compatible with Suspense, but you can also write your own. Data fetching libraries like Apollo and Relay will be able to integrate with Suspense by following a simple specification that we'll document.
 
@@ -182,13 +182,13 @@ Eventually we'd like most data fetching to happen through Suspense but it will t
 
 **Recommendation:** Wait for this minor React release in order to use Suspense for data fetching. Don’t try to use Suspense features in 16.6 for it; it’s not supported. However, your existing `<Suspense>` components for code splitting will be able to show loading states for data too when Suspense for Data Fetching becomes officially supported.
 
-## Other Projects {#other-projects}
+## Other Projects
 
-### Modernizing React DOM {#modernizing-react-dom}
+### Modernizing React DOM
 
 We started an investigation into [simplifying and modernizing](https://github.com/facebook/react/issues/13525) ReactDOM, with a goal of reduced bundle size and aligning closer with the browser behavior. It is still early to say which specific bullet points will "make it" because the project is in an exploratory phase. We will communicate our progress on that issue.
 
-### Suspense for Server Rendering {#suspense-for-server-rendering}
+### Suspense for Server Rendering
 
 We started designing a new server renderer that supports Suspense (including waiting for asynchronous data on the server without double rendering) and progressively loading and hydrating page content in chunks for best user experience. You can watch an overview of its early prototype in [this talk](https://www.youtube.com/watch?v=z-6JC0_cOns). The new server renderer is going to be our major focus in 2019, but it's too early to say anything about its release schedule. Its development, as always, [will happen on GitHub](https://github.com/facebook/react/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aopen+fizz).
 
diff --git a/content/blog/2018-12-19-react-v-16-7.md b/content/blog/2018-12-19-react-v-16-7.md
index e6e4f8a344..2f66cb743e 100644
--- a/content/blog/2018-12-19-react-v-16-7.md
+++ b/content/blog/2018-12-19-react-v-16-7.md
@@ -5,13 +5,13 @@ author: [acdlite]
 
 Our latest release includes an important performance bugfix for `React.lazy`. Although there are no API changes, we're releasing it as a minor instead of a patch.
 
-## Why Is This Bugfix a Minor Instead of a Patch? {#why-is-this-bugfix-a-minor-instead-of-a-patch}
+## Why Is This Bugfix a Minor Instead of a Patch?
 
 React follows [semantic versioning](/docs/faq-versioning.html). Typically, this means that we use patch versions for bugfixes, and minors for new (non-breaking) features. However, we reserve the option to release minor versions even if they do not include new features. The motivation is to reserve patches for changes that have a very low chance of breaking. Patches are the most important type of release because they sometimes contain critical bugfixes. That means patch releases have a higher bar for reliability. It's unacceptable for a patch to introduce additional bugs, because if people come to distrust patches, it compromises our ability to fix critical bugs when they arise — for example, to fix a security vulnerability.
 
 We never intend to ship bugs. React has a hard-earned reputation for stability, and we intend to keep it that way. We thoroughly test every version of React before releasing. This includes unit tests, generative (fuzzy) tests, integration tests, and internal dogfooding across tens of thousands of components. However, sometimes we make mistakes. That's why, going forward, our policy will be that if a release contains non-trivial changes, we will bump the minor version, even if the external behavior is the same. We'll also bump the minor when changing `unstable_`-prefixed APIs.
 
-## Can I Use Hooks Yet? {#can-i-use-hooks-yet}
+## Can I Use Hooks Yet?
 
 Not yet, but soon!
 
@@ -28,7 +28,7 @@ We've heard from many people who want to start using Hooks in their apps. We als
 Learn more about [our roadmap](/blog/2018/11/27/react-16-roadmap.html) in our previous post.
 
 
-## Installation {#installation}
+## Installation
 
 React v16.7.0 is available on the npm registry.
 
@@ -53,16 +53,16 @@ We also provide UMD builds of React via a CDN:
 
 Refer to the documentation for [detailed installation instructions](/docs/installation.html).
 
-## Changelog {#changelog}
+## Changelog
 
-### React DOM {#react-dom}
+### React DOM
 
 * Fix performance of `React.lazy` for large numbers of lazily-loaded components. ([@acdlite](http://github.com/acdlite) in [#14429](https://github.com/facebook/react/pull/14429))
 * Clear fields on unmount to avoid memory leaks. ([@trueadm](http://github.com/trueadm) in [#14276](https://github.com/facebook/react/pull/14276))
 * Fix bug with SSR and context when mixing `react-dom/server@16.6` and `react@<16.6`. ([@gaearon](http://github.com/gaearon) in [#14291](https://github.com/facebook/react/pull/14291))
 * Fix a performance regression in profiling mode. ([@bvaughn](http://github.com/bvaughn) in [#14383](https://github.com/facebook/react/pull/14383))
 
-### Scheduler (Experimental) {#scheduler-experimental}
+### Scheduler (Experimental)
 
 * Post to MessageChannel instead of window. ([@acdlite](http://github.com/acdlite) in [#14234](https://github.com/facebook/react/pull/14234))
 * Reduce serialization overhead. ([@developit](http://github.com/developit) in [#14249](https://github.com/facebook/react/pull/14249))
diff --git a/content/blog/2019-02-06-react-v16.8.0.md b/content/blog/2019-02-06-react-v16.8.0.md
index 3af12da7d4..9fe33e8f43 100644
--- a/content/blog/2019-02-06-react-v16.8.0.md
+++ b/content/blog/2019-02-06-react-v16.8.0.md
@@ -5,7 +5,7 @@ author: [gaearon]
 
 With React 16.8, [React Hooks](/docs/hooks-intro.html) are available in a stable release!
 
-## What Are Hooks? {#what-are-hooks}
+## What Are Hooks?
 
 Hooks let you use state and other React features without writing a class. You can also **build your own Hooks** to share reusable stateful logic between components.
 
@@ -19,11 +19,11 @@ If you've never heard of Hooks before, you might find these resources interestin
 
 **You don't have to learn Hooks right now.** Hooks have no breaking changes, and we have no plans to remove classes from React. The [Hooks FAQ](/docs/hooks-faq.html) describes the gradual adoption strategy.
 
-## No Big Rewrites {#no-big-rewrites}
+## No Big Rewrites
 
 We don't recommend rewriting your existing applications to use Hooks overnight. Instead, try using Hooks in some of the new components, and let us know what you think. Code using Hooks will work [side by side](/docs/hooks-intro.html#gradual-adoption-strategy) with existing code using classes.
 
-## Can I Use Hooks Today? {#can-i-use-hooks-today}
+## Can I Use Hooks Today?
 
 Yes! Starting with 16.8.0, React includes a stable implementation of React Hooks for:
 
@@ -36,11 +36,11 @@ Note that **to enable Hooks, all React packages need to be 16.8.0 or higher**. H
 
 **React Native will support Hooks in the [0.59 release](https://github.com/react-native-community/react-native-releases/issues/79#issuecomment-457735214).**
 
-## Tooling Support {#tooling-support}
+## Tooling Support
 
 React Hooks are now supported by React DevTools. They are also supported in the latest Flow and TypeScript definitions for React. We strongly recommend enabling a new [lint rule called `eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks) to enforce best practices with Hooks. It will soon be included into Create React App by default.
 
-## What's Next {#whats-next}
+## What's Next
 
 We described our plan for the next months in the recently published [React Roadmap](/blog/2018/11/27/react-16-roadmap.html).
 
@@ -48,7 +48,7 @@ Note that React Hooks don't cover *all* use cases for classes yet but they're [v
 
 Even while Hooks were in alpha, the React community created many interesting [examples](https://codesandbox.io/react-hooks) and [recipes](https://usehooks.com) using Hooks for animations, forms, subscriptions, integrating with other libraries, and so on. We're excited about Hooks because they make code reuse easier, helping you write your components in a simpler way and make great user experiences. We can't wait to see what you'll create next!
 
-## Testing Hooks {#testing-hooks}
+## Testing Hooks
 
 We have added a new API called `ReactTestUtils.act()` in this release. It ensures that the behavior in your tests matches what happens in the browser more closely. We recommend to wrap any code rendering and triggering updates to your components into `act()` calls. Testing libraries can also wrap their APIs with it (for example, [`react-testing-library`](https://github.com/kentcdodds/react-testing-library)'s `render` and `fireEvent` utilities do this).
 
@@ -97,13 +97,13 @@ If you need to test a custom Hook, you can do so by creating a component in your
 
 To reduce the boilerplate, we recommend using [`react-testing-library`](https://git.io/react-testing-library) which is designed to encourage writing tests that use your components as the end users do.
 
-## Thanks {#thanks}
+## Thanks
 
 We'd like to thank everybody who commented on the [Hooks RFC](https://github.com/reactjs/rfcs/pull/68) for sharing their feedback. We've read all of your comments and made some adjustments to the final API based on them.
 
-## Installation {#installation}
+## Installation
 
-### React {#react}
+### React
 
 React v16.8.0 is available on the npm registry.
 
@@ -128,7 +128,7 @@ We also provide UMD builds of React via a CDN:
 
 Refer to the documentation for [detailed installation instructions](/docs/installation.html).
 
-### ESLint Plugin for React Hooks {#eslint-plugin-for-react-hooks}
+### ESLint Plugin for React Hooks
 
 >Note
 >
@@ -161,14 +161,14 @@ Then add it to your ESLint configuration:
 }
 ```
 
-## Changelog {#changelog}
+## Changelog
 
-### React {#react-1}
+### React
 
 * Add [Hooks](https://reactjs.org/docs/hooks-intro.html) — a way to use state and other React features without writing a class. ([@acdlite](https://github.com/acdlite) et al. in [#13968](https://github.com/facebook/react/pull/13968))
 * Improve the `useReducer` Hook lazy initialization API. ([@acdlite](https://github.com/acdlite) in [#14723](https://github.com/facebook/react/pull/14723))
 
-### React DOM {#react-dom}
+### React DOM
 
 * Bail out of rendering on identical values for `useState` and `useReducer` Hooks. ([@acdlite](https://github.com/acdlite) in [#14569](https://github.com/facebook/react/pull/14569))
 * Don’t compare the first argument passed to `useEffect`/`useMemo`/`useCallback` Hooks. ([@acdlite](https://github.com/acdlite) in [#14594](https://github.com/facebook/react/pull/14594))
@@ -178,19 +178,19 @@ Then add it to your ESLint configuration:
 * Warn about mismatching Hook order in development. ([@threepointone](https://github.com/threepointone) in [#14585](https://github.com/facebook/react/pull/14585) and [@acdlite](https://github.com/acdlite) in [#14591](https://github.com/facebook/react/pull/14591))
 * Effect clean-up functions must return either `undefined` or a function. All other values, including `null`, are not allowed. [@acdlite](https://github.com/acdlite) in [#14119](https://github.com/facebook/react/pull/14119)
 
-### React Test Renderer {#react-test-renderer}
+### React Test Renderer
 
 * Support Hooks in the shallow renderer. ([@trueadm](https://github.com/trueadm) in [#14567](https://github.com/facebook/react/pull/14567))
 * Fix wrong state in `shouldComponentUpdate` in the presence of `getDerivedStateFromProps` for Shallow Renderer. ([@chenesan](https://github.com/chenesan) in [#14613](https://github.com/facebook/react/pull/14613))
 * Add `ReactTestRenderer.act()` and `ReactTestUtils.act()` for batching updates so that tests more closely match real behavior. ([@threepointone](https://github.com/threepointone) in [#14744](https://github.com/facebook/react/pull/14744))
 
-### ESLint Plugin: React Hooks {#eslint-plugin-react-hooks}
+### ESLint Plugin: React Hooks
 
 * Initial [release](https://www.npmjs.com/package/eslint-plugin-react-hooks). ([@calebmer](https://github.com/calebmer) in [#13968](https://github.com/facebook/react/pull/13968))
 * Fix reporting after encountering a loop. ([@calebmer](https://github.com/calebmer) and [@Yurickh](https://github.com/Yurickh) in [#14661](https://github.com/facebook/react/pull/14661))
 * Don't consider throwing to be a rule violation. ([@sophiebits](https://github.com/sophiebits) in [#14040](https://github.com/facebook/react/pull/14040))
 
-## Hooks Changelog Since Alpha Versions {#hooks-changelog-since-alpha-versions}
+## Hooks Changelog Since Alpha Versions
 
 The above changelog contains all notable changes since our last **stable** release (16.7.0). [As with all our minor releases](/docs/faq-versioning.html), none of the changes break backwards compatibility.
 
diff --git a/content/community/conferences.it-IT.md b/content/community/conferences.it-IT.md
index f45c9e3d7b..8cd3facb16 100644
--- a/content/community/conferences.it-IT.md
+++ b/content/community/conferences.it-IT.md
@@ -6,14 +6,14 @@ prev: thinking-in-react-it-IT.html
 next: videos-it-IT.html
 ---
 
-### React.js Conf 2015 {#reactjs-conf-2015}
+### React.js Conf 2015
 28 e 29 Gennaio
 
 [Sito web](http://conf.reactjs.com/) - [Agenda](http://conf.reactjs.com/schedule.html) - [Video](https://www.youtube-nocookie.com/playlist?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr)
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
 
-### ReactEurope 2015 {#reacteurope-2015}
+### ReactEurope 2015
 2 e 3 Luglio
 
 [Sito web](http://www.react-europe.org/) - [Agenda](http://www.react-europe.org/#schedule)
diff --git a/content/community/conferences.ko-KR.md b/content/community/conferences.ko-KR.md
index e1c13171b5..210ab3b525 100644
--- a/content/community/conferences.ko-KR.md
+++ b/content/community/conferences.ko-KR.md
@@ -6,14 +6,14 @@ prev: thinking-in-react-ko-KR.html
 next: videos-ko-KR.html
 ---
 
-### React.js Conf 2015 {#reactjs-conf-2015}
+### React.js Conf 2015
 1월 28일 & 29일
 
 [웹사이트](http://conf.reactjs.com/) - [스케줄](http://conf.reactjs.com/schedule.html) - [비디오들](https://www.youtube-nocookie.com/playlist?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr)
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
 
-### ReactEurope 2015 {#reacteurope-2015}
+### ReactEurope 2015
 7월 2일 & 3일
 
 [웹사이트](http://www.react-europe.org/) - [스케줄](http://www.react-europe.org/#schedule)
diff --git a/content/community/conferences.md b/content/community/conferences.md
index 78f868d7fd..415b66d4fb 100644
--- a/content/community/conferences.md
+++ b/content/community/conferences.md
@@ -10,316 +10,316 @@ redirect_from:
 
 Do you know of a local React.js conference? Add it here! (Please keep the list chronological)
 
-## Upcoming Conferences {#upcoming-conferences}
+## Upcoming Conferences
 
-### React Iran 2019 {#react-iran-2019}
+### React Iran 2019
 January 31, 2019 in Tehran, Iran
 [Website](http://reactiran.com) - [Instagram](https://www.instagram.com/reactiran/)
 
-### App.js Conf 2019 {#appjs-conf-2019}
+### App.js Conf 2019
 April 4-5, 2019 in Kraków, Poland
 
 [Website](https://appjs.co) - [Twitter](https://twitter.com/appjsconf)
 
-### React Amsterdam 2019 {#react-amsterdam-2019}
+### React Amsterdam 2019
 April 12, 2019 in Amsterdam, The Netherlands
 
 [Website](https://react.amsterdam) - [Twitter](https://twitter.com/reactamsterdam) - [Facebook](https://www.facebook.com/reactamsterdam)
 
-### ReactEurope 2019 {#reacteurope-2019}
+### ReactEurope 2019
 May 23-24, 2019 in Paris, France
 
 [Website](https://www.react-europe.org) - [Twitter](https://twitter.com/ReactEurope) - [Facebook](https://www.facebook.com/ReactEurope) - [Videos](https://www.youtube.com/c/ReacteuropeOrgConf)
 
-### React Norway 2019 {#react-norway-2019}
+### React Norway 2019
 June 12, 2019. Larvik, Norway
 
 [Website](https://reactnorway.com) - [Twitter](https://twitter.com/ReactNorway)
 
-### ComponentsConf 2019 {#componentsconf-2019}
+### ComponentsConf 2019
 September 6, 2019 in Melbourne, Australia
 [Website](https://www.componentsconf.com.au/) - [Twitter](https://twitter.com/componentsconf)
 
-### React Native EU 2019 {#react-native-eu-2019}
+### React Native EU 2019
 September 5-6 in Wrocław, Poland
 
 [Website](https://react-native.eu) - [Twitter](https://twitter.com/react_native_eu) - [Facebook](https://www.facebook.com/reactnativeeu)
 
-### React New York 2019 {#react-new-york-2019}
+### React New York 2019
 September 13th, 2019. New York, USA
 
 [Website](https://reactnewyork.com/) - [Twitter](https://twitter.com/reactnewyork)
 
-### React India 2019 {#react-india-2019}
+### React India 2019
 September 26-28, 2019 in Goa, India
 
 [Website](https://www.reactindia.io/) - [Twitter](https://twitter.com/react_india) - [Facebook](https://www.facebook.com/ReactJSIndia)
 
-## Past Conferences {#past-conferences}
+## Past Conferences
 
-### React.js Conf 2015 {#reactjs-conf-2015}
+### React.js Conf 2015
 January 28 & 29 in Facebook HQ, CA
 
 [Website](http://conf2015.reactjs.org/) - [Schedule](http://conf2015.reactjs.org/schedule.html) - [Videos](https://www.youtube.com/playlist?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr)
 
 <iframe title="React.js Conf 2015 Keynote" width="650" height="315" src="//www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
 
-### ReactEurope 2015 {#reacteurope-2015}
+### ReactEurope 2015
 July 2 & 3 in Paris, France
 
 [Website](http://www.react-europe.org/) - [Schedule](http://www.react-europe.org/#schedule) - [Videos](https://www.youtube.com/channel/UCorlLn2oZfgOJ-FUcF2eZ1A/playlists)
 
-### Reactive 2015 {#reactive-2015}
+### Reactive 2015
 November 2-4 in Bratislava, Slovakia
 
 [Website](https://reactive2015.com/) - [Schedule](https://reactive2015.com/schedule_speakers.html#schedule)
 
-### React.js Conf 2016 {#reactjs-conf-2016}
+### React.js Conf 2016
 February 22 & 23 in San Francisco, CA
 
 [Website](http://conf.reactjs.com/) - [Schedule](http://conf.reactjs.com/schedule.html) - [Videos](https://www.youtube.com/playlist?list=PLb0IAmt7-GS0M8Q95RIc2lOM6nc77q1IY)
 
-### React Amsterdam 2016 {#react-amsterdam-2016}
+### React Amsterdam 2016
 April 16 in Amsterdam, The Netherlands
 
 [Website](https://react.amsterdam/2016) - [Videos](https://youtu.be/sXDZBxbRRag?list=PLNBNS7NRGKMG3uLrm5fgY02hJ87Wzb4IU)
 
-### ReactEurope 2016 {#reacteurope-2016}
+### ReactEurope 2016
 June 2 & 3 in Paris, France
 
 [Website](http://www.react-europe.org/) - [Schedule](http://www.react-europe.org/#schedule) - [Videos](https://www.youtube.com/channel/UCorlLn2oZfgOJ-FUcF2eZ1A/playlists)
 
-### ReactRally 2016 {#reactrally-2016}
+### ReactRally 2016
 August 25-26 in Salt Lake City, UT
 
 [Website](http://www.reactrally.com/) - [Schedule](http://www.reactrally.com/#/schedule) - [Videos](https://www.youtube.com/playlist?list=PLUD4kD-wL_zYSfU3tIYsb4WqfFQzO_EjQ)
 
-### ReactNext 2016 {#reactnext-2016}
+### ReactNext 2016
 September 15 in Tel Aviv, Israel
 
 [Website](http://react-next.com/) - [Schedule](http://react-next.com/#schedule) - [Videos](https://www.youtube.com/channel/UC3BT8hh3yTTYxbLQy_wbk2w)
 
-### ReactNL 2016 {#reactnl-2016}
+### ReactNL 2016
 October 13 in Amsterdam, The Netherlands - [Schedule](http://reactnl.org/#program)
 
 [Website](http://reactnl.org/)
 
-### Reactive 2016 {#reactive-2016}
+### Reactive 2016
 October 26-28 in Bratislava, Slovakia
 
 [Website](https://reactiveconf.com/)
 
-### React Remote Conf 2016 {#react-remote-conf-2016}
+### React Remote Conf 2016
 October 26-28 online
 
 [Website](https://allremoteconfs.com/react-2016) - [Schedule](https://allremoteconfs.com/react-2016#schedule)
 
-### Agent Conference 2017 {#agent-conference-2017}
+### Agent Conference 2017
 January 20-21 in Dornbirn, Austria
 
 [Website](http://agent.sh/)
 
-### React Conf 2017 {#react-conf-2017}
+### React Conf 2017
 March 13-14 in Santa Clara, CA
 
 [Website](http://conf.reactjs.org/) - [Videos](https://www.youtube.com/watch?v=7HSd1sk07uU&list=PLb0IAmt7-GS3fZ46IGFirdqKTIxlws7e0)
 
-### React London 2017 {#react-london-2017}
+### React London 2017
 March 28th at the [QEII Centre, London](http://qeiicentre.london/)
 
 [Website](http://react.london/) - [Videos](https://www.youtube.com/watch?v=2j9rSur_mnk&list=PLW6ORi0XZU0CFjdoYeC0f5QReBG-NeNKJ)
 
-### React Amsterdam 2017 {#react-amsterdam-2017}
+### React Amsterdam 2017
 April 21st in Amsterdam, The Netherlands
 
 [Website](https://react.amsterdam) - [Twitter](https://twitter.com/reactamsterdam) - [Videos](https://www.youtube.com/watch?v=NQyL-Dm7Kig&list=PLNBNS7NRGKMHxfm0CcYNuINLdRw7r4a9M)
 
-### ReactEurope 2017 {#reacteurope-2017}
+### ReactEurope 2017
 May 18th & 19th in Paris, France
 
 [Website](http://www.react-europe.org/) - [Schedule](http://www.react-europe.org/#schedule) - [Videos](https://www.youtube.com/channel/UCorlLn2oZfgOJ-FUcF2eZ1A/playlists)
 
-### Chain React 2017 {#chain-react-2017}
+### Chain React 2017
 July 10-11 in Portland, Oregon USA
 
 [Website](https://infinite.red/ChainReactConf) - [Twitter](https://twitter.com/chainreactconf) - [Videos](https://www.youtube.com/watch?v=cz5BzwgATpc&list=PLFHvL21g9bk3RxJ1Ut5nR_uTZFVOxu522)
 
-### React Rally 2017 {#react-rally-2017}
+### React Rally 2017
 August 24-25 in Salt Lake City, Utah USA
 
 [Website](http://www.reactrally.com) - [Twitter](https://twitter.com/reactrally) - [Videos](https://www.youtube.com/watch?v=f4KnHNCZcH4&list=PLUD4kD-wL_zZUhvAIHJjueJDPr6qHvkni)
 
-### React Native EU 2017 {#react-native-eu-2017}
+### React Native EU 2017
 September 6-7 in Wroclaw, Poland
 
 [Website](http://react-native.eu/) - [Videos](https://www.youtube.com/watch?v=453oKJAqfy0&list=PLzUKC1ci01h_hkn7_KoFA-Au0DXLAQZR7)
 
-### ReactNext 2017 {#reactnext-2017}
+### ReactNext 2017
 September 8-10 in Tel Aviv, Israel
 
 [Website](http://react-next.com/) - [Twitter](https://twitter.com/ReactNext) - [Videos (Hall A)](https://www.youtube.com/watch?v=eKXQw5kR86c&list=PLMYVq3z1QxSqq6D7jxVdqttOX7H_Brq8Z), [Videos (Hall B)](https://www.youtube.com/watch?v=1InokWxYGnE&list=PLMYVq3z1QxSqCZmaqgTXLsrcJ8mZmBF7T)
 
-### ReactFoo 2017 {#reactfoo-2017}
+### ReactFoo 2017
 September 14 in Bangalore, India
 
 [Website](https://reactfoo.in/2017/) - [Videos](https://www.youtube.com/watch?v=3G6tMg29Wnw&list=PL279M8GbNsespKKm1L0NAzYLO6gU5LvfH)
 
-### React Boston 2017 {#react-boston-2017}
+### React Boston 2017
 September 23-24 in Boston, Massachusetts USA
 
 [Website](http://www.reactboston.com/) - [Twitter](https://twitter.com/ReactBoston) - [Videos](https://www.youtube.com/watch?v=2iPE5l3cl_s&list=PL-fCkV3wv4ub8zJMIhmrrLcQqSR5XPlIT)
 
-### React Alicante 2017 {#react-alicante-2017}
+### React Alicante 2017
 September 28-30 in Alicante, Spain
 
 [Website](http://reactalicante.es) - [Twitter](https://twitter.com/ReactAlicante) - [Videos](https://www.youtube.com/watch?v=UMZvRCWo6Dw&list=PLd7nkr8mN0sWvBH_s0foCE6eZTX8BmLUM)
 
-### ReactJS Day 2017 {#reactjs-day-2017}
+### ReactJS Day 2017
 October 6 in Verona, Italy
 
 [Website](http://2017.reactjsday.it) - [Twitter](https://twitter.com/reactjsday) - [Videos](https://www.youtube.com/watch?v=bUqqJPIgjNU&list=PLWK9j6ps_unl293VhhN4RYMCISxye3xH9)
 
-### React Conf Brasil 2017 {#react-conf-brasil-2017}
+### React Conf Brasil 2017
 October 7 in Sao Paulo, Brazil
 
 [Website](http://reactconfbr.com.br) - [Twitter](https://twitter.com/reactconfbr) - [Facebook](https://www.facebook.com/reactconf/)
 
-### State.js Conference 2017 {#statejs-conference-2017}
+### State.js Conference 2017
 October 13 in Stockholm, Sweden
 
 [Website](https://statejs.com/)
 
-### React Summit 2017 {#react-summit-2017}
+### React Summit 2017
 October 21 in Lagos, Nigeria
 
 [Website](https://reactsummit2017.splashthat.com/) - [Twitter](https://twitter.com/DevCircleLagos/) - [Facebook](https://www.facebook.com/groups/DevCLagos/)
 
-### ReactiveConf 2017 {#reactiveconf-2017}
+### ReactiveConf 2017
 October 25–27, Bratislava, Slovakia
 
 [Website](https://reactiveconf.com) - [Videos](https://www.youtube.com/watch?v=BOKxSFB2hOE&list=PLa2ZZ09WYepMB-I7AiDjDYR8TjO8uoNjs)
 
-### React Seoul 2017 {#react-seoul-2017}
+### React Seoul 2017
 November 4 in Seoul, South Korea
 
 [Website](http://seoul.reactjs.kr/en)
 
-### React Day Berlin 2017 {#react-day-berlin-2017}
+### React Day Berlin 2017
 December 2, Berlin, Germany
 
 [Website](https://reactday.berlin) - [Twitter](https://twitter.com/reactdayberlin) - [Facebook](https://www.facebook.com/reactdayberlin/) - [Videos](https://www.youtube.com/watch?v=UnNLJvHKfSY&list=PL-3BrJ5CiIx5GoXci54-VsrO6GwLhSHEK)
 
-### ReactFoo Pune {#reactfoo-pune}
+### ReactFoo Pune
 January 19-20, Pune, India
 
 [Website](https://reactfoo.in/2018-pune/) - [Twitter](https://twitter.com/ReactFoo)
 
-### AgentConf 2018 {#agentconf-2018}
+### AgentConf 2018
 January 25-28 in Dornbirn, Austria
 
 [Website](http://agent.sh/)
 
-### ReactFest 2018 {#reactfest-2018}
+### ReactFest 2018
 March 8-9 in London, UK
 
 [Website](https://reactfest.uk/) - [Twitter](https://twitter.com/ReactFest) - [Videos](https://www.youtube.com/watch?v=YOCrJ5vRCnw&list=PLRgweB8YtNRt-Sf-A0y446wTJNUaAAmle)
 
-### Reactathon 2018 {#reactathon-2018}
+### Reactathon 2018
 March 20-22 in San Francisco, USA
 
 [Website](https://www.reactathon.com/) - [Twitter](https://twitter.com/reactathon) - [Videos (fundamentals)](https://www.youtube.com/watch?v=knn364bssQU&list=PLRvKvw42Rc7OWK5s-YGGFSmByDzzgC0HP), [Videos (advanced day1)](https://www.youtube.com/watch?v=57hmk4GvJpk&list=PLRvKvw42Rc7N0QpX2Rc5CdrqGuxzwD_0H), [Videos (advanced day2)](https://www.youtube.com/watch?v=1hvQ8p8q0a0&list=PLRvKvw42Rc7Ne46QAjWNWFo1Jf0mQdnIW)
 
-### React Native Camp UA 2018 {#react-native-camp-ua-2018}
+### React Native Camp UA 2018
 March 31 in Kiev, Ukraine
 
 [Website](http://reactnative.com.ua/) - [Twitter](https://twitter.com/reactnativecamp) - [Facebook](https://www.facebook.com/reactnativecamp/)
 
-### React Amsterdam 2018 {#react-amsterdam-2018}
+### React Amsterdam 2018
 April 13 in Amsterdam, The Netherlands
 
 [Website](https://react.amsterdam) - [Twitter](https://twitter.com/reactamsterdam) - [Facebook](https://www.facebook.com/reactamsterdam)
 
-### React Finland 2018 {#react-finland-2018}
+### React Finland 2018
 April 24-26 in Helsinki, Finland
 
 [Website](https://react-finland.fi/) - [Twitter](https://twitter.com/ReactFinland)
 
-### <React.NotAConf /> 2018 {#reactnotaconf--2018}
+### <React.NotAConf /> 2018
 April 28 in Sofia, Bulgaria
 
 [Website](http://react-not-a-conf.com/) - [Twitter](https://twitter.com/reactnotaconf) - [Facebook](https://www.facebook.com/groups/1614950305478021/)
 
-### ReactEurope 2018 {#reacteurope-2018}
+### ReactEurope 2018
 May 17-18 in Paris, France
 
 [Website](https://www.react-europe.org) - [Twitter](https://twitter.com/ReactEurope) - [Facebook](https://www.facebook.com/ReactEurope)
 
-### ReactFoo Mumbai {#reactfoo-mumbai}
+### ReactFoo Mumbai
 May 26 in Mumbai, India
 
 [Website](https://reactfoo.in/2018-mumbai/) - [Twitter](https://twitter.com/reactfoo) - [Past talks](https://hasgeek.tv)
 
-### Chain React 2018 {#chain-react-2018}
+### Chain React 2018
 July 11-13 in Portland, Oregon USA
 
 [Website](https://infinite.red/ChainReactConf) - [Twitter](https://twitter.com/chainreactconf)
 
-### React Rally {#react-rally}
+### React Rally
 August 16-17 in Salt Lake City, Utah USA
 
 [Website](http://www.reactrally.com) - [Twitter](https://twitter.com/reactrally)
 
-### React DEV Conf China {#react-dev-conf-china}
+### React DEV Conf China
 August 18 in Guangzhou, China
 
 [Website](https://react.w3ctech.com)
 
-### ReactFoo Delhi {#reactfoo-delhi}
+### ReactFoo Delhi 
 August 18 in Delhi, India
 
 [Website](https://reactfoo.in/2018-delhi/) - [Twitter](https://twitter.com/reactfoo) - [Past talks](https://hasgeek.tv)
 
-### Byteconf React 2018 {#byteconf-react-2018}
+### Byteconf React 2018
 August 31 streamed online, via Twitch
 
 [Website](https://byteconf.com) - [Twitch](https://twitch.tv/byteconf) - [Twitter](https://twitter.com/byteconf)
 
-### React Native EU 2018 {#react-native-eu-2018}
+### React Native EU 2018
 September 5-6 in Wrocław, Poland
 
 [Website](https://react-native.eu) - [Twitter](https://twitter.com/react_native_eu) - [Facebook](https://www.facebook.com/reactnativeeu)
 
-### React Alicante 2018 {#react-alicante-2018}
+### React Alicante 2018
 September 13-15 in Alicante, Spain
 
 [Website](http://reactalicante.es) - [Twitter](https://twitter.com/ReactAlicante)
 
-### React Boston 2018 {#react-boston-2018}
+### React Boston 2018
 September 29-30 in Boston, Massachusetts USA
 
 [Website](http://www.reactboston.com/) - [Twitter](https://twitter.com/ReactBoston)
 
-### ReactJS Day 2018 {#reactjs-day-2018}
+### ReactJS Day 2018
 October 5 in Verona, Italy
 
 [Website](http://2018.reactjsday.it) - [Twitter](https://twitter.com/reactjsday)
 
-### React Conf Brasil 2018 {#react-conf-brasil-2018}
+### React Conf Brasil 2018
 October 20 in Sao Paulo, Brazil
 
 [Website](http://reactconfbr.com.br) - [Twitter](https://twitter.com/reactconfbr) - [Facebook](https://www.facebook.com/reactconf)
 
-### React Conf 2018 {#react-conf-2018}
+### React Conf 2018
 October 25-26 in Henderson, Nevada USA
 
 [Website](https://conf.reactjs.org/)
 
-### ReactNext 2018 {#reactnext-2018}
+### ReactNext 2018
 November 4 in Tel Aviv, Israel
 
 [Website](https://react-next.com) - [Twitter](https://twitter.com/ReactNext) - [Facebook](https://facebook.com/ReactNext2016)
 
-### React Day Berlin 2018 {#react-day-berlin-2018}
+### React Day Berlin 2018
 November 30, Berlin, Germany
 
 [Website](https://reactday.berlin) - [Twitter](https://twitter.com/reactdayberlin) - [Facebook](https://www.facebook.com/reactdayberlin/) - [Videos](https://www.youtube.com/channel/UC1EYHmQYBUJjkmL6OtK4rlw)
diff --git a/content/community/conferences.zh-CN.md b/content/community/conferences.zh-CN.md
index e256941392..5d58aaed6b 100644
--- a/content/community/conferences.zh-CN.md
+++ b/content/community/conferences.zh-CN.md
@@ -6,24 +6,24 @@ prev: thinking-in-react-zh-CN.html
 next: videos-zh-CN.html
 ---
 
-### React.js Conf 2015 {#reactjs-conf-2015}
+### React.js Conf 2015
 一月 28 & 29
 
 [Website](http://conf.reactjs.com/) - [Schedule](http://conf.reactjs.com/schedule.html) - [Videos](https://www.youtube-nocookie.com/playlist?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr)
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
 
-### ReactEurope 2015 {#reacteurope-2015}
+### ReactEurope 2015
 七月 2 & 3
 
 [Website](http://www.react-europe.org/) - [Schedule](http://www.react-europe.org/#schedule)
 
-### Reactive 2015 {#reactive-2015}
+### Reactive 2015
 十一月 2-4
 
 [Website](https://reactive2015.com/) - [Schedule](https://reactive2015.com/schedule_speakers.html#schedule)
 
-### ReactEurope 2016 {#reacteurope-2016}
+### ReactEurope 2016
 六月 2 & 3
 
 [Website](http://www.react-europe.org/) - [Schedule](http://www.react-europe.org/#schedule)
diff --git a/content/community/courses.md b/content/community/courses.md
index cd05adea04..5da83fe511 100644
--- a/content/community/courses.md
+++ b/content/community/courses.md
@@ -6,7 +6,7 @@ sectionid: community
 permalink: community/courses.html
 ---
 
-## Free Courses {#free-courses}
+## Free Courses
 
 - [Codecademy: React 101](https://www.codecademy.com/learn/react-101) - Codecademy's introductory course for React.
 
@@ -22,7 +22,7 @@ permalink: community/courses.html
 
 - [Free React Bootcamp](https://tylermcginnis.com/free-react-bootcamp/) - Recordings from three days of a free online React bootcamp.
 
-## Paid Courses {#paid-courses}
+## Paid Courses
 
 - [Egghead.io](https://egghead.io/browse/frameworks/react) - Short instructional videos on React and many other topics.
 
diff --git a/content/community/meetups.md b/content/community/meetups.md
index d397a4535e..149f3411d3 100644
--- a/content/community/meetups.md
+++ b/content/community/meetups.md
@@ -8,50 +8,50 @@ permalink: community/meetups.html
 
 Do you have a local React.js meetup? Add it here! (Please keep the list alphabetical)
 
-## Australia {#australia}
+## Australia
 * [Brisbane](https://www.meetup.com/reactbris/)
 * [Melbourne](https://www.meetup.com/React-Melbourne/)
 * [Sydney](https://www.meetup.com/React-Sydney/)
 
-## Austria {#austria}
+## Austria
 * [Vienna](https://www.meetup.com/Vienna-ReactJS-Meetup/)
 
-## Belgium {#belgium}
+## Belgium
 * [Belgium](https://www.meetup.com/ReactJS-Belgium/)
 
-## Brazil {#brazil}
+## Brazil
 * [Belo Horizonte](https://www.meetup.com/reactbh/)
 * [Curitiba](https://www.meetup.com/pt-br/ReactJS-CWB/)
 * [Rio de Janeiro](https://www.meetup.com/pt-BR/React-Rio-de-Janeiro/)
 * [São Paulo](https://www.meetup.com/pt-BR/ReactJS-SP/)
 
-## Bolivia {#bolivia}
+## Bolivia
 * [Bolivia](https://www.meetup.com/ReactBolivia/)
 
-## Canada {#canada}
+## Canada
 * [Montreal, QC - ReactJS](https://www.meetup.com/fr-FR/ReactMontreal/)
 * [Montreal, QC - React Native](https://www.meetup.com/fr-FR/React-Native-MTL/)
 * [Vancouver, BC](https://www.meetup.com/ReactJS-Vancouver-Meetup/)
 * [Ottawa, ON](https://www.meetup.com/Ottawa-ReactJS-Meetup/)
 
-## China {#china}
+## China
 * [Beijing](https://www.meetup.com/Beijing-ReactJS-Meetup/)
 
-## Colombia {#colombia}
+## Colombia
 * [Medellin](https://www.meetup.com/React-Medellin/)
 
-## Denmark {#denmark}
+## Denmark
 * [Aalborg](https://www.meetup.com/Aalborg-React-React-Native-Meetup/)
 * [Aarhus](https://www.meetup.com/Aarhus-ReactJS-Meetup/)
 
-## England (UK) {#england-uk}
+## England (UK)
 * [Manchester](https://www.meetup.com/Manchester-React-User-Group/)
 * [React.JS Girls London](https://www.meetup.com/ReactJS-Girls-London/)
 
-## France {#france}
+## France
 * [Paris](https://www.meetup.com/ReactJS-Paris/)
 
-## Germany {#germany}
+## Germany
 * [Düsseldorf](https://www.meetup.com/de-DE/ReactJS-Meetup-Dusseldorf/)
 * [Hamburg](https://www.meetup.com/Hamburg-React-js-Meetup/)
 * [Karlsruhe](https://www.meetup.com/react_ka/)
@@ -59,61 +59,61 @@ Do you have a local React.js meetup? Add it here! (Please keep the list alphabet
 * [React Berlin](https://www.meetup.com/React-Berlin/)
 * [React.JS Girls Berlin](https://www.meetup.com/ReactJS-Girls-Berlin/)
 
-## Greece {#greece}
+## Greece
 * [Thessaloniki](https://www.meetup.com/Thessaloniki-ReactJS-Meetup/)
 
-## Hungary {#hungary}
+## Hungary
 * [Budapest](https://www.meetup.com/React-Budapest/)
 
-## India {#india}
+## India
 * [Bangalore](https://www.meetup.com/ReactJS-Bangalore/)
 * [Chennai](https://www.meetup.com/React-Chennai/)
 * [Delhi NCR](https://www.meetup.com/React-Delhi-NCR/)
 
-## Ireland {#ireland}
+## Ireland
 * [Dublin](https://www.meetup.com/ReactJS-Dublin/)
 
-## Israel {#israel}
+## Israel
 * [Tel Aviv](https://www.meetup.com/ReactJS-Israel/)
 
-## Netherlands {#netherlands}
+## Netherlands
 * [Amsterdam](https://www.meetup.com/React-Amsterdam/)
 
-## New Zealand {#new-zealand}
+## New Zealand
 * [Wellington](https://www.meetup.com/React-Wellington/)
 
-## Norway {#norway}
+## Norway
 * [Norway](https://reactjs-norway.webflow.io/)
 * [Oslo](https://www.meetup.com/ReactJS-Oslo-Meetup/)
 
-## Pakistan {#pakistan}
+## Pakistan
 * [Karachi](https://www.facebook.com/groups/902678696597634/)
 
-## Peru {#peru}
+## Peru
 * [Lima](https://www.meetup.com/ReactJS-Peru/)
 
-## Philippines {#philippines}
+## Philippines
 * [Manila](https://www.meetup.com/reactjs-developers-manila/)
 
-## Poland {#poland}
+## Poland
 * [Warsaw](https://www.meetup.com/React-js-Warsaw/)
 
-## Portugal {#portugal}
+## Portugal
 * [Lisbon](https://www.meetup.com/JavaScript-Lisbon/)
 
-## Scotland (UK) {#scotland-uk}
+## Scotland (UK)
 * [Edinburgh](https://www.meetup.com/React-Scotland/)
 
-## Spain {#spain}
+## Spain
 * [Barcelona](https://www.meetup.com/ReactJS-Barcelona/)
 
-## Sweden {#sweden}
+## Sweden
 * [Goteborg](https://www.meetup.com/ReactJS-Goteborg/)
 
-## Ukraine {#ukraine}
+## Ukraine
 * [Kyiv](https://www.meetup.com/Kyiv-ReactJS-Meetup)
 
-## US {#us}
+## US
 * [Atlanta, GA - ReactJS](https://www.meetup.com/React-ATL/)
 * [Austin, TX - ReactJS](https://www.meetup.com/ReactJS-Austin-Meetup/)
 * [Boston, MA - ReactJS](https://www.meetup.com/ReactJS-Boston/)
diff --git a/content/community/podcasts.md b/content/community/podcasts.md
index 233c7df124..60923965f2 100644
--- a/content/community/podcasts.md
+++ b/content/community/podcasts.md
@@ -8,7 +8,7 @@ permalink: community/podcasts.html
 
 Podcasts dedicated to React and individual podcast episodes with React discussions.
 
-## Podcasts {#podcasts}
+## Podcasts
 
 - [The React Podcast](https://reactpodcast.simplecast.fm/) - The podcast about everything React.js, hosted by [React Training](https://reacttraining.com)
 
@@ -18,7 +18,7 @@ Podcasts dedicated to React and individual podcast episodes with React discussio
 
 - [React Native Radio](https://devchat.tv/react-native-radio)
 
-## Episodes {#episodes}
+## Episodes
 
 - [CodeWinds Episode 4](https://codewinds.com/podcast/004.html) - Pete Hunt talks with Jeff Barczewski about React.
 
diff --git a/content/community/support.md b/content/community/support.md
index 65ce8b3b0a..3887e2090a 100644
--- a/content/community/support.md
+++ b/content/community/support.md
@@ -12,11 +12,11 @@ React has a community of millions of developers.
 
 On this page we've listed some React-related communities that you can be a part of; see the other pages in this section for additional online and in-person learning materials.
 
-## Stack Overflow {#stack-overflow}
+## Stack Overflow
 
 Stack Overflow is a popular forum to ask code-level questions or if you're stuck with a specific error. Read through the [existing questions](https://stackoverflow.com/questions/tagged/reactjs) tagged with **reactjs** or [ask your own](https://stackoverflow.com/questions/ask?tags=reactjs)!
 
-## Popular Discussion Forums {#popular-discussion-forums}
+## Popular Discussion Forums
 
 There are many online forums which are a great place for discussion about best practices and application architecture as well as the future of React. If you have an answerable code-level question, Stack Overflow is usually a better fit.
 
@@ -28,6 +28,6 @@ Each community consists of many thousands of React users.
 * [Reddit's React community](https://www.reddit.com/r/reactjs/)
 * [Spectrum's React community](https://spectrum.chat/react)
 
-## News {#news}
+## News
 
 For the latest news about React, [follow **@reactjs** on Twitter](https://twitter.com/reactjs) and the [official React blog](/blog/) on this website.
diff --git a/content/community/tools-jsx.md b/content/community/tools-jsx.md
index 7c2bfc4758..7b7951dc5e 100644
--- a/content/community/tools-jsx.md
+++ b/content/community/tools-jsx.md
@@ -5,7 +5,7 @@ layout: community
 permalink: community/jsx-integrations.html
 ---
 
-## Editor Integrations {#editor-integrations}
+## Editor Integrations
 * **[Sublime Text: babel-sublime](https://github.com/babel/babel-sublime):** Snippets, syntax highlighting and optimized color schemes for Sublime Text
 * **[Atom: language-babel](https://atom.io/packages/language-babel)** Support for es2016, JSX and Flow.
 * **[Visual Studio Code](https://code.visualstudio.com/updates/vFebruary#_languages-javascript)** Visual Studio Code supports JSX directly.
@@ -15,7 +15,7 @@ permalink: community/jsx-integrations.html
 * **[web-mode.el](http://web-mode.org):** An autonomous emacs major mode that indents and highlights JSX.  No support for Automatic Semicolon Insertion.
 * **[vim-jsx](https://github.com/mxw/vim-jsx):** Syntax highlighting and indenting for JSX
 
-## Build Tools {#build-tools}
+## Build Tools
 
 * **[Create React App](https://github.com/facebookincubator/create-react-app):** An **officially supported** way to create React apps with no configuration.
 * **[nwb](https://github.com/insin/nwb)**: A toolkit for React, Preact & Inferno apps, React libraries and other npm modules for the web, with no configuration (until you need it)
diff --git a/content/community/tools-starter-kits.md b/content/community/tools-starter-kits.md
index a4e6b8150a..c15fcf04bc 100644
--- a/content/community/tools-starter-kits.md
+++ b/content/community/tools-starter-kits.md
@@ -5,7 +5,7 @@ layout: community
 permalink: community/starter-kits.html
 ---
 
-## Recommended by the React Team {#recommended-by-the-react-team}
+## Recommended by the React Team
 
 * **[Create React App](https://github.com/facebook/create-react-app)** - An officially supported way to start a client-side React project with no configuration
 * **[Next.js](https://nextjs.org/)** - Framework for server-rendered or statically-exported React apps
@@ -15,7 +15,7 @@ permalink: community/starter-kits.html
 * **[Neutrino](https://neutrino.js.org/)** - Create and build modern JavaScript applications with zero initial configuration
 * **[Parcel](https://parceljs.org)** - Fast, zero configuration web application bundler
 
-## Other Starter Kits {#other-starter-kits}
+## Other Starter Kits
 
 * **[kyt](https://github.com/nytimes/kyt)** - The framework that the New York Times uses to develop and build their web properties. It's somewhat opinionated but configurable, and includes starter kits with options to build full-stack or static/client-side apps with the following tools: Express, React, static assets, latest ES, CSS/Sass Modules, Jest, code-splitting, ESLint/Prettier, StyleLint, PostCSS, and inline SVGs.
 * **[React Redux Boilerplate](https://github.com/iroy2000/react-redux-boilerplate):** React Redux Boilerplate is a workflow boilerplate providing a virtual development environment and production ready build workflow out of the box. (React, Redux, Reselect, Redux Actions, ES6, ESLint, Webpack with integrated environment config support)
diff --git a/content/community/tools-ui-components.md b/content/community/tools-ui-components.md
index 4179597e16..196bbc7220 100644
--- a/content/community/tools-ui-components.md
+++ b/content/community/tools-ui-components.md
@@ -5,7 +5,7 @@ layout: community
 permalink: community/ui-components.html
 ---
 
-## Free Components {#free-components}
+## Free Components
 * **[Amaze UI React](https://github.com/amazeui/amazeui-react) (in Chinese):** [Amaze UI](https://github.com/allmobilize/amazeui) components built with React.
 * **[Ant Design of React](https://github.com/ant-design/ant-design)** An enterprise-class UI design language and React-based implementation.
 * **[Belle](https://github.com/nikgraf/belle/):** Configurable React Components with great UX.
@@ -69,7 +69,7 @@ permalink: community/ui-components.html
 * **[video-react](https://github.com/video-react/video-react)**: A web video player built for the HTML5 world using React library.
 * **[Winterfell](https://github.com/andrewhathaway/Winterfell):** Generate complex, validated and extendable JSON-based forms in React
 
-## Fee Based Components {#fee-based-components}
+## Fee Based Components
 
 * **[ag-Grid](https://www.ag-grid.com)** Advanced data grid / data table for React.
 * **[ExtReact components](https://www.sencha.com/products/extreact//)**: 115+ Ready-to-Use UI Components.
diff --git a/content/community/videos.it-IT.md b/content/community/videos.it-IT.md
index 44548b3a09..4e32b370f5 100644
--- a/content/community/videos.it-IT.md
+++ b/content/community/videos.it-IT.md
@@ -6,7 +6,7 @@ prev: conferences-it-IT.html
 next: complementary-tools-it-IT.html
 ---
 
-### Riconsiderare le best practice - JSConf.eu {#riconsiderare-le-best-practice---jsconfeu}
+### Riconsiderare le best practice - JSConf.eu
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/x7cQ3mrcKaY" frameborder="0" allowfullscreen></iframe>
 
@@ -14,14 +14,14 @@ next: complementary-tools-it-IT.html
 
 * * *
 
-### Pensare in react - tagtree.tv {#pensare-in-react---tagtreetv}
+### Pensare in react - tagtree.tv
 
 Un video di [tagtree.tv](http://tagtree.tv/) che espone i principi di [Pensare in React](/docs/thinking-in-react.html) mentre costruisci una semplice applicazione
 <figure><a href="http://tagtree.tv/thinking-in-react"><img src="../images/docs/thinking-in-react-tagtree.png"></a></figure>
 
 * * *
 
-### I Segreti del DOM Virtuale - MtnWest JS {#i-segreti-del-dom-virtuale---mtnwest-js}
+### I Segreti del DOM Virtuale - MtnWest JS
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/h3KksH8gfcQ" frameborder="0" allowfullscreen></iframe>
 
@@ -29,14 +29,14 @@ Un video di [tagtree.tv](http://tagtree.tv/) che espone i principi di [Pensare i
 
 * * *
 
-### Pensare in grande con React {#pensare-in-grande-con-react}
+### Pensare in grande con React
 
 "Sulla carta, tutti questi framework JS sembrano promettenti: implementazioni pulite, design veloce del codice, esecuzione perfetta. Ma che succede quando metti JavaScript sotto stress? Che succede se gli dài in pasto 6 megabyte di codice? In questo talk investigheremo come si comporta React in situazioni di stress elevato, e come ha aiutato il nostro team a costruire codice sicuro ad una scala enorme."
 <figure><a href="https://skillsmatter.com/skillscasts/5429-going-big-with-react#video"><img src="https://i.vimeocdn.com/video/481670116_650.jpg"></a></figure>
 
 * * *
 
-### CodeWinds {#codewinds}
+### CodeWinds
 
 [Pete Hunt](http://www.petehunt.net/) ha parlato con [Jeff Barczewski](http://jeff.barczewski.com/) a proposito di React nell'Episodio 4 di CodeWinds.
 <figure><a href="http://codewinds.com/4"><img src="../images/docs/codewinds-004.png"></a></figure>
@@ -69,7 +69,7 @@ Un video di [tagtree.tv](http://tagtree.tv/) che espone i principi di [Pensare i
 
 * * *
 
-### JavaScript Jabber {#javascript-jabber}
+### JavaScript Jabber
 
 [Pete Hunt](http://www.petehunt.net/) e [Jordan Walke](https://github.com/jordwalke) hanno parlato di React in JavaScript Jabber 73.
 <figure><a href="http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/#content"><img src="../images/docs/javascript-jabber.png"></a></figure>
@@ -97,7 +97,7 @@ Un video di [tagtree.tv](http://tagtree.tv/) che espone i principi di [Pensare i
 
 * * *
 
-### Introduzione a React.js - Facebook Seattle {#introduzione-a-reactjs---facebook-seattle}
+### Introduzione a React.js - Facebook Seattle
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/XxVg_s8xAms" frameborder="0" allowfullscreen></iframe>
 
@@ -105,14 +105,14 @@ Di [Tom Occhino](http://tomocchino.com/) e [Jordan Walke](https://github.com/jor
 
 * * *
 
-### Backbone + React + Middleman Screencast {#backbone--react--middleman-screencast}
+### Backbone + React + Middleman Screencast
 <iframe width="650" height="488" src="https://www.youtube-nocookie.com/embed/iul1fWHVU6A" frameborder="0" allowfullscreen></iframe>
 
 Backbone è una grande maniera di interfacciare una API REST con React. Questo screencast mostra come integrare i due usando [Backbone-React-Component](https://github.com/magalhas/backbone-react-component). Middleman è il framework utilizzato in questo esempio, ma può essere facilmente sostituito con altri framework. Si può trovare un template supportato per questo esempio [qui](https://github.com/jbhatab/middleman-backbone-react-template). -- [Open Minded Innovations](http://www.openmindedinnovations.com/)
 
 * * *
 
-### Sviluppare Interfacce Utente Con React - Super VanJS {#sviluppare-interfacce-utente-con-react---super-vanjs}
+### Sviluppare Interfacce Utente Con React - Super VanJS
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/1OeXsL5mr4g" frameborder="0" allowfullscreen></iframe>
 
@@ -120,7 +120,7 @@ Di [Steven Luscher](https://github.com/steveluscher)
 
 * * *
 
-### Introduzione a React - LAWebSpeed meetup {#introduzione-a-react---lawebspeed-meetup}
+### Introduzione a React - LAWebSpeed meetup
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/SMMRJif5QW0" frameborder="0" allowfullscreen></iframe>
 
@@ -128,7 +128,7 @@ Di [Stoyan Stefanov](http://www.phpied.com/)
 
 * * *
 
-### React, o come rendere la vita più semplice - FrontEnd Dev Conf '14 {#react-o-come-rendere-la-vita-più-semplice---frontend-dev-conf-14}
+### React, o come rendere la vita più semplice - FrontEnd Dev Conf '14
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/YJNUK0EA_Jo" frameborder="0" allowfullscreen></iframe>
 
@@ -136,19 +136,19 @@ Di [Stoyan Stefanov](http://www.phpied.com/)
 
 * * *
 
-### "Programmazione funzionale del DOM" - Meteor DevShop 11 {#programmazione-funzionale-del-dom---meteor-devshop-11}
+### "Programmazione funzionale del DOM" - Meteor DevShop 11
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/qqVbr_LaCIo" frameborder="0" allowfullscreen></iframe>
 
 * * *
 
-### "Ripensare lo Sviluppo di Applicazioni Web a Facebook" - Facebook F8 Conference 2014 {#ripensare-lo-sviluppo-di-applicazioni-web-a-facebook---facebook-f8-conference-2014}
+### "Ripensare lo Sviluppo di Applicazioni Web a Facebook" - Facebook F8 Conference 2014
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/nYkdrAPrdcw" frameborder="0" allowfullscreen></iframe>
 
 * * *
 
-### React e Flux: Costruire Applicazioni con un Flusso Dati Unidirezionale - Forward JS 2014 {#react-e-flux-costruire-applicazioni-con-un-flusso-dati-unidirezionale---forward-js-2014}
+### React e Flux: Costruire Applicazioni con un Flusso Dati Unidirezionale - Forward JS 2014
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/i__969noyAM" frameborder="0" allowfullscreen></iframe>
 
@@ -156,7 +156,7 @@ Gli ingegneri di Facebook [Bill Fisher](https://twitter.com/fisherwebdev) e [Jin
 
 * * *
 
-### Rendering Lato Server di Applicazioni Isomorfiche a SoundCloud {#rendering-lato-server-di-applicazioni-isomorfiche-a-soundcloud}
+### Rendering Lato Server di Applicazioni Isomorfiche a SoundCloud
 
 <iframe src="https://player.vimeo.com/video/108488724" width="100%" height="365" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
 
@@ -166,7 +166,7 @@ Gli ingegneri di Facebook [Bill Fisher](https://twitter.com/fisherwebdev) e [Jin
 
 * * *
 
-### Introduzione a React Native (+Playlist) - React.js Conf 2015 {#introduzione-a-react-native-playlist---reactjs-conf-2015}
+### Introduzione a React Native (+Playlist) - React.js Conf 2015
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
 
diff --git a/content/community/videos.ko-KR.md b/content/community/videos.ko-KR.md
index 4e9d0058f3..171c4c5c10 100644
--- a/content/community/videos.ko-KR.md
+++ b/content/community/videos.ko-KR.md
@@ -6,7 +6,7 @@ prev: conferences-ko-KR.html
 next: complementary-tools-ko-KR.html
 ---
 
-### Rethinking best practices - JSConf.eu {#rethinking-best-practices---jsconfeu}
+### Rethinking best practices - JSConf.eu
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/x7cQ3mrcKaY" frameborder="0" allowfullscreen></iframe>
 
@@ -14,14 +14,14 @@ next: complementary-tools-ko-KR.html
 
 * * *
 
-### Thinking in react - tagtree.tv {#thinking-in-react---tagtreetv}
+### Thinking in react - tagtree.tv
 
 [tagtree.tv](http://tagtree.tv/)의 비디오는 간단한 어플리케이션을 구성하면서 [Thinking in React](/docs/thinking-in-react-ko-KR.html)의 원리들을 전달합니다.
 <figure><a href="http://tagtree.tv/thinking-in-react"><img src="../images/docs/thinking-in-react-tagtree.png"></a></figure>
 
 * * *
 
-### Secrets of the Virtual DOM - MtnWest JS {#secrets-of-the-virtual-dom---mtnwest-js}
+### Secrets of the Virtual DOM - MtnWest JS
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/h3KksH8gfcQ" frameborder="0" allowfullscreen></iframe>
 
@@ -29,14 +29,14 @@ next: complementary-tools-ko-KR.html
 
 * * *
 
-### Going big with React {#going-big-with-react}
+### Going big with React
 
 "이 발표에서, 이 모든 JS 프레임워크가 다음을 약속하는것처럼 보입니다: 깨끗한 구현들, 빠른 코드 디자인, 완전한 수행. 그런데 당신이 JavaScript 스트레스 테스트를 할때, 어떤 일이 발생합니까? 혹은 6MB의 코드를 던지면 무슨일이 발생합니까? 이번에는 높은 스트레스 환경에서 React가 어떻게 작동하는지, 그리고 이것이 우리 팀이 방대한 크기의 코드를 안전하게 구성하는데 어떻게 도움이 되어줄지를 조사해 볼겁니다."
 [![](https://i.vimeocdn.com/video/481670116_650.jpg)](https://skillsmatter.com/skillscasts/5429-going-big-with-react#video)
 
 * * *
 
-### CodeWinds {#codewinds}
+### CodeWinds
 
 CodeWinds Episode 4 에서 [Pete Hunt](http://www.petehunt.net/)와 [Jeff Barczewski](http://jeff.barczewski.com/)가 React에 대해서 이야기 합니다.
 
@@ -70,7 +70,7 @@ CodeWinds Episode 4 에서 [Pete Hunt](http://www.petehunt.net/)와 [Jeff Barcze
 
 * * *
 
-### JavaScript Jabber {#javascript-jabber}
+### JavaScript Jabber
 
 JavaScript Jabber 73에서 [Pete Hunt](http://www.petehunt.net/)와 [Jordan Walke](https://github.com/jordwalke)가 React에 대해서 이야기했습니다.
 
@@ -99,7 +99,7 @@ JavaScript Jabber 73에서 [Pete Hunt](http://www.petehunt.net/)와 [Jordan Walk
 
 * * *
 
-### Introduction to React.js - Facebook Seattle {#introduction-to-reactjs---facebook-seattle}
+### Introduction to React.js - Facebook Seattle
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/XxVg_s8xAms" frameborder="0" allowfullscreen></iframe>
 
@@ -107,14 +107,14 @@ By [Tom Occhino](http://tomocchino.com/), [Jordan Walke](https://github.com/jord
 
 * * *
 
-### Backbone + React + Middleman Screencast {#backbone--react--middleman-screencast}
+### Backbone + React + Middleman Screencast
 <iframe width="650" height="488" src="https://www.youtube-nocookie.com/embed/iul1fWHVU6A" frameborder="0" allowfullscreen></iframe>
 
 Backbone은 React로 REST API를 제공하기 위한 아주 좋은 방법입니다. 이 화면중개는 [Backbone-React-Component](https://github.com/magalhas/backbone-react-component)을 이용해서 어떻게 이 두가지를 연동하는지 보여줍니다. Middleman은 이 예제에서 사용되는 프레임워크이지만, 쉽게 다른 프레임워크로 대체하실 수 있습니다. 지원되는 템플릿은 [이곳](https://github.com/jbhatab/middleman-backbone-react-template)에서 찾으실 수 있습니다. -- [열린 마음의 혁명들](http://www.openmindedinnovations.com/)
 
 * * *
 
-### Developing User Interfaces With React - Super VanJS {#developing-user-interfaces-with-react---super-vanjs}
+### Developing User Interfaces With React - Super VanJS
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/1OeXsL5mr4g" frameborder="0" allowfullscreen></iframe>
 
@@ -122,7 +122,7 @@ By [Steven Luscher](https://github.com/steveluscher)
 
 * * *
 
-### Introduction to React - LAWebSpeed meetup {#introduction-to-react---lawebspeed-meetup}
+### Introduction to React - LAWebSpeed meetup
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/SMMRJif5QW0" frameborder="0" allowfullscreen></iframe>
 
@@ -130,7 +130,7 @@ by [Stoyan Stefanov](http://www.phpied.com/)
 
 * * *
 
-### React, or how to make life simpler - FrontEnd Dev Conf '14 {#react-or-how-to-make-life-simpler---frontend-dev-conf-14}
+### React, or how to make life simpler - FrontEnd Dev Conf '14
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/YJNUK0EA_Jo" frameborder="0" allowfullscreen></iframe>
 
@@ -138,19 +138,19 @@ by [Stoyan Stefanov](http://www.phpied.com/)
 
 * * *
 
-### "Functional DOM programming" - Meteor DevShop 11 {#functional-dom-programming---meteor-devshop-11}
+### "Functional DOM programming" - Meteor DevShop 11
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/qqVbr_LaCIo" frameborder="0" allowfullscreen></iframe>
 
 * * *
 
-### "Rethinking Web App Development at Facebook" - Facebook F8 Conference 2014 {#rethinking-web-app-development-at-facebook---facebook-f8-conference-2014}
+### "Rethinking Web App Development at Facebook" - Facebook F8 Conference 2014
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/nYkdrAPrdcw" frameborder="0" allowfullscreen></iframe>
 
 * * *
 
-### React and Flux: Building Applications with a Unidirectional Data Flow - Forward JS 2014 {#react-and-flux-building-applications-with-a-unidirectional-data-flow---forward-js-2014}
+### React and Flux: Building Applications with a Unidirectional Data Flow - Forward JS 2014
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/i__969noyAM" frameborder="0" allowfullscreen></iframe>
 
@@ -158,7 +158,7 @@ Facebook 개발자 [Bill Fisher](https://twitter.com/fisherwebdev)와 [Jing Chen
 
 * * *
 
-### Server-Side Rendering of Isomorphic Apps at SoundCloud {#server-side-rendering-of-isomorphic-apps-at-soundcloud}
+### Server-Side Rendering of Isomorphic Apps at SoundCloud
 
 <iframe src="https://player.vimeo.com/video/108488724" width="100%" height="365" frameborder="0" allowfullscreen></iframe>
 
@@ -167,7 +167,7 @@ Server-side rendering을 위해 [SoundCloud](https://developers.soundcloud.com/b
 
 * * *
 
-### Introducing React Native (+Playlist) - React.js Conf 2015 {#introducing-react-native-playlist---reactjs-conf-2015}
+### Introducing React Native (+Playlist) - React.js Conf 2015
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/v/KVZ-P-ZI6W4&index=1&list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
 
diff --git a/content/community/videos.md b/content/community/videos.md
index d50312231e..55585db32b 100644
--- a/content/community/videos.md
+++ b/content/community/videos.md
@@ -10,67 +10,67 @@ redirect_from:
 
 Videos dedicated to the discussion of React and the React ecosystem.
 
-### React.js Conf 2017 {#reactjs-conf-2017}
+### React.js Conf 2017
 
 A playlist of videos from React.js Conf 2017.
 <iframe title="React.js Conf 2017" width="650" height="366" src="https://www.youtube-nocookie.com/embed/playlist?list=PLb0IAmt7-GS3fZ46IGFirdqKTIxlws7e0" frameborder="0" allowfullscreen></iframe>
 
-### React.js Conf 2016 {#reactjs-conf-2016}
+### React.js Conf 2016
 
 A playlist of videos from React.js Conf 2016.
 <iframe title="React.js Conf 2016" width="650" height="366" src="https://www.youtube-nocookie.com/embed/playlist?list=PLb0IAmt7-GS0M8Q95RIc2lOM6nc77q1IY" frameborder="0" allowfullscreen></iframe>
 
-### React.js Conf 2015 {#reactjs-conf-2015}
+### React.js Conf 2015
 
 A playlist of videos from React.js Conf 2015.
 <iframe title="React.js Conf 2015" width="650" height="366" src="https://www.youtube-nocookie.com/embed/playlist?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
 
-### Secrets of the Virtual DOM {#secrets-of-the-virtual-dom}
+### Secrets of the Virtual DOM
 
 Pete Hunt at Mountain West JavaScript 2014 discusses why a virtual DOM was built for React, how it compares to other systems, and its relevance to the future of browser technologies - (2014 - 0h44m).
 <iframe title="Mountain West JavaScript 2014 - Be Predictable, Not Correct. by Pete Hunt" width="650" height="366" src="https://www.youtube-nocookie.com/embed/h3KksH8gfcQ" frameborder="0" allowfullscreen></iframe>
 
-### Flux and Server-side Rendering {#flux-and-server-side-rendering}
+### Flux and Server-side Rendering
 
 Pete Hunt discusses flux and server-side rendering in React - (2014 - 0h55m).
 <iframe title="YUI Open Roundtable with Pete Hunt" width="650" height="366" src="https://www.youtube-nocookie.com/embed/ZLfe0i2RDtY" frameborder="0" allowfullscreen></iframe>
 
-### Rethinking Web App Development at Facebook {#rethinking-web-app-development-at-facebook}
+### Rethinking Web App Development at Facebook
 
 Facebook F8 2014 talk to learn how we abandoned the traditional MVC paradigm in favor of a more functional application architecture - (2014 - 0h44m).
 <iframe title="Hacker Way: Rethinking Web App Development at Facebook" width="650" height="366" src="https://www.youtube-nocookie.com/embed/nYkdrAPrdcw" frameborder="0" allowfullscreen></iframe>
 
-### Introduction to React {#introduction-to-react}
+### Introduction to React
 
 Stoyan Stefanov gives an introduction to React at LAWebSpeed meetup - (2014 - 0h51m).
 <iframe title="Joe Dev on Tech - Stoyan Stefanov - Introduction to React" width="650" height="366" src="https://www.youtube-nocookie.com/embed/SMMRJif5QW0" frameborder="0" allowfullscreen></iframe>
 
-### React and Flux: Building Applications with a Unidirectional Data Flow {#react-and-flux-building-applications-with-a-unidirectional-data-flow}
+### React and Flux: Building Applications with a Unidirectional Data Flow
 
 Facebook engineers Bill Fisher and Jing Chen talk about Flux and React at Forward JS 2014, and how using an application architecture with a unidirectional data flow cleans up a lot of their code.
 <iframe title="React and Flux: Building Applications with a Unidirectional Data Flow" width="650" height="366" src="https://www.youtube-nocookie.com/embed/i__969noyAM" frameborder="0" allowfullscreen></iframe>
 
-### Going Big with React {#going-big-with-react}
+### Going Big with React
 
 Areeb Malik investigates how React performs in a high stress situation, and how it helped his team build safe code on a massive scale - (2014 - 0h31m).
 [![going big with React](https://i.vimeocdn.com/video/481670116_650.jpg)]
 
 
-### Rethinking Best Practices {#rethinking-best-practices}
+### Rethinking Best Practices
 
 Pete Hunt's talk at JSConf EU 2013 covers three topics: throwing out the notion of templates and building views with JavaScript, “re-rendering” your entire application when your data changes, and a lightweight implementation of the DOM and events - (2013 - 0h30m).
 <iframe title="Pete Hunt: React: Rethinking Best Practices - JSConf EU 2013" width="650" height="366" src="https://www.youtube-nocookie.com/embed/x7cQ3mrcKaY" frameborder="0" allowfullscreen></iframe>
 
-### High Performance Functional DOM Programming {#high-performance-functional-dom-programming}
+### High Performance Functional DOM Programming
 Pete Hunt discusses high performance functional programming with React at Meteor DevShop 11 - (2013 - 0h31m).
 <iframe title="Pete Hunt: High performance functional programming with React and Meteor" width="650" height="366" src="https://www.youtube-nocookie.com/embed/qqVbr_LaCIo" frameborder="0" allowfullscreen></iframe>
 
-### Developing User Interfaces With React {#developing-user-interfaces-with-react}
+### Developing User Interfaces With React
 
 Steven Luscher discusses developing user interfaces at Super VanJS 2013 - (2013 - 0h29m).
 <iframe title="SuperVanJS 2013: Steven Luscher - Developing User Interfaces with Facebook's React" width="650" height="366" src="https://www.youtube-nocookie.com/embed/1OeXsL5mr4g" frameborder="0" allowfullscreen></iframe>
 
-### Introduction to React {#introduction-to-react-1}
+### Introduction to React
 
 Tom Occhino and Jordan Walke introduce React at Facebook Seattle - (2013 - 1h20m).
 <iframe title="Tom Occhino and Jordan Walke introduce React at Facebook Seattle" width="650" height="366" src="https://www.youtube-nocookie.com/embed/XxVg_s8xAms" frameborder="0" allowfullscreen></iframe>
diff --git a/content/community/videos.zh-CN.md b/content/community/videos.zh-CN.md
index f5a360e1f2..173b4e5bd8 100644
--- a/content/community/videos.zh-CN.md
+++ b/content/community/videos.zh-CN.md
@@ -6,7 +6,7 @@ prev: conferences-zh-CN.html
 next: complementary-tools-zh-CN.html
 ---
 
-### Rethinking best practices - JSConf.eu {#rethinking-best-practices---jsconfeu}
+### Rethinking best practices - JSConf.eu
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/x7cQ3mrcKaY" frameborder="0" allowfullscreen></iframe>
 
@@ -14,14 +14,14 @@ next: complementary-tools-zh-CN.html
 
 * * *
 
-### Thinking in react - tagtree.tv {#thinking-in-react---tagtreetv}
+### Thinking in react - tagtree.tv
 
 一个 [tagtree.tv](http://tagtree.tv/) 传达 [Thinking in React](/docs/thinking-in-react.html) 原则的视频  在构建一个简单app时。
 <figure><a href="http://tagtree.tv/thinking-in-react"><img src="../images/docs/thinking-in-react-tagtree.png"></a></figure>
 
 * * *
 
-### Secrets of the Virtual DOM - MtnWest JS {#secrets-of-the-virtual-dom---mtnwest-js}
+### Secrets of the Virtual DOM - MtnWest JS
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/h3KksH8gfcQ" frameborder="0" allowfullscreen></iframe>
 
@@ -29,14 +29,14 @@ next: complementary-tools-zh-CN.html
 
 * * *
 
-### Going big with React {#going-big-with-react}
+### Going big with React
 
 "理论上,所有的JS框架都大有可为:干净的实现,快速的代码设计,完美的执行。但是当你压力测试时Javascript会怎样?当你丢进6MB的代码时会怎样?在这次演讲中,我们会探究React在高压环境下如何表现,以及它如何帮助我们的团队在大规模时构建安全代码。 "
 <figure><a href="https://skillsmatter.com/skillscasts/5429-going-big-with-react#video"><img src="https://i.vimeocdn.com/video/481670116_650.jpg"></a></figure>
 
 * * *
 
-### CodeWinds {#codewinds}
+### CodeWinds
 
 [Pete Hunt](http://www.petehunt.net/) 与 [Jeff Barczewski](http://jeff.barczewski.com/) 在 CodeWinds Episode 4 上关于 React 的谈话.
 <figure><a href="http://codewinds.com/4"><img src="../images/docs/codewinds-004.png"></a></figure>
@@ -69,7 +69,7 @@ next: complementary-tools-zh-CN.html
 
 * * *
 
-### JavaScript Jabber {#javascript-jabber}
+### JavaScript Jabber
 
 [Pete Hunt](http://www.petehunt.net/) 和 [Jordan Walke](https://github.com/jordwalke) 在 JavaScript Jabber 73 上关于React的谈话.
 <figure><a href="http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/#content"><img src="../images/docs/javascript-jabber.png"></a></figure>
@@ -97,7 +97,7 @@ next: complementary-tools-zh-CN.html
 
 * * *
 
-### Introduction to React.js - Facebook Seattle {#introduction-to-reactjs---facebook-seattle}
+### Introduction to React.js - Facebook Seattle
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/XxVg_s8xAms" frameborder="0" allowfullscreen></iframe>
 
@@ -105,14 +105,14 @@ next: complementary-tools-zh-CN.html
 
 * * *
 
-### Backbone + React + Middleman Screencast {#backbone--react--middleman-screencast}
+### Backbone + React + Middleman Screencast
 <iframe width="650" height="488" src="https://www.youtube-nocookie.com/embed/iul1fWHVU6A" frameborder="0" allowfullscreen></iframe>
 
 Backbone 是一个在用React实现 REST API 接口的极好方法。这个屏博展示了用 [Backbone-React-Component](https://github.com/magalhas/backbone-react-component)如何整合两者. Middleman 是在本例中使用的框架但很容易被替换成其他框架。对此可支持的template可以在[这里](https://github.com/jbhatab/middleman-backbone-react-template) 找到. -- [Open Minded Innovations](http://www.openmindedinnovations.com/)
 
 * * *
 
-### Developing User Interfaces With React - Super VanJS {#developing-user-interfaces-with-react---super-vanjs}
+### Developing User Interfaces With React - Super VanJS
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/1OeXsL5mr4g" frameborder="0" allowfullscreen></iframe>
 
@@ -120,7 +120,7 @@ Backbone 是一个在用React实现 REST API 接口的极好方法。这个屏
 
 * * *
 
-### Introduction to React - LAWebSpeed meetup {#introduction-to-react---lawebspeed-meetup}
+### Introduction to React - LAWebSpeed meetup
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/SMMRJif5QW0" frameborder="0" allowfullscreen></iframe>
 
@@ -128,7 +128,7 @@ Backbone 是一个在用React实现 REST API 接口的极好方法。这个屏
 
 * * *
 
-### React, or how to make life simpler - FrontEnd Dev Conf '14 {#react-or-how-to-make-life-simpler---frontend-dev-conf-14}
+### React, or how to make life simpler - FrontEnd Dev Conf '14
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/YJNUK0EA_Jo" frameborder="0" allowfullscreen></iframe>
 
@@ -136,19 +136,19 @@ Backbone 是一个在用React实现 REST API 接口的极好方法。这个屏
 
 * * *
 
-### "Functional DOM programming" - Meteor DevShop 11 {#functional-dom-programming---meteor-devshop-11}
+### "Functional DOM programming" - Meteor DevShop 11
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/qqVbr_LaCIo" frameborder="0" allowfullscreen></iframe>
 
 * * *
 
-### "Rethinking Web App Development at Facebook" - Facebook F8 Conference 2014 {#rethinking-web-app-development-at-facebook---facebook-f8-conference-2014}
+### "Rethinking Web App Development at Facebook" - Facebook F8 Conference 2014
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/nYkdrAPrdcw" frameborder="0" allowfullscreen></iframe>
 
 * * *
 
-### React and Flux: Building Applications with a Unidirectional Data Flow - Forward JS 2014 {#react-and-flux-building-applications-with-a-unidirectional-data-flow---forward-js-2014}
+### React and Flux: Building Applications with a Unidirectional Data Flow - Forward JS 2014
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/i__969noyAM" frameborder="0" allowfullscreen></iframe>
 
@@ -156,7 +156,7 @@ Facebook 工程师 [Bill Fisher](https://twitter.com/fisherwebdev) 和 [Jing Che
 
 * * *
 
-### Server-Side Rendering of Isomorphic Apps at SoundCloud {#server-side-rendering-of-isomorphic-apps-at-soundcloud}
+### Server-Side Rendering of Isomorphic Apps at SoundCloud
 
 <iframe src="https://player.vimeo.com/video/108488724" width="100%" height="365" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
 
@@ -166,7 +166,7 @@ Facebook 工程师 [Bill Fisher](https://twitter.com/fisherwebdev) 和 [Jing Che
 
 * * *
 
-### Introducing React Native (+Playlist) - React.js Conf 2015 {#introducing-react-native-playlist---reactjs-conf-2015}
+### Introducing React Native (+Playlist) - React.js Conf 2015
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
 
diff --git a/content/docs/accessibility.md b/content/docs/accessibility.md
index 663251a03b..d387921cac 100644
--- a/content/docs/accessibility.md
+++ b/content/docs/accessibility.md
@@ -4,15 +4,15 @@ title: Accessibility
 permalink: docs/accessibility.html
 ---
 
-## Why Accessibility? {#why-accessibility}
+## Why Accessibility?
 
 Web accessibility (also referred to as [**a11y**](https://en.wiktionary.org/wiki/a11y)) is the design and creation of websites that can be used by everyone. Accessibility support is necessary to allow assistive technology to interpret web pages.
 
 React fully supports building accessible websites, often by using standard HTML techniques.
 
-## Standards and Guidelines {#standards-and-guidelines}
+## Standards and Guidelines
 
-### WCAG {#wcag}
+### WCAG
 
 The [Web Content Accessibility Guidelines](https://www.w3.org/WAI/intro/wcag) provides guidelines for creating accessible web sites.
 
@@ -22,7 +22,7 @@ The following WCAG checklists provide an overview:
 - [WCAG checklist from WebAIM](http://webaim.org/standards/wcag/checklist)
 - [Checklist from The A11Y Project](http://a11yproject.com/checklist.html)
 
-### WAI-ARIA {#wai-aria}
+### WAI-ARIA
 
 The [Web Accessibility Initiative - Accessible Rich Internet Applications](https://www.w3.org/WAI/intro/aria) document contains techniques for building fully accessible JavaScript widgets.
 
@@ -39,7 +39,7 @@ Note that all `aria-*` HTML attributes are fully supported in JSX. Whereas most
 />
 ```
 
-## Semantic HTML {#semantic-html}
+## Semantic HTML
 Semantic HTML is the foundation of accessibility in a web application. Using the various HTML elements to reinforce the meaning of information
 in our websites will often give us accessibility for free.
 
@@ -106,9 +106,9 @@ function ListItem({ item }) {
 
 For more info, see [the Fragments documentation](/docs/fragments.html).
 
-## Accessible Forms {#accessible-forms}
+## Accessible Forms
 
-### Labeling {#labeling}
+### Labeling
 Every HTML form control, such as `<input>` and `<textarea>`, needs to be labeled accessibly. We need to provide descriptive labels that are also exposed to screen readers.
 
 The following resources show us how to do this:
@@ -124,20 +124,20 @@ Although these standard HTML practices can be directly used in React, note that
 <input id="namedInput" type="text" name="name"/>
 ```
 
-### Notifying the user of errors {#notifying-the-user-of-errors}
+### Notifying the user of errors
 
 Error situations need to be understood by all users. The following link shows us how to expose error texts to screen readers as well:
 
 - [The W3C demonstrates user notifications](https://www.w3.org/WAI/tutorials/forms/notifications/)
 - [WebAIM looks at form validation](http://webaim.org/techniques/formvalidation/)
 
-## Focus Control {#focus-control}
+## Focus Control
 
 Ensure that your web application can be fully operated with the keyboard only:
 
 - [WebAIM talks about keyboard accessibility](http://webaim.org/techniques/keyboard/)
 
-### Keyboard focus and focus outline {#keyboard-focus-and-focus-outline}
+### Keyboard focus and focus outline
 
 Keyboard focus refers to the current element in the DOM that is selected to accept input from the keyboard. We see it everywhere as a focus outline similar to that shown in the following image:
 
@@ -145,7 +145,7 @@ Keyboard focus refers to the current element in the DOM that is selected to acce
 
 Only ever use CSS that removes this outline, for example by setting `outline: 0`, if you are replacing it with another focus outline implementation.
 
-### Mechanisms to skip to desired content {#mechanisms-to-skip-to-desired-content}
+### Mechanisms to skip to desired content
 
 Provide a mechanism to allow users to skip past navigation sections in your application as this assists and speeds up keyboard navigation.
 
@@ -160,7 +160,7 @@ Read more about the use of these elements to enhance accessibility here:
 
 - [Accessible Landmarks](http://www.scottohara.me/blog/2018/03/03/landmarks.html)
 
-### Programmatically managing focus {#programmatically-managing-focus}
+### Programmatically managing focus
 
 Our React applications continuously modify the HTML DOM during runtime, sometimes leading to keyboard focus being lost or set to an unexpected element. In order to repair this,
 we need to programmatically nudge the keyboard focus in the right direction. For example, by resetting keyboard focus to a button that opened a modal window after that modal window is closed.
@@ -241,7 +241,7 @@ initially triggered the modal.
 >While this is a very important accessibility feature, it is also a technique that should be used judiciously. Use it to repair the keyboard focus flow when it is disturbed, not to try and anticipate how
 >users want to use applications.
 
-## Mouse and pointer events {#mouse-and-pointer-events}
+## Mouse and pointer events
 
 Ensure that all functionality exposed through a mouse or pointer event can also be accessed using the keyboard alone. Depending only on the pointer device will lead to many cases where
 keyboard users cannot use your application.
@@ -376,7 +376,7 @@ the keyboard events to enable `arrow key` interaction of the popover options hav
 This is one example of many cases where depending on only pointer and mouse events will break functionality for keyboard users. Always testing with the keyboard will immediately
 highlight the problem areas which can then be fixed by using keyboard aware event handlers.
 
-## More Complex Widgets {#more-complex-widgets}
+## More Complex Widgets
 
 A more complex user experience should not mean a less accessible one. Whereas accessibility is most easily achieved by coding as close to HTML as possible,
 even the most complex widget can be coded accessibly.
@@ -390,15 +390,15 @@ Each type of widget has a specific design pattern and is expected to function in
 - [Heydon Pickering - ARIA Examples](http://heydonworks.com/practical_aria_examples/)
 - [Inclusive Components](https://inclusive-components.design/)
 
-## Other Points for Consideration {#other-points-for-consideration}
+## Other Points for Consideration
 
-### Setting the language {#setting-the-language}
+### Setting the language
 
 Indicate the human language of page texts as screen reader software uses this to select the correct voice settings:
 
 - [WebAIM - Document Language](http://webaim.org/techniques/screenreader/#language)
 
-### Setting the document title {#setting-the-document-title}
+### Setting the document title
 
 Set the document `<title>` to correctly describe the current page content as this ensures that the user remains aware of the current page context:
 
@@ -406,7 +406,7 @@ Set the document `<title>` to correctly describe the current page content as thi
 
 We can set this in React using the [React Document Title Component](https://github.com/gaearon/react-document-title).
 
-### Color contrast {#color-contrast}
+### Color contrast
 
 Ensure that all readable text on your website has sufficient color contrast to remain maximally readable by users with low vision:
 
@@ -423,11 +423,11 @@ If you want to extend your contrast testing abilities you can use these tools:
 - [WebAIM - Color Contrast Checker](http://webaim.org/resources/contrastchecker/)
 - [The Paciello Group - Color Contrast Analyzer](https://www.paciellogroup.com/resources/contrastanalyser/)
 
-## Development and Testing Tools {#development-and-testing-tools}
+## Development and Testing Tools
 
 There are a number of tools we can use to assist in the creation of accessible web applications.
 
-### The keyboard {#the-keyboard}
+### The keyboard
 
 By far the easiest and also one of the most important checks is to test if your entire website can be reached and used with the keyboard alone. Do this by:
 
@@ -436,12 +436,12 @@ By far the easiest and also one of the most important checks is to test if your
 1. Using `Enter` to activate elements.
 1. Where required, using your keyboard arrow keys to interact with some elements, such as menus and dropdowns.
 
-### Development assistance {#development-assistance}
+### Development assistance
 
 We can check some accessibility features directly in our JSX code. Often intellisense checks are already provided in JSX aware IDE's for the ARIA roles, states and properties. We also
 have access to the following tool:
 
-#### eslint-plugin-jsx-a11y {#eslint-plugin-jsx-a11y}
+#### eslint-plugin-jsx-a11y
 
 The [eslint-plugin-jsx-a11y](https://github.com/evcohen/eslint-plugin-jsx-a11y) plugin for ESLint provides AST linting feedback regarding accessibility issues in your JSX. Many
 IDE's allow you to integrate these findings directly into code analysis and source code windows.
@@ -456,12 +456,12 @@ you can create an `.eslintrc` file in the root of your project with this content
   }
   ```
 
-### Testing accessibility in the browser {#testing-accessibility-in-the-browser}
+### Testing accessibility in the browser
 
 A number of tools exist that can run accessibility audits on web pages in your browser. Please use them in combination with other accessibility checks mentioned here as they can only
 test the technical accessibility of your HTML.
 
-#### aXe, aXe-core and react-axe {#axe-axe-core-and-react-axe}
+#### aXe, aXe-core and react-axe
 
 Deque Systems offers [aXe-core](https://github.com/dequelabs/axe-core) for automated and end-to-end accessibility tests of your applications. This module includes integrations for Selenium.
 
@@ -469,11 +469,11 @@ Deque Systems offers [aXe-core](https://github.com/dequelabs/axe-core) for autom
 
 You can also use the [react-axe](https://github.com/dylanb/react-axe) module to report these accessibility findings directly to the console while developing and debugging.
 
-#### WebAIM WAVE {#webaim-wave}
+#### WebAIM WAVE
 
 The [Web Accessibility Evaluation Tool](http://wave.webaim.org/extension/) is another accessibility browser extension.
 
-#### Accessibility inspectors and the Accessibility Tree {#accessibility-inspectors-and-the-accessibility-tree}
+#### Accessibility inspectors and the Accessibility Tree
 
 [The Accessibility Tree](https://www.paciellogroup.com/blog/2015/01/the-browser-accessibility-tree/) is a subset of the DOM tree that contains accessible objects for every DOM element that should be exposed
 to assistive technology, such as screen readers.
@@ -484,15 +484,15 @@ In some browsers we can easily view the accessibility information for each eleme
 - [Activate the Accessibility Inspector in Chrome](https://gist.github.com/marcysutton/0a42f815878c159517a55e6652e3b23a)
 - [Using the Accessibility Inspector in OS X Safari](https://developer.apple.com/library/content/documentation/Accessibility/Conceptual/AccessibilityMacOSX/OSXAXTestingApps.html)
 
-### Screen readers {#screen-readers}
+### Screen readers
 
 Testing with a screen reader should form part of your accessibility tests.
 
 Please note that browser / screen reader combinations matter. It is recommended that you test your application in the browser best suited to your screen reader of choice.
 
-### Commonly Used Screen Readers {#commonly-used-screen-readers}
+### Commonly Used Screen Readers
 
-#### NVDA in Firefox {#nvda-in-firefox}
+#### NVDA in Firefox
 
 [NonVisual Desktop Access](https://www.nvaccess.org/) or NVDA is an open source Windows screen reader that is widely used.
 
@@ -501,7 +501,7 @@ Refer to the following guides on how to best use NVDA:
 - [WebAIM - Using NVDA to Evaluate Web Accessibility](http://webaim.org/articles/nvda/)
 - [Deque - NVDA Keyboard Shortcuts](https://dequeuniversity.com/screenreaders/nvda-keyboard-shortcuts)
 
-#### VoiceOver in Safari {#voiceover-in-safari}
+#### VoiceOver in Safari
 
 VoiceOver is an integrated screen reader on Apple devices.
 
@@ -511,7 +511,7 @@ Refer to the following guides on how activate and use VoiceOver:
 - [Deque - VoiceOver for OS X Keyboard Shortcuts](https://dequeuniversity.com/screenreaders/voiceover-keyboard-shortcuts)
 - [Deque - VoiceOver for iOS Shortcuts](https://dequeuniversity.com/screenreaders/voiceover-ios-shortcuts)
 
-#### JAWS in Internet Explorer {#jaws-in-internet-explorer}
+#### JAWS in Internet Explorer
 
 [Job Access With Speech](http://www.freedomscientific.com/Products/Blindness/JAWS) or JAWS, is a prolifically used screen reader on Windows.
 
@@ -520,9 +520,9 @@ Refer to the following guides on how to best use JAWS:
 - [WebAIM - Using JAWS to Evaluate Web Accessibility](http://webaim.org/articles/jaws/)
 - [Deque - JAWS Keyboard Shortcuts](https://dequeuniversity.com/screenreaders/jaws-keyboard-shortcuts)
 
-### Other Screen Readers {#other-screen-readers}
+### Other Screen Readers
 
-#### ChromeVox in Google Chrome {#chromevox-in-google-chrome}
+#### ChromeVox in Google Chrome
 
 [ChromeVox](http://www.chromevox.com/) is an integrated screen reader on Chromebooks and is available [as an extension](https://chrome.google.com/webstore/detail/chromevox/kgejglhpjiefppelpmljglcjbhoiplfn?hl=en) for Google Chrome.
 
diff --git a/content/docs/add-react-to-a-website.md b/content/docs/add-react-to-a-website.md
index 11b99d37aa..886c776015 100644
--- a/content/docs/add-react-to-a-website.md
+++ b/content/docs/add-react-to-a-website.md
@@ -19,7 +19,7 @@ The majority of websites aren't, and don't need to be, single-page apps. With **
 - [Add React in One Minute](#add-react-in-one-minute)
 - [Optional: Try React with JSX](#optional-try-react-with-jsx) (no bundler necessary!)
 
-## Add React in One Minute {#add-react-in-one-minute}
+## Add React in One Minute
 
 In this section, we will show how to add a React component to an existing HTML page. You can follow along with your own website, or create an empty HTML file to practice.
 
@@ -27,7 +27,7 @@ There will be no complicated tools or install requirements -- **to complete this
 
 Optional: [Download the full example (2KB zipped)](https://gist.github.com/gaearon/6668a1f6986742109c00a581ce704605/archive/f6c882b6ae18bde42dcf6fdb751aae93495a2275.zip)
 
-### Step 1: Add a DOM Container to the HTML {#step-1-add-a-dom-container-to-the-html}
+### Step 1: Add a DOM Container to the HTML
 
 First, open the HTML page you want to edit. Add an empty `<div>` tag to mark the spot where you want to display something with React. For example:
 
@@ -45,7 +45,7 @@ We gave this `<div>` a unique `id` HTML attribute. This will allow us to find it
 >
 >You can place a "container" `<div>` like this **anywhere** inside the `<body>` tag. You may have as many independent DOM containers on one page as you need. They are usually empty -- React will replace any existing content inside DOM containers.
 
-### Step 2: Add the Script Tags {#step-2-add-the-script-tags}
+### Step 2: Add the Script Tags
 
 Next, add three `<script>` tags to the HTML page right before the closing `</body>` tag:
 
@@ -65,7 +65,7 @@ Next, add three `<script>` tags to the HTML page right before the closing `</bod
 
 The first two tags load React. The third one will load your component code.
 
-### Step 3: Create a React Component {#step-3-create-a-react-component}
+### Step 3: Create a React Component
 
 Create a file called `like_button.js` next to your HTML page.
 
@@ -86,7 +86,7 @@ ReactDOM.render(e(LikeButton), domContainer);
 
 These two lines of code find the `<div>` we added to our HTML in the first step, and then display our "Like" button React component inside of it. 
 
-### That's It! {#thats-it}
+### That's It!
 
 There is no step four. **You have just added the first React component to your website.**
 
@@ -96,7 +96,7 @@ Check out the next sections for more tips on integrating React.
 
 **[Download the full example (2KB zipped)](https://gist.github.com/gaearon/6668a1f6986742109c00a581ce704605/archive/f6c882b6ae18bde42dcf6fdb751aae93495a2275.zip)**
 
-### Tip: Reuse a Component {#tip-reuse-a-component}
+### Tip: Reuse a Component
 
 Commonly, you might want to display React components in multiple places on the HTML page. Here is an example that displays the "Like" button three times and passes some data to it:
 
@@ -108,7 +108,7 @@ Commonly, you might want to display React components in multiple places on the H
 >
 >This strategy is mostly useful while React-powered parts of the page are isolated from each other. Inside React code, it's easier to use [component composition](/docs/components-and-props.html#composing-components) instead.
 
-### Tip: Minify JavaScript for Production {#tip-minify-javascript-for-production}
+### Tip: Minify JavaScript for Production
 
 Before deploying your website to production, be mindful that unminifed JavaScript can significantly slow down the page for your users.
 
@@ -121,7 +121,7 @@ If you already minify the application scripts, **your site will be production-re
 
 If you don't have a minification step for your scripts, [here's one way to set it up](https://gist.github.com/gaearon/42a2ffa41b8319948f9be4076286e1f3).
 
-## Optional: Try React with JSX {#optional-try-react-with-jsx}
+## Optional: Try React with JSX
 
 In the examples above, we only relied on features that are natively supported by the browsers. This is why we used a JavaScript function call to tell React what to display:
 
@@ -151,7 +151,7 @@ These two code snippets are equivalent. While **JSX is [completely optional](/do
 
 You can play with JSX using [this online converter](http://babeljs.io/repl#?babili=false&browsers=&build=&builtIns=false&spec=false&loose=false&code_lz=Q&debug=false&forceAllTransforms=false&shippedProposals=false&circleciRepo=&evaluate=false&fileSize=false&sourceType=module&lineWrap=true&presets=es2015%2Creact%2Cstage-2%2Cstage-3&prettier=true&targets=Node-6.12&version=6.26.0&envVersion=).
 
-### Quickly Try JSX {#quickly-try-jsx}
+### Quickly Try JSX
 
 The quickest way to try JSX in your project is to add this `<script>` tag to your page:
 
@@ -163,7 +163,7 @@ Now you can use JSX in any `<script>` tag by adding `type="text/babel"` attribut
 
 This approach is fine for learning and creating simple demos. However, it makes your website slow and **isn't suitable for production**. When you're ready to move forward, remove this new `<script>` tag and the `type="text/babel"` attributes you've added. Instead, in the next section you will set up a JSX preprocessor to convert all your `<script>` tags automatically.
 
-### Add JSX to a Project {#add-jsx-to-a-project}
+### Add JSX to a Project
 
 Adding JSX to a project doesn't require complicated tools like a bundler or a development server. Essentially, adding JSX **is a lot like adding a CSS preprocessor.** The only requirement is to have [Node.js](https://nodejs.org/) installed on your computer.
 
@@ -179,7 +179,7 @@ Go to your project folder in the terminal, and paste these two commands:
 Congratulations! You just added a **production-ready JSX setup** to your project.
 
 
-### Run JSX Preprocessor {#run-jsx-preprocessor}
+### Run JSX Preprocessor
 
 Create a folder called `src` and run this terminal command:
 
diff --git a/content/docs/addons-animation.md b/content/docs/addons-animation.md
index a619af76e8..8f5b64038a 100644
--- a/content/docs/addons-animation.md
+++ b/content/docs/addons-animation.md
@@ -16,7 +16,7 @@ redirect_from:
 
 The [`ReactTransitionGroup`](#low-level-api-reacttransitiongroup) add-on component is a low-level API for animation, and [`ReactCSSTransitionGroup`](#high-level-api-reactcsstransitiongroup) is an add-on component for easily implementing basic CSS animations and transitions.
 
-## High-level API: ReactCSSTransitionGroup {#high-level-api-reactcsstransitiongroup}
+## High-level API: ReactCSSTransitionGroup
 
 `ReactCSSTransitionGroup` is a high-level API based on [`ReactTransitionGroup`](#low-level-api-reacttransitiongroup) and is an easy way to perform CSS transitions and animations when a React component enters or leaves the DOM. It's inspired by the excellent [ng-animate](https://docs.angularjs.org/api/ngAnimate) library.
 
@@ -100,7 +100,7 @@ You can use these classes to trigger a CSS animation or transition. For example,
 
 You'll notice that animation durations need to be specified in both the CSS and the render method; this tells React when to remove the animation classes from the element and -- if it's leaving -- when to remove the element from the DOM.
 
-### Animate Initial Mounting {#animate-initial-mounting}
+### Animate Initial Mounting
 
 `ReactCSSTransitionGroup` provides the optional prop `transitionAppear`, to add an extra transition phase at the initial mount of the component. There is generally no transition phase at the initial mount as the default value of `transitionAppear` is `false`. The following is an example which passes the prop `transitionAppear` with the value `true`.
 
@@ -140,7 +140,7 @@ At the initial mount, all children of the `ReactCSSTransitionGroup` will `appear
 >
 > However, the default values of `transitionEnter` and `transitionLeave` are `true` so you must specify `transitionEnterTimeout` and `transitionLeaveTimeout` by default. If you don't need either enter or leave animations, pass `transitionEnter={false}` or `transitionLeave={false}`.
 
-### Custom Classes {#custom-classes}
+### Custom Classes
 
 It is also possible to use custom class names for each of the steps in your transitions. Instead of passing a string into transitionName you can pass an object containing either the `enter` and `leave` class names, or an object containing the `enter`, `enter-active`, `leave-active`, and `leave` class names. If only the enter and leave classes are provided, the enter-active and leave-active classes will be determined by appending '-active' to the end of the class name. Here are two examples using custom classes:
 
@@ -169,7 +169,7 @@ It is also possible to use custom class names for each of the steps in your tran
 // ...
 ```
 
-### Animation Group Must Be Mounted To Work {#animation-group-must-be-mounted-to-work}
+### Animation Group Must Be Mounted To Work
 
 In order for it to apply transitions to its children, the `ReactCSSTransitionGroup` must already be mounted in the DOM or the prop `transitionAppear` must be set to `true`.
 
@@ -194,7 +194,7 @@ render() {
 }
 ```
 
-### Animating One or Zero Items {#animating-one-or-zero-items}
+### Animating One or Zero Items
 
 In the example above, we rendered a list of items into `ReactCSSTransitionGroup`. However, the children of `ReactCSSTransitionGroup` can also be one or zero items. This makes it possible to animate a single element entering or leaving. Similarly, you can animate a new element replacing the current element. For example, we can implement a simple image carousel like this:
 
@@ -215,7 +215,7 @@ function ImageCarousel(props) {
 }
 ```
 
-### Disabling Animations {#disabling-animations}
+### Disabling Animations
 
 You can disable animating `enter` or `leave` animations if you want. For example, sometimes you may want an `enter` animation and no `leave` animation, but `ReactCSSTransitionGroup` waits for an animation to complete before removing your DOM node. You can add `transitionEnter={false}` or `transitionLeave={false}` props to `ReactCSSTransitionGroup` to disable these animations.
 
@@ -225,7 +225,7 @@ You can disable animating `enter` or `leave` animations if you want. For example
 
 * * *
 
-## Low-level API: ReactTransitionGroup {#low-level-api-reacttransitiongroup}
+## Low-level API: ReactTransitionGroup
 
 **Importing**
 
@@ -243,7 +243,7 @@ var ReactTransitionGroup = require('react-addons-transition-group') // ES5 with
  - [`componentWillLeave()`](#componentwillleave)
  - [`componentDidLeave()`](#componentdidleave)
 
-#### Rendering a Different Component {#rendering-a-different-component}
+#### Rendering a Different Component
 
 `ReactTransitionGroup` renders as a `span` by default. You can change this behavior by providing a `component` prop. For example, here's how you would render a `<ul>`:
 
@@ -263,7 +263,7 @@ Any additional, user-defined, properties will become properties of the rendered
 
 Every DOM component that React can render is available for use. However, `component` does not need to be a DOM component. It can be any React component you want; even ones you've written yourself! Just write `component={List}` and your component will receive `this.props.children`.
 
-#### Rendering a Single Child {#rendering-a-single-child}
+#### Rendering a Single Child
 
 People often use `ReactTransitionGroup` to animate mounting and unmounting of a single child such as a collapsible panel. Normally `ReactTransitionGroup` wraps all its children in a `span` (or a custom `component` as described above). This is because any React component has to return a single root element, and `ReactTransitionGroup` is no exception to this rule.
 
@@ -288,9 +288,9 @@ This only works when you are animating a single child in and out, such as a coll
 
 * * *
 
-## Reference {#reference}
+## Reference
 
-### `componentWillAppear()` {#componentwillappear}
+### `componentWillAppear()`
 
 ```javascript
 componentWillAppear(callback)
@@ -300,7 +300,7 @@ This is called at the same time as `componentDidMount()` for components that are
 
 * * *
 
-### `componentDidAppear()` {#componentdidappear}
+### `componentDidAppear()`
 
 ```javascript
 componentDidAppear()
@@ -310,7 +310,7 @@ This is called after the `callback` function that was passed to `componentWillAp
 
 * * *
 
-### `componentWillEnter()` {#componentwillenter}
+### `componentWillEnter()`
 
 ```javascript
 componentWillEnter(callback)
@@ -320,7 +320,7 @@ This is called at the same time as `componentDidMount()` for components added to
 
 * * *
 
-### `componentDidEnter()` {#componentdidenter}
+### `componentDidEnter()`
 
 ```javascript
 componentDidEnter()
@@ -330,7 +330,7 @@ This is called after the `callback` function that was passed to [`componentWillE
 
 * * *
 
-### `componentWillLeave()` {#componentwillleave}
+### `componentWillLeave()`
 
 ```javascript
 componentWillLeave(callback)
@@ -340,7 +340,7 @@ This is called when the child has been removed from the `ReactTransitionGroup`.
 
 * * *
 
-### `componentDidLeave()` {#componentdidleave}
+### `componentDidLeave()`
 
 ```javascript
 componentDidLeave()
diff --git a/content/docs/addons-create-fragment.md b/content/docs/addons-create-fragment.md
index 7c5fc9fda2..e69a8921d7 100644
--- a/content/docs/addons-create-fragment.md
+++ b/content/docs/addons-create-fragment.md
@@ -10,14 +10,14 @@ category: Add-Ons
 >
 > `React.addons` entry point is deprecated as of React v15.5. We now have first class support for fragments which you can read about [here](/docs/fragments.html).
 
-## Importing {#importing}
+## Importing
 
 ```javascript
 import createFragment from 'react-addons-create-fragment'; // ES6
 var createFragment = require('react-addons-create-fragment'); // ES5 with npm
 ```
 
-## Overview {#overview}
+## Overview
 
 In most cases, you can use the `key` prop to specify keys on the elements you're returning from `render`. However, this breaks down in one situation: if you have two sets of children that you need to reorder, there's no way to put a key on each set without adding a wrapper element.
 
@@ -39,7 +39,7 @@ The children will unmount and remount as you change the `swapped` prop because t
 
 To solve this problem, you can use the `createFragment` add-on to give keys to the sets of children.
 
-#### `Array<ReactNode> createFragment(object children)` {#arrayreactnode-createfragmentobject-children}
+#### `Array<ReactNode> createFragment(object children)`
 
 Instead of creating arrays, we write:
 
diff --git a/content/docs/addons-perf.md b/content/docs/addons-perf.md
index f50dee96f1..5b47c4ccb2 100644
--- a/content/docs/addons-perf.md
+++ b/content/docs/addons-perf.md
@@ -18,7 +18,7 @@ var Perf = require('react-addons-perf'); // ES5 with npm
 ```
 
 
-## Overview {#overview}
+## Overview
 
 React is usually quite fast out of the box. However, in situations where you need to squeeze every ounce of performance out of your app, it provides a [shouldComponentUpdate()](/docs/react-component.html#shouldcomponentupdate) method where you can add optimization hints to React's diff algorithm.
 
@@ -30,23 +30,23 @@ See these articles for an introduction to React performance tooling:
  - ["Performance Engineering with React"](http://benchling.engineering/performance-engineering-with-react/)
  - ["A Deep Dive into React Perf Debugging"](http://benchling.engineering/deep-dive-react-perf-debugging/) 
 
-### Development vs. Production Builds {#development-vs-production-builds}
+### Development vs. Production Builds
 
 If you're benchmarking or seeing performance problems in your React apps, make sure you're testing with the [minified production build](/downloads.html). The development build includes extra warnings that are helpful when building your apps, but it is slower due to the extra bookkeeping it does.
 
 However, the perf tools described on this page only work when using the development build of React. Therefore, the profiler only serves to indicate the _relatively_ expensive parts of your app.
 
-### Using Perf {#using-perf}
+### Using Perf
 
 The `Perf` object can be used with React in development mode only. You should not include this bundle when building your app for production.
 
-#### Getting Measurements {#getting-measurements}
+#### Getting Measurements
 
  - [`start()`](#start)
  - [`stop()`](#stop)
  - [`getLastMeasurements()`](#getlastmeasurements)
 
-#### Printing Results {#printing-results}
+#### Printing Results
 
 The following methods use the measurements returned by [`Perf.getLastMeasurements()`](#getlastmeasurements) to pretty-print the result.
 
@@ -58,10 +58,10 @@ The following methods use the measurements returned by [`Perf.getLastMeasurement
 
 * * *
 
-## Reference {#reference}
+## Reference
 
-### `start()` {#start}
-### `stop()` {#stop}
+### `start()`
+### `stop()`
 
 ```javascript
 Perf.start()
@@ -75,7 +75,7 @@ After stopping, you will need [`Perf.getLastMeasurements()`](#getlastmeasurement
 
 * * *
 
-### `getLastMeasurements()` {#getlastmeasurements}
+### `getLastMeasurements()`
 
 ```javascript
 Perf.getLastMeasurements()
@@ -89,7 +89,7 @@ Get the opaque data structure describing measurements from the last start-stop s
 
 * * *
 
-### `printInclusive()` {#printinclusive}
+### `printInclusive()`
 
 ```javascript
 Perf.printInclusive(measurements)
@@ -101,7 +101,7 @@ Prints the overall time taken. When no arguments are passed, `printInclusive` de
 
 * * *
 
-### `printExclusive()` {#printexclusive}
+### `printExclusive()`
 
 ```javascript
 Perf.printExclusive(measurements)
@@ -113,7 +113,7 @@ Perf.printExclusive(measurements)
 
 * * *
 
-### `printWasted()` {#printwasted}
+### `printWasted()`
 
 ```javascript
 Perf.printWasted(measurements)
@@ -127,7 +127,7 @@ Perf.printWasted(measurements)
 
 * * *
 
-### `printOperations()` {#printoperations}
+### `printOperations()`
 
 ```javascript
 Perf.printOperations(measurements)
@@ -139,7 +139,7 @@ Prints the underlying DOM manipulations, e.g. "set innerHTML" and "remove".
 
 * * *
 
-### `printDOM()` {#printdom}
+### `printDOM()`
 
 ```javascript
 Perf.printDOM(measurements)
diff --git a/content/docs/addons-pure-render-mixin.md b/content/docs/addons-pure-render-mixin.md
index 8724453097..c62305866a 100644
--- a/content/docs/addons-pure-render-mixin.md
+++ b/content/docs/addons-pure-render-mixin.md
@@ -17,7 +17,7 @@ import PureRenderMixin from 'react-addons-pure-render-mixin'; // ES6
 var PureRenderMixin = require('react-addons-pure-render-mixin'); // ES5 with npm
 ```
 
-## Overview {#overview}
+## Overview
 
 If your React component's render function renders the same result given the same props and state, you can use this mixin for a performance boost in some cases.
 
diff --git a/content/docs/addons-shallow-compare.md b/content/docs/addons-shallow-compare.md
index 99af2495c4..90f0c1d173 100644
--- a/content/docs/addons-shallow-compare.md
+++ b/content/docs/addons-shallow-compare.md
@@ -17,7 +17,7 @@ import shallowCompare from 'react-addons-shallow-compare'; // ES6
 var shallowCompare = require('react-addons-shallow-compare'); // ES5 with npm
 ```
 
-## Overview {#overview}
+## Overview
 
 Before [`React.PureComponent`](/docs/react-api.html#reactpurecomponent) was introduced, `shallowCompare` was commonly used to achieve the same functionality as [`PureRenderMixin`](pure-render-mixin.html) while using ES6 classes with React.
 
diff --git a/content/docs/addons-shallow-renderer.md b/content/docs/addons-shallow-renderer.md
index 3fcbbb25bf..6d3e5dfa07 100644
--- a/content/docs/addons-shallow-renderer.md
+++ b/content/docs/addons-shallow-renderer.md
@@ -13,7 +13,7 @@ import ShallowRenderer from 'react-test-renderer/shallow'; // ES6
 var ShallowRenderer = require('react-test-renderer/shallow'); // ES5 with npm
 ```
 
-## Overview {#overview}
+## Overview
 
 When writing unit tests for React, shallow rendering can be helpful. Shallow rendering lets you render a component "one level deep" and assert facts about what its render method returns, without worrying about the behavior of child components, which are not instantiated or rendered. This does not require a DOM.
 
@@ -53,15 +53,15 @@ Shallow testing currently has some limitations, namely not supporting refs.
 >
 > We also recommend checking out Enzyme's [Shallow Rendering API](http://airbnb.io/enzyme/docs/api/shallow.html). It provides a nicer higher-level API over the same functionality.
 
-## Reference {#reference}
+## Reference
 
-### `shallowRenderer.render()` {#shallowrendererrender}
+### `shallowRenderer.render()`
 
 You can think of the shallowRenderer as a "place" to render the component you're testing, and from which you can extract the component's output.
 
 `shallowRenderer.render()` is similar to [`ReactDOM.render()`](/docs/react-dom.html#render) but it doesn't require DOM and only renders a single level deep. This means you can test components isolated from how their children are implemented.
 
-### `shallowRenderer.getRenderOutput()` {#shallowrenderergetrenderoutput}
+### `shallowRenderer.getRenderOutput()`
 
 After `shallowRenderer.render()` has been called, you can use `shallowRenderer.getRenderOutput()` to get the shallowly rendered output.
 
diff --git a/content/docs/addons-test-utils.md b/content/docs/addons-test-utils.md
index bbbf5755c5..12606b5a7e 100644
--- a/content/docs/addons-test-utils.md
+++ b/content/docs/addons-test-utils.md
@@ -13,7 +13,7 @@ import ReactTestUtils from 'react-dom/test-utils'; // ES6
 var ReactTestUtils = require('react-dom/test-utils'); // ES5 with npm
 ```
 
-## Overview {#overview}
+## Overview
 
 `ReactTestUtils` makes it easy to test React components in the testing framework of your choice. At Facebook we use [Jest](https://facebook.github.io/jest/) for painless JavaScript testing. Learn how to get started with Jest through the Jest website's [React Tutorial](http://facebook.github.io/jest/docs/en/tutorial-react.html#content).
 
@@ -40,9 +40,9 @@ var ReactTestUtils = require('react-dom/test-utils'); // ES5 with npm
  - [`renderIntoDocument()`](#renderintodocument)
  - [`Simulate`](#simulate)
 
-## Reference {#reference}
+## Reference
 
-### `act()` {#act}
+### `act()`
 
 To prepare a component for assertions, wrap the code rendering it and performing updates inside an `act()` call. This makes your test run closer to how React works in the browser.
 
@@ -126,7 +126,7 @@ Don't forget that dispatching DOM events only works when the DOM container is ad
 
 * * *
 
-### `mockComponent()` {#mockcomponent}
+### `mockComponent()`
 
 ```javascript
 mockComponent(
@@ -143,7 +143,7 @@ Pass a mocked component module to this method to augment it with useful methods
 
 * * *
 
-### `isElement()` {#iselement}
+### `isElement()`
 
 ```javascript
 isElement(element)
@@ -153,7 +153,7 @@ Returns `true` if `element` is any React element.
 
 * * *
 
-### `isElementOfType()` {#iselementoftype}
+### `isElementOfType()`
 
 ```javascript
 isElementOfType(
@@ -166,7 +166,7 @@ Returns `true` if `element` is a React element whose type is of a React `compone
 
 * * *
 
-### `isDOMComponent()` {#isdomcomponent}
+### `isDOMComponent()`
 
 ```javascript
 isDOMComponent(instance)
@@ -176,7 +176,7 @@ Returns `true` if `instance` is a DOM component (such as a `<div>` or `<span>`).
 
 * * *
 
-### `isCompositeComponent()` {#iscompositecomponent}
+### `isCompositeComponent()`
 
 ```javascript
 isCompositeComponent(instance)
@@ -186,7 +186,7 @@ Returns `true` if `instance` is a user-defined component, such as a class or a f
 
 * * *
 
-### `isCompositeComponentWithType()` {#iscompositecomponentwithtype}
+### `isCompositeComponentWithType()`
 
 ```javascript
 isCompositeComponentWithType(
@@ -199,7 +199,7 @@ Returns `true` if `instance` is a component whose type is of a React `componentC
 
 * * *
 
-### `findAllInRenderedTree()` {#findallinrenderedtree}
+### `findAllInRenderedTree()`
 
 ```javascript
 findAllInRenderedTree(
@@ -212,7 +212,7 @@ Traverse all components in `tree` and accumulate all components where `test(comp
 
 * * *
 
-### `scryRenderedDOMComponentsWithClass()` {#scryrendereddomcomponentswithclass}
+### `scryRenderedDOMComponentsWithClass()`
 
 ```javascript
 scryRenderedDOMComponentsWithClass(
@@ -225,7 +225,7 @@ Finds all DOM elements of components in the rendered tree that are DOM component
 
 * * *
 
-### `findRenderedDOMComponentWithClass()` {#findrendereddomcomponentwithclass}
+### `findRenderedDOMComponentWithClass()`
 
 ```javascript
 findRenderedDOMComponentWithClass(
@@ -238,7 +238,7 @@ Like [`scryRenderedDOMComponentsWithClass()`](#scryrendereddomcomponentswithclas
 
 * * *
 
-### `scryRenderedDOMComponentsWithTag()` {#scryrendereddomcomponentswithtag}
+### `scryRenderedDOMComponentsWithTag()`
 
 ```javascript
 scryRenderedDOMComponentsWithTag(
@@ -251,7 +251,7 @@ Finds all DOM elements of components in the rendered tree that are DOM component
 
 * * *
 
-### `findRenderedDOMComponentWithTag()` {#findrendereddomcomponentwithtag}
+### `findRenderedDOMComponentWithTag()`
 
 ```javascript
 findRenderedDOMComponentWithTag(
@@ -264,7 +264,7 @@ Like [`scryRenderedDOMComponentsWithTag()`](#scryrendereddomcomponentswithtag) b
 
 * * *
 
-### `scryRenderedComponentsWithType()` {#scryrenderedcomponentswithtype}
+### `scryRenderedComponentsWithType()`
 
 ```javascript
 scryRenderedComponentsWithType(
@@ -277,7 +277,7 @@ Finds all instances of components with type equal to `componentClass`.
 
 * * *
 
-### `findRenderedComponentWithType()` {#findrenderedcomponentwithtype}
+### `findRenderedComponentWithType()`
 
 ```javascript
 findRenderedComponentWithType(
@@ -290,7 +290,7 @@ Same as [`scryRenderedComponentsWithType()`](#scryrenderedcomponentswithtype) bu
 
 ***
 
-### `renderIntoDocument()` {#renderintodocument}
+### `renderIntoDocument()`
 
 ```javascript
 renderIntoDocument(element)
@@ -309,9 +309,9 @@ ReactDOM.render(element, domContainer);
 
 * * *
 
-## Other Utilities {#other-utilities}
+## Other Utilities
 
-### `Simulate` {#simulate}
+### `Simulate`
 
 ```javascript
 Simulate.{eventName}(
diff --git a/content/docs/addons-two-way-binding-helpers.md b/content/docs/addons-two-way-binding-helpers.md
index 37c00679a9..e7d6b9126d 100644
--- a/content/docs/addons-two-way-binding-helpers.md
+++ b/content/docs/addons-two-way-binding-helpers.md
@@ -17,7 +17,7 @@ import LinkedStateMixin from 'react-addons-linked-state-mixin'; // ES6
 var LinkedStateMixin = require('react-addons-linked-state-mixin'); // ES5 with npm
 ```
 
-## Overview {#overview}
+## Overview
 
 `LinkedStateMixin` is an easy way to express two-way binding with React.
 
@@ -33,7 +33,7 @@ Two-way binding -- implicitly enforcing that some value in the DOM is always con
 >
 > `LinkedStateMixin` is just a thin wrapper and convention around the `onChange`/`setState()` pattern. It doesn't fundamentally change how data flows in your React application.
 
-## LinkedStateMixin: Before and After {#linkedstatemixin-before-and-after}
+## LinkedStateMixin: Before and After
 
 Here's a simple form example without using `LinkedStateMixin`:
 
@@ -79,11 +79,11 @@ Note that checkboxes have a special behavior regarding their `value` attribute,
 <input type="checkbox" checkedLink={this.linkState('booleanValue')} />
 ```
 
-## Under the Hood {#under-the-hood}
+## Under the Hood
 
 There are two sides to `LinkedStateMixin`: the place where you create the `valueLink` instance and the place where you use it. To prove how simple `LinkedStateMixin` is, let's rewrite each side separately to be more explicit.
 
-### valueLink Without LinkedStateMixin {#valuelink-without-linkedstatemixin}
+### valueLink Without LinkedStateMixin
 
 ```javascript{7-9,11-14}
 var createReactClass = require('create-react-class');
@@ -107,7 +107,7 @@ var WithoutMixin = createReactClass({
 
 As you can see, `valueLink` objects are very simple objects that just have a `value` and `requestChange` prop. And `LinkedStateMixin` is similarly simple: it just populates those fields with a value from `this.state` and a callback that calls `this.setState()`.
 
-### LinkedStateMixin Without valueLink {#linkedstatemixin-without-valuelink}
+### LinkedStateMixin Without valueLink
 
 ```javascript
 var LinkedStateMixin = require('react-addons-linked-state-mixin');
diff --git a/content/docs/addons-update.md b/content/docs/addons-update.md
index 0aa20a482b..316dfb2e48 100644
--- a/content/docs/addons-update.md
+++ b/content/docs/addons-update.md
@@ -17,13 +17,13 @@ import update from 'react-addons-update'; // ES6
 var update = require('react-addons-update'); // ES5 with npm
 ```
 
-## Overview {#overview}
+## Overview
 
 React lets you use whatever style of data management you want, including mutation. However, if you can use immutable data in performance-critical parts of your application it's easy to implement a fast [`shouldComponentUpdate()`](/docs/react-component.html#shouldcomponentupdate) method to significantly speed up your app.
 
 Dealing with immutable data in JavaScript is more difficult than in languages designed for it, like [Clojure](http://clojure.org/). However, we've provided a simple immutability helper, `update()`, that makes dealing with this type of data much easier, *without* fundamentally changing how your data is represented. You can also take a look at Facebook's [Immutable-js](https://facebook.github.io/immutable-js/docs/) and the [Advanced Performance](/docs/advanced-performance.html) section for more detail on Immutable-js.
 
-### The Main Idea {#the-main-idea}
+### The Main Idea
 
 If you mutate data like this:
 
@@ -54,7 +54,7 @@ const newData = extend(myData, {
 
 While this is fairly performant (since it only makes a shallow copy of `log n` objects and reuses the rest), it's a big pain to write. Look at all the repetition! This is not only annoying, but also provides a large surface area for bugs.
 
-## `update()` {#update}
+## `update()`
 
 `update()` provides simple syntactic sugar around this pattern to make writing this code easier. This code becomes:
 
@@ -71,7 +71,7 @@ While the syntax takes a little getting used to (though it's inspired by [MongoD
 
 The `$`-prefixed keys are called *commands*. The data structure they are "mutating" is called the *target*.
 
-## Available Commands {#available-commands}
+## Available Commands
 
   * `{$push: array}` `push()` all the items in `array` on the target.
   * `{$unshift: array}` `unshift()` all the items in `array` on the target.
@@ -80,9 +80,9 @@ The `$`-prefixed keys are called *commands*. The data structure they are "mutati
   * `{$merge: object}` merge the keys of `object` with the target.
   * `{$apply: function}` passes in the current value to the function and updates it with the new returned value.
 
-## Examples {#examples}
+## Examples
 
-### Simple push {#simple-push}
+### Simple push
 
 ```js
 const initialArray = [1, 2, 3];
@@ -90,7 +90,7 @@ const newArray = update(initialArray, {$push: [4]}); // => [1, 2, 3, 4]
 ```
 `initialArray` is still `[1, 2, 3]`.
 
-### Nested collections {#nested-collections}
+### Nested collections
 
 ```js
 const collection = [1, 2, {a: [12, 17, 15]}];
@@ -99,7 +99,7 @@ const newCollection = update(collection, {2: {a: {$splice: [[1, 1, 13, 14]]}}});
 ```
 This accesses `collection`'s index `2`, key `a`, and does a splice of one item starting from index `1` (to remove `17`) while inserting `13` and `14`.
 
-### Updating a value based on its current one {#updating-a-value-based-on-its-current-one}
+### Updating a value based on its current one
 
 ```js
 const obj = {a: 5, b: 3};
@@ -109,7 +109,7 @@ const newObj = update(obj, {b: {$apply: function(x) {return x * 2;}}});
 const newObj2 = update(obj, {b: {$set: obj.b * 2}});
 ```
 
-### (Shallow) Merge {#shallow-merge}
+### (Shallow) Merge
 
 ```js
 const obj = {a: 5, b: 3};
diff --git a/content/docs/addons.md b/content/docs/addons.md
index a19f4ba79d..e78bd003fc 100644
--- a/content/docs/addons.md
+++ b/content/docs/addons.md
@@ -17,7 +17,7 @@ The add-ons below are in the development (unminified) version of React only:
 - [`Perf`](/docs/perf.html), a performance profiling tool for finding optimization opportunities.
 - [`ReactTestUtils`](/docs/test-utils.html), simple helpers for writing test cases.
 
-### Legacy Add-ons {#legacy-add-ons}
+### Legacy Add-ons
 
 The add-ons below are considered legacy and their use is discouraged. They will keep working in observable future, but there is no further development.
 
@@ -26,12 +26,12 @@ The add-ons below are considered legacy and their use is discouraged. They will
 - [`update`](/docs/update.html). Use [`kolodny/immutability-helper`](https://github.com/kolodny/immutability-helper) instead.
 - [`ReactDOMFactories`](https://www.npmjs.com/package/react-dom-factories), pre-configured DOM factories to make React easier to use without JSX.
 
-### Deprecated Add-ons {#deprecated-add-ons}
+### Deprecated Add-ons
 
 - [`LinkedStateMixin`](/docs/two-way-binding-helpers.html) has been deprecated.
 - [`TransitionGroup` and `CSSTransitionGroup`](/docs/animation.html) have been deprecated in favor of [their drop-in replacements](https://github.com/reactjs/react-transition-group/tree/v1-stable).
 
-## Using React with Add-ons {#using-react-with-add-ons}
+## Using React with Add-ons
 
 You can install the add-ons individually from npm (e.g. `npm install react-addons-create-fragment`) and import them:
 
diff --git a/content/docs/cdn-links.md b/content/docs/cdn-links.md
index 73e3e81717..9f48a01f75 100644
--- a/content/docs/cdn-links.md
+++ b/content/docs/cdn-links.md
@@ -22,7 +22,7 @@ The versions above are only meant for development, and are not suitable for prod
 
 To load a specific version of `react` and `react-dom`, replace `16` with the version number.
 
-### Why the `crossorigin` Attribute? {#why-the-crossorigin-attribute}
+### Why the `crossorigin` Attribute?
 
 If you serve React from a CDN, we recommend to keep the [`crossorigin`](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) attribute set:
 
diff --git a/content/docs/code-splitting.md b/content/docs/code-splitting.md
index 5b8d400634..d779273f53 100644
--- a/content/docs/code-splitting.md
+++ b/content/docs/code-splitting.md
@@ -4,7 +4,7 @@ title: Code-Splitting
 permalink: docs/code-splitting.html
 ---
 
-## Bundling {#bundling}
+## Bundling
 
 Most React apps will have their files "bundled" using tools like
 [Webpack](https://webpack.js.org/) or [Browserify](http://browserify.org/).
@@ -12,7 +12,7 @@ Bundling is the process of following imported files and merging them into a
 single file: a "bundle". This bundle can then be included on a webpage to load
 an entire app at once.
 
-#### Example {#example}
+#### Example
 
 **App:**
 
@@ -52,7 +52,7 @@ If you aren't, you'll need to setup bundling yourself. For example, see the
 [Getting Started](https://webpack.js.org/guides/getting-started/) guides on the
 Webpack docs.
 
-## Code Splitting {#code-splitting}
+## Code Splitting
 
 Bundling is great, but as your app grows, your bundle will grow too. Especially
 if you are including large third-party libraries. You need to keep an eye on
@@ -72,7 +72,7 @@ your app. While you haven't reduced the overall amount of code in your app,
 you've avoided loading code that the user may never need, and reduced the amount
 of code needed during the initial load.
 
-## `import()` {#import}
+## `import()`
 
 The best way to introduce code-splitting into your app is through the dynamic
 `import()` syntax.
@@ -111,7 +111,7 @@ If you're setting up Webpack yourself, you'll probably want to read Webpack's
 When using [Babel](http://babeljs.io/), you'll need to make sure that Babel can
 parse the dynamic import syntax but is not transforming it. For that you will need [babel-plugin-syntax-dynamic-import](https://yarnpkg.com/en/package/babel-plugin-syntax-dynamic-import).
 
-## `React.lazy` {#reactlazy}
+## `React.lazy`
 
 > Note:
 >
@@ -151,7 +151,7 @@ This will automatically load the bundle containing the `OtherComponent` when thi
 
 `React.lazy` takes a function that must call a dynamic `import()`. This must return a `Promise` which resolves to a module with a `default` export containing a React component.
 
-### Suspense {#suspense}
+### Suspense
 
 If the module containing the `OtherComponent` is not yet loaded by the time `MyComponent` renders, we must show some fallback content while we're waiting for it to load - such as a loading indicator. This is done using the `Suspense` component.
 
@@ -189,7 +189,7 @@ function MyComponent() {
 }
 ```
 
-### Error boundaries {#error-boundaries}
+### Error boundaries
 
 If the other module fails to load (for example, due to network failure), it will trigger an error. You can handle these errors to show a nice user experience and manage recovery with [Error Boundaries](/docs/error-boundaries.html). Once you've created your Error Boundary, you can use it anywhere above your lazy components to display an error state when there's a network error.
 
@@ -212,7 +212,7 @@ const MyComponent = () => (
 );
 ```
 
-## Route-based code splitting {#route-based-code-splitting}
+## Route-based code splitting
 
 Deciding where in your app to introduce code splitting can be a bit tricky. You
 want to make sure you choose places that will split bundles evenly, but won't
@@ -245,7 +245,7 @@ const App = () => (
 );
 ```
 
-## Named Exports {#named-exports}
+## Named Exports
 
 `React.lazy` currently only supports default exports. If the module you want to import uses named exports, you can create an intermediate module that reexports it as the default. This ensures that treeshaking keeps working and that you don't pull in unused components.
 
diff --git a/content/docs/codebase-overview.md b/content/docs/codebase-overview.md
index 257e54e024..07b07aa788 100644
--- a/content/docs/codebase-overview.md
+++ b/content/docs/codebase-overview.md
@@ -15,13 +15,13 @@ If you want to [contribute to React](/docs/how-to-contribute.html) we hope that
 
 We don't necessarily recommend any of these conventions in React apps. Many of them exist for historical reasons and might change with time.
 
-### External Dependencies {#external-dependencies}
+### External Dependencies
 
 React has almost no external dependencies. Usually, a `require()` points to a file in React's own codebase. However, there are a few relatively rare exceptions.
 
 The [fbjs repository](https://github.com/facebook/fbjs) exists because React shares some small utilities with libraries like [Relay](https://github.com/facebook/relay), and we keep them in sync. We don't depend on equivalent small modules in the Node ecosystem because we want Facebook engineers to be able to make changes to them whenever necessary. None of the utilities inside fbjs are considered to be public API, and they are only intended for use by Facebook projects such as React.
 
-### Top-Level Folders {#top-level-folders}
+### Top-Level Folders
 
 After cloning the [React repository](https://github.com/facebook/react), you will see a few top-level folders in it:
 
@@ -33,13 +33,13 @@ The documentation is hosted [in a separate repository from React](https://github
 
 There are a few other top-level folders but they are mostly used for the tooling and you likely won't ever encounter them when contributing.
 
-### Colocated Tests {#colocated-tests}
+### Colocated Tests
 
 We don't have a top-level directory for unit tests. Instead, we put them into a directory called `__tests__` relative to the files that they test.
 
 For example, a test for [`setInnerHTML.js`](https://github.com/facebook/react/blob/87724bd87506325fcaf2648c70fc1f43411a87be/src/renderers/dom/client/utils/setInnerHTML.js) is located in [`__tests__/setInnerHTML-test.js`](https://github.com/facebook/react/blob/87724bd87506325fcaf2648c70fc1f43411a87be/src/renderers/dom/client/utils/__tests__/setInnerHTML-test.js) right next to it.
 
-### Warnings and Invariants {#warnings-and-invariants}
+### Warnings and Invariants
 
 The React codebase uses the `warning` module to display warnings:
 
@@ -88,7 +88,7 @@ invariant(
 
 It is important to keep development and production behavior similar, so `invariant` throws both in development and in production. The error messages are automatically replaced with error codes in production to avoid negatively affecting the byte size.
 
-### Development and Production {#development-and-production}
+### Development and Production
 
 You can use `__DEV__` pseudo-global variable in the codebase to guard development-only blocks of code.
 
@@ -102,7 +102,7 @@ if (__DEV__) {
 }
 ```
 
-### Flow {#flow}
+### Flow
 
 We recently started introducing [Flow](https://flow.org/) checks to the codebase. Files marked with the `@flow` annotation in the license header comment are being typechecked.
 
@@ -120,7 +120,7 @@ ReactRef.detachRefs = function(
 When possible, new code should use Flow annotations.
 You can run `yarn flow` locally to check your code with Flow.
 
-### Dynamic Injection {#dynamic-injection}
+### Dynamic Injection
 
 React uses dynamic injection in some modules. While it is always explicit, it is still unfortunate because it hinders understanding of the code. The main reason it exists is because React originally only supported DOM as a target. React Native started as a React fork. We had to add dynamic injection to let React Native override some behaviors.
 
@@ -153,11 +153,11 @@ The `injection` field is not handled specially in any way. But by convention, it
 
 There are multiple injection points in the codebase. In the future, we intend to get rid of the dynamic injection mechanism and wire up all the pieces statically during the build.
 
-### Multiple Packages {#multiple-packages}
+### Multiple Packages
 
 React is a [monorepo](http://danluu.com/monorepo/). Its repository contains multiple separate packages so that their changes can be coordinated together, and issues live in one place.
 
-### React Core {#react-core}
+### React Core
 
 The "core" of React includes all the [top-level `React` APIs](/docs/top-level-api.html#react), for example:
 
@@ -169,7 +169,7 @@ The "core" of React includes all the [top-level `React` APIs](/docs/top-level-ap
 
 The code for React core is located in [`packages/react`](https://github.com/facebook/react/tree/master/packages/react) in the source tree. It is available on npm as the [`react`](https://www.npmjs.com/package/react) package. The corresponding standalone browser build is called `react.js`, and it exports a global called `React`.
 
-### Renderers {#renderers}
+### Renderers
 
 React was originally created for the DOM but it was later adapted to also support native platforms with [React Native](http://facebook.github.io/react-native/). This introduced the concept of "renderers" to React internals.
 
@@ -187,7 +187,7 @@ The only other officially supported renderer is [`react-art`](https://github.com
 >
 >Technically the [`react-native-renderer`](https://github.com/facebook/react/tree/master/packages/react-native-renderer) is a very thin layer that teaches React to interact with React Native implementation. The real platform-specific code managing the native views lives in the [React Native repository](https://github.com/facebook/react-native) together with its components.
 
-### Reconcilers {#reconcilers}
+### Reconcilers
 
 Even vastly different renderers like React DOM and React Native need to share a lot of logic. In particular, the [reconciliation](/docs/reconciliation.html) algorithm should be as similar as possible so that declarative rendering, custom components, state, lifecycle methods, and refs work consistently across platforms.
 
@@ -195,11 +195,11 @@ To solve this, different renderers share some code between them. We call this pa
 
 Reconcilers are not packaged separately because they currently have no public API. Instead, they are exclusively used by renderers such as React DOM and React Native.
 
-### Stack Reconciler {#stack-reconciler}
+### Stack Reconciler
 
 The "stack" reconciler is the implementation powering React 15 and earlier. We have since stopped using it, but it is documented in detail in the [next section](/docs/implementation-notes.html).
 
-### Fiber Reconciler {#fiber-reconciler}
+### Fiber Reconciler
 
 The "fiber" reconciler is a new effort aiming to resolve the problems inherent in the stack reconciler and fix a few long-standing issues. It has been the default reconciler since React 16.
 
@@ -215,12 +215,12 @@ You can read more about React Fiber Architecture [here](https://github.com/acdli
 
 Its source code is located in [`packages/react-reconciler`](https://github.com/facebook/react/tree/master/packages/react-reconciler).
 
-### Event System {#event-system}
+### Event System
 
 React implements a synthetic event system which is agnostic of the renderers and works both with React DOM and React Native. Its source code is located in [`packages/events`](https://github.com/facebook/react/tree/master/packages/events).
 
 There is a [video with a deep code dive into it](https://www.youtube.com/watch?v=dRo_egw7tBc) (66 mins).
 
-### What Next? {#what-next}
+### What Next?
 
 Read the [next section](/docs/implementation-notes.html) to learn about the pre-React 16 implementation of reconciler in more detail. We haven't documented the internals of the new reconciler yet.
diff --git a/content/docs/components-and-props.md b/content/docs/components-and-props.md
index 47daaedf98..06a25971d4 100644
--- a/content/docs/components-and-props.md
+++ b/content/docs/components-and-props.md
@@ -20,7 +20,7 @@ Components let you split the UI into independent, reusable pieces, and think abo
 
 Conceptually, components are like JavaScript functions. They accept arbitrary inputs (called "props") and return React elements describing what should appear on the screen.
 
-## Function and Class Components {#function-and-class-components}
+## Function and Class Components
 
 The simplest way to define a component is to write a JavaScript function:
 
@@ -46,7 +46,7 @@ The above two components are equivalent from React's point of view.
 
 Classes have some additional features that we will discuss in the [next sections](/docs/state-and-lifecycle.html). Until then, we will use function components for their conciseness.
 
-## Rendering a Component {#rendering-a-component}
+## Rendering a Component
 
 Previously, we only encountered React elements that represent DOM tags:
 
@@ -91,7 +91,7 @@ Let's recap what happens in this example:
 >
 >You can read more about the reasoning behind this convention [here.](/docs/jsx-in-depth.html#user-defined-components-must-be-capitalized)
 
-## Composing Components {#composing-components}
+## Composing Components
 
 Components can refer to other components in their output. This lets us use the same component abstraction for any level of detail. A button, a form, a dialog, a screen: in React apps, all those are commonly expressed as components.
 
@@ -122,7 +122,7 @@ ReactDOM.render(
 
 Typically, new React apps have a single `App` component at the very top. However, if you integrate React into an existing app, you might start bottom-up with a small component like `Button` and gradually work your way to the top of the view hierarchy.
 
-## Extracting Components {#extracting-components}
+## Extracting Components
 
 Don't be afraid to split components into smaller components.
 
@@ -235,7 +235,7 @@ function Comment(props) {
 
 Extracting components might seem like grunt work at first, but having a palette of reusable components pays off in larger apps. A good rule of thumb is that if a part of your UI is used several times (`Button`, `Panel`, `Avatar`), or is complex enough on its own (`App`, `FeedStory`, `Comment`), it is a good candidate to be a reusable component.
 
-## Props are Read-Only {#props-are-read-only}
+## Props are Read-Only
 
 Whether you declare a component [as a function or a class](#function-and-class-components), it must never modify its own props. Consider this `sum` function:
 
diff --git a/content/docs/composition-vs-inheritance.md b/content/docs/composition-vs-inheritance.md
index c86735ef7d..5f8175377b 100644
--- a/content/docs/composition-vs-inheritance.md
+++ b/content/docs/composition-vs-inheritance.md
@@ -12,7 +12,7 @@ React has a powerful composition model, and we recommend using composition inste
 
 In this section, we will consider a few problems where developers new to React often reach for inheritance, and show how we can solve them with composition.
 
-## Containment {#containment}
+## Containment
 
 Some components don't know their children ahead of time. This is especially common for components like `Sidebar` or `Dialog` that represent generic "boxes".
 
@@ -82,7 +82,7 @@ function App() {
 
 React elements like `<Contacts />` and `<Chat />` are just objects, so you can pass them as props like any other data. This approach may remind you of "slots" in other libraries but there are no limitations on what you can pass as props in React.
 
-## Specialization {#specialization}
+## Specialization
 
 Sometimes we think about components as being "special cases" of other components. For example, we might say that a `WelcomeDialog` is a special case of `Dialog`.
 
@@ -163,7 +163,7 @@ class SignUpDialog extends React.Component {
 
 [**Try it on CodePen**](https://codepen.io/gaearon/pen/gwZbYa?editors=0010)
 
-## So What About Inheritance? {#so-what-about-inheritance}
+## So What About Inheritance?
 
 At Facebook, we use React in thousands of components, and we haven't found any use cases where we would recommend creating component inheritance hierarchies.
 
diff --git a/content/docs/conditional-rendering.md b/content/docs/conditional-rendering.md
index 7df19bb98c..5d5c829f34 100644
--- a/content/docs/conditional-rendering.md
+++ b/content/docs/conditional-rendering.md
@@ -46,7 +46,7 @@ ReactDOM.render(
 
 This example renders a different greeting depending on the value of `isLoggedIn` prop.
 
-### Element Variables {#element-variables}
+### Element Variables
 
 You can use variables to store elements. This can help you conditionally render a part of the component while the rest of the output doesn't change.
 
@@ -120,7 +120,7 @@ ReactDOM.render(
 
 While declaring a variable and using an `if` statement is a fine way to conditionally render a component, sometimes you might want to use a shorter syntax. There are a few ways to inline conditions in JSX, explained below.
 
-### Inline If with Logical && Operator {#inline-if-with-logical--operator}
+### Inline If with Logical && Operator
 
 You may [embed any expressions in JSX](/docs/introducing-jsx.html#embedding-expressions-in-jsx) by wrapping them in curly braces. This includes the JavaScript logical `&&` operator. It can be handy for conditionally including an element:
 
@@ -152,7 +152,7 @@ It works because in JavaScript, `true && expression` always evaluates to `expres
 
 Therefore, if the condition is `true`, the element right after `&&` will appear in the output. If it is `false`, React will ignore and skip it.
 
-### Inline If-Else with Conditional Operator {#inline-if-else-with-conditional-operator}
+### Inline If-Else with Conditional Operator
 
 Another method for conditionally rendering elements inline is to use the JavaScript conditional operator [`condition ? true : false`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Conditional_Operator).
 
@@ -188,7 +188,7 @@ render() {
 
 Just like in JavaScript, it is up to you to choose an appropriate style based on what you and your team consider more readable. Also remember that whenever conditions become too complex, it might be a good time to [extract a component](/docs/components-and-props.html#extracting-components).
 
-### Preventing Component from Rendering {#preventing-component-from-rendering}
+### Preventing Component from Rendering
 
 In rare cases you might want a component to hide itself even though it was rendered by another component. To do this return `null` instead of its render output.
 
diff --git a/content/docs/context.md b/content/docs/context.md
index 8e41a465f9..35624cbc2c 100644
--- a/content/docs/context.md
+++ b/content/docs/context.md
@@ -22,7 +22,7 @@ In a typical React application, data is passed top-down (parent to child) via pr
 - [Caveats](#caveats)
 - [Legacy API](#legacy-api)
 
-## When to Use Context {#when-to-use-context}
+## When to Use Context
 
 Context is designed to share data that can be considered "global" for a tree of React components, such as the current authenticated user, theme, or preferred language. For example, in the code below we manually thread through a "theme" prop in order to style the Button component:
 
@@ -32,7 +32,7 @@ Using context, we can avoid passing props through intermediate elements:
 
 `embed:context/motivation-solution.js`
 
-## Before You Use Context {#before-you-use-context}
+## Before You Use Context
 
 Context is primarily used when some data needs to be accessible by *many* components at different nesting levels. Apply it sparingly because it makes component reuse more difficult.
 
@@ -107,9 +107,9 @@ This pattern is sufficient for many cases when you need to decouple a child from
 
 However, sometimes the same data needs to be accessible by many components in the tree, and at different nesting levels. Context lets you "broadcast" such data, and changes to it, to all components below. Common examples where using context might be simpler than the alternatives include managing the current locale, theme, or a data cache. 
 
-## API {#api}
+## API
 
-### `React.createContext` {#reactcreatecontext}
+### `React.createContext`
 
 ```js
 const MyContext = React.createContext(defaultValue);
@@ -119,7 +119,7 @@ Creates a Context object. When React renders a component that subscribes to this
 
 The `defaultValue` argument is **only** used when a component does not have a matching Provider above it in the tree. This can be helpful for testing components in isolation without wrapping them. Note: passing `undefined` as a Provider value does not cause consuming components to use `defaultValue`.
 
-### `Context.Provider` {#contextprovider}
+### `Context.Provider`
 
 ```js
 <MyContext.Provider value={/* some value */}>
@@ -137,7 +137,7 @@ Changes are determined by comparing the new and old values using the same algori
 > 
 > The way changes are determined can cause some issues when passing objects as `value`: see [Caveats](#caveats).
 
-### `Class.contextType` {#classcontexttype}
+### `Class.contextType`
 
 ```js
 class MyClass extends React.Component {
@@ -180,7 +180,7 @@ class MyClass extends React.Component {
 }
 ```
 
-### `Context.Consumer` {#contextconsumer}
+### `Context.Consumer`
 
 ```js
 <MyContext.Consumer>
@@ -196,9 +196,9 @@ Requires a [function as a child](/docs/render-props.html#using-props-other-than-
 > 
 > For more information about the 'function as a child' pattern, see [render props](/docs/render-props.html).
 
-## Examples {#examples}
+## Examples
 
-### Dynamic Context {#dynamic-context}
+### Dynamic Context
 
 A more complex example with dynamic values for the theme:
 
@@ -211,7 +211,7 @@ A more complex example with dynamic values for the theme:
 **app.js**
 `embed:context/theme-detailed-app.js`
 
-### Updating Context from a Nested Component {#updating-context-from-a-nested-component}
+### Updating Context from a Nested Component
 
 It is often necessary to update the context from a component that is nested somewhere deeply in the component tree. In this case you can pass a function down through the context to allow consumers to update the context:
 
@@ -224,7 +224,7 @@ It is often necessary to update the context from a component that is nested some
 **app.js**
 `embed:context/updating-nested-context-app.js`
 
-### Consuming Multiple Contexts {#consuming-multiple-contexts}
+### Consuming Multiple Contexts
 
 To keep context re-rendering fast, React needs to make each context consumer a separate node in the tree. 
 
@@ -232,7 +232,7 @@ To keep context re-rendering fast, React needs to make each context consumer a s
 
 If two or more context values are often used together, you might want to consider creating your own render prop component that provides both.
 
-## Caveats {#caveats}
+## Caveats
 
 Because context uses reference identity to determine when to re-render, there are some gotchas that could trigger unintentional renders in consumers when a provider's parent re-renders. For example, the code below will re-render all consumers every time the Provider re-renders because a new object is always created for `value`:
 
@@ -243,7 +243,7 @@ To get around this, lift the value into the parent's state:
 
 `embed:context/reference-caveats-solution.js`
 
-## Legacy API {#legacy-api}
+## Legacy API
 
 > Note
 > 
diff --git a/content/docs/create-a-new-react-app.md b/content/docs/create-a-new-react-app.md
index d3e9357e5a..4d692f76f8 100644
--- a/content/docs/create-a-new-react-app.md
+++ b/content/docs/create-a-new-react-app.md
@@ -20,13 +20,13 @@ This page describes a few popular React toolchains which help with tasks like:
 
 The toolchains recommended on this page **don't require configuration to get started**.
 
-## You Might Not Need a Toolchain {#you-might-not-need-a-toolchain}
+## You Might Not Need a Toolchain
 
 If you don't experience the problems described above or don't feel comfortable using JavaScript tools yet, consider [adding React as a plain `<script>` tag on an HTML page](/docs/add-react-to-a-website.html), optionally [with JSX](/docs/add-react-to-a-website.html#optional-try-react-with-jsx).
 
 This is also **the easiest way to integrate React into an existing website.** You can always add a larger toolchain if you find it helpful!
 
-## Recommended Toolchains {#recommended-toolchains}
+## Recommended Toolchains
 
 The React team primarily recommends these solutions:
 
@@ -35,7 +35,7 @@ The React team primarily recommends these solutions:
 - If you're building a **static content-oriented website,** try [Gatsby](#gatsby).
 - If you're building a **component library** or **integrating with an existing codebase**, try [More Flexible Toolchains](#more-flexible-toolchains).
 
-### Create React App {#create-react-app}
+### Create React App
 
 [Create React App](http://github.com/facebookincubator/create-react-app) is a comfortable environment for **learning React**, and is the best way to start building **a new [single-page](/docs/glossary.html#single-page-application) application** in React.
 
@@ -55,19 +55,19 @@ Create React App doesn't handle backend logic or databases; it just creates a fr
 
 When you're ready to deploy to production, running `npm run build` will create an optimized build of your app in the `build` folder. You can learn more about Create React App [from its README](https://github.com/facebookincubator/create-react-app#create-react-app-) and the [User Guide](https://github.com/facebookincubator/create-react-app/blob/master/packages/react-scripts/template/README.md#table-of-contents).
 
-### Next.js {#nextjs}
+### Next.js
 
 [Next.js](https://nextjs.org/) is a popular and lightweight framework for **static and server‑rendered applications** built with React. It includes **styling and routing solutions** out of the box, and assumes that you're using [Node.js](https://nodejs.org/) as the server environment.
 
 Learn Next.js from [its official guide](https://nextjs.org/learn/).
 
-### Gatsby {#gatsby}
+### Gatsby
 
 [Gatsby](https://www.gatsbyjs.org/) is the best way to create **static websites** with React. It lets you use React components, but outputs pre-rendered HTML and CSS to guarantee the fastest load time.
 
 Learn Gatsby from [its official guide](https://www.gatsbyjs.org/docs/) and a [gallery of starter kits](https://www.gatsbyjs.org/docs/gatsby-starters/).
 
-### More Flexible Toolchains {#more-flexible-toolchains}
+### More Flexible Toolchains
 
 The following toolchains offer more flexiblity and choice. We recommend them to more experienced users:
 
@@ -79,7 +79,7 @@ The following toolchains offer more flexiblity and choice. We recommend them to
 
 - **[Razzle](https://github.com/jaredpalmer/razzle)** is a server-rendering framework that doesn't require any configuration, but offers more flexibility than Next.js.
 
-## Creating a Toolchain from Scratch {#creating-a-toolchain-from-scratch}
+## Creating a Toolchain from Scratch
 
 A JavaScript build toolchain typically consists of:
 
diff --git a/content/docs/cross-origin-errors.md b/content/docs/cross-origin-errors.md
index 915ee0d636..dface0092b 100644
--- a/content/docs/cross-origin-errors.md
+++ b/content/docs/cross-origin-errors.md
@@ -14,7 +14,7 @@ If an error is thrown from a [different origin](https://developer.mozilla.org/en
 
 You can simplify the development/debugging process by ensuring that errors are thrown with a same-origin policy. Below are some common causes of cross-origin errors and ways to address them.
 
-### CDN {#cdn}
+### CDN
 
 When loading React (or other libraries that might throw errors) from a CDN, add the [`crossorigin`](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) attribute to your `<script>` tags:
 
@@ -26,15 +26,15 @@ Also ensure the CDN responds with the `Access-Control-Allow-Origin: *` HTTP head
 
 ![Access-Control-Allow-Origin: *](../images/docs/cdn-cors-header.png)
 
-### Webpack {#webpack}
+### Webpack
 
-#### Source maps {#source-maps}
+#### Source maps
 
 Some JavaScript bundlers may wrap the application code with `eval` statements in development. (For example Webpack will do this if [`devtool`](https://webpack.js.org/configuration/devtool/) is set to any value containing the word "eval".) This may cause errors to be treated as cross-origin.
 
 If you use Webpack, we recommend using the `cheap-module-source-map` setting in development to avoid this problem.
 
-#### Code splitting {#code-splitting}
+#### Code splitting
 
 If your application is split into multiple bundles, these bundles may be loaded using JSONP. This may cause errors thrown in the code of these bundles to be treated as cross-origin.
 
diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md
index 555045f4aa..bad88b0017 100644
--- a/content/docs/design-principles.md
+++ b/content/docs/design-principles.md
@@ -16,7 +16,7 @@ We wrote this document so that you have a better idea of how we decide what Reac
 >
 >For an introduction to React, check out [Thinking in React](/docs/thinking-in-react.html) instead.
 
-### Composition {#composition}
+### Composition
 
 The key feature of React is composition of components. Components written by different people should work well together. It is important to us that you can add functionality to a component without causing rippling changes throughout the codebase.
 
@@ -26,7 +26,7 @@ There is nothing "bad" about using state or lifecycle methods in components. Lik
 
 Components are often described as "just functions" but in our view they need to be more than that to be useful. In React, components describe any composable behavior, and this includes rendering, lifecycle, and state. Some external libraries like [Relay](http://facebook.github.io/relay/) augment components with other responsibilities such as describing data dependencies. It is possible that those ideas might make it back into React too in some form.
 
-### Common Abstraction {#common-abstraction}
+### Common Abstraction
 
 In general we [resist adding features](https://www.youtube.com/watch?v=4anAwXYqLG8) that can be implemented in userland. We don't want to bloat your apps with useless library code. However, there are exceptions to this.
 
@@ -36,13 +36,13 @@ This is why sometimes we add features to React itself. If we notice that many co
 
 We always discuss such improvement proposals with the community. You can find some of those discussions by the ["big picture"](https://github.com/facebook/react/issues?q=is:open+is:issue+label:"Type:+Big+Picture") label on the React issue tracker.
 
-### Escape Hatches {#escape-hatches}
+### Escape Hatches
 
 React is pragmatic. It is driven by the needs of the products written at Facebook. While it is influenced by some paradigms that are not yet fully mainstream such as functional programming, staying accessible to a wide range of developers with different skills and experience levels is an explicit goal of the project.
 
 If we want to deprecate a pattern that we don't like, it is our responsibility to consider all existing use cases for it and [educate the community about the alternatives](/blog/2016/07/13/mixins-considered-harmful.html) before we deprecate it. If some pattern that is useful for building apps is hard to express in a declarative way, we will [provide an imperative API](/docs/more-about-refs.html) for it. If we can't figure out a perfect API for something that we found necessary in many apps, we will [provide a temporary subpar working API](/docs/legacy-context.html) as long as it is possible to get rid of it later and it leaves the door open for future improvements.
 
-### Stability {#stability}
+### Stability
 
 We value API stability. At Facebook, we have more than 50 thousand components using React. Many other companies, including [Twitter](https://twitter.com/) and [Airbnb](https://www.airbnb.com/), are also heavy users of React. This is why we are usually reluctant to change public APIs or behavior.
 
@@ -62,13 +62,13 @@ When we add a deprecation warning, we keep it for the rest of the current major
 
 You can find the codemods that we released in the [react-codemod](https://github.com/reactjs/react-codemod) repository.
 
-### Interoperability {#interoperability}
+### Interoperability
 
 We place high value in interoperability with existing systems and gradual adoption. Facebook has a massive non-React codebase. Its website uses a mix of a server-side component system called XHP, internal UI libraries that came before React, and React itself. It is important to us that any product team can [start using React for a small feature](https://www.youtube.com/watch?v=BF58ZJ1ZQxY) rather than rewrite their code to bet on it.
 
 This is why React provides escape hatches to work with mutable models, and tries to work well together with other UI libraries. You can wrap an existing imperative UI into a declarative component, and vice versa. This is crucial for gradual adoption.
 
-### Scheduling {#scheduling}
+### Scheduling
 
 Even when your components are described as functions, when you use React you don't call them directly. Every component returns a [description of what needs to be rendered](/blog/2015/12/18/react-components-elements-and-instances.html#elements-describe-the-tree), and that description may include both user-written components like `<LikeButton>` and platform-specific components like `<div>`. It is up to React to "unroll" `<LikeButton>` at some point in the future and actually apply changes to the UI tree according to the render results of the components recursively.
 
@@ -88,7 +88,7 @@ It is a key goal for React that the amount of the user code that executes before
 
 There is an internal joke in the team that React should have been called "Schedule" because React does not want to be fully "reactive".
 
-### Developer Experience {#developer-experience}
+### Developer Experience
 
 Providing a good developer experience is important to us.
 
@@ -100,7 +100,7 @@ The usage patterns that we see internally at Facebook help us understand what th
 
 We are always looking out for ways to improve the developer experience. We love to hear your suggestions and accept your contributions to make it even better.
 
-### Debugging {#debugging}
+### Debugging
 
 When something goes wrong, it is important that you have breadcrumbs to trace the mistake to its source in the codebase. In React, props and state are those breadcrumbs.
 
@@ -114,7 +114,7 @@ This ability to trace any UI to the data that produced it in the form of current
 
 While the UI is dynamic, we believe that synchronous `render()` functions of props and state turn debugging from guesswork into a boring but finite procedure. We would like to preserve this constraint in React even though it makes some use cases, like complex animations, harder.
 
-### Configuration {#configuration}
+### Configuration
 
 We find global runtime configuration options to be problematic.
 
@@ -124,7 +124,7 @@ What if somebody calls such a function from a third-party component library? Wha
 
 We do, however, provide some global configuration on the build level. For example, we provide separate development and production builds. We may also [add a profiling build](https://github.com/facebook/react/issues/6627) in the future, and we are open to considering other build flags.
 
-### Beyond the DOM {#beyond-the-dom}
+### Beyond the DOM
 
 We see the value of React in the way it allows us to write components that have fewer bugs and compose together well. DOM is the original rendering target for React but [React Native](http://facebook.github.io/react-native/) is just as important both to Facebook and the community.
 
@@ -132,13 +132,13 @@ Being renderer-agnostic is an important design constraint of React. It adds some
 
 Having a single programming model lets us form engineering teams around products instead of platforms. So far the tradeoff has been worth it for us.
 
-### Implementation {#implementation}
+### Implementation
 
 We try to provide elegant APIs where possible. We are much less concerned with the implementation being elegant. The real world is far from perfect, and to a reasonable extent we prefer to put the ugly code into the library if it means the user does not have to write it. When we evaluate new code, we are looking for an implementation that is correct, performant and affords a good developer experience. Elegance is secondary.
 
 We prefer boring code to clever code. Code is disposable and often changes. So it is important that it [doesn't introduce new internal abstractions unless absolutely necessary](https://youtu.be/4anAwXYqLG8?t=13m9s). Verbose code that is easy to move around, change and remove is preferred to elegant code that is prematurely abstracted and hard to change.
 
-### Optimized for Tooling {#optimized-for-tooling}
+### Optimized for Tooling
 
 Some commonly used APIs have verbose names. For example, we use `componentDidMount()` instead of `didMount()` or `onMount()`. This is [intentional](https://github.com/reactjs/react-future/issues/40#issuecomment-142442124). The goal is to make the points of interaction with the library highly visible.
 
@@ -150,7 +150,7 @@ Optimizing for search is also important because of our reliance on [codemods](ht
 
 In our codebase, JSX provides an unambiguous hint to the tools that they are dealing with a React element tree. This makes it possible to add build-time optimizations such as [hoisting constant elements](http://babeljs.io/docs/plugins/transform-react-constant-elements/), safely lint and codemod internal component usage, and [include JSX source location](https://github.com/facebook/react/pull/6771) into the warnings.
 
-### Dogfooding {#dogfooding}
+### Dogfooding
 
 We try our best to address the problems raised by the community. However we are likely to prioritize the issues that people are *also* experiencing internally at Facebook. Perhaps counter-intuitively, we think this is the main reason why the community can bet on React.
 
diff --git a/content/docs/error-boundaries.md b/content/docs/error-boundaries.md
index 1477329112..4ac546576b 100644
--- a/content/docs/error-boundaries.md
+++ b/content/docs/error-boundaries.md
@@ -7,7 +7,7 @@ permalink: docs/error-boundaries.html
 In the past, JavaScript errors inside components used to corrupt React’s internal state and cause it to [emit](https://github.com/facebook/react/issues/4026) [cryptic](https://github.com/facebook/react/issues/6895) [errors](https://github.com/facebook/react/issues/8579) on next renders. These errors were always caused by an earlier error in the application code, but React did not provide a way to handle them gracefully in components, and could not recover from them.
 
 
-## Introducing Error Boundaries {#introducing-error-boundaries}
+## Introducing Error Boundaries
 
 A JavaScript error in a part of the UI shouldn’t break the whole app. To solve this problem for React users, React 16 introduces a new concept of an “error boundary”.
 
@@ -64,17 +64,17 @@ Error boundaries work like a JavaScript `catch {}` block, but for components. On
 
 Note that **error boundaries only catch errors in the components below them in the tree**. An error boundary can’t catch an error within itself. If an error boundary fails trying to render the error message, the error will propagate to the closest error boundary above it. This, too, is similar to how catch {} block works in JavaScript.
 
-## Live Demo {#live-demo}
+## Live Demo
 
 Check out [this example of declaring and using an error boundary](https://codepen.io/gaearon/pen/wqvxGa?editors=0010) with [React 16](/blog/2017/09/26/react-v16.0.html).
 
 
-## Where to Place Error Boundaries {#where-to-place-error-boundaries}
+## Where to Place Error Boundaries
 
 The granularity of error boundaries is up to you. You may wrap top-level route components to display a “Something went wrong” message to the user, just like server-side frameworks often handle crashes. You may also wrap individual widgets in an error boundary to protect them from crashing the rest of the application.
 
 
-## New Behavior for Uncaught Errors {#new-behavior-for-uncaught-errors}
+## New Behavior for Uncaught Errors
 
 This change has an important implication. **As of React 16, errors that were not caught by any error boundary will result in unmounting of the whole React component tree.**
 
@@ -87,7 +87,7 @@ For example, Facebook Messenger wraps content of the sidebar, the info panel, th
 We also encourage you to use JS error reporting services (or build your own) so that you can learn about unhandled exceptions as they happen in production, and fix them.
 
 
-## Component Stack Traces {#component-stack-traces}
+## Component Stack Traces
 
 React 16 prints all errors that occurred during rendering to the console in development, even if the application accidentally swallows them. In addition to the error message and the JavaScript stack, it also provides component stack traces. Now you can see where exactly in the component tree the failure has happened:
 
@@ -104,7 +104,7 @@ If you don’t use Create React App, you can add [this plugin](https://www.npmjs
 > Component names displayed in the stack traces depend on the [`Function.name`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name) property. If you support older browsers and devices which may not yet provide this natively (e.g. IE 11), consider including a `Function.name` polyfill in your bundled application, such as [`function.name-polyfill`](https://github.com/JamesMGreene/Function.name). Alternatively, you may explicitly set the [`displayName`](/docs/react-component.html#displayname) property on all your components.
 
 
-## How About try/catch? {#how-about-trycatch}
+## How About try/catch?
 
 `try` / `catch` is great but it only works for imperative code:
 
@@ -124,7 +124,7 @@ However, React components are declarative and specify *what* should be rendered:
 
 Error boundaries preserve the declarative nature of React, and behave as you would expect. For example, even if an error occurs in a `componentDidUpdate` method caused by a `setState` somewhere deep in the tree, it will still correctly propagate to the closest error boundary.
 
-## How About Event Handlers? {#how-about-event-handlers}
+## How About Event Handlers?
 
 Error boundaries **do not** catch errors inside event handlers.
 
@@ -159,7 +159,7 @@ class MyComponent extends React.Component {
 
 Note that the above example is demonstrating regular JavaScript behavior and doesn't use error boundaries.
 
-## Naming Changes from React 15 {#naming-changes-from-react-15}
+## Naming Changes from React 15
 
 React 15 included a very limited support for error boundaries under a different method name: `unstable_handleError`. This method no longer works, and you will need to change it to `componentDidCatch` in your code starting from the first 16 beta release.
 
diff --git a/content/docs/faq-ajax.md b/content/docs/faq-ajax.md
index 102e1c07e7..89c1e7dbd5 100644
--- a/content/docs/faq-ajax.md
+++ b/content/docs/faq-ajax.md
@@ -6,15 +6,15 @@ layout: docs
 category: FAQ
 ---
 
-### How can I make an AJAX call? {#how-can-i-make-an-ajax-call}
+### How can I make an AJAX call?
 
 You can use any AJAX library you like with React. Some popular ones are [Axios](https://github.com/axios/axios), [jQuery AJAX](https://api.jquery.com/jQuery.ajax/), and the browser built-in [window.fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API).
 
-### Where in the component lifecycle should I make an AJAX call? {#where-in-the-component-lifecycle-should-i-make-an-ajax-call}
+### Where in the component lifecycle should I make an AJAX call?
 
 You should populate data with AJAX calls in the [`componentDidMount`](/docs/react-component.html#mounting) lifecycle method. This is so you can use `setState` to update your component when the data is retrieved.
 
-### Example: Using AJAX results to set local state {#example-using-ajax-results-to-set-local-state}
+### Example: Using AJAX results to set local state
 
 The component below demonstrates how to make an AJAX call in `componentDidMount` to populate local component state. 
 
diff --git a/content/docs/faq-build.md b/content/docs/faq-build.md
index b071cc1311..79e8f5c2e7 100644
--- a/content/docs/faq-build.md
+++ b/content/docs/faq-build.md
@@ -6,15 +6,15 @@ layout: docs
 category: FAQ
 ---
 
-### Do I need to use JSX with React? {#do-i-need-to-use-jsx-with-react}
+### Do I need to use JSX with React?
 
 No! Check out ["React Without JSX"](/docs/react-without-jsx.html) to learn more.
 
-### Do I need to use ES6 (+) with React? {#do-i-need-to-use-es6--with-react}
+### Do I need to use ES6 (+) with React?
 
 No! Check out ["React Without ES6"](/docs/react-without-es6.html) to learn more.
 
-### How can I write comments in JSX? {#how-can-i-write-comments-in-jsx}
+### How can I write comments in JSX?
 
 ```jsx
 <div>
diff --git a/content/docs/faq-functions.md b/content/docs/faq-functions.md
index 62067d39cc..337bc1febc 100644
--- a/content/docs/faq-functions.md
+++ b/content/docs/faq-functions.md
@@ -6,7 +6,7 @@ layout: docs
 category: FAQ
 ---
 
-### How do I pass an event handler (like onClick) to a component? {#how-do-i-pass-an-event-handler-like-onclick-to-a-component}
+### How do I pass an event handler (like onClick) to a component?
 
 Pass event handlers and other functions as props to child components:
 
@@ -16,11 +16,11 @@ Pass event handlers and other functions as props to child components:
 
 If you need to have access to the parent component in the handler, you also need to bind the function to the component instance (see below).
 
-### How do I bind a function to a component instance? {#how-do-i-bind-a-function-to-a-component-instance}
+### How do I bind a function to a component instance?
 
 There are several ways to make sure functions have access to component attributes like `this.props` and `this.state`, depending on which syntax and build steps you are using.
 
-#### Bind in Constructor (ES2015) {#bind-in-constructor-es2015}
+#### Bind in Constructor (ES2015)
 
 ```jsx
 class Foo extends Component {
@@ -37,7 +37,7 @@ class Foo extends Component {
 }
 ```
 
-#### Class Properties (Stage 3 Proposal) {#class-properties-stage-3-proposal}
+#### Class Properties (Stage 3 Proposal)
 
 ```jsx
 class Foo extends Component {
@@ -51,7 +51,7 @@ class Foo extends Component {
 }
 ```
 
-#### Bind in Render {#bind-in-render}
+#### Bind in Render
 
 ```jsx
 class Foo extends Component {
@@ -68,7 +68,7 @@ class Foo extends Component {
 >
 >Using `Function.prototype.bind` in render creates a new function each time the component renders, which may have performance implications (see below).
 
-#### Arrow Function in Render {#arrow-function-in-render}
+#### Arrow Function in Render
 
 ```jsx
 class Foo extends Component {
@@ -85,13 +85,13 @@ class Foo extends Component {
 >
 >Using an arrow function in render creates a new function each time the component renders, which may have performance implications (see below).
 
-### Is it OK to use arrow functions in render methods? {#is-it-ok-to-use-arrow-functions-in-render-methods}
+### Is it OK to use arrow functions in render methods?
 
 Generally speaking, yes, it is OK, and it is often the easiest way to pass parameters to callback functions.
 
 If you do have performance issues, by all means, optimize!
 
-### Why is binding necessary at all? {#why-is-binding-necessary-at-all}
+### Why is binding necessary at all?
 
 In JavaScript, these two code snippets are **not** equivalent:
 
@@ -110,7 +110,7 @@ With React, typically you only need to bind the methods you *pass* to other comp
 
 [This post by Yehuda Katz](http://yehudakatz.com/2011/08/11/understanding-javascript-function-invocation-and-this/) explains what binding is, and how functions work in JavaScript, in detail.
 
-### Why is my function being called every time the component renders? {#why-is-my-function-being-called-every-time-the-component-renders}
+### Why is my function being called every time the component renders?
 
 Make sure you aren't _calling the function_ when you pass it to the component:
 
@@ -130,7 +130,7 @@ render() {
 }
 ```
 
-### How do I pass a parameter to an event handler or callback? {#how-do-i-pass-a-parameter-to-an-event-handler-or-callback}
+### How do I pass a parameter to an event handler or callback?
 
 You can use an arrow function to wrap around an event handler and pass parameters:
 
@@ -144,7 +144,7 @@ This is equivalent to calling `.bind`:
 <button onClick={this.handleClick.bind(this, id)} />
 ```
 
-#### Example: Passing params using arrow functions {#example-passing-params-using-arrow-functions}
+#### Example: Passing params using arrow functions
 
 ```jsx
 const A = 65 // ASCII character code
@@ -178,7 +178,7 @@ class Alphabet extends React.Component {
 }
 ```
 
-#### Example: Passing params using data-attributes {#example-passing-params-using-data-attributes}
+#### Example: Passing params using data-attributes
 
 Alternately, you can use DOM APIs to store data needed for event handlers. Consider this approach if you need to optimize a large number of elements or have a render tree that relies on React.PureComponent equality checks.
 
@@ -218,7 +218,7 @@ class Alphabet extends React.Component {
 }
 ```
 
-### How can I prevent a function from being called too quickly or too many times in a row? {#how-can-i-prevent-a-function-from-being-called-too-quickly-or-too-many-times-in-a-row}
+### How can I prevent a function from being called too quickly or too many times in a row?
 
 If you have an event handler such as `onClick` or `onScroll` and want to prevent the callback from being fired too quickly, then you can limit the rate at which callback is executed. This can be done by using:
 
@@ -232,7 +232,7 @@ See [this visualization](http://demo.nimius.net/debounce_throttle/) for a compar
 >
 > `_.debounce`, `_.throttle` and `raf-schd` provide a `cancel` method to cancel delayed callbacks. You should either call this method from `componentWillUnmount` _or_ check to ensure that the component is still mounted within the delayed function.
 
-#### Throttle {#throttle}
+#### Throttle
 
 Throttling prevents a function from being called more than once in a given window of time. The example below throttles a "click" handler to prevent calling it more than once per second.
 
@@ -260,7 +260,7 @@ class LoadMoreButton extends React.Component {
 }
 ```
 
-#### Debounce {#debounce}
+#### Debounce
 
 Debouncing ensures that a function will not be executed until after a certain amount of time has passed since it was last called. This can be useful when you have to perform some expensive calculation in response to an event that might dispatch rapidly (eg scroll or keyboard events). The example below debounces text input with a 250ms delay.
 
@@ -302,7 +302,7 @@ class Searchbox extends React.Component {
 }
 ```
 
-#### `requestAnimationFrame` throttling {#requestanimationframe-throttling}
+#### `requestAnimationFrame` throttling
 
 [`requestAnimationFrame`](https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame) is a way of queuing a function to be executed in the browser at the optimal time for rendering performance. A function that is queued with `requestAnimationFrame` will fire in the next frame. The browser will work hard to ensure that there are 60 frames per second (60 fps). However, if the browser is unable to it will naturally *limit* the amount of frames in a second. For example, a device might only be able to handle 30 fps and so you will only get 30 frames in that second. Using `requestAnimationFrame` for throttling is a useful technique in that it prevents you from doing more than 60 updates in a second. If you are doing 100 updates in a second this creates additional work for the browser that the user will not see anyway.
 
@@ -349,6 +349,6 @@ class ScrollListener extends React.Component {
 }
 ```
 
-#### Testing your rate limiting {#testing-your-rate-limiting}
+#### Testing your rate limiting
 
 When testing your rate limiting code works correctly it is helpful to have the ability to fast forward time. If you are using [`jest`](https://facebook.github.io/jest/) then you can use [`mock timers`](https://facebook.github.io/jest/docs/en/timer-mocks.html) to fast forward time. If you are using `requestAnimationFrame` throttling then you may find [`raf-stub`](https://github.com/alexreardon/raf-stub) to be a useful tool to control the ticking of animation frames.
diff --git a/content/docs/faq-internals.md b/content/docs/faq-internals.md
index da7f96be08..0d7f3acc2a 100644
--- a/content/docs/faq-internals.md
+++ b/content/docs/faq-internals.md
@@ -6,7 +6,7 @@ layout: docs
 category: FAQ
 ---
 
-### What is the Virtual DOM? {#what-is-the-virtual-dom}
+### What is the Virtual DOM?
 
 The virtual DOM (VDOM) is a programming concept where an ideal, or "virtual", representation of a UI is kept in memory and synced with the "real" DOM by a library such as ReactDOM. This process is called [reconciliation](/docs/reconciliation.html).
 
@@ -14,10 +14,10 @@ This approach enables the declarative API of React: You tell React what state yo
 
 Since "virtual DOM" is more of a pattern than a specific technology, people sometimes say it to mean different things. In React world, the term "virtual DOM" is usually associated with [React elements](/docs/rendering-elements.html) since they are the objects representing the user interface. React, however, also uses internal objects called "fibers" to hold additional information about the component tree. They may also be considered a part of "virtual DOM" implementation in React.
 
-### Is the Shadow DOM the same as the Virtual DOM? {#is-the-shadow-dom-the-same-as-the-virtual-dom}
+### Is the Shadow DOM the same as the Virtual DOM?
 
 No, they are different. The Shadow DOM is a browser technology designed primarily for scoping variables and CSS in web components. The virtual DOM is a concept implemented by libraries in JavaScript on top of browser APIs.
 
-### What is "React Fiber"? {#what-is-react-fiber}
+### What is "React Fiber"?
 
 Fiber is the new reconciliation engine in React 16. Its main goal is to enable incremental rendering of the virtual DOM. [Read more](https://github.com/acdlite/react-fiber-architecture).
diff --git a/content/docs/faq-state.md b/content/docs/faq-state.md
index 2765e3ae3a..81b677a766 100644
--- a/content/docs/faq-state.md
+++ b/content/docs/faq-state.md
@@ -6,11 +6,11 @@ layout: docs
 category: FAQ
 ---
 
-### What does `setState` do? {#what-does-setstate-do}
+### What does `setState` do?
 
 `setState()` schedules an update to a component's `state` object. When state changes, the component responds by re-rendering.
 
-### What is the difference between `state` and `props`? {#what-is-the-difference-between-state-and-props}
+### What is the difference between `state` and `props`?
 
 [`props`](/docs/components-and-props.html) (short for "properties") and [`state`](/docs/state-and-lifecycle.html) are both plain JavaScript objects. While both hold information that influences the output of render, they are different in one important way: `props` get passed *to* the component (similar to function parameters) whereas `state` is managed *within* the component (similar to variables declared within a function).
 
@@ -18,7 +18,7 @@ Here are some good resources for further reading on when to use `props` vs `stat
 * [Props vs State](https://github.com/uberVU/react-guide/blob/master/props-vs-state.md)
 * [ReactJS: Props vs. State](http://lucybain.com/blog/2016/react-state-vs-pros/)
 
-### Why is `setState` giving me the wrong value? {#why-is-setstate-giving-me-the-wrong-value}
+### Why is `setState` giving me the wrong value?
 
 In React, both `this.props` and `this.state` represent the *rendered* values, i.e. what's currently on the screen.
 
@@ -49,11 +49,11 @@ handleSomething() {
 
 See below for how to fix this problem.
 
-### How do I update state with values that depend on the current state? {#how-do-i-update-state-with-values-that-depend-on-the-current-state}
+### How do I update state with values that depend on the current state? 
 
 Pass a function instead of an object to `setState` to ensure the call always uses the most updated version of state (see below). 
 
-### What is the difference between passing an object or a function in `setState`? {#what-is-the-difference-between-passing-an-object-or-a-function-in-setstate}
+### What is the difference between passing an object or a function in `setState`?
 
 Passing an update function allows you to access the current state value inside the updater. Since `setState` calls are batched, this lets you chain updates and ensure they build on top of each other instead of conflicting:
 
@@ -78,7 +78,7 @@ handleSomething() {
 
 [Learn more about setState](/docs/react-component.html#setstate)
 
-### When is `setState` asynchronous? {#when-is-setstate-asynchronous}
+### When is `setState` asynchronous?
 
 Currently, `setState` is asynchronous inside event handlers.
 
@@ -86,7 +86,7 @@ This ensures, for example, that if both `Parent` and `Child` call `setState` dur
 
 This is an implementation detail so avoid relying on it directly. In the future versions, React will batch updates by default in more cases.
 
-### Why doesn't React update `this.state` synchronously? {#why-doesnt-react-update-thisstate-synchronously}
+### Why doesn't React update `this.state` synchronously?
 
 As explained in the previous section, React intentionally "waits" until all components call `setState()` in their event handlers before starting to re-render. This boosts performance by avoiding unnecessary re-renders.
 
@@ -99,7 +99,7 @@ There are two main reasons:
 
 This [GitHub comment](https://github.com/facebook/react/issues/11527#issuecomment-360199710) dives deep into the specific examples.
 
-### Should I use a state management library like Redux or MobX? {#should-i-use-a-state-management-library-like-redux-or-mobx}
+### Should I use a state management library like Redux or MobX?
 
 [Maybe.](https://redux.js.org/faq/general#when-should-i-use-redux)
 
diff --git a/content/docs/faq-structure.md b/content/docs/faq-structure.md
index 4241a04dd1..018845a18b 100644
--- a/content/docs/faq-structure.md
+++ b/content/docs/faq-structure.md
@@ -6,11 +6,11 @@ layout: docs
 category: FAQ
 ---
 
-### Is there a recommended way to structure React projects? {#is-there-a-recommended-way-to-structure-react-projects}
+### Is there a recommended way to structure React projects?
 
 React doesn't have opinions on how you put files into folders. That said there are a few common approaches popular in the ecosystem you may want to consider.
 
-#### Grouping by features or routes {#grouping-by-features-or-routes}
+#### Grouping by features or routes
 
 One common way to structure projects is locate CSS, JS, and tests together inside folders grouped by feature or route.
 
@@ -37,7 +37,7 @@ profile/
 
 The definition of a "feature" is not universal, and it is up to you to choose the granularity. If you can't come up with a list of top-level folders, you can ask the users of your product what major parts it consists of, and use their mental model as a blueprint.
 
-#### Grouping by file type {#grouping-by-file-type}
+#### Grouping by file type
 
 Another popular way to structure projects is to group similar files together, for example:
 
@@ -61,11 +61,11 @@ components/
 
 Some people also prefer to go further, and separate components into different folders depending on their role in the application. For example, [Atomic Design](http://bradfrost.com/blog/post/atomic-web-design/) is a design methodology built on this principle. Remember that it's often more productive to treat such methodologies as helpful examples rather than strict rules to follow.
 
-#### Avoid too much nesting {#avoid-too-much-nesting}
+#### Avoid too much nesting
 
 There are many pain points associated with deep directory nesting in JavaScript projects. It becomes harder to write relative imports between them, or to update those imports when the files are moved. Unless you have a very compelling reason to use a deep folder structure, consider limiting yourself to a maximum of three or four nested folders within a single project. Of course, this is only a recommendation, and it may not be relevant to your project.
 
-#### Don't overthink it {#dont-overthink-it}
+#### Don't overthink it
 
 If you're just starting a project, [don't spend more than five minutes](https://en.wikipedia.org/wiki/Analysis_paralysis) on choosing a file structure. Pick any of the above approaches (or come up with your own) and start writing code! You'll likely want to rethink it anyway after you've written some real code.
 
diff --git a/content/docs/faq-styling.md b/content/docs/faq-styling.md
index ddc955e3dd..3079b14ad9 100644
--- a/content/docs/faq-styling.md
+++ b/content/docs/faq-styling.md
@@ -6,7 +6,7 @@ layout: docs
 category: FAQ
 ---
 
-### How do I add CSS classes to components? {#how-do-i-add-css-classes-to-components}
+### How do I add CSS classes to components?
 
 Pass a string as the `className` prop:
 
@@ -32,20 +32,20 @@ render() {
 >
 >If you often find yourself writing code like this, [classnames](https://www.npmjs.com/package/classnames#usage-with-reactjs) package can simplify it.
 
-### Can I use inline styles? {#can-i-use-inline-styles}
+### Can I use inline styles?
 
 Yes, see the docs on styling [here](/docs/dom-elements.html#style).
 
-### Are inline styles bad? {#are-inline-styles-bad}
+### Are inline styles bad?
 
 CSS classes are generally better for performance than inline styles.
 
-### What is CSS-in-JS? {#what-is-css-in-js}
+### What is CSS-in-JS?
 
 "CSS-in-JS" refers to a pattern where CSS is composed using JavaScript instead of defined in external files. Read a comparison of CSS-in-JS libraries [here](https://github.com/MicheleBertoli/css-in-js).
 
 _Note that this functionality is not a part of React, but provided by third-party libraries._ React does not have an opinion about how styles are defined; if in doubt, a good starting point is to define your styles in a separate `*.css` file as usual and refer to them using [`className`](/docs/dom-elements.html#classname).
 
-### Can I do animations in React? {#can-i-do-animations-in-react}
+### Can I do animations in React?
 
 React can be used to power animations. See [React Transition Group](https://reactcommunity.org/react-transition-group/) and [React Motion](https://github.com/chenglou/react-motion), for example.
diff --git a/content/docs/faq-versioning.md b/content/docs/faq-versioning.md
index b51ea48952..c284892240 100644
--- a/content/docs/faq-versioning.md
+++ b/content/docs/faq-versioning.md
@@ -16,25 +16,25 @@ That means that with a version number **x.y.z**:
 
 Major releases can also contain new features, and any release can include bug fixes.
 
-### Breaking Changes {#breaking-changes}
+### Breaking Changes
 
 Breaking changes are inconvenient for everyone, so we try to minimize the number of major releases – for example, React 15 was released in April 2016 and React 16 was released in September 2017; React 17 isn't expected until 2019.
 
 Instead, we release new features in minor versions. That means that minor releases are often more interesting and compelling than majors, despite their unassuming name.
 
-### Commitment to Stability {#commitment-to-stability}
+### Commitment to Stability
 
 As we change React over time, we try to minimize the effort required to take advantage of new features. When possible, we'll keep an older API working, even if that means putting it in a separate package. For example, [mixins have been discouraged for years](/blog/2016/07/13/mixins-considered-harmful.html) but they're supported to this day [via create-react-class](/docs/react-without-es6.html#mixins) and many codebases continue to use them in stable, legacy code.
 
 Over a million developers use React, collectively maintaining millions of components. The Facebook codebase alone has over 50,000 React components. That means we need to make it as easy as possible to upgrade to new versions of React; if we make large changes without a migration path, people will be stuck on old versions. We test these upgrade paths on Facebook itself – if our team of less than 10 people can update 50,000+ components alone, we hope the upgrade will be manageable for anyone using React. In many cases, we write [automated scripts](https://github.com/reactjs/react-codemod) to upgrade component syntax, which we then include in the open-source release for everyone to use.
 
-### Gradual Upgrades via Warnings {#gradual-upgrades-via-warnings}
+### Gradual Upgrades via Warnings
 
 Development builds of React include many helpful warnings. Whenever possible, we add warnings in preparation for future breaking changes. That way, if your app has no warnings on the latest release, it will be compatible with the next major release. This allows you to upgrade your apps one component at a time.
 
 Development warnings won't affect the runtime behavior of your app. That way, you can feel confident that your app will behave the same way between the development and production builds -- the only differences are that the production build won't log the warnings and that it is more efficient. (If you ever notice otherwise, please file an issue.)
 
-### What Counts as a Breaking Change? {#what-counts-as-a-breaking-change}
+### What Counts as a Breaking Change?
 
 In general, we *don't* bump the major version number for changes to:
 
diff --git a/content/docs/forms.md b/content/docs/forms.md
index 1a8b599d55..fee7f2bc48 100644
--- a/content/docs/forms.md
+++ b/content/docs/forms.md
@@ -23,7 +23,7 @@ HTML form elements work a little bit differently from other DOM elements in Reac
 
 This form has the default HTML form behavior of browsing to a new page when the user submits the form. If you want this behavior in React, it just works. But in most cases, it's convenient to have a JavaScript function that handles the submission of the form and has access to the data that the user entered into the form. The standard way to achieve this is with a technique called "controlled components".
 
-## Controlled Components {#controlled-components}
+## Controlled Components
 
 In HTML, form elements such as `<input>`, `<textarea>`, and `<select>` typically maintain their own state and update it based on user input. In React, mutable state is typically kept in the state property of components, and only updated with [`setState()`](/docs/react-component.html#setstate).
 
@@ -76,7 +76,7 @@ handleChange(event) {
 }
 ```
 
-## The textarea Tag {#the-textarea-tag}
+## The textarea Tag
 
 In HTML, a `<textarea>` element defines its text by its children:
 
@@ -125,7 +125,7 @@ class EssayForm extends React.Component {
 
 Notice that `this.state.value` is initialized in the constructor, so that the text area starts off with some text in it.
 
-## The select Tag {#the-select-tag}
+## The select Tag
 
 In HTML, `<select>` creates a drop-down list. For example, this HTML creates a drop-down list of flavors:
 
@@ -190,7 +190,7 @@ Overall, this makes it so that `<input type="text">`, `<textarea>`, and `<select
 ><select multiple={true} value={['B', 'C']}>
 >```
 
-## The file input Tag {#the-file-input-tag}
+## The file input Tag
 
 In HTML, an `<input type="file">` lets the user choose one or more files from their device storage to be uploaded to a server or manipulated by JavaScript via the [File API](https://developer.mozilla.org/en-US/docs/Web/API/File/Using_files_from_web_applications).
 
@@ -200,7 +200,7 @@ In HTML, an `<input type="file">` lets the user choose one or more files from th
 
 Because its value is read-only, it is an **uncontrolled** component in React. It is discussed together with other uncontrolled components [later in the documentation](/docs/uncontrolled-components.html#the-file-input-tag).
 
-## Handling Multiple Inputs {#handling-multiple-inputs}
+## Handling Multiple Inputs
 
 When you need to handle multiple controlled `input` elements, you can add a `name` attribute to each element and let the handler function choose what to do based on the value of `event.target.name`.
 
@@ -274,7 +274,7 @@ this.setState(partialState);
 
 Also, since `setState()` automatically [merges a partial state into the current state](/docs/state-and-lifecycle.html#state-updates-are-merged), we only needed to call it with the changed parts.
 
-## Controlled Input Null Value {#controlled-input-null-value}
+## Controlled Input Null Value
 
 Specifying the value prop on a [controlled component](/docs/forms.html#controlled-components) prevents the user from changing the input unless you desire so. If you've specified a `value` but the input is still editable, you may have accidentally set `value` to `undefined` or `null`.
 
@@ -289,10 +289,10 @@ setTimeout(function() {
 
 ```
 
-## Alternatives to Controlled Components {#alternatives-to-controlled-components}
+## Alternatives to Controlled Components
 
 It can sometimes be tedious to use controlled components, because you need to write an event handler for every way your data can change and pipe all of the input state through a React component. This can become particularly annoying when you are converting a preexisting codebase to React, or integrating a React application with a non-React library. In these situations, you might want to check out [uncontrolled components](/docs/uncontrolled-components.html), an alternative technique for implementing input forms.
 
-## Fully-Fledged Solutions {#fully-fledged-solutions}
+## Fully-Fledged Solutions
 
 If you're looking for a complete solution including validation, keeping track of the visited fields, and handling form submission, [Formik](https://jaredpalmer.com/formik) is one of the popular choices. However, it is built on the same principles of controlled components and managing state — so don't neglect to learn them.
diff --git a/content/docs/forwarding-refs.md b/content/docs/forwarding-refs.md
index 3318d8499c..46891e27bd 100644
--- a/content/docs/forwarding-refs.md
+++ b/content/docs/forwarding-refs.md
@@ -6,7 +6,7 @@ permalink: docs/forwarding-refs.html
 
 Ref forwarding is a technique for automatically passing a [ref](/docs/refs-and-the-dom.html) through a component to one of its children. This is typically not necessary for most components in the application. However, it can be useful for some kinds of components, especially in reusable component libraries. The most common scenarios are described below.
 
-## Forwarding refs to DOM components {#forwarding-refs-to-dom-components}
+## Forwarding refs to DOM components
 
 Consider a `FancyButton` component that renders the native `button` DOM element:
 `embed:forwarding-refs/fancy-button-simple.js`
@@ -37,13 +37,13 @@ Here is a step-by-step explanation of what happens in the above example:
 >
 >Ref forwarding is not limited to DOM components. You can forward refs to class component instances, too.
 
-## Note for component library maintainers {#note-for-component-library-maintainers}
+## Note for component library maintainers
 
 **When you start using `forwardRef` in a component library, you should treat it as a breaking change and release a new major version of your library.** This is because your library likely has an observably different behavior (such as what refs get assigned to, and what types are exported), and this can break apps and other libraries that depend on the old behavior.
 
 Conditionally applying `React.forwardRef` when it exists is also not recommended for the same reasons: it changes how your library behaves and can break your users' apps when they upgrade React itself.
 
-## Forwarding refs in higher-order components {#forwarding-refs-in-higher-order-components}
+## Forwarding refs in higher-order components
 
 This technique can also be particularly useful with [higher-order components](/docs/higher-order-components.html) (also known as HOCs). Let's start with an example HOC that logs component props to the console:
 `embed:forwarding-refs/log-props-before.js`
@@ -59,7 +59,7 @@ This means that refs intended for our `FancyButton` component will actually be a
 Fortunately, we can explicitly forward refs to the inner `FancyButton` component using the `React.forwardRef` API. `React.forwardRef` accepts a render function that receives `props` and `ref` parameters and returns a React node. For example:
 `embed:forwarding-refs/log-props-after.js`
 
-## Displaying a custom name in DevTools {#displaying-a-custom-name-in-devtools}
+## Displaying a custom name in DevTools
 
 `React.forwardRef` accepts a render function. React DevTools uses this function to determine what to display for the ref forwarding component.
 
diff --git a/content/docs/fragments.md b/content/docs/fragments.md
index 04de0463bc..7c6f4fd6cd 100644
--- a/content/docs/fragments.md
+++ b/content/docs/fragments.md
@@ -20,7 +20,7 @@ render() {
 
 There is also a new [short syntax](#short-syntax) for declaring them, but it isn't supported by all popular tools yet.
 
-## Motivation {#motivation}
+## Motivation
 
 A common pattern is for a component to return a list of children. Take this example React snippet:
 
@@ -68,7 +68,7 @@ results in a `<Table />` output of:
 
 Fragments solve this problem.
 
-## Usage {#usage}
+## Usage
 
 ```jsx{4,7}
 class Columns extends React.Component {
@@ -94,7 +94,7 @@ which results in a correct `<Table />` output of:
 </table>
 ```
 
-### Short Syntax {#short-syntax}
+### Short Syntax
 
 There is a new, shorter syntax you can use for declaring fragments. It looks like empty tags:
 
@@ -115,7 +115,7 @@ You can use `<></>` the same way you'd use any other element except that it does
 
 Note that **[many tools don't support it yet](/blog/2017/11/28/react-v16.2.0-fragment-support.html#support-for-fragment-syntax)** so you might want to explicitly write `<React.Fragment>` until the tooling catches up.
 
-### Keyed Fragments {#keyed-fragments}
+### Keyed Fragments
 
 Fragments declared with the explicit `<React.Fragment>` syntax may have keys. A use case for this is mapping a collection to an array of fragments -- for example, to create a description list:
 
@@ -137,6 +137,6 @@ function Glossary(props) {
 
 `key` is the only attribute that can be passed to `Fragment`. In the future, we may add support for additional attributes, such as event handlers.
 
-### Live Demo {#live-demo}
+### Live Demo
 
 You can try out the new JSX fragment syntax with this [CodePen](https://codepen.io/reactjs/pen/VrEbjE?editors=1000).
diff --git a/content/docs/getting-started.md b/content/docs/getting-started.md
index 5625bb3cdd..8ad77b1ac0 100644
--- a/content/docs/getting-started.md
+++ b/content/docs/getting-started.md
@@ -30,27 +30,27 @@ This page is an overview of the React documentation and related resources.
 - [Versioned Documentation](#versioned-documentation)
 - [Something Missing?](#something-missing)
 
-## Try React {#try-react}
+## Try React
 
 React has been designed from the start for gradual adoption, and **you can use as little or as much React as you need.** Whether you want to get a taste of React, add some interactivity to a simple HTML page, or start a complex React-powered app, the links in this section will help you get started.
 
-### Online Playgrounds {#online-playgrounds}
+### Online Playgrounds
 
 If you're interested in playing around with React, you can use an online code playground. Try a Hello World template on [CodePen](codepen://hello-world) or [CodeSandbox](https://codesandbox.io/s/new).
 
 If you prefer to use your own text editor, you can also [download this HTML file](https://raw.githubusercontent.com/reactjs/reactjs.org/master/static/html/single-file-example.html), edit it, and open it from the local filesystem in your browser. It does a slow runtime code transformation, so we'd only recommend using this for simple demos.
 
-### Add React to a Website {#add-react-to-a-website}
+### Add React to a Website
 
 You can [add React to an HTML page in one minute](/docs/add-react-to-a-website.html). You can then either gradually expand its presence, or keep it contained to a few dynamic widgets.
 
-### Create a New React App {#create-a-new-react-app}
+### Create a New React App
 
 When starting a React project, [a simple HTML page with script tags](/docs/add-react-to-a-website.html) might still be the best option. It only takes a minute to set up!
 
 As your application grows, you might want to consider a more integrated setup. There are [several JavaScript toolchains](/docs/create-a-new-react-app.html) we recommend for larger applications. Each of them can work with little to no configuration and lets you take full advantage of the rich React ecosystem.
 
-## Learn React {#learn-react}
+## Learn React
 
 People come to React from different backgrounds and with different learning styles. Whether you prefer a more theoretical or a practical approach, we hope you'll find this section helpful.
 
@@ -59,19 +59,19 @@ People come to React from different backgrounds and with different learning styl
 
 Like any unfamiliar technology, React does have a learning curve. With practice and some patience, you *will* get the hang of it.
 
-### First Examples {#first-examples}
+### First Examples
 
 The [React homepage](/) contains a few small React examples with a live editor. Even if you don't know anything about React yet, try changing their code and see how it affects the result.
 
-### React for Beginners {#react-for-beginners}
+### React for Beginners
 
 If you feel that the React documentation goes at a faster pace than you're comfortable with, check out [this overview of React by Tania Rascia](https://www.taniarascia.com/getting-started-with-react/). It introduces the most important React concepts in a detailed, beginner-friendly way. Once you're done, give the documentation another try!
 
-### React for Designers {#react-for-designers}
+### React for Designers
 
 If you're coming from a design background, [these resources](http://reactfordesigners.com/) are a great place to get started.
 
-### JavaScript Resources {#javascript-resources}
+### JavaScript Resources
 
 The React documentation assumes some familiarity with programming in the JavaScript language. You don't have to be an expert, but it's harder to learn both React and JavaScript at the same time.
 
@@ -81,35 +81,35 @@ We recommend going through [this JavaScript overview](https://developer.mozilla.
 >
 >Whenever you get confused by something in JavaScript, [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript) and [javascript.info](http://javascript.info/) are great websites to check. There are also [community support forums](/community/support.html) where you can ask for help.
 
-### Practical Tutorial {#practical-tutorial}
+### Practical Tutorial
 
 If you prefer to **learn by doing,** check out our [practical tutorial](/tutorial/tutorial.html). In this tutorial, we build a tic-tac-toe game in React. You might be tempted to skip it because you're not building games -- but give it a chance. The techniques you'll learn in the tutorial are fundamental to building *any* React apps, and mastering it will give you a much deeper understanding.
 
-### Step-by-Step Guide {#step-by-step-guide}
+### Step-by-Step Guide
 
 If you prefer to **learn concepts step by step,** our [guide to main concepts](/docs/hello-world.html) is the best place to start. Every next chapter in it builds on the knowledge introduced in the previous chapters so you won't miss anything as you go along.
 
-### Thinking in React {#thinking-in-react}
+### Thinking in React
 
 Many React users credit reading [Thinking in React](/docs/thinking-in-react.html) as the moment React finally "clicked" for them. It's probably the oldest React walkthrough but it's still just as relevant.
 
-### Recommended Courses {#recommended-courses}
+### Recommended Courses
 
 Sometimes people find third-party books and video courses more helpful than the official documentation. We maintain [a list of commonly recommended resources](/community/courses.html), some of which are free.
 
-### Advanced Concepts {#advanced-concepts}
+### Advanced Concepts
 
 Once you're comfortable with the [main concepts](#main-concepts) and played with React a little bit, you might be interested in more advanced topics. This section will introduce you to the powerful, but less commonly used React features like [context](/docs/context.html) and [refs](/docs/refs-and-the-dom.html).
 
-### API Reference {#api-reference}
+### API Reference
 
 This documentation section is useful when you want to learn more details about a particular React API. For example, [`React.Component` API reference](/docs/react-component.html) can provide you with details on how `setState()` works, and what different lifecycle methods are useful for.
 
-### Glossary and FAQ {#glossary-and-faq}
+### Glossary and FAQ
 
 The [glossary](/docs/glossary.html) contains an overview of the most common terms you'll see in the React documentation. There is also a FAQ section dedicated to short questions and answers about common topics, including [making AJAX requests](/docs/faq-ajax.html), [component state](/docs/faq-state.html), and [file structure](/docs/faq-structure.html).
 
-## Staying Informed {#staying-informed}
+## Staying Informed
 
 The [React blog](/blog/) is the official source for the updates from the React team. Anything important, including release notes or deprecation notices, will be posted there first.
 
@@ -117,10 +117,10 @@ You can also follow the [@reactjs account](https://twitter.com/reactjs) on Twitt
 
 Not every React release deserves its own blog post, but you can find a detailed changelog for every release [in the `CHANGELOG.md` file in the React repository](https://github.com/facebook/react/blob/master/CHANGELOG.md), as well as on the [Releases](https://github.com/facebook/react) page.
 
-## Versioned Documentation {#versioned-documentation}
+## Versioned Documentation
 
 This documentation always reflects the latest stable version of React. Since React 16, you can find older versions of the documentation [on a separate page](/versions). Note that documentation for past versions is snapshotted at the time of the release, and isn't being continuously updated.
 
-## Something Missing? {#something-missing}
+## Something Missing?
 
 If something is missing in the documentation or if you found some part confusing, please [file an issue for the documentation repository](https://github.com/reactjs/reactjs.org/issues/new) with your suggestions for improvement, or tweet at the [@reactjs account](https://twitter.com/reactjs). We love hearing from you!
diff --git a/content/docs/handling-events.md b/content/docs/handling-events.md
index a8d3a1f517..1f93772cea 100644
--- a/content/docs/handling-events.md
+++ b/content/docs/handling-events.md
@@ -140,7 +140,7 @@ class LoggingButton extends React.Component {
 
 The problem with this syntax is that a different callback is created each time the `LoggingButton` renders. In most cases, this is fine. However, if this callback is passed as a prop to lower components, those components might do an extra re-rendering. We generally recommend binding in the constructor or using the class fields syntax, to avoid this sort of performance problem.
 
-## Passing Arguments to Event Handlers {#passing-arguments-to-event-handlers}
+## Passing Arguments to Event Handlers
 
 Inside a loop it is common to want to pass an extra parameter to an event handler. For example, if `id` is the row ID, either of the following would work:
 
diff --git a/content/docs/hello-world.md b/content/docs/hello-world.md
index 2fff802540..25b644dbf3 100644
--- a/content/docs/hello-world.md
+++ b/content/docs/hello-world.md
@@ -22,7 +22,7 @@ It displays a heading saying "Hello, world!" on the page.
 Click the link above to open an online editor. Feel free to make some changes, and see how they affect the output. Most pages in this guide will have editable examples like this one.
 
 
-## How to Read This Guide {#how-to-read-this-guide}
+## How to Read This Guide
 
 In this guide, we will examine the building blocks of React apps: elements and components. Once you master them, you can create complex apps from small reusable pieces.
 
@@ -34,7 +34,7 @@ This is the first chapter in a step-by-step guide about main React concepts. You
 
 Every chapter in this guide builds on the knowledge introduced in earlier chapters. **You can learn most of React by reading the “Main Concepts” guide chapters in the order they appear in the sidebar.** For example, [“Introducing JSX”](/docs/introducing-jsx.html) is the next chapter after this one.
 
-## Knowledge Level Assumptions {#knowledge-level-assumptions}
+## Knowledge Level Assumptions
 
 React is a JavaScript library, and so we'll assume you have a basic understanding of the JavaScript language. **If you don't feel very confident, we recommend [going through a JavaScript tutorial](https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript) to check your knowledge level** and enable you to follow along this guide without getting lost. It might take you between 30 minutes and an hour, but as a result you won't have to feel like you're learning both React and JavaScript at the same time.
 
@@ -43,7 +43,7 @@ React is a JavaScript library, and so we'll assume you have a basic understandin
 >This guide occasionally uses some of the newer JavaScript syntax in the examples. If you haven't worked with JavaScript in the last few years, [these three points](https://gist.github.com/gaearon/683e676101005de0add59e8bb345340c) should get you most of the way.
 
 
-## Let's Get Started! {#lets-get-started}
+## Let's Get Started!
 
 Keep scrolling down, and you'll find the link to the [next chapter of this guide](/docs/introducing-jsx.html) right before the website footer.
 
diff --git a/content/docs/higher-order-components.md b/content/docs/higher-order-components.md
index 63da3ef861..451e288506 100644
--- a/content/docs/higher-order-components.md
+++ b/content/docs/higher-order-components.md
@@ -18,7 +18,7 @@ HOCs are common in third-party React libraries, such as Redux's [`connect`](http
 
 In this document, we'll discuss why higher-order components are useful, and how to write your own.
 
-## Use HOCs For Cross-Cutting Concerns {#use-hocs-for-cross-cutting-concerns}
+## Use HOCs For Cross-Cutting Concerns
 
 > **Note**
 >
@@ -171,7 +171,7 @@ Because `withSubscription` is a normal function, you can add as many or as few a
 
 Like components, the contract between `withSubscription` and the wrapped component is entirely props-based. This makes it easy to swap one HOC for a different one, as long as they provide the same props to the wrapped component. This may be useful if you change data-fetching libraries, for example.
 
-## Don't Mutate the Original Component. Use Composition. {#dont-mutate-the-original-component-use-composition}
+## Don't Mutate the Original Component. Use Composition.
 
 Resist the temptation to modify a component's prototype (or otherwise mutate it) inside a HOC.
 
@@ -215,7 +215,7 @@ This HOC has the same functionality as the mutating version while avoiding the p
 
 You may have noticed similarities between HOCs and a pattern called **container components**. Container components are part of a strategy of separating responsibility between high-level and low-level concerns. Containers manage things like subscriptions and state, and pass props to components that handle things like rendering UI. HOCs use containers as part of their implementation. You can think of HOCs as parameterized container component definitions.
 
-## Convention: Pass Unrelated Props Through to the Wrapped Component {#convention-pass-unrelated-props-through-to-the-wrapped-component}
+## Convention: Pass Unrelated Props Through to the Wrapped Component
 
 HOCs add features to a component. They shouldn't drastically alter its contract. It's expected that the component returned from a HOC has a similar interface to the wrapped component.
 
@@ -243,7 +243,7 @@ render() {
 
 This convention helps ensure that HOCs are as flexible and reusable as possible.
 
-## Convention: Maximizing Composability {#convention-maximizing-composability}
+## Convention: Maximizing Composability
 
 Not all HOCs look the same. Sometimes they accept only a single argument, the wrapped component:
 
@@ -295,7 +295,7 @@ const EnhancedComponent = enhance(WrappedComponent)
 
 The `compose` utility function is provided by many third-party libraries including lodash (as [`lodash.flowRight`](https://lodash.com/docs/#flowRight)), [Redux](http://redux.js.org/docs/api/compose.html), and [Ramda](http://ramdajs.com/docs/#compose).
 
-## Convention: Wrap the Display Name for Easy Debugging {#convention-wrap-the-display-name-for-easy-debugging}
+## Convention: Wrap the Display Name for Easy Debugging
 
 The container components created by HOCs show up in the [React Developer Tools](https://github.com/facebook/react-devtools) like any other component. To ease debugging, choose a display name that communicates that it's the result of a HOC.
 
@@ -314,11 +314,11 @@ function getDisplayName(WrappedComponent) {
 ```
 
 
-## Caveats {#caveats}
+## Caveats
 
 Higher-order components come with a few caveats that aren't immediately obvious if you're new to React.
 
-### Don't Use HOCs Inside the render Method {#dont-use-hocs-inside-the-render-method}
+### Don't Use HOCs Inside the render Method
 
 React's diffing algorithm (called reconciliation) uses component identity to determine whether it should update the existing subtree or throw it away and mount a new one. If the component returned from `render` is identical (`===`) to the component from the previous render, React recursively updates the subtree by diffing it with the new one. If they're not equal, the previous subtree is unmounted completely.
 
@@ -340,7 +340,7 @@ Instead, apply HOCs outside the component definition so that the resulting compo
 
 In those rare cases where you need to apply a HOC dynamically, you can also do it inside a component's lifecycle methods or its constructor.
 
-### Static Methods Must Be Copied Over {#static-methods-must-be-copied-over}
+### Static Methods Must Be Copied Over
 
 Sometimes it's useful to define a static method on a React component. For example, Relay containers expose a static method `getFragment` to facilitate the composition of GraphQL fragments.
 
@@ -392,7 +392,7 @@ export { someFunction };
 import MyComponent, { someFunction } from './MyComponent.js';
 ```
 
-### Refs Aren't Passed Through {#refs-arent-passed-through}
+### Refs Aren't Passed Through
 
 While the convention for higher-order components is to pass through all props to the wrapped component, this does not work for refs. That's because `ref` is not really a prop — like `key`, it's handled specially by React. If you add a ref to an element whose component is the result of a HOC, the ref refers to an instance of the outermost container component, not the wrapped component.
 
diff --git a/content/docs/hooks-custom.md b/content/docs/hooks-custom.md
index ac9dad6daa..dbc0459e55 100644
--- a/content/docs/hooks-custom.md
+++ b/content/docs/hooks-custom.md
@@ -67,7 +67,7 @@ Instead, we'd like to share this logic between `FriendStatus` and `FriendListIte
 
 Traditionally in React, we've had two popular ways to share stateful logic between components: [render props](/docs/render-props.html) and [higher-order components](/docs/higher-order-components.html). We will now look at how Hooks solve many of the same problems without forcing you to add more components to the tree.
 
-## Extracting a Custom Hook {#extracting-a-custom-hook}
+## Extracting a Custom Hook
 
 When we want to share logic between two JavaScript functions, we extract it to a third function. Both components and Hooks are functions, so this works for them too!
 
@@ -112,7 +112,7 @@ function useFriendStatus(friendID) {
 
 Now let's see how we can use our custom Hook.
 
-## Using a Custom Hook {#using-a-custom-hook}
+## Using a Custom Hook
 
 In the beginning, our stated goal was to remove the duplicated logic from the `FriendStatus` and `FriendListItem` components. Both of them want to know whether a friend is online.
 
@@ -149,7 +149,7 @@ function FriendListItem(props) {
 
 **How does a custom Hook get isolated state?** Each *call* to a Hook gets isolated state. Because we call `useFriendStatus` directly, from React's point of view our component just calls `useState` and `useEffect`. And as we [learned](/docs/hooks-state.html#tip-using-multiple-state-variables) [earlier](/docs/hooks-effect.html#tip-use-multiple-effects-to-separate-concerns), we can call `useState` and `useEffect` many times in one component, and they will be completely independent.
 
-### Tip: Pass Information Between Hooks {#tip-pass-information-between-hooks}
+### Tip: Pass Information Between Hooks
 
 Since Hooks are functions, we can pass information between them.
 
@@ -195,7 +195,7 @@ Because the `useState` Hook call gives us the latest value of the `recipientID`
 
 This lets us know whether the *currently selected* friend is online. If we pick a different friend and update the `recipientID` state variable, our `useFriendStatus` Hook will unsubscribe from the previously selected friend, and subscribe to the status of the newly selected one.
 
-## `useYourImagination()` {#useyourimagination}
+## `useYourImagination()`
 
 Custom Hooks offer the flexibility of sharing logic that wasn't possible in React components before. You can write custom Hooks that cover a wide range of use cases like form handling, animation, declarative subscriptions, timers, and probably many more we haven't considered. What's more, you can build Hooks that are just as easy to use as React's built-in features.
 
diff --git a/content/docs/hooks-effect.md b/content/docs/hooks-effect.md
index 64b32476ef..b40167ec06 100644
--- a/content/docs/hooks-effect.md
+++ b/content/docs/hooks-effect.md
@@ -43,11 +43,11 @@ Data fetching, setting up a subscription, and manually changing the DOM in React
 
 There are two common kinds of side effects in React components: those that don't require cleanup, and those that do. Let's look at this distinction in more detail.
 
-## Effects Without Cleanup {#effects-without-cleanup}
+## Effects Without Cleanup
 
 Sometimes, we want to **run some additional code after React has updated the DOM.** Network requests, manual DOM mutations, and logging are common examples of effects that don't require a cleanup. We say that because we can run them and immediately forget about them. Let's compare how classes and Hooks let us express such side effects.
 
-### Example Using Classes {#example-using-classes}
+### Example Using Classes
 
 In React class components, the `render` method itself shouldn't cause side effects. It would be too early -- we typically want to perform our effects *after* React has updated the DOM.
 
@@ -89,7 +89,7 @@ This is because in many cases we want to perform the same side effect regardless
 
 Now let's see how we can do the same with the `useEffect` Hook.
 
-### Example Using Hooks {#example-using-hooks}
+### Example Using Hooks
 
 We've already seen this example at the top of this page, but let's take a closer look at it:
 
@@ -120,7 +120,7 @@ function Example() {
 
 **Does `useEffect` run after every render?** Yes! By default, it runs both after the first render *and* after every update. (We will later talk about [how to customize this](#tip-optimizing-performance-by-skipping-effects).) Instead of thinking in terms of "mounting" and "updating", you might find it easier to think that effects happen "after render". React guarantees the DOM has been updated by the time it runs the effects.
 
-### Detailed Explanation {#detailed-explanation}
+### Detailed Explanation
 
 Now that we know more about effects, these lines should make sense:
 
@@ -141,11 +141,11 @@ Experienced JavaScript developers might notice that the function passed to `useE
 >
 >Unlike `componentDidMount` or `componentDidUpdate`, effects scheduled with `useEffect` don't block the browser from updating the screen. This makes your app feel more responsive. The majority of effects don't need to happen synchronously. In the uncommon cases where they do (such as measuring the layout), there is a separate [`useLayoutEffect`](/docs/hooks-reference.html#uselayouteffect) Hook with an API identical to `useEffect`.
 
-## Effects with Cleanup {#effects-with-cleanup}
+## Effects with Cleanup
 
 Earlier, we looked at how to express side effects that don't require any cleanup. However, some effects do. For example, **we might want to set up a subscription** to some external data source. In that case, it is important to clean up so that we don't introduce a memory leak! Let's compare how we can do it with classes and with Hooks.
 
-### Example Using Classes {#example-using-classes-1}
+### Example Using Classes
 
 In a React class, you would typically set up a subscription in `componentDidMount`, and clean it up in `componentWillUnmount`. For example, let's say we have a `ChatAPI` module that lets us subscribe to a friend's online status. Here's how we might subscribe and display that status using a class:
 
@@ -192,7 +192,7 @@ Notice how `componentDidMount` and `componentWillUnmount` need to mirror each ot
 >
 >Eagle-eyed readers may notice that this example also needs a `componentDidUpdate` method to be fully correct. We'll ignore this for now but will come back to it in a [later section](#explanation-why-effects-run-on-each-update) of this page.
 
-### Example Using Hooks {#example-using-hooks-1}
+### Example Using Hooks
 
 Let's see how we could write this component with Hooks.
 
@@ -231,7 +231,7 @@ function FriendStatus(props) {
 >
 >We don't have to return a named function from the effect. We called it `cleanup` here to clarify its purpose, but you could return an arrow function or call it something different.
 
-## Recap {#recap}
+## Recap
 
 We've learned that `useEffect` lets us express different kinds of side effects after a component renders. Some effects might require cleanup so they return a function:
 
@@ -260,11 +260,11 @@ The Effect Hook unifies both use cases with a single API.
 
 -------------
 
-## Tips for Using Effects {#tips-for-using-effects}
+## Tips for Using Effects
 
 We'll continue this page with an in-depth look at some aspects of `useEffect` that experienced React users will likely be curious about. Don't feel obligated to dig into them now. You can always come back to this page to learn more details about the Effect Hook.
 
-### Tip: Use Multiple Effects to Separate Concerns {#tip-use-multiple-effects-to-separate-concerns}
+### Tip: Use Multiple Effects to Separate Concerns
 
 One of the problems we outlined in the [Motivation](/docs/hooks-intro.html#complex-components-become-hard-to-understand) for Hooks is that class lifecycle methods often contain unrelated logic, but related logic gets broken up into several methods. Here is a component that combines the counter and the friend status indicator logic from the previous examples:
 
@@ -331,7 +331,7 @@ function FriendStatusWithCounter(props) {
 
 **Hooks lets us split the code based on what it is doing** rather than a lifecycle method name. React will apply *every* effect used by the component, in the order they were specified.
 
-### Explanation: Why Effects Run on Each Update {#explanation-why-effects-run-on-each-update}
+### Explanation: Why Effects Run on Each Update
 
 If you're used to classes, you might be wondering why the effect cleanup phase happens after every re-render, and not just once during unmounting. Let's look at a practical example to see why this design helps us create components with fewer bugs.
 
@@ -423,7 +423,7 @@ ChatAPI.unsubscribeFromFriendStatus(300, handleStatusChange); // Clean up last e
 
 This behavior ensures consistency by default and prevents bugs that are common in class components due to missing update logic.
 
-### Tip: Optimizing Performance by Skipping Effects {#tip-optimizing-performance-by-skipping-effects}
+### Tip: Optimizing Performance by Skipping Effects
 
 In some cases, cleaning up or applying the effect after every render might create a performance problem. In class components, we can solve this by writing an extra comparison with `prevProps` or `prevState` inside `componentDidUpdate`:
 
@@ -466,7 +466,7 @@ In the future, the second argument might get added automatically by a build-time
 >
 >If you want to run an effect and clean it up only once (on mount and unmount), you can pass an empty array (`[]`) as a second argument. This tells React that your effect doesn't depend on *any* values from props or state, so it never needs to re-run. This isn't handled as a special case -- it follows directly from how the inputs array always works. While passing `[]` is closer to the familiar `componentDidMount` and `componentWillUnmount` mental model, we suggest not making it a habit because it often leads to bugs, [as discussed above](#explanation-why-effects-run-on-each-update). Don't forget that React defers running `useEffect` until after the browser has painted, so doing extra work is less of a problem.
 
-## Next Steps {#next-steps}
+## Next Steps
 
 Congratulations! This was a long page, but hopefully by the end most of your questions about effects were answered. You've learned both the State Hook and the Effect Hook, and there is a *lot* you can do with both of them combined. They cover most of the use cases for classes -- and where they don't, you might find the [additional Hooks](/docs/hooks-reference.html) helpful.
 
diff --git a/content/docs/hooks-faq.md b/content/docs/hooks-faq.md
index 0459bd51c8..30c5e681ca 100644
--- a/content/docs/hooks-faq.md
+++ b/content/docs/hooks-faq.md
@@ -52,9 +52,9 @@ This page answers some of the frequently asked questions about [Hooks](/docs/hoo
   * [How does React associate Hook calls with components?](#how-does-react-associate-hook-calls-with-components)
   * [What is the prior art for Hooks?](#what-is-the-prior-art-for-hooks)
 
-## Adoption Strategy {#adoption-strategy}
+## Adoption Strategy
 
-### Which versions of React include Hooks? {#which-versions-of-react-include-hooks}
+### Which versions of React include Hooks?
 
 Starting with 16.8.0, React includes a stable implementation of React Hooks for:
 
@@ -67,49 +67,49 @@ Note that **to enable Hooks, all React packages need to be 16.8.0 or higher**. H
 
 React Native will fully support Hooks in its next stable release.
 
-### Do I need to rewrite all my class components? {#do-i-need-to-rewrite-all-my-class-components}
+### Do I need to rewrite all my class components?
 
 No. There are [no plans](/docs/hooks-intro.html#gradual-adoption-strategy) to remove classes from React -- we all need to keep shipping products and can't afford rewrites. We recommend trying Hooks in new code.
 
-### What can I do with Hooks that I couldn't with classes? {#what-can-i-do-with-hooks-that-i-couldnt-with-classes}
+### What can I do with Hooks that I couldn't with classes?
 
 Hooks offer a powerful and expressive new way to reuse functionality between components. ["Building Your Own Hooks"](/docs/hooks-custom.html) provides a glimpse of what's possible. [This article](https://medium.com/@dan_abramov/making-sense-of-react-hooks-fdbde8803889) by a React core team member dives deeper into the new capabilities unlocked by Hooks.
 
-### How much of my React knowledge stays relevant? {#how-much-of-my-react-knowledge-stays-relevant}
+### How much of my React knowledge stays relevant?
 
 Hooks are a more direct way to use the React features you already know -- such as state, lifecycle, context, and refs. They don't fundamentally change how React works, and your knowledge of components, props, and top-down data flow is just as relevant.
 
 Hooks do have a learning curve of their own. If there's something missing in this documentation, [raise an issue](https://github.com/reactjs/reactjs.org/issues/new) and we'll try to help.
 
-### Should I use Hooks, classes, or a mix of both? {#should-i-use-hooks-classes-or-a-mix-of-both}
+### Should I use Hooks, classes, or a mix of both?
 
 When you're ready, we'd encourage you to start trying Hooks in new components you write. Make sure everyone on your team is on board with using them and familiar with this documentation. We don't recommend rewriting your existing classes to Hooks unless you planned to rewrite them anyway (e.g. to fix bugs).
 
 You can't use Hooks *inside* of a class component, but you can definitely mix classes and function components with Hooks in a single tree. Whether a component is a class or a function that uses Hooks is an implementation detail of that component. In the longer term, we expect Hooks to be the primary way people write React components.
 
-### Do Hooks cover all use cases for classes? {#do-hooks-cover-all-use-cases-for-classes}
+### Do Hooks cover all use cases for classes?
 
 Our goal is for Hooks to cover all use cases for classes as soon as possible. There are no Hook equivalents to the uncommon `getSnapshotBeforeUpdate` and `componentDidCatch` lifecycles yet, but we plan to add them soon.
 
 It is an early time for Hooks, and some third-party libraries might not be compatible with Hooks at the moment.
 
-### Do Hooks replace render props and higher-order components? {#do-hooks-replace-render-props-and-higher-order-components}
+### Do Hooks replace render props and higher-order components?
 
 Often, render props and higher-order components render only a single child. We think Hooks are a simpler way to serve this use case. There is still a place for both patterns (for example, a virtual scroller component might have a `renderItem` prop, or a visual container component might have its own DOM structure). But in most cases, Hooks will be sufficient and can help reduce nesting in your tree.
 
-### What do Hooks mean for popular APIs like Redux `connect()` and React Router? {#what-do-hooks-mean-for-popular-apis-like-redux-connect-and-react-router}
+### What do Hooks mean for popular APIs like Redux `connect()` and React Router?
 
 You can continue to use the exact same APIs as you always have; they'll continue to work.
 
 In the future, new versions of these libraries might also export custom Hooks such as `useRedux()` or `useRouter()` that let you use the same features without needing wrapper components.
 
-### Do Hooks work with static typing? {#do-hooks-work-with-static-typing}
+### Do Hooks work with static typing?
 
 Hooks were designed with static typing in mind. Because they're functions, they are easier to type correctly than patterns like higher-order components. The latest Flow and TypeScript React definitions include support for React Hooks.
 
 Importantly, custom Hooks give you the power to constrain React API if you'd like to type them more strictly in some way. React gives you the primitives, but you can combine them in different ways than what we provide out of the box.
 
-### How to test components that use Hooks? {#how-to-test-components-that-use-hooks}
+### How to test components that use Hooks?
 
 From React's point of view, a component using Hooks is just a regular component. If your testing solution doesn't rely on React internals, testing components with Hooks shouldn't be different from how you normally test components.
 
@@ -177,7 +177,7 @@ If you need to test a custom Hook, you can do so by creating a component in your
 
 To reduce the boilerplate, we recommend using [`react-testing-library`](https://git.io/react-testing-library) which is designed to encourage writing tests that use your components as the end users do.
 
-### What exactly do the [lint rules](https://www.npmjs.com/package/eslint-plugin-react-hooks) enforce? {#what-exactly-do-the-lint-ruleshttpswwwnpmjscompackageeslint-plugin-react-hooks-enforce}
+### What exactly do the [lint rules](https://www.npmjs.com/package/eslint-plugin-react-hooks) enforce?
 
 We provide an [ESLint plugin](https://www.npmjs.com/package/eslint-plugin-react-hooks) that enforces [rules of Hooks](/docs/hooks-rules.html) to avoid bugs. It assumes that any function starting with "`use`" and a capital letter right after it is a Hook. We recognize this heuristic isn't perfect and there may be some false positives, but without an ecosystem-wide convention there is just no way to make Hooks work well -- and longer names will discourage people from either adopting Hooks or following the convention.
 
@@ -188,9 +188,9 @@ In particular, the rule enforces that:
 
 There are a few more heuristics, and they might change over time as we fine-tune the rule to balance finding bugs with avoiding false positives.
 
-## From Classes to Hooks {#from-classes-to-hooks}
+## From Classes to Hooks
 
-### How do lifecycle methods correspond to Hooks? {#how-do-lifecycle-methods-correspond-to-hooks}
+### How do lifecycle methods correspond to Hooks?
 
 * `constructor`: Function components don't need a constructor. You can initialize the state in the [`useState`](/docs/hooks-reference.html#usestate) call. If computing it is expensive, you can pass a function to `useState`.
 
@@ -204,7 +204,7 @@ There are a few more heuristics, and they might change over time as we fine-tune
 
 * `componentDidCatch` and `getDerivedStateFromError`: There are no Hook equivalents for these methods yet, but they will be added soon.
 
-### Is there something like instance variables? {#is-there-something-like-instance-variables}
+### Is there something like instance variables?
 
 Yes! The [`useRef()`](/docs/hooks-reference.html#useref) Hook isn't just for DOM refs. The "ref" object is a generic container whose `current` property is mutable and can hold any value, similar to an instance property on a class.
 
@@ -240,7 +240,7 @@ If we just wanted to set an interval, we wouldn't need the ref (`id` could be lo
 
 Conceptually, you can think of refs as similar to instance variables in a class. Unless you're doing [lazy initialization](#how-to-create-expensive-objects-lazily), avoid setting refs during rendering -- this can lead to surprising behavior. Instead, typically you want to modify refs in event handlers and effects.
 
-### Should I use one or many state variables? {#should-i-use-one-or-many-state-variables}
+### Should I use one or many state variables?
 
 If you're coming from classes, you might be tempted to always call `useState()` once and put all state into a single object. You can do it if you'd like. Here is an example of a component that follows the mouse movement. We keep its position and size in the local state:
 
@@ -307,11 +307,11 @@ Note how we were able to move the `useState` call for the `position` state varia
 
 Both putting all state in a single `useState` call, and having a `useState` call per each field can work. Components tend to be most readable when you find a balance between these two extremes, and group related state into a few independent state variables. If the state logic becomes complex, we recommend [managing it with a reducer](/docs/hooks-reference.html#usereducer) or a custom Hook.
 
-### Can I run an effect only on updates? {#can-i-run-an-effect-only-on-updates}
+### Can I run an effect only on updates?
 
 This is a rare use case. If you need it, you can [use a mutable ref](#is-there-something-like-instance-variables) to manually store a boolean value corresponding to whether you are on the first or a subsequent render, then check that flag in your effect. (If you find yourself doing this often, you could create a custom Hook for it.)
 
-### How to get the previous props or state? {#how-to-get-the-previous-props-or-state}
+### How to get the previous props or state?
 
 Currently, you can do it manually [with a ref](#is-there-something-like-instance-variables):
 
diff --git a/content/docs/hooks-intro.md b/content/docs/hooks-intro.md
index b4cefcfbeb..d0a4ef6acc 100644
--- a/content/docs/hooks-intro.md
+++ b/content/docs/hooks-intro.md
@@ -33,7 +33,7 @@ This new function `useState` is the first "Hook" we'll learn about, but this exa
 >
 >React 16.8.0 is the first release to support Hooks. When upgrading, don't forget to update all packages, including React DOM. React Native will support Hooks in the next stable release.
 
-## Video Introduction {#video-introduction}
+## Video Introduction
 
 At React Conf 2018, Sophie Alpert and Dan Abramov introduced Hooks, followed by Ryan Florence demonstrating how to refactor an application to use them. Watch the video here:
 
@@ -41,7 +41,7 @@ At React Conf 2018, Sophie Alpert and Dan Abramov introduced Hooks, followed by
 
 <iframe width="650" height="366" src="//www.youtube.com/embed/dpw9EHDh2bM" frameborder="0" allowfullscreen></iframe>
 
-## No Breaking Changes {#no-breaking-changes}
+## No Breaking Changes
 
 Before we continue, note that Hooks are:
 
@@ -55,11 +55,11 @@ Before we continue, note that Hooks are:
 
 **If you just want to start learning Hooks, feel free to [jump directly to the next page!](/docs/hooks-overview.html)** You can also keep reading this page to learn more about why we're adding Hooks, and how we're going to start using them without rewriting our applications.
 
-## Motivation {#motivation}
+## Motivation
 
 Hooks solve a wide variety of seemingly unconnected problems in React that we've encountered over five years of writing and maintaining tens of thousands of components. Whether you're learning React, use it daily, or even prefer a different library with a similar component model, you might recognize some of these problems.
 
-### It's hard to reuse stateful logic between components {#its-hard-to-reuse-stateful-logic-between-components}
+### It's hard to reuse stateful logic between components
 
 React doesn't offer a way to "attach" reusable behavior to a component (for example, connecting it to a store). If you've worked with React for a while, you may be familiar with patterns like [render props](/docs/render-props.html) and [higher-order components](/docs/higher-order-components.html) that try to solve this. But these patterns require you to restructure your components when you use them, which can be cumbersome and make code harder to follow. If you look at a typical React application in React DevTools, you will likely find a "wrapper hell" of components surrounded by layers of providers, consumers, higher-order components, render props, and other abstractions. While we could [filter them out in DevTools](https://github.com/facebook/react-devtools/pull/503), this points to a deeper underlying problem: React needs a better primitive for sharing stateful logic.
 
@@ -67,7 +67,7 @@ With Hooks, you can extract stateful logic from a component so it can be tested
 
 We'll discuss this more in [Building Your Own Hooks](/docs/hooks-custom.html).
 
-### Complex components become hard to understand {#complex-components-become-hard-to-understand}
+### Complex components become hard to understand
 
 We've often had to maintain components that started out simple but grew into an unmanageable mess of stateful logic and side effects. Each lifecycle method often contains a mix of unrelated logic. For example, components might perform some data fetching in `componentDidMount` and `componentDidUpdate`. However, the same `componentDidMount` method might also contain some unrelated logic that sets up event listeners, with cleanup performed in `componentWillUnmount`. Mutually related code that changes together gets split apart, but completely unrelated code ends up combined in a single method. This makes it too easy to introduce bugs and inconsistencies.
 
@@ -77,7 +77,7 @@ To solve this, **Hooks let you split one component into smaller functions based
 
 We'll discuss this more in [Using the Effect Hook](/docs/hooks-effect.html#tip-use-multiple-effects-to-separate-concerns).
 
-### Classes confuse both people and machines {#classes-confuse-both-people-and-machines}
+### Classes confuse both people and machines
 
 In addition to making code reuse and code organization more difficult, we've found that classes can be a large barrier to learning React. You have to understand how `this` works in JavaScript, which is very different from how it works in most languages. You have to remember to bind the event handlers. Without unstable [syntax proposals](https://babeljs.io/docs/en/babel-plugin-transform-class-properties/), the code is very verbose. People can understand props, state, and top-down data flow perfectly well but still struggle with classes. The distinction between function and class components in React and when to use each one leads to disagreements even between experienced React developers.
 
@@ -89,7 +89,7 @@ To solve these problems, **Hooks let you use more of React's features without cl
 >
 >[Hooks at a Glance](/docs/hooks-overview.html) is a good place to start learning Hooks.
 
-## Gradual Adoption Strategy {#gradual-adoption-strategy}
+## Gradual Adoption Strategy
 
 >**TLDR: There are no plans to remove classes from React.**
 
@@ -103,10 +103,10 @@ Finally, there is no rush to migrate to Hooks. We recommend avoiding any "big re
 
 We intend for Hooks to cover all existing use cases for classes, but **we will keep supporting class components for the foreseeable future.** At Facebook, we have tens of thousands of components written as classes, and we have absolutely no plans to rewrite them. Instead, we are starting to use Hooks in the new code side by side with classes.
 
-## Frequently Asked Questions {#frequently-asked-questions}
+## Frequently Asked Questions
 
 We've prepared a [Hooks FAQ page](/docs/hooks-faq.html) that answers the most common questions about Hooks.
 
-## Next Steps {#next-steps}
+## Next Steps
 
 By the end of this page, you should have a rough idea of what problems Hooks are solving, but many details are probably unclear. Don't worry! **Let's now go to [the next page](/docs/hooks-overview.html) where we start learning about Hooks by example.**
diff --git a/content/docs/hooks-overview.md b/content/docs/hooks-overview.md
index 198bd6d88a..013f792ca8 100644
--- a/content/docs/hooks-overview.md
+++ b/content/docs/hooks-overview.md
@@ -16,7 +16,7 @@ Hooks are [backwards-compatible](/docs/hooks-intro.html#no-breaking-changes). Th
 
 **↑↑↑ Each section ends with a yellow box like this.** They link to detailed explanations.
 
-## 📌 State Hook {#-state-hook}
+## 📌 State Hook
 
 This example renders a counter. When you click the button, it increments the value:
 
@@ -42,7 +42,7 @@ Here, `useState` is a *Hook* (we'll talk about what this means in a moment). We
 
 The only argument to `useState` is the initial state. In the example above, it is `0` because our counter starts from zero. Note that unlike `this.state`, the state here doesn't have to be an object -- although it can be if you want. The initial state argument is only used during the first render.
 
-#### Declaring multiple state variables {#declaring-multiple-state-variables}
+#### Declaring multiple state variables
 
 You can use the State Hook more than once in a single component:
 
@@ -58,7 +58,7 @@ function ExampleWithManyStates() {
 
 The [array destructuring](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Array_destructuring) syntax lets us give different names to the state variables we declared by calling `useState`. These names aren't a part of the `useState` API. Instead, React assumes that if you call `useState` many times, you do it in the same order during every render. We'll come back to why this works and when this is useful later.
 
-#### But what is a Hook? {#but-what-is-a-hook}
+#### But what is a Hook?
 
 Hooks are functions that let you “hook into” React state and lifecycle features from function components. Hooks don't work inside classes -- they let you use React without classes. (We [don't recommend](/docs/hooks-intro.html#gradual-adoption-strategy) rewriting your existing components overnight but you can start using Hooks in the new ones if you'd like.)
 
@@ -68,7 +68,7 @@ React provides a few built-in Hooks like `useState`. You can also create your ow
 >
 >You can learn more about the State Hook on a dedicated page: [Using the State Hook](/docs/hooks-state.html).
 
-## ⚡️ Effect Hook {#-effect-hook}
+## ⚡️ Effect Hook
 
 You've likely performed data fetching, subscriptions, or manually changing the DOM from React components before. We call these operations "side effects" (or "effects" for short) because they can affect other components and can't be done during rendering.
 
@@ -159,7 +159,7 @@ Hooks let you organize side effects in a component by what pieces are related (s
 >
 >You can learn more about `useEffect` on a dedicated page: [Using the Effect Hook](/docs/hooks-effect.html).
 
-## ✌️ Rules of Hooks {#️-rules-of-hooks}
+## ✌️ Rules of Hooks
 
 Hooks are JavaScript functions, but they impose two additional rules:
 
@@ -172,7 +172,7 @@ We provide a [linter plugin](https://www.npmjs.com/package/eslint-plugin-react-h
 >
 >You can learn more about these rules on a dedicated page: [Rules of Hooks](/docs/hooks-rules.html).
 
-## 💡 Building Your Own Hooks {#-building-your-own-hooks}
+## 💡 Building Your Own Hooks
 
 Sometimes, we want to reuse some stateful logic between components. Traditionally, there were two popular solutions to this problem: [higher-order components](/docs/higher-order-components.html) and [render props](/docs/render-props.html). Custom Hooks let you do this, but without adding more components to your tree.
 
@@ -239,7 +239,7 @@ You can write custom Hooks that cover a wide range of use cases like form handli
 >
 >You can learn more about custom Hooks on a dedicated page: [Building Your Own Hooks](/docs/hooks-custom.html).
 
-## 🔌 Other Hooks {#-other-hooks}
+## 🔌 Other Hooks
 
 There are a few less commonly used built-in Hooks that you might find useful. For example, [`useContext`](/docs/hooks-reference.html#usecontext) lets you subscribe to React context without introducing nesting:
 
@@ -263,7 +263,7 @@ function Todos() {
 >
 >You can learn more about all the built-in Hooks on a dedicated page: [Hooks API Reference](/docs/hooks-reference.html).
 
-## Next Steps {#next-steps}
+## Next Steps
 
 Phew, that was fast! If some things didn't quite make sense or you'd like to learn more in detail, you can read the next pages, starting with the [State Hook](/docs/hooks-state.html) documentation.
 
diff --git a/content/docs/hooks-reference.md b/content/docs/hooks-reference.md
index 90091d8d12..6a8d8a664f 100644
--- a/content/docs/hooks-reference.md
+++ b/content/docs/hooks-reference.md
@@ -25,9 +25,9 @@ If you're new to Hooks, you might want to check out [the overview](/docs/hooks-o
   - [`useLayoutEffect`](#uselayouteffect)
   - [`useDebugValue`](#usedebugvalue)
 
-## Basic Hooks {#basic-hooks}
+## Basic Hooks
 
-### `useState` {#usestate}
+### `useState`
 
 ```js
 const [state, setState] = useState(initialState);
@@ -45,7 +45,7 @@ setState(newState);
 
 During subsequent re-renders, the first value returned by `useState` will always be the most recent state after applying updates.
 
-#### Functional updates {#functional-updates}
+#### Functional updates
 
 If the new state is computed using the previous state, you can pass a function to `setState`. The function will receive the previous value, and return an updated value. Here's an example of a counter component that uses both forms of `setState`:
 
@@ -78,7 +78,7 @@ The "+" and "-" buttons use the functional form, because the updated value is ba
 >
 > Another option is `useReducer`, which is more suited for managing state objects that contain multiple sub-values.
 
-#### Lazy initial state {#lazy-initial-state}
+#### Lazy initial state
 
 The `initialState` argument is the state used during the initial render. In subsequent renders, it is disregarded. If the initial state is the result of an expensive computation, you may provide a function instead, which will be executed only on the initial render:
 
@@ -89,11 +89,11 @@ const [state, setState] = useState(() => {
 });
 ```
 
-#### Bailing out of a state update {#bailing-out-of-a-state-update}
+#### Bailing out of a state update
 
 If you update a State Hook to the same value as the current state, React will bail out without rendering the children or firing effects. (React uses the [`Object.is` comparison algorithm](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#Description).)
 
-### `useEffect` {#useeffect}
+### `useEffect`
 
 ```js
 useEffect(didUpdate);
@@ -107,7 +107,7 @@ Instead, use `useEffect`. The function passed to `useEffect` will run after the
 
 By default, effects run after every completed render, but you can choose to fire it [only when certain values have changed](#conditionally-firing-an-effect).
 
-#### Cleaning up an effect {#cleaning-up-an-effect}
+#### Cleaning up an effect
 
 Often, effects create resources that need to be cleaned up before the component leaves the screen, such as a subscription or timer ID. To do this, the function passed to `useEffect` may return a clean-up function. For example, to create a subscription:
 
@@ -123,7 +123,7 @@ useEffect(() => {
 
 The clean-up function runs before the component is removed from the UI to prevent memory leaks. Additionally, if a component renders multiple times (as they typically do), the **previous effect is cleaned up before executing the next effect**. In our example, this means a new subscription is created on every update. To avoid firing an effect on every update, refer to the next section.
 
-#### Timing of effects {#timing-of-effects}
+#### Timing of effects
 
 Unlike `componentDidMount` and `componentDidUpdate`, the function passed to `useEffect` fires **after** layout and paint, during a deferred event. This makes it suitable for the many common side effects, like setting up subscriptions and event handlers, because most types of work shouldn't block the browser from updating the screen.
 
@@ -131,7 +131,7 @@ However, not all effects can be deferred. For example, a DOM mutation that is vi
 
 Although `useEffect` is deferred until after the browser has painted, it's guaranteed to fire before any new renders. React will always flush a previous render's effects before starting a new update.
 
-#### Conditionally firing an effect {#conditionally-firing-an-effect}
+#### Conditionally firing an effect
 
 The default behavior for effects is to fire the effect after every completed render. That way an effect is always recreated if one of its inputs changes.
 
@@ -159,7 +159,7 @@ Passing in an empty array `[]` of inputs tells React that your effect doesn't de
 >
 > The array of inputs is not passed as arguments to the effect function. Conceptually, though, that's what they represent: every value referenced inside the effect function should also appear in the inputs array. In the future, a sufficiently advanced compiler could create this array automatically.
 
-### `useContext` {#usecontext}
+### `useContext`
 
 ```js
 const context = useContext(Context);
@@ -169,11 +169,11 @@ Accepts a context object (the value returned from `React.createContext`) and ret
 
 When the provider updates, this Hook will trigger a rerender with the latest context value.
 
-## Additional Hooks {#additional-hooks}
+## Additional Hooks
 
 The following Hooks are either variants of the basic ones from the previous section, or only needed for specific edge cases. Don't stress about learning them up front.
 
-### `useReducer` {#usereducer}
+### `useReducer`
 
 ```js
 const [state, dispatch] = useReducer(reducer, initialArg, init);
@@ -211,7 +211,7 @@ function Counter({initialCount}) {
 }
 ```
 
-#### Specifying the initial state {#specifying-the-initial-state}
+#### Specifying the initial state
 
 There’s two different ways to initialize `useReducer` state. You may choose either one depending on the use case. The simplest way to pass the initial state as a second argument:
 
@@ -226,7 +226,7 @@ There’s two different ways to initialize `useReducer` state. You may choose ei
 >
 >React doesn’t use the `state = initialState` argument convention popularized by Redux. The initial value sometimes needs to depend on props and so is specified from the Hook call instead. If you feel strongly about this, you can call `useReducer(reducer, undefined, reducer)` to emulate the Redux behavior, but it's not encouraged.
 
-#### Lazy initialization {#lazy-initialization}
+#### Lazy initialization
 
 You can also create the initial state lazily. To do this, you can pass an `init` function as the third argument. The initial state will be set to `init(initialArg)`.
 
@@ -268,11 +268,11 @@ function Counter({initialCount}) {
 }
 ```
 
-#### Bailing out of a dispatch {#bailing-out-of-a-dispatch}
+#### Bailing out of a dispatch
 
 If you return the same value from a Reducer Hook as the current state, React will bail out without rendering the children or firing effects. (React uses the [`Object.is` comparison algorithm](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#Description).)
 
-### `useCallback` {#usecallback}
+### `useCallback`
 
 ```js
 const memoizedCallback = useCallback(
@@ -293,7 +293,7 @@ Pass an inline callback and an array of inputs. `useCallback` will return a memo
 >
 > The array of inputs is not passed as arguments to the callback. Conceptually, though, that's what they represent: every value referenced inside the callback should also appear in the inputs array. In the future, a sufficiently advanced compiler could create this array automatically.
 
-### `useMemo` {#usememo}
+### `useMemo`
 
 ```js
 const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);
@@ -313,7 +313,7 @@ If no array is provided, a new value will be computed whenever a new function in
 >
 > The array of inputs is not passed as arguments to the function. Conceptually, though, that's what they represent: every value referenced inside the function should also appear in the inputs array. In the future, a sufficiently advanced compiler could create this array automatically.
 
-### `useRef` {#useref}
+### `useRef`
 
 ```js
 const refContainer = useRef(initialValue);
@@ -341,7 +341,7 @@ function TextInputWithFocusButton() {
 
 Note that `useRef()` is useful for more than the `ref` attribute. It's [handy for keeping any mutable value around](/docs/hooks-faq.html#is-there-something-like-instance-variables) similar to how you'd use instance fields in classes.
 
-### `useImperativeHandle` {#useimperativehandle}
+### `useImperativeHandle`
 
 ```js
 useImperativeHandle(ref, createHandle, [inputs])
@@ -364,7 +364,7 @@ FancyInput = forwardRef(FancyInput);
 
 In this example, a parent component that renders `<FancyInput ref={fancyInputRef} />` would be able to call `fancyInputRef.current.focus()`.
 
-### `useLayoutEffect` {#uselayouteffect}
+### `useLayoutEffect`
 
 The signature is identical to `useEffect`, but it fires synchronously after all DOM mutations. Use this to read layout from the DOM and synchronously re-render. Updates scheduled inside `useLayoutEffect` will be flushed synchronously, before the browser has a chance to paint.
 
@@ -374,7 +374,7 @@ Prefer the standard `useEffect` when possible to avoid blocking visual updates.
 >
 > If you're migrating code from a class component, `useLayoutEffect` fires in the same phase as `componentDidMount` and `componentDidUpdate`, so if you're unsure of which effect Hook to use, it's probably the least risky.
 
-### `useDebugValue` {#usedebugvalue}
+### `useDebugValue`
 
 ```js
 useDebugValue(value)
@@ -402,7 +402,7 @@ function useFriendStatus(friendID) {
 >
 > We don't recommend adding debug values to every custom Hook. It's most valuable for custom Hooks that are part of shared libraries.
 
-#### Defer formatting debug values {#defer-formatting-debug-values}
+#### Defer formatting debug values
 
 In some cases formatting a value for display might be an expensive operation. It's also unnecessary unless a Hook is actually inspected.
 
diff --git a/content/docs/hooks-rules.md b/content/docs/hooks-rules.md
index 698d1c7417..80a447992a 100644
--- a/content/docs/hooks-rules.md
+++ b/content/docs/hooks-rules.md
@@ -10,11 +10,11 @@ prev: hooks-effect.html
 
 Hooks are JavaScript functions, but you need to follow two rules when using them. We provide a [linter plugin](https://www.npmjs.com/package/eslint-plugin-react-hooks) to enforce these rules automatically:
 
-### Only Call Hooks at the Top Level {#only-call-hooks-at-the-top-level}
+### Only Call Hooks at the Top Level
 
 **Don't call Hooks inside loops, conditions, or nested functions.** Instead, always use Hooks at the top level of your React function. By following this rule, you ensure that Hooks are called in the same order each time a component renders. That's what allows React to correctly preserve the state of Hooks between multiple `useState` and `useEffect` calls. (If you're curious, we'll explain this in depth [below](#explanation).)
 
-### Only Call Hooks from React Functions {#only-call-hooks-from-react-functions}
+### Only Call Hooks from React Functions
 
 **Don't call Hooks from regular JavaScript functions.** Instead, you can:
 
@@ -23,7 +23,7 @@ Hooks are JavaScript functions, but you need to follow two rules when using them
 
 By following this rule, you ensure that all stateful logic in a component is clearly visible from its source code.
 
-## ESLint Plugin {#eslint-plugin}
+## ESLint Plugin
 
 We released an ESLint plugin called [`eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks) that enforces these two rules. You can add this plugin to your project if you'd like to try it:
 
@@ -49,7 +49,7 @@ In the future, we intend to include this plugin by default into Create React App
 
 **You can skip to the next page explaining how to write [your own Hooks](/docs/hooks-custom.html) now.** On this page, we'll continue by explaining the reasoning behind these rules.
 
-## Explanation {#explanation}
+## Explanation
 
 As we [learned earlier](/docs/hooks-state.html#tip-using-multiple-state-variables), we can use multiple State or Effect Hooks in a single component:
 
@@ -132,6 +132,6 @@ React wouldn't know what to return for the second `useState` Hook call. React ex
 
 **Note that you don't need to worry about this problem if you use the [provided lint rule](https://www.npmjs.com/package/eslint-plugin-react-hooks).** But now you also know *why* Hooks work this way, and which issues the rule is preventing.
 
-## Next Steps {#next-steps}
+## Next Steps
 
 Finally, we're ready to learn about [writing your own Hooks](/docs/hooks-custom.html)! Custom Hooks let you combine Hooks provided by React into your own abstractions, and reuse common stateful logic between different components.
diff --git a/content/docs/hooks-state.md b/content/docs/hooks-state.md
index 052aecb330..2a234af82e 100644
--- a/content/docs/hooks-state.md
+++ b/content/docs/hooks-state.md
@@ -30,7 +30,7 @@ function Example() {
 
 We'll start learning about Hooks by comparing this code to an equivalent class example.
 
-## Equivalent Class Example {#equivalent-class-example}
+## Equivalent Class Example
 
 If you used classes in React before, this code should look familiar:
 
@@ -62,7 +62,7 @@ The state starts as `{ count: 0 }`, and we increment `state.count` when the user
 >
 >You might be wondering why we're using a counter here instead of a more realistic example. This is to help us focus on the API while we're still making our first steps with Hooks.
 
-## Hooks and Function Components {#hooks-and-function-components}
+## Hooks and Function Components
 
 As a reminder, function components in React look like this:
 
@@ -86,7 +86,7 @@ You might have previously known these as "stateless components". We're now intro
 
 Hooks **don't** work inside classes. But you can use them instead of writing classes.
 
-## What's a Hook? {#whats-a-hook}
+## What's a Hook?
 
 Our new example starts by importing the `useState` Hook from React:
 
@@ -106,7 +106,7 @@ function Example() {
 >
 >There are some special rules about where you can and can't use Hooks within a component. We'll learn them in [Rules of Hooks](/docs/hooks-rules.html).
 
-## Declaring a State Variable {#declaring-a-state-variable}
+## Declaring a State Variable
 
 In a class, we initialize the `count` state to `0` by setting `this.state` to `{ count: 0 }` in the constructor:
 
@@ -154,7 +154,7 @@ We declare a state variable called `count`, and set it to `0`. React will rememb
 >
 >"Create" wouldn't be quite accurate because the state is only created the first time our component renders. During the next renders, `useState` gives us the current state. Otherwise it wouldn't be "state" at all! There's also a reason why Hook names *always* start with `use`. We'll learn why later in the [Rules of Hooks](/docs/hooks-rules.html).
 
-## Reading State {#reading-state}
+## Reading State
 
 When we want to display the current count in a class, we read `this.state.count`:
 
@@ -169,7 +169,7 @@ In a function, we can use `count` directly:
   <p>You clicked {count} times</p>
 ```
 
-## Updating State {#updating-state}
+## Updating State
 
 In a class, we need to call `this.setState()` to update the `count` state:
 
@@ -187,7 +187,7 @@ In a function, we already have `setCount` and `count` as variables so we don't n
   </button>
 ```
 
-## Recap {#recap}
+## Recap
 
 Let's now **recap what we learned line by line** and check our understanding.
 
@@ -218,7 +218,7 @@ Let's now **recap what we learned line by line** and check our understanding.
 
 This might seem like a lot to take in at first. Don't rush it! If you're lost in the explanation, look at the code above again and try to read it from top to bottom. We promise that once you try to "forget" how state works in classes, and look at this code with fresh eyes, it will make sense.
 
-### Tip: What Do Square Brackets Mean? {#tip-what-do-square-brackets-mean}
+### Tip: What Do Square Brackets Mean?
 
 You might have noticed the square brackets when we declare a state variable:
 
@@ -246,7 +246,7 @@ When we declare a state variable with `useState`, it returns a pair — an array
 >
 >You might be curious how React knows which component `useState` corresponds to since we're not passing anything like `this` back to React. We'll answer [this question](/docs/hooks-faq.html#how-does-react-associate-hook-calls-with-components) and many others in the FAQ section.
 
-### Tip: Using Multiple State Variables {#tip-using-multiple-state-variables}
+### Tip: Using Multiple State Variables
 
 Declaring state variables as a pair of `[something, setSomething]` is also handy because it lets us give *different* names to different state variables if we want to use more than one:
 
@@ -271,7 +271,7 @@ You **don't have to** use many state variables. State variables can hold objects
 
 We provide more recommendations on splitting independent state variables [in the FAQ](/docs/hooks-faq.html#should-i-use-one-or-many-state-variables).
 
-## Next Steps {#next-steps}
+## Next Steps
 
 On this page we've learned about one of the Hooks provided by React, called `useState`. We're also sometimes going to refer to it as the "State Hook". It lets us add local state to React function components -- which we did for the first time ever!
 
diff --git a/content/docs/how-to-contribute.md b/content/docs/how-to-contribute.md
index a08ee3acdd..ff5fd988da 100644
--- a/content/docs/how-to-contribute.md
+++ b/content/docs/how-to-contribute.md
@@ -11,21 +11,21 @@ redirect_from:
 
 React is one of Facebook's first open source projects that is both under very active development and is also being used to ship code to everybody on [facebook.com](https://www.facebook.com). We're still working out the kinks to make contributing to this project as easy and transparent as possible, but we're not quite there yet. Hopefully this document makes the process for contributing clear and answers some questions that you may have.
 
-### [Code of Conduct](https://code.facebook.com/codeofconduct) {#code-of-conducthttpscodefacebookcomcodeofconduct}
+### [Code of Conduct](https://code.facebook.com/codeofconduct)
 
 Facebook has adopted a Code of Conduct that we expect project participants to adhere to. Please read [the full text](https://code.facebook.com/codeofconduct) so that you can understand what actions will and will not be tolerated.
 
-### Open Development {#open-development}
+### Open Development
 
 All work on React happens directly on [GitHub](https://github.com/facebook/react). Both core team members and external contributors send pull requests which go through the same review process.
 
-### Branch Organization {#branch-organization}
+### Branch Organization
 
 We will do our best to keep the [`master` branch](https://github.com/facebook/react/tree/master) in good shape, with tests passing at all times. But in order to move fast, we will make API changes that your application might not be compatible with. We recommend that you use [the latest stable version of React](/downloads.html).
 
 If you send a pull request, please do it against the `master` branch. We maintain stable branches for major versions separately but we don't accept pull requests to them directly. Instead, we cherry-pick non-breaking changes from master to the latest stable major version.
 
-### Semantic Versioning {#semantic-versioning}
+### Semantic Versioning
 
 React follows [semantic versioning](http://semver.org/). We release patch versions for bugfixes, minor versions for new features, and major versions for any breaking changes. When we make breaking changes, we also introduce deprecation warnings in a minor version so that our users learn about the upcoming changes and migrate their code in advance.
 
@@ -33,34 +33,34 @@ We tag every pull request with a label marking whether the change should go in t
 
 Every significant change is documented in the [changelog file](https://github.com/facebook/react/blob/master/CHANGELOG.md).
 
-### Bugs {#bugs}
+### Bugs
 
-#### Where to Find Known Issues {#where-to-find-known-issues}
+#### Where to Find Known Issues
 
 We are using [GitHub Issues](https://github.com/facebook/react/issues) for our public bugs. We keep a close eye on this and try to make it clear when we have an internal fix in progress. Before filing a new task, try to make sure your problem doesn't already exist.
 
-#### Reporting New Issues {#reporting-new-issues}
+#### Reporting New Issues
 
 The best way to get your bug fixed is to provide a reduced test case. This [JSFiddle template](https://jsfiddle.net/Luktwrdm/) is a great starting point.
 
-#### Security Bugs {#security-bugs}
+#### Security Bugs
 
 Facebook has a [bounty program](https://www.facebook.com/whitehat/) for the safe disclosure of security bugs. With that in mind, please do not file public issues; go through the process outlined on that page.
 
-### How to Get in Touch {#how-to-get-in-touch}
+### How to Get in Touch
 
 * IRC: [#reactjs on freenode](https://webchat.freenode.net/?channels=reactjs)
 * Discussion forum: [discuss.reactjs.org](https://discuss.reactjs.org/)
 
 There is also [an active community of React users on the Discord chat platform](http://www.reactiflux.com/) in case you need help with React.
 
-### Proposing a Change {#proposing-a-change}
+### Proposing a Change
 
 If you intend to change the public API, or make any non-trivial changes to the implementation, we recommend [filing an issue](https://github.com/facebook/react/issues/new). This lets us reach an agreement on your proposal before you put significant effort into it.
 
 If you're only fixing a bug, it's fine to submit a pull request right away but we still recommend to file an issue detailing what you're fixing. This is helpful in case we don't accept that specific fix but want to keep track of the issue.
 
-### Your First Pull Request {#your-first-pull-request}
+### Your First Pull Request
 
 Working on your first Pull Request? You can learn how from this free video series:
 
@@ -72,7 +72,7 @@ If you decide to fix an issue, please be sure to check the comment thread in cas
 
 If somebody claims an issue but doesn't follow up for more than two weeks, it's fine to take it over but you should still leave a comment.
 
-### Sending a Pull Request {#sending-a-pull-request}
+### Sending a Pull Request
 
 The core team is monitoring for pull requests. We will review your pull request and either merge it, request changes to it, or close it with an explanation. For API changes we may need to fix our internal uses at Facebook.com, which could cause some delay. We'll do our best to provide updates and feedback throughout the process.
 
@@ -89,19 +89,19 @@ The core team is monitoring for pull requests. We will review your pull request
 9. Run the [Flow](https://flowtype.org/) typechecks (`yarn flow`).
 10. If you haven't already, complete the CLA.
 
-### Contributor License Agreement (CLA) {#contributor-license-agreement-cla}
+### Contributor License Agreement (CLA)
 
 In order to accept your pull request, we need you to submit a CLA. You only need to do this once, so if you've done this for another Facebook open source project, you're good to go. If you are submitting a pull request for the first time, just let us know that you have completed the CLA and we can cross-check with your GitHub username.
 
 **[Complete your CLA here.](https://code.facebook.com/cla)**
 
-### Contribution Prerequisites {#contribution-prerequisites}
+### Contribution Prerequisites
 
 * You have [Node](https://nodejs.org) installed at v8.0.0+ and [Yarn](https://yarnpkg.com/en/) at v1.2.0+.
 * You have `gcc` installed or are comfortable installing a compiler if needed. Some of our dependencies may require a compilation step. On OS X, the Xcode Command Line Tools will cover this. On Ubuntu, `apt-get install build-essential` will install the required packages. Similar commands should work on other Linux distros. Windows will require some additional steps, see the [`node-gyp` installation instructions](https://github.com/nodejs/node-gyp#installation) for details.
 * You are familiar with Git.
 
-### Development Workflow {#development-workflow}
+### Development Workflow
 
 After cloning React, run `yarn` to fetch its dependencies.
 Then, you can run several commands:
@@ -138,7 +138,7 @@ Every time you run `yarn build` in the React folder, the updated versions will a
 
 We still require that your pull request contains unit tests for any new functionality. This way we can ensure that we don't break your code in the future.
 
-### Style Guide {#style-guide}
+### Style Guide
 
 We use an automatic code formatter called [Prettier](https://prettier.io/).
 Run `yarn prettier` after making any changes to the code.
@@ -148,11 +148,11 @@ You can check the status of your code styling by simply running `yarn linc`.
 
 However, there are still some styles that the linter cannot pick up. If you are unsure about something, looking at [Airbnb's Style Guide](https://github.com/airbnb/javascript) will guide you in the right direction.
 
-### Introductory Video {#introductory-video}
+### Introductory Video
 
 You may be interested in watching [this short video](https://www.youtube.com/watch?v=wUpPsEcGsg8) (26 mins) which gives an introduction on how to contribute to React.
 
-#### Video highlights: {#video-highlights}
+#### Video highlights:
 - [4:12](https://youtu.be/wUpPsEcGsg8?t=4m12s) - Building and testing React locally
 - [6:07](https://youtu.be/wUpPsEcGsg8?t=6m7s) - Creating and sending pull requests
 - [8:25](https://youtu.be/wUpPsEcGsg8?t=8m25s) - Organizing code
@@ -161,7 +161,7 @@ You may be interested in watching [this short video](https://www.youtube.com/wat
 
 For a realistic overview of what it _feels_ like to contribute to React for the first time, check out [this entertaining ReactNYC talk](https://www.youtube.com/watch?v=GWCcZ6fnpn4).
 
-### Request for Comments (RFC) {#request-for-comments-rfc}
+### Request for Comments (RFC)
 
 Many changes, including bug fixes and documentation improvements can be implemented and reviewed via the normal GitHub pull request workflow.
 
@@ -169,10 +169,10 @@ Some changes though are "substantial", and we ask that these be put through a bi
 
 The "RFC" (request for comments) process is intended to provide a consistent and controlled path for new features to enter the project. You can contribute by visiting the [rfcs repository](https://github.com/reactjs/rfcs).
 
-### License {#license}
+### License
 
 By contributing to React, you agree that your contributions will be licensed under its MIT license.
 
-### What Next? {#what-next}
+### What Next?
 
 Read the [next section](/docs/codebase-overview.html) to learn how the codebase is organized.
diff --git a/content/docs/implementation-notes.md b/content/docs/implementation-notes.md
index a035a5edfd..509b4a2f2e 100644
--- a/content/docs/implementation-notes.md
+++ b/content/docs/implementation-notes.md
@@ -17,17 +17,17 @@ It also assumes an understanding of the [differences between React components, t
 
 The stack reconciler was used in React 15 and earlier. It is located at [src/renderers/shared/stack/reconciler](https://github.com/facebook/react/tree/15-stable/src/renderers/shared/stack/reconciler).
 
-### Video: Building React from Scratch {#video-building-react-from-scratch}
+### Video: Building React from Scratch
 
 [Paul O'Shannessy](https://twitter.com/zpao) gave a talk about [building React from scratch](https://www.youtube.com/watch?v=_MAD4Oly9yg) that largely inspired this document.
 
 Both this document and his talk are simplifications of the real codebase so you might get a better understanding by getting familiar with both of them.
 
-### Overview {#overview}
+### Overview
 
 The reconciler itself doesn't have a public API. [Renderers](/docs/codebase-overview.html#stack-renderers) like React DOM and React Native use it to efficiently update the user interface according to the React components written by the user.
 
-### Mounting as a Recursive Process {#mounting-as-a-recursive-process}
+### Mounting as a Recursive Process
 
 Let's consider the first time you mount a component:
 
@@ -113,7 +113,7 @@ Let's recap a few key ideas in the example above:
 * User-defined components (e.g. `App`) can be classes or functions but they all "render to" elements.
 * "Mounting" is a recursive process that creates a DOM or Native tree given the top-level React element (e.g. `<App />`).
 
-### Mounting Host Elements {#mounting-host-elements}
+### Mounting Host Elements
 
 This process would be useless if we didn't render something to the screen as a result.
 
@@ -231,7 +231,7 @@ rootEl.appendChild(node);
 
 This is working but still far from how the reconciler is really implemented. The key missing ingredient is support for updates.
 
-### Introducing Internal Instances {#introducing-internal-instances}
+### Introducing Internal Instances
 
 The key feature of React is that you can re-render everything, and it won't recreate the DOM or reset the state:
 
@@ -432,7 +432,7 @@ var rootEl = document.getElementById('root');
 mountTree(<App />, rootEl);
 ```
 
-### Unmounting {#unmounting}
+### Unmounting
 
 Now that we have internal instances that hold onto their children and the DOM nodes, we can implement unmounting. For a composite component, unmounting calls a lifecycle method and recurses.
 
@@ -516,7 +516,7 @@ function mountTree(element, containerNode) {
 
 Now, running `unmountTree()`, or running `mountTree()` repeatedly, removes the old tree and runs the `componentWillUnmount()` lifecycle method on components.
 
-### Updating {#updating}
+### Updating
 
 In the previous section, we implemented unmounting. However React wouldn't be very useful if each prop change unmounted and mounted the whole tree. The goal of the reconciler is to reuse existing instances where possible to preserve the DOM and the state:
 
@@ -552,7 +552,7 @@ Its job is to do whatever is necessary to bring the component (and any of its ch
 
 This is the part that is often described as "virtual DOM diffing" although what really happens is that we walk the internal tree recursively and let each internal instance receive an update.
 
-### Updating Composite Components {#updating-composite-components}
+### Updating Composite Components
 
 When a composite component receives a new element, we run the `componentWillUpdate()` lifecycle method.
 
@@ -666,7 +666,7 @@ class DOMComponent {
 }
 ```
 
-### Updating Host Components {#updating-host-components}
+### Updating Host Components
 
 Host component implementations, such as `DOMComponent`, update differently. When they receive an element, they need to update the underlying platform-specific view. In case of React DOM, this means updating the DOM attributes:
 
@@ -811,7 +811,7 @@ As the last step, we execute the DOM operations. Again, the real reconciler code
 
 And that is it for updating host components.
 
-### Top-Level Updates {#top-level-updates}
+### Top-Level Updates
 
 Now that both `CompositeComponent` and `DOMComponent` implement the `receive(nextElement)` method, we can change the top-level `mountTree()` function to use it when the element `type` is the same as it was the last time:
 
@@ -850,7 +850,7 @@ mountTree(<App />, rootEl);
 
 These are the basics of how React works internally.
 
-### What We Left Out {#what-we-left-out}
+### What We Left Out
 
 This document is simplified compared to the real codebase. There are a few important aspects we didn't address:
 
@@ -872,7 +872,7 @@ This document is simplified compared to the real codebase. There are a few impor
 
 * React puts information about the current update into an internal object called "transaction". Transactions are useful for keeping track of the queue of pending lifecycle methods, the current DOM nesting for the warnings, and anything else that is "global" to a specific update. Transactions also ensure React "cleans everything up" after updates. For example, the transaction class provided by React DOM restores the input selection after any update.
 
-### Jumping into the Code {#jumping-into-the-code}
+### Jumping into the Code
 
 * [`ReactMount`](https://github.com/facebook/react/blob/83381c1673d14cd16cf747e34c945291e5518a86/src/renderers/dom/client/ReactMount.js) is where the code like `mountTree()` and `unmountTree()` from this tutorial lives. It takes care of mounting and unmounting top-level components. [`ReactNativeMount`](https://github.com/facebook/react/blob/83381c1673d14cd16cf747e34c945291e5518a86/src/renderers/native/ReactNativeMount.js) is its React Native analog.
 * [`ReactDOMComponent`](https://github.com/facebook/react/blob/83381c1673d14cd16cf747e34c945291e5518a86/src/renderers/dom/shared/ReactDOMComponent.js) is the equivalent of `DOMComponent` in this tutorial. It implements the host component class for React DOM renderer. [`ReactNativeBaseComponent`](https://github.com/facebook/react/blob/83381c1673d14cd16cf747e34c945291e5518a86/src/renderers/native/ReactNativeBaseComponent.js) is its React Native analog.
@@ -889,10 +889,10 @@ This document is simplified compared to the real codebase. There are a few impor
 
 * Properties on the internal instances start with an underscore, e.g. `_currentElement`. They are considered to be read-only public fields throughout the codebase.
 
-### Future Directions {#future-directions}
+### Future Directions
 
 Stack reconciler has inherent limitations such as being synchronous and unable to interrupt the work or split it in chunks. There is a work in progress on the [new Fiber reconciler](/docs/codebase-overview.html#fiber-reconciler) with a [completely different architecture](https://github.com/acdlite/react-fiber-architecture). In the future, we intend to replace stack reconciler with it, but at the moment it is far from feature parity.
 
-### Next Steps {#next-steps}
+### Next Steps
 
 Read the [next section](/docs/design-principles.html) to learn about the guiding principles we use for React development.
diff --git a/content/docs/integrating-with-other-libraries.md b/content/docs/integrating-with-other-libraries.md
index 18a67c4578..626a35afed 100644
--- a/content/docs/integrating-with-other-libraries.md
+++ b/content/docs/integrating-with-other-libraries.md
@@ -6,7 +6,7 @@ permalink: docs/integrating-with-other-libraries.html
 
 React can be used in any web application. It can be embedded in other applications and, with a little care, other applications can be embedded in React. This guide will examine some of the more common use cases, focusing on integration with [jQuery](https://jquery.com/) and [Backbone](http://backbonejs.org/), but the same ideas can be applied to integrating components with any existing code.
 
-## Integrating with DOM Manipulation Plugins {#integrating-with-dom-manipulation-plugins}
+## Integrating with DOM Manipulation Plugins
 
 React is unaware of changes made to the DOM outside of React. It determines updates based on its own internal representation, and if the same DOM nodes are manipulated by another library, React gets confused and has no way to recover.
 
@@ -14,7 +14,7 @@ This does not mean it is impossible or even necessarily difficult to combine Rea
 
 The easiest way to avoid conflicts is to prevent the React component from updating. You can do this by rendering elements that React has no reason to update, like an empty `<div />`.
 
-### How to Approach the Problem {#how-to-approach-the-problem}
+### How to Approach the Problem
 
 To demonstrate this, let's sketch out a wrapper for a generic jQuery plugin.
 
@@ -41,7 +41,7 @@ class SomePlugin extends React.Component {
 
 Note that we defined both `componentDidMount` and `componentWillUnmount` [lifecycle methods](/docs/react-component.html#the-component-lifecycle). Many jQuery plugins attach event listeners to the DOM so it's important to detach them in `componentWillUnmount`. If the plugin does not provide a method for cleanup, you will probably have to provide your own, remembering to remove any event listeners the plugin registered to prevent memory leaks.
 
-### Integrating with jQuery Chosen Plugin {#integrating-with-jquery-chosen-plugin}
+### Integrating with jQuery Chosen Plugin
 
 For a more concrete example of these concepts, let's write a minimal wrapper for the plugin [Chosen](https://harvesthq.github.io/chosen/), which augments `<select>` inputs.
 
@@ -188,7 +188,7 @@ class Chosen extends React.Component {
 
 [**Try it on CodePen**](http://codepen.io/gaearon/pen/xdgKOz?editors=0010)
 
-## Integrating with Other View Libraries {#integrating-with-other-view-libraries}
+## Integrating with Other View Libraries
 
 React can be embedded into other applications thanks to the flexibility of [`ReactDOM.render()`](/docs/react-dom.html#render).
 
@@ -196,7 +196,7 @@ Although React is commonly used at startup to load a single root React component
 
 In fact, this is exactly how React is used at Facebook. This lets us write applications in React piece by piece, and combine them with our existing server-generated templates and other client-side code.
 
-### Replacing String-Based Rendering with React {#replacing-string-based-rendering-with-react}
+### Replacing String-Based Rendering with React
 
 A common pattern in older web applications is to describe chunks of the DOM as a string and insert it into the DOM like so: `$el.html(htmlString)`. These points in a codebase are perfect for introducing React. Just rewrite the string based rendering as a React component.
 
@@ -251,7 +251,7 @@ ReactDOM.render(
 
 You can have as many such isolated components as you like, and use `ReactDOM.render()` to render them to different DOM containers. Gradually, as you convert more of your app to React, you will be able to combine them into larger components, and move some of the `ReactDOM.render()` calls up the hierarchy.
 
-### Embedding React in a Backbone View {#embedding-react-in-a-backbone-view}
+### Embedding React in a Backbone View
 
 [Backbone](http://backbonejs.org/) views typically use HTML strings, or string-producing template functions, to create the content for their DOM elements. This process, too, can be replaced with rendering a React component.
 
@@ -281,11 +281,11 @@ It is important that we also call `ReactDOM.unmountComponentAtNode()` in the `re
 
 When a component is removed *from within* a React tree, the cleanup is performed automatically, but because we are removing the entire tree by hand, we must call this method.
 
-## Integrating with Model Layers {#integrating-with-model-layers}
+## Integrating with Model Layers
 
 While it is generally recommended to use unidirectional data flow such as [React state](/docs/lifting-state-up.html), [Flux](http://facebook.github.io/flux/), or [Redux](http://redux.js.org/), React components can use a model layer from other frameworks and libraries.
 
-### Using Backbone Models in React Components {#using-backbone-models-in-react-components}
+### Using Backbone Models in React Components
 
 The simplest way to consume [Backbone](http://backbonejs.org/) models and collections from a React component is to listen to the various change events and manually force an update.
 
@@ -349,7 +349,7 @@ class List extends React.Component {
 
 [**Try it on CodePen**](http://codepen.io/gaearon/pen/GmrREm?editors=0010)
 
-### Extracting Data from Backbone Models {#extracting-data-from-backbone-models}
+### Extracting Data from Backbone Models
 
 The approach above requires your React components to be aware of the Backbone models and collections. If you later plan to migrate to another data management solution, you might want to concentrate the knowledge about Backbone in as few parts of the code as possible.
 
diff --git a/content/docs/introducing-jsx.md b/content/docs/introducing-jsx.md
index d76c3ace6b..edc5c868c4 100644
--- a/content/docs/introducing-jsx.md
+++ b/content/docs/introducing-jsx.md
@@ -18,7 +18,7 @@ It is called JSX, and it is a syntax extension to JavaScript. We recommend using
 
 JSX produces React "elements". We will explore rendering them to the DOM in the [next section](/docs/rendering-elements.html). Below, you can find the basics of JSX necessary to get you started.
 
-### Why JSX? {#why-jsx}
+### Why JSX?
 
 React embraces the fact that rendering logic is inherently coupled with other UI logic: how events are handled, how the state changes over time, and how the data is prepared for display.
 
@@ -28,7 +28,7 @@ React [doesn't require](/docs/react-without-jsx.html) using JSX, but most people
 
 With that out of the way, let's get started!
 
-### Embedding Expressions in JSX {#embedding-expressions-in-jsx}
+### Embedding Expressions in JSX
 
 In the example below, we declare a variable called `name` and then use it inside JSX by wrapping it in curly braces:
 
@@ -72,7 +72,7 @@ ReactDOM.render(
 
 We split JSX over multiple lines for readability. While it isn't required, when doing this, we also recommend wrapping it in parentheses to avoid the pitfalls of [automatic semicolon insertion](http://stackoverflow.com/q/2846283).
 
-### JSX is an Expression Too {#jsx-is-an-expression-too}
+### JSX is an Expression Too
 
 After compilation, JSX expressions become regular JavaScript function calls and evaluate to JavaScript objects.
 
@@ -87,7 +87,7 @@ function getGreeting(user) {
 }
 ```
 
-### Specifying Attributes with JSX {#specifying-attributes-with-jsx}
+### Specifying Attributes with JSX
 
 You may use quotes to specify string literals as attributes:
 
@@ -109,7 +109,7 @@ Don't put quotes around curly braces when embedding a JavaScript expression in a
 >
 >For example, `class` becomes [`className`](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) in JSX, and `tabindex` becomes [`tabIndex`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/tabIndex).
 
-### Specifying Children with JSX {#specifying-children-with-jsx}
+### Specifying Children with JSX
 
 If a tag is empty, you may close it immediately with `/>`, like XML:
 
@@ -128,7 +128,7 @@ const element = (
 );
 ```
 
-### JSX Prevents Injection Attacks {#jsx-prevents-injection-attacks}
+### JSX Prevents Injection Attacks
 
 It is safe to embed user input in JSX:
 
@@ -140,7 +140,7 @@ const element = <h1>{title}</h1>;
 
 By default, React DOM [escapes](http://stackoverflow.com/questions/7381974/which-characters-need-to-be-escaped-on-html) any values embedded in JSX before rendering them. Thus it ensures that you can never inject anything that's not explicitly written in your application. Everything is converted to a string before being rendered. This helps prevent [XSS (cross-site-scripting)](https://en.wikipedia.org/wiki/Cross-site_scripting) attacks.
 
-### JSX Represents Objects {#jsx-represents-objects}
+### JSX Represents Objects
 
 Babel compiles JSX down to `React.createElement()` calls.
 
diff --git a/content/docs/jsx-in-depth.md b/content/docs/jsx-in-depth.md
index 3dcf2ac269..68ba9e95c9 100644
--- a/content/docs/jsx-in-depth.md
+++ b/content/docs/jsx-in-depth.md
@@ -49,13 +49,13 @@ React.createElement(
 
 If you want to test out how some specific JSX is converted into JavaScript, you can try out [the online Babel compiler](babel://jsx-simple-example).
 
-## Specifying The React Element Type {#specifying-the-react-element-type}
+## Specifying The React Element Type
 
 The first part of a JSX tag determines the type of the React element.
 
 Capitalized types indicate that the JSX tag is referring to a React component. These tags get compiled into a direct reference to the named variable, so if you use the JSX `<Foo />` expression, `Foo` must be in scope.
 
-### React Must Be in Scope {#react-must-be-in-scope}
+### React Must Be in Scope
 
 Since JSX compiles into calls to `React.createElement`, the `React` library must also always be in scope from your JSX code.
 
@@ -73,7 +73,7 @@ function WarningButton() {
 
 If you don't use a JavaScript bundler and loaded React from a `<script>` tag, it is already in scope as the `React` global.
 
-### Using Dot Notation for JSX Type {#using-dot-notation-for-jsx-type}
+### Using Dot Notation for JSX Type
 
 You can also refer to a React component using dot-notation from within JSX. This is convenient if you have a single module that exports many React components. For example, if `MyComponents.DatePicker` is a component, you can use it directly from JSX with:
 
@@ -91,7 +91,7 @@ function BlueDatePicker() {
 }
 ```
 
-### User-Defined Components Must Be Capitalized {#user-defined-components-must-be-capitalized}
+### User-Defined Components Must Be Capitalized
 
 When an element type starts with a lowercase letter, it refers to a built-in component like `<div>` or `<span>` and results in a string `'div'` or `'span'` passed to `React.createElement`. Types that start with a capital letter like `<Foo />` compile to `React.createElement(Foo)` and correspond to a component defined or imported in your JavaScript file.
 
@@ -131,7 +131,7 @@ function HelloWorld() {
 }
 ```
 
-### Choosing the Type at Runtime {#choosing-the-type-at-runtime}
+### Choosing the Type at Runtime
 
 You cannot use a general expression as the React element type. If you do want to use a general expression to indicate the type of the element, just assign it to a capitalized variable first. This often comes up when you want to render a different component based on a prop:
 
@@ -168,11 +168,11 @@ function Story(props) {
 }
 ```
 
-## Props in JSX {#props-in-jsx}
+## Props in JSX
 
 There are several different ways to specify props in JSX.
 
-### JavaScript Expressions as Props {#javascript-expressions-as-props}
+### JavaScript Expressions as Props
 
 You can pass any JavaScript expression as a prop, by surrounding it with `{}`. For example, in this JSX:
 
@@ -198,7 +198,7 @@ function NumberDescriber(props) {
 
 You can learn more about [conditional rendering](/docs/conditional-rendering.html) and [loops](/docs/lists-and-keys.html) in the corresponding sections.
 
-### String Literals {#string-literals}
+### String Literals
 
 You can pass a string literal as a prop. These two JSX expressions are equivalent:
 
@@ -218,7 +218,7 @@ When you pass a string literal, its value is HTML-unescaped. So these two JSX ex
 
 This behavior is usually not relevant. It's only mentioned here for completeness.
 
-### Props Default to "True" {#props-default-to-true}
+### Props Default to "True"
 
 If you pass no value for a prop, it defaults to `true`. These two JSX expressions are equivalent:
 
@@ -230,7 +230,7 @@ If you pass no value for a prop, it defaults to `true`. These two JSX expression
 
 In general, we don't recommend using this because it can be confused with the [ES6 object shorthand](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Object_initializer#New_notations_in_ECMAScript_2015) `{foo}` which is short for `{foo: foo}` rather than `{foo: true}`. This behavior is just there so that it matches the behavior of HTML.
 
-### Spread Attributes {#spread-attributes}
+### Spread Attributes
 
 If you already have `props` as an object, and you want to pass it in JSX, you can use `...` as a "spread" operator to pass the whole props object. These two components are equivalent:
 
@@ -270,11 +270,11 @@ All other props are passed via the `...other` object making this component reall
 
 Spread attributes can be useful but they also make it easy to pass unnecessary props to components that don't care about them or to pass invalid HTML attributes to the DOM. We recommend using this syntax sparingly.  
 
-## Children in JSX {#children-in-jsx}
+## Children in JSX
 
 In JSX expressions that contain both an opening tag and a closing tag, the content between those tags is passed as a special prop: `props.children`. There are several different ways to pass children:
 
-### String Literals {#string-literals-1}
+### String Literals
 
 You can put a string between the opening and closing tags and `props.children` will just be that string. This is useful for many of the built-in HTML elements. For example:
 
@@ -308,7 +308,7 @@ JSX removes whitespace at the beginning and ending of a line. It also removes bl
 </div>
 ```
 
-### JSX Children {#jsx-children}
+### JSX Children
 
 You can provide more JSX elements as the children. This is useful for displaying nested components:
 
@@ -345,7 +345,7 @@ render() {
 }
 ```
 
-### JavaScript Expressions as Children {#javascript-expressions-as-children}
+### JavaScript Expressions as Children
 
 You can pass any JavaScript expression as children, by enclosing it within `{}`. For example, these expressions are equivalent:
 
@@ -380,7 +380,7 @@ function Hello(props) {
 }
 ```
 
-### Functions as Children {#functions-as-children}
+### Functions as Children
 
 Normally, JavaScript expressions inserted in JSX will evaluate to a string, a React element, or a list of those things. However, `props.children` works just like any other prop in that it can pass any sort of data, not just the sorts that React knows how to render. For example, if you have a custom component, you could have it take a callback as `props.children`:
 
@@ -405,7 +405,7 @@ function ListOfTenThings() {
 
 Children passed to a custom component can be anything, as long as that component transforms them into something React can understand before rendering. This usage is not common, but it works if you want to stretch what JSX is capable of.
 
-### Booleans, Null, and Undefined Are Ignored {#booleans-null-and-undefined-are-ignored}
+### Booleans, Null, and Undefined Are Ignored
 
 `false`, `null`, `undefined`, and `true` are valid children. They simply don't render. These JSX expressions will all render to the same thing:
 
diff --git a/content/docs/legacy-context.md b/content/docs/legacy-context.md
index 1c62e66504..44b403141a 100644
--- a/content/docs/legacy-context.md
+++ b/content/docs/legacy-context.md
@@ -10,7 +10,7 @@ permalink: docs/legacy-context.html
 > Use the [new context API](/docs/context.html) introduced with version 16.3.
 > The legacy API will continue working for all 16.x releases.
 
-## How To Use Context {#how-to-use-context}
+## How To Use Context
 
 > This section documents a legacy API. See the [new API](/docs/context.html).
 
@@ -105,7 +105,7 @@ If `contextTypes` is not defined, then `context` will be an empty object.
 >
 > We provide [a codemod script](/blog/2017/04/07/react-v15.5.0.html#migrating-from-react.proptypes) to automate the conversion.
 
-### Parent-Child Coupling {#parent-child-coupling}
+### Parent-Child Coupling
 
 > This section documents a legacy API. See the [new API](/docs/context.html).
 
@@ -137,7 +137,7 @@ By passing down some information from the `Router` component, each `Link` and `R
 
 Before you build components with an API similar to this, consider if there are cleaner alternatives. For example, you can pass entire React components as props if you'd like to.
 
-### Referencing Context in Lifecycle Methods {#referencing-context-in-lifecycle-methods}
+### Referencing Context in Lifecycle Methods
 
 > This section documents a legacy API. See the [new API](/docs/context.html).
 
@@ -152,7 +152,7 @@ If `contextTypes` is defined within a component, the following [lifecycle method
 >
 > As of React 16, `componentDidUpdate` no longer receives `prevContext`.
 
-### Referencing Context in Stateless Function Components {#referencing-context-in-stateless-function-components}
+### Referencing Context in Stateless Function Components
 
 > This section documents a legacy API. See the [new API](/docs/context.html).
 
@@ -169,7 +169,7 @@ const Button = ({children}, context) =>
 Button.contextTypes = {color: PropTypes.string};
 ```
 
-### Updating Context {#updating-context}
+### Updating Context
 
 > This section documents a legacy API. See the [new API](/docs/context.html).
 
diff --git a/content/docs/lifting-state-up.md b/content/docs/lifting-state-up.md
index 449330cfdc..8b30256d5e 100644
--- a/content/docs/lifting-state-up.md
+++ b/content/docs/lifting-state-up.md
@@ -58,7 +58,7 @@ class Calculator extends React.Component {
 
 [**Try it on CodePen**](https://codepen.io/gaearon/pen/ZXeOBm?editors=0010)
 
-## Adding a Second Input {#adding-a-second-input}
+## Adding a Second Input
 
 Our new requirement is that, in addition to a Celsius input, we provide a Fahrenheit input, and they are kept in sync.
 
@@ -116,7 +116,7 @@ We have two inputs now, but when you enter the temperature in one of them, the o
 
 We also can't display the `BoilingVerdict` from `Calculator`. The `Calculator` doesn't know the current temperature because it is hidden inside the `TemperatureInput`.
 
-## Writing Conversion Functions {#writing-conversion-functions}
+## Writing Conversion Functions
 
 First, we will write two functions to convert from Celsius to Fahrenheit and back:
 
@@ -148,7 +148,7 @@ function tryConvert(temperature, convert) {
 
 For example, `tryConvert('abc', toCelsius)` returns an empty string, and `tryConvert('10.22', toFahrenheit)` returns `'50.396'`.
 
-## Lifting State Up {#lifting-state-up}
+## Lifting State Up
 
 Currently, both `TemperatureInput` components independently keep their values in the local state:
 
@@ -316,7 +316,7 @@ Let's recap what happens when you edit an input:
 
 Every update goes through the same steps so the inputs stay in sync.
 
-## Lessons Learned {#lessons-learned}
+## Lessons Learned
 
 There should be a single "source of truth" for any data that changes in a React application. Usually, the state is first added to the component that needs it for rendering. Then, if other components also need it, you can lift it up to their closest common ancestor. Instead of trying to sync the state between different components, you should rely on the [top-down data flow](/docs/state-and-lifecycle.html#the-data-flows-down).
 
diff --git a/content/docs/lists-and-keys.md b/content/docs/lists-and-keys.md
index c82739a6ae..bc3c6a4f1c 100644
--- a/content/docs/lists-and-keys.md
+++ b/content/docs/lists-and-keys.md
@@ -20,7 +20,7 @@ This code logs `[2, 4, 6, 8, 10]` to the console.
 
 In React, transforming arrays into lists of [elements](/docs/rendering-elements.html) is nearly identical.
 
-### Rendering Multiple Components {#rendering-multiple-components}
+### Rendering Multiple Components
 
 You can build collections of elements and [include them in JSX](/docs/introducing-jsx.html#embedding-expressions-in-jsx) using curly braces `{}`.
 
@@ -46,7 +46,7 @@ ReactDOM.render(
 
 This code displays a bullet list of numbers between 1 and 5.
 
-### Basic List Component {#basic-list-component}
+### Basic List Component
 
 Usually you would render lists inside a [component](/docs/components-and-props.html).
 
@@ -96,7 +96,7 @@ ReactDOM.render(
 
 [**Try it on CodePen**](https://codepen.io/gaearon/pen/jrXYRR?editors=0011)
 
-## Keys {#keys}
+## Keys
 
 Keys help React identify which items have changed, are added, or are removed. Keys should be given to the elements inside the array to give the elements a stable identity:
 
@@ -134,7 +134,7 @@ We don't recommend using indexes for keys if the order of items may change. This
 
 Here is an [in-depth explanation about why keys are necessary](/docs/reconciliation.html#recursing-on-children) if you're interested in learning more.
 
-### Extracting Components with Keys {#extracting-components-with-keys}
+### Extracting Components with Keys
 
 Keys only make sense in the context of the surrounding array.
 
@@ -206,7 +206,7 @@ ReactDOM.render(
 
 A good rule of thumb is that elements inside the `map()` call need keys.
 
-### Keys Must Only Be Unique Among Siblings {#keys-must-only-be-unique-among-siblings}
+### Keys Must Only Be Unique Among Siblings
 
 Keys used within arrays should be unique among their siblings. However they don't need to be globally unique. We can use the same keys when we produce two different arrays:
 
@@ -261,7 +261,7 @@ const content = posts.map((post) =>
 
 With the example above, the `Post` component can read `props.id`, but not `props.key`.
 
-### Embedding map() in JSX {#embedding-map-in-jsx}
+### Embedding map() in JSX
 
 In the examples above we declared a separate `listItems` variable and included it in JSX:
 
diff --git a/content/docs/optimizing-performance.md b/content/docs/optimizing-performance.md
index e42bad7b76..aaed723c45 100644
--- a/content/docs/optimizing-performance.md
+++ b/content/docs/optimizing-performance.md
@@ -8,7 +8,7 @@ redirect_from:
 
 Internally, React uses several clever techniques to minimize the number of costly DOM operations required to update the UI. For many applications, using React will lead to a fast user interface without doing much work to specifically optimize for performance. Nevertheless, there are several ways you can speed up your React application.
 
-## Use the Production Build {#use-the-production-build}
+## Use the Production Build
 
 If you're benchmarking or experiencing performance problems in your React apps, make sure you're testing with the minified production build.
 
@@ -26,7 +26,7 @@ It is expected that you use the development mode when working on your app, and t
 
 You can find instructions for building your app for production below.
 
-### Create React App {#create-react-app}
+### Create React App
 
 If your project is built with [Create React App](https://github.com/facebookincubator/create-react-app), run:
 
@@ -38,7 +38,7 @@ This will create a production build of your app in the `build/` folder of your p
 
 Remember that this is only necessary before deploying to production. For normal development, use `npm start`.
 
-### Single-File Builds {#single-file-builds}
+### Single-File Builds
 
 We offer production-ready versions of React and React DOM as single files:
 
@@ -49,7 +49,7 @@ We offer production-ready versions of React and React DOM as single files:
 
 Remember that only React files ending with `.production.min.js` are suitable for production.
 
-### Brunch {#brunch}
+### Brunch
 
 For the most efficient Brunch production build, install the [`uglify-js-brunch`](https://github.com/brunch/uglify-js-brunch) plugin:
 
@@ -69,7 +69,7 @@ brunch build -p
 
 Remember that you only need to do this for production builds. You shouldn't pass the `-p` flag or apply this plugin in development, because it will hide useful React warnings and make the builds much slower.
 
-### Browserify {#browserify}
+### Browserify
 
 For the most efficient Browserify production build, install a few plugins:
 
@@ -103,7 +103,7 @@ browserify ./index.js \
 
 Remember that you only need to do this for production builds. You shouldn't apply these plugins in development because they will hide useful React warnings, and make the builds much slower.
 
-### Rollup {#rollup}
+### Rollup
 
 For the most efficient Rollup production build, install a few plugins:
 
@@ -137,7 +137,7 @@ For a complete setup example [see this gist](https://gist.github.com/Rich-Harris
 
 Remember that you only need to do this for production builds. You shouldn't apply the `uglify` plugin or the `replace` plugin with `'production'` value in development because they will hide useful React warnings, and make the builds much slower.
 
-### webpack {#webpack}
+### webpack
 
 >**Note:**
 >
@@ -157,7 +157,7 @@ You can learn more about this in [webpack documentation](https://webpack.js.org/
 
 Remember that you only need to do this for production builds. You shouldn't apply `UglifyJsPlugin` or `DefinePlugin` with `'production'` value in development because they will hide useful React warnings, and make the builds much slower.
 
-## Profiling Components with the Chrome Performance Tab {#profiling-components-with-the-chrome-performance-tab}
+## Profiling Components with the Chrome Performance Tab
 
 In the **development** mode, you can visualize how components mount, update, and unmount, using the performance tools in supported browsers. For example:
 
@@ -183,7 +183,7 @@ Note that **the numbers are relative so components will render faster in product
 
 Currently Chrome, Edge, and IE are the only browsers supporting this feature, but we use the standard [User Timing API](https://developer.mozilla.org/en-US/docs/Web/API/User_Timing_API) so we expect more browsers to add support for it.
 
-## Profiling Components with the DevTools Profiler {#profiling-components-with-the-devtools-profiler}
+## Profiling Components with the DevTools Profiler
 
 `react-dom` 16.5+ and `react-native` 0.57+ provide enhanced profiling capabilities in DEV mode with the React DevTools Profiler.
 An overview of the Profiler can be found in the blog post ["Introducing the React Profiler"](/blog/2018/09/10/introducing-the-react-profiler.html).
@@ -200,13 +200,13 @@ If you haven't yet installed the React DevTools, you can find them here:
 > A production profiling bundle of `react-dom` is also available as `react-dom/profiling`.
 > Read more about how to use this bundle at [fb.me/react-profiling](https://fb.me/react-profiling)
 
-## Virtualize Long Lists {#virtualize-long-lists}
+## Virtualize Long Lists
 
 If your application renders long lists of data (hundreds or thousands of rows), we recommended using a technique known as "windowing". This technique only renders a small subset of your rows at any given time, and can dramatically reduce the time it takes to re-render the components as well as the number of DOM nodes created.
 
 [react-window](https://react-window.now.sh/) and [react-virtualized](https://bvaughn.github.io/react-virtualized/) are popular windowing libraries. They provide several reusable components for displaying lists, grids, and tabular data. You can also create your own windowing component, like [Twitter did](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3), if you want something more tailored to your application's specific use case.
 
-## Avoid Reconciliation {#avoid-reconciliation}
+## Avoid Reconciliation
 
 React builds and maintains an internal representation of the rendered UI. It includes the React elements you return from your components. This representation lets React avoid creating DOM nodes and accessing existing ones beyond necessity, as that can be slower than operations on JavaScript objects. Sometimes it is referred to as a "virtual DOM", but it works the same way on React Native.
 
@@ -242,7 +242,7 @@ If you know that in some situations your component doesn't need to update, you c
 
 In most cases, instead of writing `shouldComponentUpdate()` by hand, you can inherit from [`React.PureComponent`](/docs/react-api.html#reactpurecomponent). It is equivalent to implementing `shouldComponentUpdate()` with a shallow comparison of current and previous props and state.
 
-## shouldComponentUpdate In Action {#shouldcomponentupdate-in-action}
+## shouldComponentUpdate In Action
 
 Here's a subtree of components. For each one, `SCU` indicates what `shouldComponentUpdate` returned, and `vDOMEq` indicates whether the rendered React elements were equivalent. Finally, the circle's color indicates whether the component had to be reconciled or not.
 
@@ -256,7 +256,7 @@ The last interesting case is C8. React had to render this component, but since t
 
 Note that React only had to do DOM mutations for C6, which was inevitable. For C8, it bailed out by comparing the rendered React elements, and for C2's subtree and C7, it didn't even have to compare the elements as we bailed out on `shouldComponentUpdate`, and `render` was not called.
 
-## Examples {#examples}
+## Examples
 
 If the only way your component ever changes is when the `props.color` or the `state.count` variable changes, you could have `shouldComponentUpdate` check that:
 
@@ -350,7 +350,7 @@ class WordAdder extends React.Component {
 
 The problem is that `PureComponent` will do a simple comparison between the old and new values of `this.props.words`. Since this code mutates the `words` array in the `handleClick` method of `WordAdder`, the old and new values of `this.props.words` will compare as equal, even though the actual words in the array have changed. The `ListOfWords` will thus not update even though it has new words that should be rendered.
 
-## The Power Of Not Mutating Data {#the-power-of-not-mutating-data}
+## The Power Of Not Mutating Data
 
 The simplest way to avoid this problem is to avoid mutating values that you are using as props or state. For example, the `handleClick` method above could be rewritten using `concat` as:
 
@@ -400,7 +400,7 @@ function updateColorMap(colormap) {
 
 If you're using Create React App, both `Object.assign` and the object spread syntax are available by default.
 
-## Using Immutable Data Structures {#using-immutable-data-structures}
+## Using Immutable Data Structures
 
 [Immutable.js](https://github.com/facebook/immutable-js) is another way to solve this problem. It provides immutable, persistent collections that work via structural sharing:
 
diff --git a/content/docs/portals.md b/content/docs/portals.md
index 6501213962..47100769ee 100644
--- a/content/docs/portals.md
+++ b/content/docs/portals.md
@@ -12,7 +12,7 @@ ReactDOM.createPortal(child, container)
 
 The first argument (`child`) is any [renderable React child](/docs/react-component.html#render), such as an element, string, or fragment. The second argument (`container`) is a DOM element.
 
-## Usage {#usage}
+## Usage
 
 Normally, when you return an element from a component's render method, it's mounted into the DOM as a child of the nearest parent node:
 
@@ -50,7 +50,7 @@ A typical use case for portals is when a parent component has an `overflow: hidd
 
 [**Try it on CodePen**](https://codepen.io/gaearon/pen/yzMaBd)
 
-## Event Bubbling Through Portals {#event-bubbling-through-portals}
+## Event Bubbling Through Portals
 
 Even though a portal can be anywhere in the DOM tree, it behaves like a normal React child in every other way. Features like context work exactly the same regardless of whether the child is a portal, as the portal still exists in the *React tree* regardless of position in the *DOM tree*.
 
diff --git a/content/docs/react-without-es6.md b/content/docs/react-without-es6.md
index 8b54d09812..8cb01c6f3c 100644
--- a/content/docs/react-without-es6.md
+++ b/content/docs/react-without-es6.md
@@ -28,7 +28,7 @@ var Greeting = createReactClass({
 
 The API of ES6 classes is similar to `createReactClass()` with a few exceptions.
 
-## Declaring Default Props {#declaring-default-props}
+## Declaring Default Props
 
 With functions and ES6 classes `defaultProps` is defined as a property on the component itself:
 
@@ -57,7 +57,7 @@ var Greeting = createReactClass({
 });
 ```
 
-## Setting the Initial State {#setting-the-initial-state}
+## Setting the Initial State
 
 In ES6 classes, you can define the initial state by assigning `this.state` in the constructor:
 
@@ -82,7 +82,7 @@ var Counter = createReactClass({
 });
 ```
 
-## Autobinding {#autobinding}
+## Autobinding
 
 In React components declared as ES6 classes, methods follow the same semantics as regular ES6 classes. This means that they don't automatically bind `this` to the instance. You'll have to explicitly use `.bind(this)` in the constructor:
 
@@ -167,7 +167,7 @@ If you'd rather play it safe, you have a few options:
 * Use arrow functions, e.g. `onClick={(e) => this.handleClick(e)}`.
 * Keep using `createReactClass`.
 
-## Mixins {#mixins}
+## Mixins
 
 >**Note:**
 >
diff --git a/content/docs/reconciliation.md b/content/docs/reconciliation.md
index c2147a4dcf..4a45aefcc6 100644
--- a/content/docs/reconciliation.md
+++ b/content/docs/reconciliation.md
@@ -6,7 +6,7 @@ permalink: docs/reconciliation.html
 
 React provides a declarative API so that you don't have to worry about exactly what changes on every update. This makes writing applications a lot easier, but it might not be obvious how this is implemented within React. This article explains the choices we made in React's "diffing" algorithm so that component updates are predictable while being fast enough for high-performance apps.
 
-## Motivation {#motivation}
+## Motivation
 
 When you use React, at a single point in time you can think of the `render()` function as creating a tree of React elements. On the next state or props update, that `render()` function will return a different tree of React elements. React then needs to figure out how to efficiently update the UI to match the most recent tree.
 
@@ -19,11 +19,11 @@ If we used this in React, displaying 1000 elements would require in the order of
 
 In practice, these assumptions are valid for almost all practical use cases.
 
-## The Diffing Algorithm {#the-diffing-algorithm}
+## The Diffing Algorithm
 
 When diffing two trees, React first compares the two root elements. The behavior is different depending on the types of the root elements.
 
-### Elements Of Different Types {#elements-of-different-types}
+### Elements Of Different Types
 
 Whenever the root elements have different types, React will tear down the old tree and build the new tree from scratch. Going from `<a>` to `<img>`, or from `<Article>` to `<Comment>`, or from `<Button>` to `<div>` - any of those will lead to a full rebuild.
 
@@ -43,7 +43,7 @@ Any components below the root will also get unmounted and have their state destr
 
 This will destroy the old `Counter` and remount a new one.
 
-### DOM Elements Of The Same Type {#dom-elements-of-the-same-type}
+### DOM Elements Of The Same Type
 
 When comparing two React DOM elements of the same type, React looks at the attributes of both, keeps the same underlying DOM node, and only updates the changed attributes. For example:
 
@@ -67,13 +67,13 @@ When converting between these two elements, React knows to only modify the `colo
 
 After handling the DOM node, React then recurses on the children.
 
-### Component Elements Of The Same Type {#component-elements-of-the-same-type}
+### Component Elements Of The Same Type
 
 When a component updates, the instance stays the same, so that state is maintained across renders. React updates the props of the underlying component instance to match the new element, and calls `componentWillReceiveProps()` and `componentWillUpdate()` on the underlying instance.
 
 Next, the `render()` method is called and the diff algorithm recurses on the previous result and the new result.
 
-### Recursing On Children {#recursing-on-children}
+### Recursing On Children
 
 By default, when recursing on the children of a DOM node, React just iterates over both lists of children at the same time and generates a mutation whenever there's a difference.
 
@@ -111,7 +111,7 @@ If you implement it naively, inserting an element at the beginning has worse per
 
 React will mutate every child instead of realizing it can keep the `<li>Duke</li>` and `<li>Villanova</li>` subtrees intact. This inefficiency can be a problem.
 
-### Keys {#keys}
+### Keys
 
 In order to solve this issue, React supports a `key` attribute. When children have keys, React uses the key to match children in the original tree with children in the subsequent tree. For example, adding a `key` to our inefficient example above can make the tree conversion efficient:
 
@@ -144,7 +144,7 @@ Reorders can also cause issues with component state when indexes are used as key
 
 [Here](codepen://reconciliation/index-used-as-key) is an example of the issues that can be caused by using indexes as keys on CodePen, and [here](codepen://reconciliation/no-index-used-as-key) is an updated version of the same example showing how not using indexes as keys will fix these reordering, sorting, and prepending issues.
 
-## Tradeoffs {#tradeoffs}
+## Tradeoffs
 
 It is important to remember that the reconciliation algorithm is an implementation detail. React could rerender the whole app on every action; the end result would be the same. Just to be clear, rerender in this context means calling `render` for all components, it doesn't mean React will unmount and remount them. It will only apply the differences following the rules stated in the previous sections.
 
diff --git a/content/docs/reference-dom-elements.md b/content/docs/reference-dom-elements.md
index 1668709681..ef1b73555e 100644
--- a/content/docs/reference-dom-elements.md
+++ b/content/docs/reference-dom-elements.md
@@ -18,21 +18,21 @@ React implements a browser-independent DOM system for performance and cross-brow
 
 In React, all DOM properties and attributes (including event handlers) should be camelCased. For example, the HTML attribute `tabindex` corresponds to the attribute `tabIndex` in React. The exception is `aria-*` and `data-*` attributes, which should be lowercased. For example, you can keep `aria-label` as `aria-label`.
 
-## Differences In Attributes {#differences-in-attributes}
+## Differences In Attributes
 
 There are a number of attributes that work differently between React and HTML:
 
-### checked {#checked}
+### checked
 
 The `checked` attribute is supported by `<input>` components of type `checkbox` or `radio`. You can use it to set whether the component is checked. This is useful for building controlled components. `defaultChecked` is the uncontrolled equivalent, which sets whether the component is checked when it is first mounted.
 
-### className {#classname}
+### className
 
 To specify a CSS class, use the `className` attribute. This applies to all regular DOM and SVG elements like `<div>`, `<a>`, and others.
 
 If you use React with Web Components (which is uncommon), use the `class` attribute instead.
 
-### dangerouslySetInnerHTML {#dangerouslysetinnerhtml}
+### dangerouslySetInnerHTML
 
 `dangerouslySetInnerHTML` is React's replacement for using `innerHTML` in the browser DOM. In general, setting HTML from code is risky because it's easy to inadvertently expose your users to a [cross-site scripting (XSS)](https://en.wikipedia.org/wiki/Cross-site_scripting) attack. So, you can set HTML directly from React, but you have to type out `dangerouslySetInnerHTML` and pass an object with a `__html` key, to remind yourself that it's dangerous. For example:
 
@@ -46,19 +46,19 @@ function MyComponent() {
 }
 ```
 
-### htmlFor {#htmlfor}
+### htmlFor
 
 Since `for` is a reserved word in JavaScript, React elements use `htmlFor` instead.
 
-### onChange {#onchange}
+### onChange
 
 The `onChange` event behaves as you would expect it to: whenever a form field is changed, this event is fired. We intentionally do not use the existing browser behavior because `onChange` is a misnomer for its behavior and React relies on this event to handle user input in real time.
 
-### selected {#selected}
+### selected
 
 The `selected` attribute is supported by `<option>` components. You can use it to set whether the component is selected. This is useful for building controlled components.
 
-### style {#style}
+### style
 
 >Note
 >
@@ -108,21 +108,21 @@ React will automatically append a "px" suffix to certain numeric inline style pr
 
 Not all style properties are converted to pixel strings though. Certain ones remain unitless (eg `zoom`, `order`, `flex`). A complete list of unitless properties can be seen [here](https://github.com/facebook/react/blob/4131af3e4bf52f3a003537ec95a1655147c81270/src/renderers/dom/shared/CSSProperty.js#L15-L59).
 
-### suppressContentEditableWarning {#suppresscontenteditablewarning}
+### suppressContentEditableWarning
 
 Normally, there is a warning when an element with children is also marked as `contentEditable`, because it won't work. This attribute suppresses that warning. Don't use this unless you are building a library like [Draft.js](https://facebook.github.io/draft-js/) that manages `contentEditable` manually.
 
-### suppressHydrationWarning {#suppresshydrationwarning}
+### suppressHydrationWarning
 
 If you use server-side React rendering, normally there is a warning when the server and the client render different content. However, in some rare cases, it is very hard or impossible to guarantee an exact match. For example, timestamps are expected to differ on the server and on the client.
 
 If you set `suppressHydrationWarning` to `true`, React will not warn you about mismatches in the attributes and the content of that element. It only works one level deep, and is intended to be used as an escape hatch. Don't overuse it. You can read more about hydration in the [`ReactDOM.hydrate()` documentation](/docs/react-dom.html#hydrate).
 
-### value {#value}
+### value
 
 The `value` attribute is supported by `<input>` and `<textarea>` components. You can use it to set the value of the component. This is useful for building controlled components. `defaultValue` is the uncontrolled equivalent, which sets the value of the component when it is first mounted.
 
-## All Supported HTML Attributes {#all-supported-html-attributes}
+## All Supported HTML Attributes
 
 As of React 16, any standard [or custom](/blog/2017/09/08/dom-attributes-in-react-16.html) DOM attributes are fully supported.
 
diff --git a/content/docs/reference-events.md b/content/docs/reference-events.md
index 745c6a71e3..701d6446ed 100644
--- a/content/docs/reference-events.md
+++ b/content/docs/reference-events.md
@@ -8,7 +8,7 @@ category: Reference
 
 This reference guide documents the `SyntheticEvent` wrapper that forms part of React's Event System. See the [Handling Events](/docs/handling-events.html) guide to learn more.
 
-## Overview {#overview}
+## Overview
 
 Your event handlers will be passed instances of `SyntheticEvent`, a cross-browser wrapper around the browser's native event. It has the same interface as the browser's native event, including `stopPropagation()` and `preventDefault()`, except the events work identically across all browsers.
 
@@ -35,7 +35,7 @@ string type
 >
 > As of v0.14, returning `false` from an event handler will no longer stop event propagation. Instead, `e.stopPropagation()` or `e.preventDefault()` should be triggered manually, as appropriate.
 
-### Event Pooling {#event-pooling}
+### Event Pooling
 
 The `SyntheticEvent` is pooled. This means that the `SyntheticEvent` object will be reused and all properties will be nullified after the event callback has been invoked.
 This is for performance reasons.
@@ -64,7 +64,7 @@ function onClick(event) {
 >
 > If you want to access the event properties in an asynchronous way, you should call `event.persist()` on the event, which will remove the synthetic event from the pool and allow references to the event to be retained by user code.
 
-## Supported Events {#supported-events}
+## Supported Events
 
 React normalizes events so that they have consistent properties across different browsers.
 
@@ -89,9 +89,9 @@ The event handlers below are triggered by an event in the bubbling phase. To reg
 
 * * *
 
-## Reference {#reference}
+## Reference
 
-### Clipboard Events {#clipboard-events}
+### Clipboard Events
 
 Event names:
 
@@ -107,7 +107,7 @@ DOMDataTransfer clipboardData
 
 * * *
 
-### Composition Events {#composition-events}
+### Composition Events
 
 Event names:
 
@@ -124,7 +124,7 @@ string data
 
 * * *
 
-### Keyboard Events {#keyboard-events}
+### Keyboard Events
 
 Event names:
 
@@ -153,7 +153,7 @@ The `key` property can take any of the values documented in the [DOM Level 3 Eve
 
 * * *
 
-### Focus Events {#focus-events}
+### Focus Events
 
 Event names:
 
@@ -171,7 +171,7 @@ DOMEventTarget relatedTarget
 
 * * *
 
-### Form Events {#form-events}
+### Form Events
 
 Event names:
 
@@ -183,7 +183,7 @@ For more information about the onChange event, see [Forms](/docs/forms.html).
 
 * * *
 
-### Mouse Events {#mouse-events}
+### Mouse Events
 
 Event names:
 
@@ -216,7 +216,7 @@ boolean shiftKey
 
 * * *
 
-### Pointer Events {#pointer-events}
+### Pointer Events
 
 Event names:
 
@@ -252,7 +252,7 @@ If your application requires pointer events, we recommend adding a third party p
 
 * * *
 
-### Selection Events {#selection-events}
+### Selection Events
 
 Event names:
 
@@ -262,7 +262,7 @@ onSelect
 
 * * *
 
-### Touch Events {#touch-events}
+### Touch Events
 
 Event names:
 
@@ -285,7 +285,7 @@ DOMTouchList touches
 
 * * *
 
-### UI Events {#ui-events}
+### UI Events
 
 Event names:
 
@@ -302,7 +302,7 @@ DOMAbstractView view
 
 * * *
 
-### Wheel Events {#wheel-events}
+### Wheel Events
 
 Event names:
 
@@ -321,7 +321,7 @@ number deltaZ
 
 * * *
 
-### Media Events {#media-events}
+### Media Events
 
 Event names:
 
@@ -334,7 +334,7 @@ onTimeUpdate onVolumeChange onWaiting
 
 * * *
 
-### Image Events {#image-events}
+### Image Events
 
 Event names:
 
@@ -344,7 +344,7 @@ onLoad onError
 
 * * *
 
-### Animation Events {#animation-events}
+### Animation Events
 
 Event names:
 
@@ -362,7 +362,7 @@ float elapsedTime
 
 * * *
 
-### Transition Events {#transition-events}
+### Transition Events
 
 Event names:
 
@@ -380,7 +380,7 @@ float elapsedTime
 
 * * *
 
-### Other Events {#other-events}
+### Other Events
 
 Event names:
 
diff --git a/content/docs/reference-glossary.md b/content/docs/reference-glossary.md
index 27948ae1a3..f31a43c456 100644
--- a/content/docs/reference-glossary.md
+++ b/content/docs/reference-glossary.md
@@ -7,33 +7,33 @@ permalink: docs/glossary.html
 
 ---
 
-## Single-page Application {#single-page-application}
+## Single-page Application
 
 A single-page application is an application that loads a single HTML page and all the necessary assets (such as JavaScript and CSS) required for the application to run. Any interactions with the page or subsequent pages do not require a round trip to the server which means the page is not reloaded.
 
 Though you may build a single-page application in React, it is not a requirement. React can also be used for enhancing small parts of existing websites with additional interactivity. Code written in React can coexist peacefully with markup rendered on the server by something like PHP, or with other client-side libraries. In fact, this is exactly how React is being used at Facebook.
 
-## ES6, ES2015, ES2016, etc {#es6-es2015-es2016-etc}
+## ES6, ES2015, ES2016, etc
 
 These acronyms all refer to the most recent versions of the ECMAScript Language Specification standard, which the JavaScript language is an implementation of. The ES6 version (also known as ES2015) includes many additions to the previous versions such as: arrow functions, classes, template literals, `let` and `const` statements. You can learn more about specific versions [here](https://en.wikipedia.org/wiki/ECMAScript#Versions).
 
-## Compilers {#compilers}
+## Compilers
 
 A JavaScript compiler takes JavaScript code, transforms it and returns JavaScript code in a different format. The most common use case is to take ES6 syntax and transform it into syntax that older browsers are capable of interpreting. [Babel](https://babeljs.io/) is the compiler most commonly used with React.
 
-## Bundlers {#bundlers}
+## Bundlers
 
 Bundlers take JavaScript and CSS code written as separate modules (often hundreds of them), and combine them together into a few files better optimized for the browsers. Some bundlers commonly used in React applications include [Webpack](https://webpack.js.org/) and [Browserify](http://browserify.org/).
 
-## Package Managers {#package-managers}
+## Package Managers
 
 Package managers are tools that allow you to manage dependencies in your project. [npm](https://www.npmjs.com/) and [Yarn](http://yarnpkg.com/) are two package managers commonly used in React applications. Both of them are clients for the same npm package registry.
 
-## CDN {#cdn}
+## CDN
 
 CDN stands for Content Delivery Network. CDNs deliver cached, static content from a network of servers across the globe. 
 
-## JSX {#jsx}
+## JSX
 
 JSX is a syntax extension to JavaScript. It is similar to a template language, but it has full power of JavaScript. JSX gets compiled to `React.createElement()` calls which return plain JavaScript objects called "React elements". To get a basic introduction to JSX [see the docs here](/docs/introducing-jsx.html) and find a more in-depth tutorial on JSX [here](/docs/jsx-in-depth.html).
 
@@ -47,7 +47,7 @@ ReactDOM.render(
 );
 ```  
 
-## [Elements](/docs/rendering-elements.html) {#elementsdocsrendering-elementshtml}
+## [Elements](/docs/rendering-elements.html)
 
 React elements are the building blocks of React applications. One might confuse elements with a more widely known concept of "components". An element describes what you want to see on the screen. React elements are immutable.
 
@@ -57,7 +57,7 @@ const element = <h1>Hello, world</h1>;
 
 Typically, elements are not used directly, but get returned from components.
 
-## [Components](/docs/components-and-props.html) {#componentsdocscomponents-and-propshtml}
+## [Components](/docs/components-and-props.html)
 
 React components are small, reusable pieces of code that return a React element to be rendered to the page. The simplest version of React component is a plain JavaScript function that returns a React element:
 
@@ -79,7 +79,7 @@ class Welcome extends React.Component {
 
 Components can be broken down into distinct pieces of functionality and used within other components. Components can return other components, arrays, strings and numbers. A good rule of thumb is that if a part of your UI is used several times (Button, Panel, Avatar), or is complex enough on its own (App, FeedStory, Comment), it is a good candidate to be a reusable component. Component names should also always start with a capital letter (`<Wrapper/>` **not** `<wrapper/>`). See [this documentation](/docs/components-and-props.html#rendering-a-component) for more information on rendering components. 
 
-### [`props`](/docs/components-and-props.html) {#propsdocscomponents-and-propshtml}
+### [`props`](/docs/components-and-props.html)
 
 `props` are inputs to a React component. They are data passed down from a parent component to a child component.
 
@@ -92,7 +92,7 @@ props.number = 42;
 
 If you need to modify some value in response to user input or a network response, use `state` instead.
 
-### `props.children` {#propschildren}
+### `props.children`
 
 `props.children` is available on every component. It contains the content between the opening and closing tags of a component. For example:
 
@@ -118,7 +118,7 @@ class Welcome extends React.Component {
 }
 ```
 
-### [`state`](/docs/state-and-lifecycle.html#adding-local-state-to-a-class) {#statedocsstate-and-lifecyclehtmladding-local-state-to-a-class}
+### [`state`](/docs/state-and-lifecycle.html#adding-local-state-to-a-class)
 
 A component needs `state` when some data associated with it changes over time. For example, a `Checkbox` component might need `isChecked` in its state, and a `NewsFeed` component might want to keep track of `fetchedPosts` in its state.
 
@@ -126,7 +126,7 @@ The most important difference between `state` and `props` is that `props` are pa
 
 For each particular piece of changing data, there should be just one component that "owns" it in its state. Don't try to synchronize states of two different components. Instead, [lift it up](/docs/lifting-state-up.html) to their closest shared ancestor, and pass it down as props to both of them.
 
-## [Lifecycle Methods](/docs/state-and-lifecycle.html#adding-lifecycle-methods-to-a-class) {#lifecycle-methodsdocsstate-and-lifecyclehtmladding-lifecycle-methods-to-a-class}
+## [Lifecycle Methods](/docs/state-and-lifecycle.html#adding-lifecycle-methods-to-a-class)
 
 Lifecycle methods are custom functionality that gets executed during the different phases of a component. There are methods available when the component gets created and inserted into the DOM ([mounting](/docs/react-component.html#mounting)), when the component updates, and when the component gets unmounted or removed from the DOM.
 
@@ -140,7 +140,7 @@ An *uncontrolled component* works like form elements do outside of React. When a
 
 In most cases you should use controlled components.
 
-## [Keys](/docs/lists-and-keys.html) {#keysdocslists-and-keyshtml}
+## [Keys](/docs/lists-and-keys.html) 
 
 A "key" is a special string attribute you need to include when creating arrays of elements. Keys help React identify which items have changed, are added, or are removed. Keys should be given to the elements inside an array to give the elements a stable identity.
 
@@ -148,19 +148,19 @@ Keys only need to be unique among sibling elements in the same array. They don't
 
 Don't pass something like `Math.random()` to keys. It is important that keys have a "stable identity" across re-renders so that React can determine when items are added, removed, or re-ordered. Ideally, keys should correspond to unique and stable identifiers coming from your data, such as `post.id`.
 
-## [Refs](/docs/refs-and-the-dom.html) {#refsdocsrefs-and-the-domhtml}
+## [Refs](/docs/refs-and-the-dom.html)
 
 React supports a special attribute that you can attach to any component. The `ref` attribute can be an object created by [`React.createRef()` function](/docs/react-api.html#reactcreateref) or a callback function, or a string (in legacy API). When the `ref` attribute is a callback function, the function receives the underlying DOM element or class instance (depending on the type of element) as its argument. This allows you to have direct access to the DOM element or component instance.
 
 Use refs sparingly. If you find yourself often using refs to "make things happen" in your app, consider getting more familiar with [top-down data flow](/docs/lifting-state-up.html).
 
-## [Events](/docs/handling-events.html) {#eventsdocshandling-eventshtml}
+## [Events](/docs/handling-events.html) 
 
 Handling events with React elements has some syntactic differences:
 
 * React event handlers are named using camelCase, rather than lowercase.
 * With JSX you pass a function as the event handler, rather than a string.
 
-## [Reconciliation](/docs/reconciliation.html) {#reconciliationdocsreconciliationhtml}
+## [Reconciliation](/docs/reconciliation.html)
 
 When a component's props or state change, React decides whether an actual DOM update is necessary by comparing the newly returned element with the previously rendered one. When they are not equal, React will update the DOM. This process is called "reconciliation".
diff --git a/content/docs/reference-react-component.md b/content/docs/reference-react-component.md
index ecb4d087c0..0962fffeec 100644
--- a/content/docs/reference-react-component.md
+++ b/content/docs/reference-react-component.md
@@ -17,7 +17,7 @@ redirect_from:
 
 This page contains a detailed API reference for the React component class definition. It assumes you're familiar with fundamental React concepts, such as [Components and Props](/docs/components-and-props.html), as well as [State and Lifecycle](/docs/state-and-lifecycle.html). If you're not, read them first.
 
-## Overview {#overview}
+## Overview
 
 React lets you define components as classes or functions. Components defined as classes currently provide more features which are described in detail on this page. To define a React component class, you need to extend `React.Component`:
 
@@ -37,11 +37,11 @@ The only method you *must* define in a `React.Component` subclass is called [`re
 >
 >React doesn't force you to use the ES6 class syntax. If you prefer to avoid it, you may use the `create-react-class` module or a similar custom abstraction instead. Take a look at [Using React without ES6](/docs/react-without-es6.html) to learn more.
 
-### The Component Lifecycle {#the-component-lifecycle}
+### The Component Lifecycle
 
 Each component has several "lifecycle methods" that you can override to run code at particular times in the process. **You can use [this lifecycle diagram](http://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/) as a cheat sheet.** In the list below, commonly used lifecycle methods are marked as **bold**. The rest of them exist for relatively rare use cases.
 
-#### Mounting {#mounting}
+#### Mounting
 
 These methods are called in the following order when an instance of a component is being created and inserted into the DOM:
 
@@ -56,7 +56,7 @@ These methods are called in the following order when an instance of a component
 >
 >- [`UNSAFE_componentWillMount()`](#unsafe_componentwillmount)
 
-#### Updating {#updating}
+#### Updating
 
 An update can be caused by changes to props or state. These methods are called in the following order when a component is being re-rendered:
 
@@ -73,45 +73,45 @@ An update can be caused by changes to props or state. These methods are called i
 >- [`UNSAFE_componentWillUpdate()`](#unsafe_componentwillupdate)
 >- [`UNSAFE_componentWillReceiveProps()`](#unsafe_componentwillreceiveprops)
 
-#### Unmounting {#unmounting}
+#### Unmounting
 
 This method is called when a component is being removed from the DOM:
 
 - [**`componentWillUnmount()`**](#componentwillunmount)
 
-#### Error Handling {#error-handling}
+#### Error Handling
 
 These methods are called when there is an error during rendering, in a lifecycle method, or in the constructor of any child component.
 
 - [`static getDerivedStateFromError()`](#static-getderivedstatefromerror)
 - [`componentDidCatch()`](#componentdidcatch)
 
-### Other APIs {#other-apis}
+### Other APIs
 
 Each component also provides some other APIs:
 
   - [`setState()`](#setstate)
   - [`forceUpdate()`](#forceupdate)
 
-### Class Properties {#class-properties}
+### Class Properties
 
   - [`defaultProps`](#defaultprops)
   - [`displayName`](#displayname)
 
-### Instance Properties {#instance-properties}
+### Instance Properties
 
   - [`props`](#props)
   - [`state`](#state)
 
 * * *
 
-## Reference {#reference}
+## Reference
 
-### Commonly Used Lifecycle Methods {#commonly-used-lifecycle-methods}
+### Commonly Used Lifecycle Methods
 
 The methods in this section cover the vast majority of use cases you'll encounter creating React components. **For a visual reference, check out [this lifecycle diagram](http://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/).**
 
-### `render()` {#render}
+### `render()`
 
 ```javascript
 render()
@@ -137,7 +137,7 @@ If you need to interact with the browser, perform your work in `componentDidMoun
 
 * * *
 
-### `constructor()` {#constructor}
+### `constructor()`
 
 ```javascript
 constructor(props)
@@ -188,7 +188,7 @@ Avoid introducing any side-effects or subscriptions in the constructor. For thos
 
 * * *
 
-### `componentDidMount()` {#componentdidmount}
+### `componentDidMount()`
 
 ```javascript
 componentDidMount()
@@ -202,7 +202,7 @@ You **may call `setState()` immediately** in `componentDidMount()`. It will trig
 
 * * *
 
-### `componentDidUpdate()` {#componentdidupdate}
+### `componentDidUpdate()`
 
 ```javascript
 componentDidUpdate(prevProps, prevState, snapshot)
@@ -231,7 +231,7 @@ If your component implements the `getSnapshotBeforeUpdate()` lifecycle (which is
 
 * * *
 
-### `componentWillUnmount()` {#componentwillunmount}
+### `componentWillUnmount()`
 
 ```javascript
 componentWillUnmount()
@@ -243,12 +243,12 @@ You **should not call `setState()`** in `componentWillUnmount()` because the com
 
 * * *
 
-### Rarely Used Lifecycle Methods {#rarely-used-lifecycle-methods}
+### Rarely Used Lifecycle Methods
 
 The methods in this section correspond to uncommon use cases. They're handy once in a while, but most of your components probably don't need any of them. **You can see most of the methods below on [this lifecycle diagram](http://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/) if you click the "Show less common lifecycles" checkbox at the top of it.**
 
 
-### `shouldComponentUpdate()` {#shouldcomponentupdate}
+### `shouldComponentUpdate()`
 
 ```javascript
 shouldComponentUpdate(nextProps, nextState)
@@ -268,7 +268,7 @@ Currently, if `shouldComponentUpdate()` returns `false`, then [`UNSAFE_component
 
 * * *
 
-### `static getDerivedStateFromProps()` {#static-getderivedstatefromprops}
+### `static getDerivedStateFromProps()`
 
 ```js
 static getDerivedStateFromProps(props, state)
@@ -293,7 +293,7 @@ Note that this method is fired on *every* render, regardless of the cause. This
 
 * * *
 
-### `getSnapshotBeforeUpdate()` {#getsnapshotbeforeupdate}
+### `getSnapshotBeforeUpdate()`
 
 ```javascript
 getSnapshotBeforeUpdate(prevProps, prevState)
@@ -313,7 +313,7 @@ In the above examples, it is important to read the `scrollHeight` property in `g
 
 * * *
 
-### Error boundaries {#error-boundaries}
+### Error boundaries
 
 [Error boundaries](/docs/error-boundaries.html) are React components that catch JavaScript errors anywhere in their child component tree, log those errors, and display a fallback UI instead of the component tree that crashed. Error boundaries catch errors during rendering, in lifecycle methods, and in constructors of the whole tree below them.
 
@@ -327,7 +327,7 @@ For more details, see [*Error Handling in React 16*](/blog/2017/07/26/error-hand
 > 
 > Error boundaries only catch errors in the components **below** them in the tree. An error boundary can’t catch an error within itself.
 
-### `static getDerivedStateFromError()` {#static-getderivedstatefromerror}
+### `static getDerivedStateFromError()`
 ```javascript
 static getDerivedStateFromError(error)
 ```
@@ -365,7 +365,7 @@ For those use cases, use `componentDidCatch()` instead.
 
 * * *
 
-### `componentDidCatch()` {#componentdidcatch}
+### `componentDidCatch()`
 
 ```javascript
 componentDidCatch(error, info)
@@ -420,11 +420,11 @@ class ErrorBoundary extends React.Component {
 
 * * *
 
-### Legacy Lifecycle Methods {#legacy-lifecycle-methods}
+### Legacy Lifecycle Methods
 
 The lifecycle methods below are marked as "legacy". They still work, but we don't recommend using them in the new code. You can learn more about migrating away from legacy lifecycle methods in [this blog post](/blog/2018/03/27/update-on-async-rendering.html).
 
-### `UNSAFE_componentWillMount()` {#unsafe_componentwillmount}
+### `UNSAFE_componentWillMount()`
 
 ```javascript
 UNSAFE_componentWillMount()
@@ -442,7 +442,7 @@ This is the only lifecycle method called on server rendering.
 
 * * *
 
-### `UNSAFE_componentWillReceiveProps()` {#unsafe_componentwillreceiveprops}
+### `UNSAFE_componentWillReceiveProps()`
 
 ```javascript
 UNSAFE_componentWillReceiveProps(nextProps)
@@ -470,7 +470,7 @@ React doesn't call `UNSAFE_componentWillReceiveProps()` with initial props durin
 
 * * *
 
-### `UNSAFE_componentWillUpdate()` {#unsafe_componentwillupdate}
+### `UNSAFE_componentWillUpdate()`
 
 ```javascript
 UNSAFE_componentWillUpdate(nextProps, nextState)
@@ -492,13 +492,13 @@ Typically, this method can be replaced by `componentDidUpdate()`. If you were re
 
 * * *
 
-## Other APIs {#other-apis-1}
+## Other APIs
 
 Unlike the lifecycle methods above (which React calls for you), the methods below are the methods *you* can call from your components.
 
 There are just two of them: `setState()` and `forceUpdate()`.
 
-### `setState()` {#setstate}
+### `setState()`
 
 ```javascript
 setState(updater[, callback])
@@ -569,7 +569,7 @@ For more detail, see:
 
 * * *
 
-### `forceUpdate()` {#forceupdate}
+### `forceUpdate()`
 
 ```javascript
 component.forceUpdate(callback)
@@ -583,9 +583,9 @@ Normally you should try to avoid all uses of `forceUpdate()` and only read from
 
 * * *
 
-## Class Properties {#class-properties-1}
+## Class Properties
 
-### `defaultProps` {#defaultprops}
+### `defaultProps`
 
 `defaultProps` can be defined as a property on the component class itself, to set the default props for the class. This is used for undefined props, but not for null props. For example:
 
@@ -617,21 +617,21 @@ If `props.color` is set to null, it will remain null:
 
 * * *
 
-### `displayName` {#displayname}
+### `displayName`
 
 The `displayName` string is used in debugging messages. Usually, you don't need to set it explicitly because it's inferred from the name of the function or class that defines the component. You might want to set it explicitly if you want to display a different name for debugging purposes or when you create a higher-order component, see [Wrap the Display Name for Easy Debugging](/docs/higher-order-components.html#convention-wrap-the-display-name-for-easy-debugging) for details.
 
 * * *
 
-## Instance Properties {#instance-properties-1}
+## Instance Properties
 
-### `props` {#props}
+### `props`
 
 `this.props` contains the props that were defined by the caller of this component. See [Components and Props](/docs/components-and-props.html) for an introduction to props.
 
 In particular, `this.props.children` is a special prop, typically defined by the child tags in the JSX expression rather than in the tag itself.
 
-### `state` {#state}
+### `state`
 
 The state contains data specific to this component that may change over time. The state is user-defined, and it should be a plain JavaScript object.
 
diff --git a/content/docs/reference-react-dom-server.md b/content/docs/reference-react-dom-server.md
index 80c0303775..eac4040702 100644
--- a/content/docs/reference-react-dom-server.md
+++ b/content/docs/reference-react-dom-server.md
@@ -15,7 +15,7 @@ import ReactDOMServer from 'react-dom/server';
 var ReactDOMServer = require('react-dom/server');
 ```
 
-## Overview {#overview}
+## Overview
 
 The following methods can be used in both the server and browser environments:
 
@@ -29,9 +29,9 @@ These additional methods depend on a package (`stream`) that is **only available
 
 * * *
 
-## Reference {#reference}
+## Reference
 
-### `renderToString()` {#rendertostring}
+### `renderToString()`
 
 ```javascript
 ReactDOMServer.renderToString(element)
@@ -43,7 +43,7 @@ If you call [`ReactDOM.hydrate()`](/docs/react-dom.html#hydrate) on a node that
 
 * * *
 
-### `renderToStaticMarkup()` {#rendertostaticmarkup}
+### `renderToStaticMarkup()`
 
 ```javascript
 ReactDOMServer.renderToStaticMarkup(element)
@@ -55,7 +55,7 @@ If you plan to use React on the client to make the markup interactive, do not us
 
 * * *
 
-### `renderToNodeStream()` {#rendertonodestream}
+### `renderToNodeStream()`
 
 ```javascript
 ReactDOMServer.renderToNodeStream(element)
@@ -73,7 +73,7 @@ If you call [`ReactDOM.hydrate()`](/docs/react-dom.html#hydrate) on a node that
 
 * * *
 
-### `renderToStaticNodeStream()` {#rendertostaticnodestream}
+### `renderToStaticNodeStream()`
 
 ```javascript
 ReactDOMServer.renderToStaticNodeStream(element)
diff --git a/content/docs/reference-react-dom.md b/content/docs/reference-react-dom.md
index 3732ebe8d7..4060a6c0ea 100644
--- a/content/docs/reference-react-dom.md
+++ b/content/docs/reference-react-dom.md
@@ -8,7 +8,7 @@ permalink: docs/react-dom.html
 
 If you load React from a `<script>` tag, these top-level APIs are available on the `ReactDOM` global. If you use ES6 with npm, you can write `import ReactDOM from 'react-dom'`. If you use ES5 with npm, you can write `var ReactDOM = require('react-dom')`.
 
-## Overview {#overview}
+## Overview
 
 The `react-dom` package provides DOM-specific methods that can be used at the top level of your app and as an escape hatch to get outside of the React model if you need to. Most of your components should not need to use this module.
 
@@ -18,7 +18,7 @@ The `react-dom` package provides DOM-specific methods that can be used at the to
 - [`findDOMNode()`](#finddomnode)
 - [`createPortal()`](#createportal)
 
-### Browser Support {#browser-support}
+### Browser Support
 
 React supports all popular browsers, including Internet Explorer 9 and above, although [some polyfills are required](/docs/javascript-environment-requirements.html) for older browsers such as IE 9 and IE 10.
 
@@ -28,9 +28,9 @@ React supports all popular browsers, including Internet Explorer 9 and above, al
 
 * * *
 
-## Reference {#reference}
+## Reference
 
-### `render()` {#render}
+### `render()`
 
 ```javascript
 ReactDOM.render(element, container[, callback])
@@ -56,7 +56,7 @@ If the optional callback is provided, it will be executed after the component is
 
 * * *
 
-### `hydrate()` {#hydrate}
+### `hydrate()`
 
 ```javascript
 ReactDOM.hydrate(element, container[, callback])
@@ -74,7 +74,7 @@ Remember to be mindful of user experience on slow connections. The JavaScript co
 
 * * *
 
-### `unmountComponentAtNode()` {#unmountcomponentatnode}
+### `unmountComponentAtNode()`
 
 ```javascript
 ReactDOM.unmountComponentAtNode(container)
@@ -84,7 +84,7 @@ Remove a mounted React component from the DOM and clean up its event handlers an
 
 * * *
 
-### `findDOMNode()` {#finddomnode}
+### `findDOMNode()`
 
 > Note:
 >
@@ -105,7 +105,7 @@ When a component renders to `null` or `false`, `findDOMNode` returns `null`. Whe
 
 * * *
 
-### `createPortal()` {#createportal}
+### `createPortal()`
 
 ```javascript
 ReactDOM.createPortal(child, container)
diff --git a/content/docs/reference-react.md b/content/docs/reference-react.md
index d506a1ad31..3ac8c607a8 100644
--- a/content/docs/reference-react.md
+++ b/content/docs/reference-react.md
@@ -15,9 +15,9 @@ redirect_from:
 
 `React` is the entry point to the React library. If you load React from a `<script>` tag, these top-level APIs are available on the `React` global. If you use ES6 with npm, you can write `import React from 'react'`. If you use ES5 with npm, you can write `var React = require('react')`.
 
-## Overview {#overview}
+## Overview
 
-### Components {#components}
+### Components
 
 React components let you split the UI into independent, reusable pieces, and think about each piece in isolation. React components can be defined by subclassing `React.Component` or `React.PureComponent`.
 
@@ -30,7 +30,7 @@ React components can also be defined as functions which can be wrapped:
 
 - [`React.memo`](#reactmemo)
 
-### Creating React Elements {#creating-react-elements}
+### Creating React Elements
 
 We recommend [using JSX](/docs/introducing-jsx.html) to describe what your UI should look like. Each JSX element is just syntactic sugar for calling [`React.createElement()`](#createelement). You will not typically invoke the following methods directly if you are using JSX.
 
@@ -39,7 +39,7 @@ We recommend [using JSX](/docs/introducing-jsx.html) to describe what your UI sh
 
 See [Using React without JSX](/docs/react-without-jsx.html) for more information.
 
-### Transforming Elements {#transforming-elements}
+### Transforming Elements
 
 `React` provides several APIs for manipulating elements:
 
@@ -47,25 +47,25 @@ See [Using React without JSX](/docs/react-without-jsx.html) for more information
 - [`isValidElement()`](#isvalidelement)
 - [`React.Children`](#reactchildren)
 
-### Fragments {#fragments}
+### Fragments
 
 `React` also provides a component for rendering multiple elements without a wrapper.
 
 - [`React.Fragment`](#reactfragment)
 
-### Refs {#refs}
+### Refs
 
 - [`React.createRef`](#reactcreateref)
 - [`React.forwardRef`](#reactforwardref)
 
-### Suspense {#suspense}
+### Suspense
 
 Suspense lets components "wait" for something before rendering. Today, Suspense only supports one use case: [loading components dynamically with `React.lazy`](/docs/code-splitting.html#reactlazy). In the future, it will support other use cases like data fetching.
 
 - [`React.lazy`](#reactlazy)
 - [`React.Suspense`](#reactsuspense)
 
-### Hooks {#hooks}
+### Hooks
 
 *Hooks* are a new addition in React 16.8. They let you use state and other React features without writing a class. Hooks have a [dedicated docs section](/docs/hooks-intro.html) and a separate API reference:
 
@@ -84,9 +84,9 @@ Suspense lets components "wait" for something before rendering. Today, Suspense
 
 * * *
 
-## Reference {#reference}
+## Reference
 
-### `React.Component` {#reactcomponent}
+### `React.Component`
 
 `React.Component` is the base class for React components when they are defined using [ES6 classes](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes):
 
@@ -102,7 +102,7 @@ See the [React.Component API Reference](/docs/react-component.html) for a list o
 
 * * *
 
-### `React.PureComponent` {#reactpurecomponent}
+### `React.PureComponent`
 
 `React.PureComponent` is similar to [`React.Component`](#reactcomponent). The difference between them is that [`React.Component`](#reactcomponent) doesn't implement [`shouldComponentUpdate()`](/docs/react-component.html#shouldcomponentupdate), but `React.PureComponent` implements it with a shallow prop and state comparison. 
 
@@ -116,7 +116,7 @@ If your React component's `render()` function renders the same result given the
 
 * * *
 
-### `React.memo` {#reactmemo}
+### `React.memo`
 
 ```javascript
 const MyComponent = React.memo(function MyComponent(props) {
@@ -152,7 +152,7 @@ This method only exists as a **[performance optimization](/docs/optimizing-perfo
 
 * * *
 
-### `createElement()` {#createelement}
+### `createElement()`
 
 ```javascript
 React.createElement(
@@ -168,7 +168,7 @@ Code written with [JSX](/docs/introducing-jsx.html) will be converted to use `Re
 
 * * *
 
-### `cloneElement()` {#cloneelement}
+### `cloneElement()`
 
 ```
 React.cloneElement(
@@ -192,7 +192,7 @@ This API was introduced as a replacement of the deprecated `React.addons.cloneWi
 
 * * *
 
-### `createFactory()` {#createfactory}
+### `createFactory()`
 
 ```javascript
 React.createFactory(type)
@@ -206,7 +206,7 @@ You will not typically invoke `React.createFactory()` directly if you are using
 
 * * *
 
-### `isValidElement()` {#isvalidelement}
+### `isValidElement()`
 
 ```javascript
 React.isValidElement(object)
@@ -216,11 +216,11 @@ Verifies the object is a React element. Returns `true` or `false`.
 
 * * *
 
-### `React.Children` {#reactchildren}
+### `React.Children`
 
 `React.Children` provides utilities for dealing with the `this.props.children` opaque data structure.
 
-#### `React.Children.map` {#reactchildrenmap}
+#### `React.Children.map`
 
 ```javascript
 React.Children.map(children, function[(thisArg)])
@@ -232,7 +232,7 @@ Invokes a function on every immediate child contained within `children` with `th
 >
 > If `children` is a `Fragment` it will be treated as a single child and not traversed.
 
-#### `React.Children.forEach` {#reactchildrenforeach}
+#### `React.Children.forEach`
 
 ```javascript
 React.Children.forEach(children, function[(thisArg)])
@@ -240,7 +240,7 @@ React.Children.forEach(children, function[(thisArg)])
 
 Like [`React.Children.map()`](#reactchildrenmap) but does not return an array.
 
-#### `React.Children.count` {#reactchildrencount}
+#### `React.Children.count`
 
 ```javascript
 React.Children.count(children)
@@ -248,7 +248,7 @@ React.Children.count(children)
 
 Returns the total number of components in `children`, equal to the number of times that a callback passed to `map` or `forEach` would be invoked.
 
-#### `React.Children.only` {#reactchildrenonly}
+#### `React.Children.only`
 
 ```javascript
 React.Children.only(children)
@@ -260,7 +260,7 @@ Verifies that `children` has only one child (a React element) and returns it. Ot
 >
 >`React.Children.only()` does not accept the return value of [`React.Children.map()`](#reactchildrenmap) because it is an array rather than a React element.
 
-#### `React.Children.toArray` {#reactchildrentoarray}
+#### `React.Children.toArray`
 
 ```javascript
 React.Children.toArray(children)
@@ -274,7 +274,7 @@ Returns the `children` opaque data structure as a flat array with keys assigned
 
 * * *
 
-### `React.Fragment` {#reactfragment}
+### `React.Fragment`
 
 The `React.Fragment` component lets you return multiple elements in a `render()` method without creating an additional DOM element:
 
@@ -292,12 +292,12 @@ render() {
 You can also use it with the shorthand `<></>` syntax. For more information, see [React v16.2.0: Improved Support for Fragments](/blog/2017/11/28/react-v16.2.0-fragment-support.html).
 
 
-### `React.createRef` {#reactcreateref}
+### `React.createRef`
 
 `React.createRef` creates a [ref](/docs/refs-and-the-dom.html) that can be attached to React elements via the ref attribute.
 `embed:16-3-release-blog-post/create-ref-example.js`
 
-### `React.forwardRef` {#reactforwardref}
+### `React.forwardRef`
 
 `React.forwardRef` creates a React component that forwards the [ref](/docs/refs-and-the-dom.html) attribute it receives to another component below in the tree. This technique is not very common but is particularly useful in two scenarios:
 
@@ -314,7 +314,7 @@ As a result, after React attaches the ref, `ref.current` will point directly to
 
 For more information, see [forwarding refs](/docs/forwarding-refs.html).
 
-### `React.lazy` {#reactlazy}
+### `React.lazy`
 
 `React.lazy()` lets you define a component that is loaded dynamically. This helps reduce the bundle size to delay loading components that aren't used during the initial render.
 
@@ -331,7 +331,7 @@ Note that rendering `lazy` components requires that there's a `<React.Suspense>`
 >
 > Using `React.lazy`with dynamic import requires Promises to be available in the JS environment. This requires a polyfill on IE11 and below.
 
-### `React.Suspense` {#reactsuspense}
+### `React.Suspense`
 
 `React.Suspense` let you specify the loading indicator in case some components in the tree below it are not yet ready to render. Today, lazy loading components is the **only** use case supported by `<React.Suspense>`:
 
diff --git a/content/docs/reference-test-renderer.md b/content/docs/reference-test-renderer.md
index 473dfb7ec1..92f5246cb0 100644
--- a/content/docs/reference-test-renderer.md
+++ b/content/docs/reference-test-renderer.md
@@ -13,7 +13,7 @@ import TestRenderer from 'react-test-renderer'; // ES6
 const TestRenderer = require('react-test-renderer'); // ES5 with npm
 ```
 
-## Overview {#overview}
+## Overview
 
 This package provides a React renderer that can be used to render React components to pure JavaScript objects, without depending on the DOM or a native mobile environment.
 
@@ -67,11 +67,11 @@ expect(testInstance.findByType(SubComponent).props.foo).toBe('bar');
 expect(testInstance.findByProps({className: "sub"}).children).toEqual(['Sub']);
 ```
 
-### TestRenderer {#testrenderer}
+### TestRenderer
 
 * [`TestRenderer.create()`](#testrenderercreate)
 
-### TestRenderer instance {#testrenderer-instance}
+### TestRenderer instance
 
 * [`testRenderer.toJSON()`](#testrenderertojson)
 * [`testRenderer.toTree()`](#testrenderertotree)
@@ -80,7 +80,7 @@ expect(testInstance.findByProps({className: "sub"}).children).toEqual(['Sub']);
 * [`testRenderer.getInstance()`](#testrenderergetinstance)
 * [`testRenderer.root`](#testrendererroot)
 
-### TestInstance {#testinstance}
+### TestInstance
 
 * [`testInstance.find()`](#testinstancefind)
 * [`testInstance.findByType()`](#testinstancefindbytype)
@@ -94,9 +94,9 @@ expect(testInstance.findByProps({className: "sub"}).children).toEqual(['Sub']);
 * [`testInstance.parent`](#testinstanceparent)
 * [`testInstance.children`](#testinstancechildren)
 
-## Reference {#reference}
+## Reference
 
-### `TestRenderer.create()` {#testrenderercreate}
+### `TestRenderer.create()`
 
 ```javascript
 TestRenderer.create(element, options);
@@ -104,7 +104,7 @@ TestRenderer.create(element, options);
 
 Create a `TestRenderer` instance with the passed React element. It doesn't use the real DOM, but it still fully renders the component tree into memory so you can make assertions about it. The returned instance has the following methods and properties.
 
-### `testRenderer.toJSON()` {#testrenderertojson}
+### `testRenderer.toJSON()`
 
 ```javascript
 testRenderer.toJSON()
@@ -112,7 +112,7 @@ testRenderer.toJSON()
 
 Return an object representing the rendered tree. This tree only contains the platform-specific nodes like `<div>` or `<View>` and their props, but doesn't contain any user-written components. This is handy for [snapshot testing](http://facebook.github.io/jest/docs/en/snapshot-testing.html#snapshot-testing-with-jest).
 
-### `testRenderer.toTree()` {#testrenderertotree}
+### `testRenderer.toTree()`
 
 ```javascript
 testRenderer.toTree()
@@ -120,7 +120,7 @@ testRenderer.toTree()
 
 Return an object representing the rendered tree. Unlike `toJSON()`, the representation is more detailed than the one provided by `toJSON()`, and includes the user-written components. You probably don't need this method unless you're writing your own assertion library on top of the test renderer.
 
-### `testRenderer.update()` {#testrendererupdate}
+### `testRenderer.update()`
 
 ```javascript
 testRenderer.update(element)
@@ -128,7 +128,7 @@ testRenderer.update(element)
 
 Re-render the in-memory tree with a new root element. This simulates a React update at the root. If the new element has the same type and key as the previous element, the tree will be updated; otherwise, it will re-mount a new tree.
 
-### `testRenderer.unmount()` {#testrendererunmount}
+### `testRenderer.unmount()`
 
 ```javascript
 testRenderer.unmount()
@@ -136,7 +136,7 @@ testRenderer.unmount()
 
 Unmount the in-memory tree, triggering the appropriate lifecycle events.
 
-### `testRenderer.getInstance()` {#testrenderergetinstance}
+### `testRenderer.getInstance()`
 
 ```javascript
 testRenderer.getInstance()
@@ -144,7 +144,7 @@ testRenderer.getInstance()
 
 Return the instance corresponding to the root element, if available. This will not work if the root element is a function component because they don't have instances.
 
-### `testRenderer.root` {#testrendererroot}
+### `testRenderer.root`
 
 ```javascript
 testRenderer.root
@@ -152,7 +152,7 @@ testRenderer.root
 
 Returns the root "test instance" object that is useful for making assertions about specific nodes in the tree. You can use it to find other "test instances" deeper below.
 
-### `testInstance.find()` {#testinstancefind}
+### `testInstance.find()`
 
 ```javascript
 testInstance.find(test)
@@ -160,7 +160,7 @@ testInstance.find(test)
 
 Find a single descendant test instance for which `test(testInstance)` returns `true`. If `test(testInstance)` does not return `true` for exactly one test instance, it will throw an error.
 
-### `testInstance.findByType()` {#testinstancefindbytype}
+### `testInstance.findByType()`
 
 ```javascript
 testInstance.findByType(type)
@@ -168,7 +168,7 @@ testInstance.findByType(type)
 
 Find a single descendant test instance with the provided `type`. If there is not exactly one test instance with the provided `type`, it will throw an error.
 
-### `testInstance.findByProps()` {#testinstancefindbyprops}
+### `testInstance.findByProps()`
 
 ```javascript
 testInstance.findByProps(props)
@@ -176,7 +176,7 @@ testInstance.findByProps(props)
 
 Find a single descendant test instance with the provided `props`. If there is not exactly one test instance with the provided `props`, it will throw an error.
 
-### `testInstance.findAll()` {#testinstancefindall}
+### `testInstance.findAll()`
 
 ```javascript
 testInstance.findAll(test)
@@ -184,7 +184,7 @@ testInstance.findAll(test)
 
 Find all descendant test instances for which `test(testInstance)` returns `true`.
 
-### `testInstance.findAllByType()` {#testinstancefindallbytype}
+### `testInstance.findAllByType()`
 
 ```javascript
 testInstance.findAllByType(type)
@@ -192,7 +192,7 @@ testInstance.findAllByType(type)
 
 Find all descendant test instances with the provided `type`.
 
-### `testInstance.findAllByProps()` {#testinstancefindallbyprops}
+### `testInstance.findAllByProps()`
 
 ```javascript
 testInstance.findAllByProps(props)
@@ -200,7 +200,7 @@ testInstance.findAllByProps(props)
 
 Find all descendant test instances with the provided `props`.
 
-### `testInstance.instance` {#testinstanceinstance}
+### `testInstance.instance`
 
 ```javascript
 testInstance.instance
@@ -208,7 +208,7 @@ testInstance.instance
 
 The component instance corresponding to this test instance. It is only available for class components, as function components don't have instances. It matches the `this` value inside the given component.
 
-### `testInstance.type` {#testinstancetype}
+### `testInstance.type`
 
 ```javascript
 testInstance.type
@@ -216,7 +216,7 @@ testInstance.type
 
 The component type corresponding to this test instance. For example, a `<Button />` component has a type of `Button`.
 
-### `testInstance.props` {#testinstanceprops}
+### `testInstance.props`
 
 ```javascript
 testInstance.props
@@ -224,7 +224,7 @@ testInstance.props
 
 The props corresponding to this test instance. For example, a `<Button size="small" />` component has `{size: 'small'}` as props.
 
-### `testInstance.parent` {#testinstanceparent}
+### `testInstance.parent`
 
 ```javascript
 testInstance.parent
@@ -232,7 +232,7 @@ testInstance.parent
 
 The parent test instance of this test instance.
 
-### `testInstance.children` {#testinstancechildren}
+### `testInstance.children`
 
 ```javascript
 testInstance.children
@@ -240,7 +240,7 @@ testInstance.children
 
 The children test instances of this test instance.
 
-## Ideas {#ideas}
+## Ideas
 
 You can pass `createNodeMock` function to `TestRenderer.create` as the option, which allows for custom mock refs.
 `createNodeMock` accepts the current element and should return a mock ref object.
diff --git a/content/docs/refs-and-the-dom.md b/content/docs/refs-and-the-dom.md
index 9b56fcc9f2..1dafc540f7 100644
--- a/content/docs/refs-and-the-dom.md
+++ b/content/docs/refs-and-the-dom.md
@@ -15,7 +15,7 @@ Refs provide a way to access DOM nodes or React elements created in the render m
 
 In the typical React dataflow, [props](/docs/components-and-props.html) are the only way that parent components interact with their children. To modify a child, you re-render it with new props. However, there are a few cases where you need to imperatively modify a child outside of the typical dataflow. The child to be modified could be an instance of a React component, or it could be a DOM element. For both of these cases, React provides an escape hatch.
 
-### When to Use Refs {#when-to-use-refs}
+### When to Use Refs
 
 There are a few good use cases for refs:
 
@@ -27,7 +27,7 @@ Avoid using refs for anything that can be done declaratively.
 
 For example, instead of exposing `open()` and `close()` methods on a `Dialog` component, pass an `isOpen` prop to it.
 
-### Don't Overuse Refs {#dont-overuse-refs}
+### Don't Overuse Refs
 
 Your first inclination may be to use refs to "make things happen" in your app. If this is the case, take a moment and think more critically about where state should be owned in the component hierarchy. Often, it becomes clear that the proper place to "own" that state is at a higher level in the hierarchy. See the [Lifting State Up](/docs/lifting-state-up.html) guide for examples of this.
 
@@ -35,7 +35,7 @@ Your first inclination may be to use refs to "make things happen" in your app. I
 >
 > The examples below have been updated to use the `React.createRef()` API introduced in React 16.3. If you are using an earlier release of React, we recommend using [callback refs](#callback-refs) instead.
 
-### Creating Refs {#creating-refs}
+### Creating Refs
 
 Refs are created using `React.createRef()` and attached to React elements via the `ref` attribute. Refs are commonly assigned to an instance property when a component is constructed so they can be referenced throughout the component.
 
@@ -51,7 +51,7 @@ class MyComponent extends React.Component {
 }
 ```
 
-### Accessing Refs {#accessing-refs}
+### Accessing Refs
 
 When a ref is passed to an element in `render`, a reference to the node becomes accessible at the `current` attribute of the ref.
 
@@ -67,7 +67,7 @@ The value of the ref differs depending on the type of the node:
 
 The examples below demonstrate the differences.
 
-#### Adding a Ref to a DOM Element {#adding-a-ref-to-a-dom-element}
+#### Adding a Ref to a DOM Element
 
 This code uses a `ref` to store a reference to a DOM node:
 
@@ -107,7 +107,7 @@ class CustomTextInput extends React.Component {
 
 React will assign the `current` property with the DOM element when the component mounts, and assign it back to `null` when it unmounts. `ref` updates happen before `componentDidMount` or `componentDidUpdate` lifecycle methods.
 
-#### Adding a Ref to a Class Component {#adding-a-ref-to-a-class-component}
+#### Adding a Ref to a Class Component
 
 If we wanted to wrap the `CustomTextInput` above to simulate it being clicked immediately after mounting, we could use a ref to get access to the custom input and call its `focusTextInput` method manually:
 
@@ -138,7 +138,7 @@ class CustomTextInput extends React.Component {
 }
 ```
 
-#### Refs and Function Components {#refs-and-function-components}
+#### Refs and Function Components
 
 **You may not use the `ref` attribute on function components** because they don't have instances:
 
@@ -189,7 +189,7 @@ function CustomTextInput(props) {
 }
 ```
 
-### Exposing DOM Refs to Parent Components {#exposing-dom-refs-to-parent-components}
+### Exposing DOM Refs to Parent Components
 
 In rare cases, you might want to have access to a child's DOM node from a parent component. This is generally not recommended because it breaks component encapsulation, but it can occasionally be useful for triggering focus or measuring the size or position of a child DOM node.
 
@@ -201,7 +201,7 @@ If you use React 16.2 or lower, or if you need more flexibility than provided by
 
 When possible, we advise against exposing DOM nodes, but it can be a useful escape hatch. Note that this approach requires you to add some code to the child component. If you have absolutely no control over the child component implementation, your last option is to use [`findDOMNode()`](/docs/react-dom.html#finddomnode), but it is discouraged and deprecated in [`StrictMode`](/docs/strict-mode.html#warning-about-deprecated-finddomnode-usage).
 
-### Callback Refs {#callback-refs}
+### Callback Refs
 
 React also supports another way to set refs called "callback refs", which gives more fine-grain control over when refs are set and unset.
 
@@ -277,7 +277,7 @@ class Parent extends React.Component {
 
 In the example above, `Parent` passes its ref callback as an `inputRef` prop to the `CustomTextInput`, and the `CustomTextInput` passes the same function as a special `ref` attribute to the `<input>`. As a result, `this.inputElement` in `Parent` will be set to the DOM node corresponding to the `<input>` element in the `CustomTextInput`.
 
-### Legacy API: String Refs {#legacy-api-string-refs}
+### Legacy API: String Refs
 
 If you worked with React before, you might be familiar with an older API where the `ref` attribute is a string, like `"textInput"`, and the DOM node is accessed as `this.refs.textInput`. We advise against it because string refs have [some issues](https://github.com/facebook/react/pull/8333#issuecomment-271648615), are considered legacy, and **are likely to be removed in one of the future releases**. 
 
@@ -285,6 +285,6 @@ If you worked with React before, you might be familiar with an older API where t
 >
 > If you're currently using `this.refs.textInput` to access refs, we recommend using either the [callback pattern](#callback-refs) or the [`createRef` API](#creating-refs) instead.
 
-### Caveats with callback refs {#caveats-with-callback-refs}
+### Caveats with callback refs
 
 If the `ref` callback is defined as an inline function, it will get called twice during updates, first with `null` and then again with the DOM element. This is because a new instance of the function is created with each render, so React needs to clear the old ref and set up the new one. You can avoid this by defining the `ref` callback as a bound method on the class, but note that it shouldn't matter in most cases.
diff --git a/content/docs/render-props.md b/content/docs/render-props.md
index c9b6f9c041..ba396ce12d 100644
--- a/content/docs/render-props.md
+++ b/content/docs/render-props.md
@@ -18,7 +18,7 @@ Libraries that use render props include [React Router](https://reacttraining.com
 
 In this document, we’ll discuss why render props are useful, and how to write your own.
 
-## Use Render Props for Cross-Cutting Concerns {#use-render-props-for-cross-cutting-concerns}
+## Use Render Props for Cross-Cutting Concerns
 
 Components are the primary unit of code reuse in React, but it's not always obvious how to share the state or behavior that one component encapsulates to other components that need that same state.
 
@@ -235,7 +235,7 @@ function withMouse(Component) {
 
 So using a render prop makes it possible to use either pattern.
 
-## Using Props Other Than `render` {#using-props-other-than-render}
+## Using Props Other Than `render`
 
 It's important to remember that just because the pattern is called "render props" you don't *have to use a prop named `render` to use this pattern*. In fact, [*any* prop that is a function that a component uses to know what to render is technically a "render prop"](https://cdb.reacttraining.com/use-a-render-prop-50de598f11ce).
 
@@ -267,9 +267,9 @@ Mouse.propTypes = {
 };
 ```
 
-## Caveats {#caveats}
+## Caveats
 
-### Be careful when using Render Props with React.PureComponent {#be-careful-when-using-render-props-with-reactpurecomponent}
+### Be careful when using Render Props with React.PureComponent
 
 Using a render prop can negate the advantage that comes from using [`React.PureComponent`](/docs/react-api.html#reactpurecomponent) if you create the function inside a `render` method. This is because the shallow prop comparison will always return `false` for new props, and each `render` in this case will generate a new value for the render prop.
 
diff --git a/content/docs/rendering-elements.md b/content/docs/rendering-elements.md
index 34bb62b7c5..d56b00001e 100644
--- a/content/docs/rendering-elements.md
+++ b/content/docs/rendering-elements.md
@@ -22,7 +22,7 @@ Unlike browser DOM elements, React elements are plain objects, and are cheap to
 >
 >One might confuse elements with a more widely known concept of "components". We will introduce components in the [next section](/docs/components-and-props.html). Elements are what components are "made of", and we encourage you to read this section before jumping ahead.
 
-## Rendering an Element into the DOM {#rendering-an-element-into-the-dom}
+## Rendering an Element into the DOM
 
 Let's say there is a `<div>` somewhere in your HTML file:
 
@@ -42,7 +42,7 @@ To render a React element into a root DOM node, pass both to `ReactDOM.render()`
 
 It displays "Hello, world" on the page.
 
-## Updating the Rendered Element {#updating-the-rendered-element}
+## Updating the Rendered Element
 
 React elements are [immutable](https://en.wikipedia.org/wiki/Immutable_object). Once you create an element, you can't change its children or attributes. An element is like a single frame in a movie: it represents the UI at a certain point in time.
 
@@ -62,7 +62,7 @@ It calls `ReactDOM.render()` every second from a [`setInterval()`](https://devel
 >
 >We recommend that you don't skip topics because they build on each other.
 
-## React Only Updates What's Necessary {#react-only-updates-whats-necessary}
+## React Only Updates What's Necessary
 
 React DOM compares the element and its children to the previous one, and only applies the DOM updates necessary to bring the DOM to the desired state.
 
diff --git a/content/docs/state-and-lifecycle.md b/content/docs/state-and-lifecycle.md
index dd5e2238c0..c58efae616 100644
--- a/content/docs/state-and-lifecycle.md
+++ b/content/docs/state-and-lifecycle.md
@@ -74,7 +74,7 @@ State is similar to props, but it is private and fully controlled by the compone
 
 We [mentioned before](/docs/components-and-props.html#functional-and-class-components) that components defined as classes have some additional features. Local state is exactly that: a feature available only to classes.
 
-## Converting a Function to a Class {#converting-a-function-to-a-class}
+## Converting a Function to a Class
 
 You can convert a function component like `Clock` to a class in five steps:
 
@@ -107,7 +107,7 @@ class Clock extends React.Component {
 
 The `render` method will be called each time an update happens, but as long as we render `<Clock />` into the same DOM node, only a single instance of the `Clock` class will be used. This lets us use additional features such as local state and lifecycle methods.
 
-## Adding Local State to a Class {#adding-local-state-to-a-class}
+## Adding Local State to a Class
 
 We will move the `date` from props to state in three steps:
 
@@ -197,7 +197,7 @@ ReactDOM.render(
 
 Next, we'll make the `Clock` set up its own timer and update itself every second.
 
-## Adding Lifecycle Methods to a Class {#adding-lifecycle-methods-to-a-class}
+## Adding Lifecycle Methods to a Class
 
 In applications with many components, it's very important to free up resources taken by the components when they are destroyed.
 
@@ -318,11 +318,11 @@ Let's quickly recap what's going on and the order in which the methods are calle
 
 5) If the `Clock` component is ever removed from the DOM, React calls the `componentWillUnmount()` lifecycle method so the timer is stopped.
 
-## Using State Correctly {#using-state-correctly}
+## Using State Correctly
 
 There are three things you should know about `setState()`.
 
-### Do Not Modify State Directly {#do-not-modify-state-directly}
+### Do Not Modify State Directly
 
 For example, this will not re-render a component:
 
@@ -340,7 +340,7 @@ this.setState({comment: 'Hello'});
 
 The only place where you can assign `this.state` is the constructor.
 
-### State Updates May Be Asynchronous {#state-updates-may-be-asynchronous}
+### State Updates May Be Asynchronous
 
 React may batch multiple `setState()` calls into a single update for performance.
 
@@ -375,7 +375,7 @@ this.setState(function(state, props) {
 });
 ```
 
-### State Updates are Merged {#state-updates-are-merged}
+### State Updates are Merged
 
 When you call `setState()`, React merges the object you provide into the current state.
 
@@ -411,7 +411,7 @@ Then you can update them independently with separate `setState()` calls:
 
 The merging is shallow, so `this.setState({comments})` leaves `this.state.posts` intact, but completely replaces `this.state.comments`.
 
-## The Data Flows Down {#the-data-flows-down}
+## The Data Flows Down
 
 Neither parent nor child components can know if a certain component is stateful or stateless, and they shouldn't care whether it is defined as a function or a class.
 
diff --git a/content/docs/static-type-checking.md b/content/docs/static-type-checking.md
index b01b92fec9..b05a4b1a93 100644
--- a/content/docs/static-type-checking.md
+++ b/content/docs/static-type-checking.md
@@ -8,7 +8,7 @@ next: refs-and-the-dom.html
 
 Static type checkers like [Flow](https://flow.org/) and [TypeScript](https://www.typescriptlang.org/) identify certain types of problems before you even run your code. They can also improve developer workflow by adding features like auto-completion. For this reason, we recommend using Flow or TypeScript instead of `PropTypes` for larger code bases.
 
-## Flow {#flow}
+## Flow
 
 [Flow](https://flow.org/) is a static type checker for your JavaScript code. It is developed at Facebook and is often used with React. It lets you annotate the variables, functions, and React components with a special type syntax, and catch mistakes early. You can read an [introduction to Flow](https://flow.org/en/docs/getting-started/) to learn its basics.
 
@@ -20,7 +20,7 @@ To use Flow, you need to:
 
 We will explain these steps below in detail.
 
-### Adding Flow to a Project {#adding-flow-to-a-project}
+### Adding Flow to a Project
 
 First, navigate to your project directory in the terminal. You will need to run the following command:
 
@@ -67,17 +67,17 @@ npm run flow init
 
 This command will create a Flow configuration file that you will need to commit.
 
-### Stripping Flow Syntax from the Compiled Code {#stripping-flow-syntax-from-the-compiled-code}
+### Stripping Flow Syntax from the Compiled Code
 
 Flow extends the JavaScript language with a special syntax for type annotations. However, browsers aren't aware of this syntax, so we need to make sure it doesn't end up in the compiled JavaScript bundle that is sent to the browser.
 
 The exact way to do this depends on the tools you use to compile JavaScript.
 
-#### Create React App {#create-react-app}
+#### Create React App
 
 If your project was set up using [Create React App](https://github.com/facebookincubator/create-react-app), congratulations! The Flow annotations are already being stripped by default so you don't need to do anything else in this step.
 
-#### Babel {#babel}
+#### Babel
 
 >Note:
 >
@@ -114,11 +114,11 @@ This will let you use the Flow syntax in your code.
 >
 >Flow does not require the `react` preset, but they are often used together. Flow itself understands JSX syntax out of the box.
 
-#### Other Build Setups {#other-build-setups}
+#### Other Build Setups
 
 If you don't use either Create React App or Babel, you can use [flow-remove-types](https://github.com/flowtype/flow-remove-types) to strip the type annotations.
 
-### Running Flow {#running-flow}
+### Running Flow
 
 If you followed the instructions above, you should be able to run Flow for the first time.
 
@@ -139,7 +139,7 @@ No errors!
 ✨  Done in 0.17s.
 ```
 
-### Adding Flow Type Annotations {#adding-flow-type-annotations}
+### Adding Flow Type Annotations
 
 By default, Flow only checks the files that include this annotation:
 
@@ -158,7 +158,7 @@ Now you're all set! We recommend to check out the following resources to learn m
 * [Flow Documentation: React](https://flow.org/en/docs/react/)
 * [Linting in Flow](https://medium.com/flow-type/linting-in-flow-7709d7a7e969)
 
-## TypeScript {#typescript}
+## TypeScript
 
 [TypeScript](https://www.typescriptlang.org/) is a programming language developed by Microsoft. It is a typed superset of JavaScript, and includes its own compiler. Being a typed language, TypeScript can catch errors and bugs at build time, long before your app goes live. You can learn more about using TypeScript with React [here](https://github.com/Microsoft/TypeScript-React-Starter#typescript-react-starter).
 
@@ -170,7 +170,7 @@ To use TypeScript, you need to:
 
 Let's go over these in detail.
 
-### Using TypeScript with Create React App {#using-typescript-with-create-react-app}
+### Using TypeScript with Create React App
 
 Create React App supports TypeScript out of the box.
 
@@ -187,7 +187,7 @@ You can also add it to an **existing Create React App project**, [as documented
 >If you use Create React App, you can **skip the rest of this page**. It describes the manual setup which doesn't apply to Create React App users.
 
 
-### Adding TypeScript to a Project {#adding-typescript-to-a-project}
+### Adding TypeScript to a Project
 It all begins with running one command in your terminal.
 
 If you use [Yarn](https://yarnpkg.com/), run:
@@ -215,7 +215,7 @@ Congrats! You've installed the latest version of TypeScript into your project. I
 }
 ```
 
-### Configuring the TypeScript Compiler {#configuring-the-typescript-compiler}
+### Configuring the TypeScript Compiler
 The compiler is of no help to us until we tell it what to do. In TypeScript, these rules are defined in a special file called `tsconfig.json`. To generate this file run:
 
 ```bash
@@ -255,12 +255,12 @@ Great! Now when we run our build script the compiler will output the generated j
 
 Generally, you don't want to keep the generated javascript in your source control, so be sure to add the build folder to your `.gitignore`.
 
-### File extensions {#file-extensions}
+### File extensions
 In React, you most likely write your components in a `.js` file. In TypeScript we have 2 file extensions:
 
 `.ts` is the default file extension while `.tsx` is a special extension used for files which contain `JSX`.
 
-### Running TypeScript {#running-typescript}
+### Running TypeScript
 
 If you followed the instructions above, you should be able to run TypeScript for the first time.
 
@@ -277,7 +277,7 @@ npm run build
 If you see no output, it means that it completed successfully.
 
 
-### Type Definitions {#type-definitions}
+### Type Definitions
 To be able to show errors and hints from other packages, the compiler relies on declaration files. A declaration file provides all the type information about a library. This enables us to use javascript libraries like those on npm in our project. 
 
 There are two main ways to get declarations for a library:
@@ -310,18 +310,18 @@ You are now ready to code! We recommend to check out the following resources to
 * [TypeScript Documentation: Migrating from Javascript](https://www.typescriptlang.org/docs/handbook/migrating-from-javascript.html)
 * [TypeScript Documentation: React and Webpack](https://www.typescriptlang.org/docs/handbook/react-&-webpack.html)
 
-## Reason {#reason}
+## Reason
 
 [Reason](https://reasonml.github.io/) is not a new language; it's a new syntax and toolchain powered by the battle-tested language, [OCaml](https://ocaml.org/). Reason gives OCaml a familiar syntax geared toward JavaScript programmers, and caters to the existing NPM/Yarn workflow folks already know.
 
 Reason is developed at Facebook, and is used in some of its products like Messenger. It is still somewhat experimental but it has [dedicated React bindings](https://reasonml.github.io/reason-react/) maintained by Facebook and a [vibrant community](https://reasonml.github.io/docs/en/community.html).
 
-## Kotlin {#kotlin}
+## Kotlin
 
 [Kotlin](https://kotlinlang.org/) is a statically typed language developed by JetBrains. Its target platforms include the JVM, Android, LLVM, and [JavaScript](https://kotlinlang.org/docs/reference/js-overview.html). 
 
 JetBrains develops and maintains several tools specifically for the React community: [React bindings](https://github.com/JetBrains/kotlin-wrappers) as well as [Create React Kotlin App](https://github.com/JetBrains/create-react-kotlin-app). The latter helps you start building React apps with Kotlin with no build configuration.
 
-## Other Languages {#other-languages}
+## Other Languages
 
 Note there are other statically typed languages that compile to JavaScript and are thus React compatible. For example, [F#/Fable](http://fable.io) with [elmish-react](https://elmish.github.io/react). Check out their respective sites for more information, and feel free to add more statically typed languages that work with React to this page!
diff --git a/content/docs/strict-mode.md b/content/docs/strict-mode.md
index 8d2752b356..09b3b9e5db 100644
--- a/content/docs/strict-mode.md
+++ b/content/docs/strict-mode.md
@@ -24,7 +24,7 @@ In the above example, strict mode checks will *not* be run against the `Header`
 
 Additional functionality will be added with future releases of React.
 
-### Identifying unsafe lifecycles {#identifying-unsafe-lifecycles}
+### Identifying unsafe lifecycles
 
 As explained [in this blog post](/blog/2018/03/27/update-on-async-rendering.html), certain legacy lifecycle methods are unsafe for use in async React applications. However, if your application uses third party libraries, it can be difficult to ensure that these lifecycles aren't being used. Fortunately, strict mode can help with this!
 
@@ -34,7 +34,7 @@ When strict mode is enabled, React compiles a list of all class components using
 
 Addressing the issues identified by strict mode _now_ will make it easier for you to take advantage of async rendering in future releases of React.
 
-### Warning about legacy string ref API usage {#warning-about-legacy-string-ref-api-usage}
+### Warning about legacy string ref API usage
 
 Previously, React provided two ways for managing refs: the legacy string ref API and the callback API. Although the string ref API was the more convenient of the two, it had [several downsides](https://github.com/facebook/react/issues/1373) and so our official recommendation was to [use the callback form instead](/docs/refs-and-the-dom.html#legacy-api-string-refs).
 
@@ -51,7 +51,7 @@ Since object refs were largely added as a replacement for string refs, strict mo
 
 [Learn more about the new `createRef` API here.](/docs/refs-and-the-dom.html)
 
-### Warning about deprecated findDOMNode usage {#warning-about-deprecated-finddomnode-usage}
+### Warning about deprecated findDOMNode usage
 
 React used to support `findDOMNode` to search the tree for a DOM node given a class instance. Normally you don't need this because you can [attach a ref directly to a DOM node](/docs/refs-and-the-dom.html#creating-refs).
 
@@ -77,7 +77,7 @@ class MyComponent extends React.Component {
 >
 > In CSS, the [`display: contents`](https://developer.mozilla.org/en-US/docs/Web/CSS/display#display_contents) attribute can be used if you don't want the node to be part of the layout.
 
-### Detecting unexpected side effects {#detecting-unexpected-side-effects}
+### Detecting unexpected side effects
 
 Conceptually, React does work in two phases:
 * The **render** phase determines what changes need to be made to e.g. the DOM. During this phase, React calls `render` and then compares the result to the previous render.
@@ -115,7 +115,7 @@ At first glance, this code might not seem problematic. But if `SharedApplication
 
 By intentionally double-invoking methods like the component constructor, strict mode makes patterns like this easier to spot.
 
-### Detecting legacy context API {#detecting-legacy-context-api}
+### Detecting legacy context API
 
 The legacy context API is error-prone, and will be removed in a future major version. It still works for all 16.x releases but will show this warning message in strict mode:
 
diff --git a/content/docs/thinking-in-react.md b/content/docs/thinking-in-react.md
index 3e054806a9..53caa2b208 100644
--- a/content/docs/thinking-in-react.md
+++ b/content/docs/thinking-in-react.md
@@ -12,7 +12,7 @@ React is, in our opinion, the premier way to build big, fast Web apps with JavaS
 
 One of the many great parts of React is how it makes you think about apps as you build them. In this document, we'll walk you through the thought process of building a searchable product data table using React.
 
-## Start With A Mock {#start-with-a-mock}
+## Start With A Mock
 
 Imagine that we already have a JSON API and a mock from our designer. The mock looks like this:
 
@@ -31,7 +31,7 @@ Our JSON API returns some data that looks like this:
 ];
 ```
 
-## Step 1: Break The UI Into A Component Hierarchy {#step-1-break-the-ui-into-a-component-hierarchy}
+## Step 1: Break The UI Into A Component Hierarchy
 
 The first thing you'll want to do is to draw boxes around every component (and subcomponent) in the mock and give them all names. If you're working with a designer, they may have already done this, so go talk to them! Their Photoshop layer names may end up being the names of your React components!
 
@@ -59,7 +59,7 @@ Now that we've identified the components in our mock, let's arrange them into a
       * `ProductCategoryRow`
       * `ProductRow`
 
-## Step 2: Build A Static Version in React {#step-2-build-a-static-version-in-react}
+## Step 2: Build A Static Version in React
 
 <p data-height="600" data-theme-id="0" data-slug-hash="BwWzwm" data-default-tab="js" data-user="lacker" data-embed-version="2" class="codepen">See the Pen <a href="https://codepen.io/gaearon/pen/BwWzwm">Thinking In React: Step 2</a> on <a href="http://codepen.io">CodePen</a>.</p>
 <script async src="https://production-assets.codepen.io/assets/embed/ei.js"></script>
@@ -74,11 +74,11 @@ At the end of this step, you'll have a library of reusable components that rende
 
 Simply refer to the [React docs](/docs/) if you need help executing this step.
 
-### A Brief Interlude: Props vs State {#a-brief-interlude-props-vs-state}
+### A Brief Interlude: Props vs State
 
 There are two types of "model" data in React: props and state. It's important to understand the distinction between the two; skim [the official React docs](/docs/interactivity-and-dynamic-uis.html) if you aren't sure what the difference is.
 
-## Step 3: Identify The Minimal (but complete) Representation Of UI State {#step-3-identify-the-minimal-but-complete-representation-of-ui-state}
+## Step 3: Identify The Minimal (but complete) Representation Of UI State
 
 To make your UI interactive, you need to be able to trigger changes to your underlying data model. React makes this easy with **state**.
 
@@ -104,7 +104,7 @@ So finally, our state is:
   * The search text the user has entered
   * The value of the checkbox
 
-## Step 4: Identify Where Your State Should Live {#step-4-identify-where-your-state-should-live}
+## Step 4: Identify Where Your State Should Live
 
 <p data-height="600" data-theme-id="0" data-slug-hash="qPrNQZ" data-default-tab="js" data-user="lacker" data-embed-version="2" class="codepen">See the Pen <a href="https://codepen.io/gaearon/pen/qPrNQZ">Thinking In React: Step 4</a> on <a href="http://codepen.io">CodePen</a>.</p>
 
@@ -129,7 +129,7 @@ Cool, so we've decided that our state lives in `FilterableProductTable`. First,
 
 You can start seeing how your application will behave: set `filterText` to `"ball"` and refresh your app. You'll see that the data table is updated correctly.
 
-## Step 5: Add Inverse Data Flow {#step-5-add-inverse-data-flow}
+## Step 5: Add Inverse Data Flow
 
 <p data-height="600" data-theme-id="0" data-slug-hash="LzWZvb" data-default-tab="js,result" data-user="rohan10" data-embed-version="2" data-pen-title="Thinking In React: Step 5" class="codepen">See the Pen <a href="https://codepen.io/gaearon/pen/LzWZvb">Thinking In React: Step 5</a> on <a href="http://codepen.io">CodePen</a>.</p>
 
@@ -143,6 +143,6 @@ Let's think about what we want to happen. We want to make sure that whenever the
 
 Though this sounds complex, it's really just a few lines of code. And it's really explicit how your data is flowing throughout the app.
 
-## And That's It {#and-thats-it}
+## And That's It
 
 Hopefully, this gives you an idea of how to think about building components and applications with React. While it may be a little more typing than you're used to, remember that code is read far more than it's written, and it's extremely easy to read this modular, explicit code. As you start to build large libraries of components, you'll appreciate this explicitness and modularity, and with code reuse, your lines of code will start to shrink. :)
diff --git a/content/docs/typechecking-with-proptypes.md b/content/docs/typechecking-with-proptypes.md
index 4004e7820c..b2c72c6210 100644
--- a/content/docs/typechecking-with-proptypes.md
+++ b/content/docs/typechecking-with-proptypes.md
@@ -32,7 +32,7 @@ Greeting.propTypes = {
 
 `PropTypes` exports a range of validators that can be used to make sure the data you receive is valid. In this example, we're using `PropTypes.string`. When an invalid value is provided for a prop, a warning will be shown in the JavaScript console. For performance reasons, `propTypes` is only checked in development mode.
 
-### PropTypes {#proptypes}
+### PropTypes
 
 Here is an example documenting the different validators provided:
 
@@ -119,7 +119,7 @@ MyComponent.propTypes = {
 };
 ```
 
-### Requiring Single Child {#requiring-single-child}
+### Requiring Single Child
 
 With `PropTypes.element` you can specify that only a single child can be passed to a component as children.
 
@@ -143,7 +143,7 @@ MyComponent.propTypes = {
 };
 ```
 
-### Default Prop Values {#default-prop-values}
+### Default Prop Values
 
 You can define default values for your `props` by assigning to the special `defaultProps` property:
 
diff --git a/content/docs/uncontrolled-components.md b/content/docs/uncontrolled-components.md
index 2b1c974052..fc904417ee 100644
--- a/content/docs/uncontrolled-components.md
+++ b/content/docs/uncontrolled-components.md
@@ -43,7 +43,7 @@ Since an uncontrolled component keeps the source of truth in the DOM, it is some
 
 If it's still not clear which type of component you should use for a particular situation, you might find [this article on controlled versus uncontrolled inputs](http://goshakkk.name/controlled-vs-uncontrolled-inputs-react/) to be helpful.
 
-### Default Values {#default-values}
+### Default Values
 
 In the React rendering lifecycle, the `value` attribute on form elements will override the value in the DOM. With an uncontrolled component, you often want React to specify the initial value, but leave subsequent updates uncontrolled. To handle this case, you can specify a `defaultValue` attribute instead of `value`.
 
@@ -66,7 +66,7 @@ render() {
 
 Likewise, `<input type="checkbox">` and `<input type="radio">` support `defaultChecked`, and `<select>` and `<textarea>` supports `defaultValue`.
 
-## The file input Tag {#the-file-input-tag}
+## The file input Tag
 
 In HTML, an `<input type="file">` lets the user choose one or more files from their device storage to be uploaded to a server or manipulated by JavaScript via the [File API](https://developer.mozilla.org/en-US/docs/Web/API/File/Using_files_from_web_applications).
 
diff --git a/content/docs/web-components.md b/content/docs/web-components.md
index cbfcc80e10..e0e8183b9b 100644
--- a/content/docs/web-components.md
+++ b/content/docs/web-components.md
@@ -10,7 +10,7 @@ React and [Web Components](https://developer.mozilla.org/en-US/docs/Web/Web_Comp
 
 Most people who use React don't use Web Components, but you may want to, especially if you are using third-party UI components that are written using Web Components.
 
-## Using Web Components in React {#using-web-components-in-react}
+## Using Web Components in React
 
 ```javascript
 class HelloMessage extends React.Component {
@@ -40,7 +40,7 @@ function BrickFlipbox() {
 }
 ```
 
-## Using React in your Web Components {#using-react-in-your-web-components}
+## Using React in your Web Components
 
 ```javascript
 class XSearch extends HTMLElement {
diff --git a/content/tutorial/tutorial.md b/content/tutorial/tutorial.md
index 0191348f00..3e9065555a 100644
--- a/content/tutorial/tutorial.md
+++ b/content/tutorial/tutorial.md
@@ -14,7 +14,7 @@ redirect_from:
 
 This tutorial doesn't assume any existing React knowledge.
 
-## Before We Start the Tutorial {#before-we-start-the-tutorial}
+## Before We Start the Tutorial
 
 We will build a small game during this tutorial. **You might be tempted to skip it because you're not building games -- but give it a chance.** The techniques you'll learn in the tutorial are fundamental to building any React apps, and mastering it will give you a deep understanding of React.
 
@@ -33,7 +33,7 @@ You don't have to complete all of the sections at once to get the value out of t
 
 It's fine to copy and paste code as you're following along the tutorial, but we recommend to type it by hand. This will help you develop a muscle memory and a stronger understanding.
 
-### What Are We Building? {#what-are-we-building}
+### What Are We Building?
 
 In this tutorial, we'll show how to build an interactive tic-tac-toe game with React.
 
@@ -43,17 +43,17 @@ We recommend that you check out the tic-tac-toe game before continuing with the
 
 You can close the tic-tac-toe game once you're familiar with it. We'll be starting from a simpler template in this tutorial. Our next step is to set you up so that you can start building the game.
 
-### Prerequisites {#prerequisites}
+### Prerequisites
 
 We'll assume that you have some familiarity with HTML and JavaScript, but you should be able to follow along even if you're coming from a different programming language. We'll also assume that you're familiar with programming concepts like functions, objects, arrays, and to a lesser extent, classes.
 
 If you need to review JavaScript, we recommend reading [this guide](https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript). Note that we're also using some features from ES6 -- a recent version of JavaScript. In this tutorial, we're using [arrow functions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions), [classes](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes), [`let`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let), and [`const`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const) statements. You can use the [Babel REPL](babel://es5-syntax-example) to check what ES6 code compiles to.
 
-## Setup for the Tutorial {#setup-for-the-tutorial}
+## Setup for the Tutorial
 
 There are two ways to complete this tutorial: you can either write the code in your browser, or you can set up a local development environment on your computer.
 
-### Setup Option 1: Write Code in the Browser {#setup-option-1-write-code-in-the-browser}
+### Setup Option 1: Write Code in the Browser
 
 This is the quickest way to get started!
 
@@ -61,7 +61,7 @@ First, open this **[Starter Code](https://codepen.io/gaearon/pen/oWWQNa?editors=
 
 You can now skip the second setup option, and go to the [Overview](#overview) section to get an overview of React.
 
-### Setup Option 2: Local Development Environment {#setup-option-2-local-development-environment}
+### Setup Option 2: Local Development Environment
 
 This is completely optional and not required for this tutorial!
 
@@ -116,15 +116,15 @@ We recommend following [these instructions](https://babeljs.io/docs/editors/) to
 
 </details>
 
-### Help, I'm Stuck! {#help-im-stuck}
+### Help, I'm Stuck!
 
 If you get stuck, check out the [community support resources](/community/support.html). In particular, [Reactiflux Chat](https://discord.gg/0ZcbPKXt5bZjGY5n) is a great way to get help quickly. If you don't receive an answer, or if you remain stuck, please file an issue, and we'll help you out.
 
-## Overview {#overview}
+## Overview
 
 Now that you're set up, let's get an overview of React!
 
-### What Is React? {#what-is-react}
+### What Is React?
 
 React is a declarative, efficient, and flexible JavaScript library for building user interfaces. It lets you compose complex UIs from small and isolated pieces of code called "components".
 
@@ -170,7 +170,7 @@ JSX comes with the full power of JavaScript. You can put *any* JavaScript expres
 
 The `ShoppingList` component above only renders built-in DOM components like `<div />` and `<li />`. But you can compose and render custom React components too. For example, we can now refer to the whole shopping list by writing `<ShoppingList />`. Each React component is encapsulated and can operate independently; this allows you to build complex UIs from simple components.
 
-## Inspecting the Starter Code {#inspecting-the-starter-code}
+## Inspecting the Starter Code
 
 If you're going to work on the tutorial **in your browser,** open this code in a new tab: **[Starter Code](https://codepen.io/gaearon/pen/oWWQNa?editors=0010)**. If you're going to work on the tutorial **locally,** instead open `src/index.js` in your project folder (you have already touched this file during the [setup](#setup-option-2-local-development-environment)).
 
@@ -184,7 +184,7 @@ By inspecting the code, you'll notice that we have three React components:
 
 The Square component renders a single `<button>` and the Board renders 9 squares. The Game component renders a board with placeholder values which we'll modify later. There are currently no interactive components.
 
-### Passing Data Through Props {#passing-data-through-props}
+### Passing Data Through Props
 
 Just to get our feet wet, let's try passing some data from our Board component to our Square component.
 
@@ -223,7 +223,7 @@ After: You should see a number in each square in the rendered output.
 
 Congratulations! You've just "passed a prop" from a parent Board component to a child Square component. Passing props is how information flows in React apps, from parents to children.
 
-### Making an Interactive Component {#making-an-interactive-component}
+### Making an Interactive Component
 
 Let's fill the Square component with an "X" when we click it. 
 First, change the button tag that is returned from the Square component's `render()` function to this:
@@ -325,7 +325,7 @@ When you call `setState` in a component, React automatically updates the child c
 
 **[View the full code at this point](https://codepen.io/gaearon/pen/VbbVLg?editors=0010)**
 
-### Developer Tools {#developer-tools}
+### Developer Tools
 
 The React Devtools extension for [Chrome](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi?hl=en) and [Firefox](https://addons.mozilla.org/en-US/firefox/addon/react-devtools/) lets you inspect a React component tree with your browser's developer tools.
 
@@ -342,11 +342,11 @@ After installing React DevTools, you can right-click on any element on the page,
 3. Click "Change View" and then choose "Debug mode".
 4. In the new tab that opens, the devtools should now have a React tab.
 
-## Completing the Game {#completing-the-game}
+## Completing the Game
 
 We now have the basic building blocks for our tic-tac-toe game. To have a complete game, we now need to alternate placing "X"s and "O"s on the board, and we need a way to determine a winner.
 
-### Lifting State Up {#lifting-state-up}
+### Lifting State Up
 
 Currently, each Square component maintains the game's state. To check for a winner, we'll maintain the value of each of the 9 squares in one location.
 
@@ -543,20 +543,20 @@ Since the Square components no longer maintain state, the Square components rece
 
 Note how in `handleClick`, we call `.slice()` to create a copy of the `squares` array to modify instead of modifying the existing array. We will explain why we create a copy of the `squares` array in the next section.
 
-### Why Immutability Is Important {#why-immutability-is-important}
+### Why Immutability Is Important
 
 In the previous code example, we suggested that you use the `.slice()` operator to create a copy of the `squares` array to modify instead of modifying the existing array. We'll now discuss immutability and why immutability is important to learn.
 
 There are generally two approaches to changing data. The first approach is to *mutate* the data by directly changing the data's values. The second approach is to replace the data with a new copy which has the desired changes.
 
-#### Data Change with Mutation {#data-change-with-mutation}
+#### Data Change with Mutation
 ```javascript
 var player = {score: 1, name: 'Jeff'};
 player.score = 2;
 // Now player is {score: 2, name: 'Jeff'}
 ```
 
-#### Data Change without Mutation {#data-change-without-mutation}
+#### Data Change without Mutation
 ```javascript
 var player = {score: 1, name: 'Jeff'};
 
@@ -569,23 +569,23 @@ var newPlayer = Object.assign({}, player, {score: 2});
 
 The end result is the same but by not mutating (or changing the underlying data) directly, we gain several benefits described below.
 
-#### Complex Features Become Simple {#complex-features-become-simple}
+#### Complex Features Become Simple
 
 Immutability makes complex features much easier to implement. Later in this tutorial, we will implement a "time travel" feature that allows us to review the tic-tac-toe game's history and "jump back" to previous moves. This functionality isn't specific to games -- an ability to undo and redo certain actions is a common requirement in applications. Avoiding direct data mutation lets us keep previous versions of the game's history intact, and reuse them later.
 
-#### Detecting Changes {#detecting-changes}
+#### Detecting Changes
 
 Detecting changes in mutable objects is difficult because they are modified directly. This detection requires the mutable object to be compared to previous copies of itself and the entire object tree to be traversed.
 
 Detecting changes in immutable objects is considerably easier. If the immutable object that is being referenced is different than the previous one, then the object has changed.
 
-#### Determining When to Re-render in React {#determining-when-to-re-render-in-react}
+#### Determining When to Re-render in React
 
 The main benefit of immutability is that it helps you build _pure components_ in React. Immutable data can easily determine if changes have been made which helps to determine when a component requires re-rendering.
 
 You can learn more about `shouldComponentUpdate()` and how you can build *pure components* by reading [Optimizing Performance](/docs/optimizing-performance.html#examples).
 
-### Function Components {#function-components}
+### Function Components
 
 We'll now change the Square to be a **function component**.
 
@@ -611,7 +611,7 @@ We have changed `this.props` to `props` both times it appears.
 >
 >When we modified the Square to be a function component, we also changed `onClick={() => this.props.onClick()}` to a shorter `onClick={props.onClick}` (note the lack of parentheses on *both* sides). In a class, we used an arrow function to access the correct `this` value, but in a function component we don't need to worry about `this`.
 
-### Taking Turns {#taking-turns}
+### Taking Turns
 
 We now need to fix an obvious defect in our tic-tac-toe game: the "O"s cannot be marked on the board.
 
@@ -710,7 +710,7 @@ class Board extends React.Component {
 
 **[View the full code at this point](https://codepen.io/gaearon/pen/KmmrBy?editors=0010)**
 
-### Declaring a Winner {#declaring-a-winner}
+### Declaring a Winner
 
 Now that we show which player's turn is next, we should also show when the game is won and there are no more turns to make. We can determine a winner by adding this helper function to the end of the file:
 
@@ -772,11 +772,11 @@ We can now change the Board's `handleClick` function to return early by ignoring
 
 Congratulations! You now have a working tic-tac-toe game. And you've just learned the basics of React too. So *you're* probably the real winner here.
 
-## Adding Time Travel {#adding-time-travel}
+## Adding Time Travel
 
 As a final exercise, let's make it possible to "go back in time" to the previous moves in the game.
 
-### Storing a History of Moves {#storing-a-history-of-moves}
+### Storing a History of Moves
 
 If we mutated the `squares` array, implementing time travel would be very difficult.
 
@@ -816,7 +816,7 @@ history = [
 
 Now we need to decide which component should own the `history` state.
 
-### Lifting State Up, Again {#lifting-state-up-again}
+### Lifting State Up, Again
 
 We'll want the top-level Game component to display a list of past moves. It will need access to the `history` to do that, so we will place the `history` state in the top-level Game component.
 
@@ -1002,7 +1002,7 @@ At this point, the Board component only needs the `renderSquare` and `render` me
 
 **[View the full code at this point](https://codepen.io/gaearon/pen/EmmOqJ?editors=0010)**
 
-### Showing the Past Moves {#showing-the-past-moves}
+### Showing the Past Moves
 
 Since we are recording the tic-tac-toe game's history, we can now display it to the player as a list of past moves.
 
@@ -1069,7 +1069,7 @@ For each move in the tic-tac-toes's game's history, we create a list item `<li>`
 
 Let's discuss what the above warning means.
 
-### Picking a Key {#picking-a-key}
+### Picking a Key
 
 When we render a list, React stores some information about each rendered list item. When we update a list, React needs to determine what has changed. We could have added, removed, re-arranged, or updated the list's items.
 
@@ -1105,7 +1105,7 @@ If no key is specified, React will present a warning and use the array index as
 Keys do not need to be globally unique; they only need to be unique between components and their siblings.
 
 
-### Implementing Time Travel {#implementing-time-travel}
+### Implementing Time Travel
 
 In the tic-tac-toe game's history, each past move has a unique ID associated with it: it's the sequential number of the move. The moves are never re-ordered, deleted, or inserted in the middle, so it's safe to use the move index as a key.
 
@@ -1203,7 +1203,7 @@ If we click on any step in the game's history, the tic-tac-toe board should imme
 
 **[View the full code at this point](https://codepen.io/gaearon/pen/gWWZgR?editors=0010)**
 
-### Wrapping Up {#wrapping-up}
+### Wrapping Up
 
 Congratulations! You've created a tic-tac-toe game that:
 
diff --git a/content/warnings/dont-call-proptypes.md b/content/warnings/dont-call-proptypes.md
index 07dfa33f0b..7eba370903 100644
--- a/content/warnings/dont-call-proptypes.md
+++ b/content/warnings/dont-call-proptypes.md
@@ -12,7 +12,7 @@ permalink: warnings/dont-call-proptypes.html
 
 In a future major release of React, the code that implements PropType validation functions will be stripped in production. Once this happens, any code that calls these functions manually (that isn't stripped in production) will throw an error.
 
-### Declaring PropTypes is still fine {#declaring-proptypes-is-still-fine}
+### Declaring PropTypes is still fine
 
 The normal usage of PropTypes is still supported:
 
@@ -24,7 +24,7 @@ Button.propTypes = {
 
 Nothing changes here.
 
-### Don’t call PropTypes directly {#dont-call-proptypes-directly}
+### Don’t call PropTypes directly
 
 Using PropTypes in any other way than annotating React components with them is no longer supported:
 
@@ -42,7 +42,7 @@ If you depend on using PropTypes like this, we encourage you to use or create a
 
 If you don't fix the warning, this code will crash in production with React 16.
 
-### If you don't call PropTypes directly but still get the warning {#if-you-dont-call-proptypes-directly-but-still-get-the-warning}
+### If you don't call PropTypes directly but still get the warning
 
 Inspect the stack trace produced by the warning. You will find the component definition responsible for the PropTypes direct call. Most likely, the issue is due to third-party PropTypes that wrap React’s PropTypes, for example:
 
@@ -57,7 +57,7 @@ Button.propTypes = {
 
 In this case, `ThirdPartyPropTypes.deprecated` is a wrapper calling `PropTypes.bool`. This pattern by itself is fine, but triggers a false positive because React thinks you are calling PropTypes directly. The next section explains how to fix this problem for a library implementing something like `ThirdPartyPropTypes`. If it's not a library you wrote, you can file an issue against it.
 
-### Fixing the false positive in third party PropTypes {#fixing-the-false-positive-in-third-party-proptypes}
+### Fixing the false positive in third party PropTypes
 
 If you are an author of a third party PropTypes library and you let consumers wrap existing React PropTypes, they might start seeing this warning coming from your library. This happens because React doesn't see a "secret" last argument that [it passes](https://github.com/facebook/react/pull/7132) to detect manual PropTypes calls.
 
diff --git a/content/warnings/invalid-hook-call-warning.md b/content/warnings/invalid-hook-call-warning.md
index 156578ec22..38808adecb 100644
--- a/content/warnings/invalid-hook-call-warning.md
+++ b/content/warnings/invalid-hook-call-warning.md
@@ -16,11 +16,11 @@ There are three common reasons you might be seeing it:
 
 Let's look at each of these cases.
 
-## Mismatching Versions of React and React DOM {#mismatching-versions-of-react-and-react-dom}
+## Mismatching Versions of React and React DOM
 
 You might be using a version of `react-dom` (< 16.8.0) or `react-native` (< 0.59) that doesn't yet support Hooks. You can run `npm ls react-dom` or `npm ls react-native` in your application folder to check which version you're using. If you find more than one of them, this might also create problems (more on that below).
 
-## Breaking the Rules of Hooks {#breaking-the-rules-of-hooks}
+## Breaking the Rules of Hooks
 
 You can only call Hooks **while React is rendering a function component**:
 
@@ -85,7 +85,7 @@ You can use the [`eslint-plugin-react-hooks` plugin](https://www.npmjs.com/packa
 >[Custom Hooks](/docs/hooks-custom.html) *may* call other Hooks (that's their whole purpose). This works because custom Hooks are also supposed to only be called while a function component is rendering.
 
 
-## Duplicate React {#duplicate-react}
+## Duplicate React
 
 In order for Hooks to work, the `react` import from your application code needs to resolve to the same module as the `react` import from inside the `react-dom` package.
 
@@ -117,6 +117,6 @@ This problem can also come up when you use `npm link` or an equivalent. In that
 >
 >In general, React supports using multiple independent copies on one page (for example, if an app and a third-party widget both use it). It only breaks if `require('react')` resolves differently between the component and the `react-dom` copy it was rendered with.
 
-## Other Causes {#other-causes}
+## Other Causes
 
 If none of this worked, please comment in [this issue](https://github.com/facebook/react/issues/13991) and we'll try to help. Try to create a small reproducing example — you might discover the problem as you're doing it.
diff --git a/content/warnings/legacy-factories.md b/content/warnings/legacy-factories.md
index a99d22e2f1..e26fed9def 100644
--- a/content/warnings/legacy-factories.md
+++ b/content/warnings/legacy-factories.md
@@ -14,7 +14,7 @@ function render() {
 }
 ```
 
-## JSX {#jsx}
+## JSX
 
 React components can no longer be called directly like this. Instead [you can use JSX](/docs/jsx-in-depth.html).
 
@@ -27,7 +27,7 @@ function render() {
 }
 ```
 
-## Without JSX {#without-jsx}
+## Without JSX
 
 If you don't want to, or can't use JSX, then you'll need to wrap your component in a factory before calling it:
 
@@ -42,7 +42,7 @@ function render() {
 
 This is an easy upgrade path if you have a lot of existing function calls.
 
-## Dynamic components without JSX {#dynamic-components-without-jsx}
+## Dynamic components without JSX
 
 If you get a component class from a dynamic source, then it might be unnecessary to create a factory that you immediately invoke. Instead you can just create your element inline:
 
@@ -54,6 +54,6 @@ function render(MyComponent) {
 }
 ```
 
-## In Depth {#in-depth}
+## In Depth
 
 [Read more about WHY we're making this change.](https://gist.github.com/sebmarkbage/d7bce729f38730399d28)
diff --git a/content/warnings/refs-must-have-owner.md b/content/warnings/refs-must-have-owner.md
index 9eda89c4c9..e95dff489c 100644
--- a/content/warnings/refs-must-have-owner.md
+++ b/content/warnings/refs-must-have-owner.md
@@ -22,7 +22,7 @@ This usually means one of three things:
 - You are trying to add a `ref` to an element that is being created outside of a component's render() function.
 - You have multiple (conflicting) copies of React loaded (eg. due to a misconfigured npm dependency)
 
-## Refs on Function Components {#refs-on-function-components}
+## Refs on Function Components
 
 If `<Foo>` is a function component, you can't add a ref to it:
 
@@ -33,7 +33,7 @@ If `<Foo>` is a function component, you can't add a ref to it:
 
 If you need to add a ref to a component, convert it to a class first, or consider not using refs as they are [rarely necessary](/docs/refs-and-the-dom.html#when-to-use-refs).
 
-## Strings Refs Outside the Render Method {#strings-refs-outside-the-render-method}
+## Strings Refs Outside the Render Method
 
 This usually means that you're trying to add a ref to a component that doesn't have an owner (that is, was not created inside of another component's `render` method). For example, this won't work:
 
@@ -56,7 +56,7 @@ ReactDOM.render(
 
 Consider if you [really need a ref](/docs/refs-and-the-dom.html#when-to-use-refs) before using this approach.
 
-## Multiple copies of React {#multiple-copies-of-react}
+## Multiple copies of React
 
 Bower does a good job of deduplicating dependencies, but npm does not. If you aren't doing anything (fancy) with refs, there is a good chance that the problem is not with your refs, but rather an issue with having multiple copies of React loaded into your project. Sometimes, when you pull in a third-party module via npm, you will get a duplicate copy of the dependency library, and this can create problems.
 

From 901ee97a0a009b32c97dc874b25b58536d0418ac Mon Sep 17 00:00:00 2001
From: Nat Alison <tesseralis@gmail.com>
Date: Wed, 6 Feb 2019 18:01:04 -0800
Subject: [PATCH 50/54] try again

---
 scripts/generateHeadingIDs.js | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/scripts/generateHeadingIDs.js b/scripts/generateHeadingIDs.js
index a1b04c9498..a8130edf05 100644
--- a/scripts/generateHeadingIDs.js
+++ b/scripts/generateHeadingIDs.js
@@ -31,9 +31,11 @@ function addHeaderID(line, slugger) {
   if (/\{#[^}]+\}/.test(line)) {
     return line;
   }
-  const headingText = stripLinks(line.slice(line.indexOf(' ')).trim());
+  const headingText = line.slice(line.indexOf(' ')).trim();
   const headingLevel = line.slice(0, line.indexOf(' '));
-  return `${headingLevel} ${headingText} {#${slugger.slug(headingText)}}`;
+  return `${headingLevel} ${headingText} {#${slugger.slug(
+    stripLinks(headingText),
+  )}}`;
 }
 
 function addHeaderIDs(lines) {

From 25df15b83edb903862504457b107682faf4f676b Mon Sep 17 00:00:00 2001
From: Nat Alison <tesseralis@gmail.com>
Date: Wed, 6 Feb 2019 18:03:29 -0800
Subject: [PATCH 51/54] reapply, correctly generating links

---
 content/blog/2013-06-05-why-react.md          |   8 +-
 content/blog/2013-06-12-community-roundup.md  |   8 +-
 .../blog/2013-06-19-community-roundup-2.md    |  12 +-
 content/blog/2013-06-21-react-v0-3-3.md       |   6 +-
 .../blog/2013-06-27-community-roundup-3.md    |  12 +-
 ...13-07-02-react-v0-4-autobind-by-default.md |   4 +-
 .../blog/2013-07-03-community-roundup-4.md    |   8 +-
 ...v0-4-prop-validation-and-default-values.md |   4 +-
 content/blog/2013-07-17-react-v0-4-0.md       |   6 +-
 .../blog/2013-07-23-community-roundup-5.md    |  12 +-
 content/blog/2013-07-26-react-v0-4-1.md       |   4 +-
 ...7-30-use-react-and-jsx-in-ruby-on-rails.md |   8 +-
 .../blog/2013-08-05-community-roundup-6.md    |  10 +-
 ...se-react-and-jsx-in-python-applications.md |   6 +-
 .../blog/2013-08-26-community-roundup-7.md    |   6 +-
 .../blog/2013-09-24-community-roundup-8.md    |  12 +-
 content/blog/2013-10-16-react-v0.5.0.md       |  10 +-
 content/blog/2013-10-29-react-v0-5-1.md       |   6 +-
 content/blog/2013-10-3-community-roundup-9.md |  12 +-
 .../blog/2013-11-06-community-roundup-10.md   |  16 +--
 .../blog/2013-11-18-community-roundup-11.md   |  18 +--
 content/blog/2013-12-19-react-v0.8.0.md       |  10 +-
 .../blog/2013-12-23-community-roundup-12.md   |  18 +--
 .../blog/2013-12-30-community-roundup-13.md   |  16 +--
 .../blog/2014-01-06-community-roundup-14.md   |  16 +--
 .../blog/2014-02-05-community-roundup-15.md   |  22 +--
 .../blog/2014-02-15-community-roundup-16.md   |  20 +--
 content/blog/2014-02-16-react-v0.9-rc1.md     |  16 +--
 content/blog/2014-02-20-react-v0.9.md         |  18 +--
 .../blog/2014-02-24-community-roundup-17.md   |  40 +++---
 .../blog/2014-03-14-community-roundup-18.md   |  30 ++--
 content/blog/2014-03-19-react-v0.10-rc1.md    |  14 +-
 content/blog/2014-03-21-react-v0.10.md        |  14 +-
 content/blog/2014-03-28-the-road-to-1.0.md    |  16 +--
 .../blog/2014-06-27-community-roundup-19.md   |  18 +--
 content/blog/2014-07-13-react-v0.11-rc1.md    |  26 ++--
 content/blog/2014-07-17-react-v0.11.md        |  30 ++--
 content/blog/2014-07-25-react-v0.11.1.md      |   8 +-
 .../blog/2014-07-28-community-roundup-20.md   |  20 +--
 .../blog/2014-08-03-community-roundup-21.md   |  20 +--
 .../blog/2014-09-12-community-round-up-22.md  |  18 +--
 content/blog/2014-09-16-react-v0.11.2.md      |   8 +-
 .../2014-10-14-introducing-react-elements.md  |  20 +--
 content/blog/2014-10-16-react-v0.12-rc1.md    |  22 +--
 .../blog/2014-10-17-community-roundup-23.md   |  28 ++--
 content/blog/2014-10-28-react-v0.12.md        |  36 ++---
 .../blog/2014-11-25-community-roundup-24.md   |  22 +--
 content/blog/2014-12-18-react-v0.12.2.md      |   6 +-
 ...-19-react-js-conf-diversity-scholarship.md |   6 +-
 .../blog/2015-01-27-react-v0.13.0-beta-1.md   |  12 +-
 .../2015-02-18-react-conf-roundup-2015.md     |   4 +-
 ...015-02-20-introducing-relay-and-graphql.md |  12 +-
 content/blog/2015-02-24-react-v0.13-rc1.md    |  24 ++--
 .../2015-02-24-streamlining-react-elements.md |  40 +++---
 content/blog/2015-03-03-react-v0.13-rc2.md    |   2 +-
 .../blog/2015-03-04-community-roundup-25.md   |  10 +-
 content/blog/2015-03-10-react-v0.13.md        |  26 ++--
 content/blog/2015-03-16-react-v0.13.1.md      |  14 +-
 ...lding-the-facebook-news-feed-with-relay.md |  16 +--
 .../blog/2015-03-30-community-roundup-26.md   |  22 +--
 content/blog/2015-04-17-react-native-v0.4.md  |   4 +-
 content/blog/2015-04-18-react-v0.13.2.md      |  14 +-
 .../blog/2015-05-01-graphql-introduction.md   |  10 +-
 content/blog/2015-05-08-react-v0.13.3.md      |  12 +-
 ...deprecating-jstransform-and-react-tools.md |   8 +-
 content/blog/2015-07-03-react-v0.14-beta-1.md |   4 +-
 .../2015-08-03-new-react-devtools-beta.md     |  20 +--
 .../2015-08-11-relay-technical-preview.md     |   8 +-
 .../2015-09-02-new-react-developer-tools.md   |   2 +-
 content/blog/2015-09-10-react-v0.14-rc1.md    |  16 +--
 .../blog/2015-09-14-community-roundup-27.md   |  12 +-
 ...15-10-01-react-render-and-top-level-api.md |   4 +-
 content/blog/2015-10-07-react-v0.14.md        |  18 +--
 ...5-10-19-reactiflux-is-moving-to-discord.md |  28 ++--
 content/blog/2015-10-28-react-v0.14.1.md      |  10 +-
 content/blog/2015-11-02-react-v0.14.2.md      |   4 +-
 content/blog/2015-11-18-react-v0.14.3.md      |  10 +-
 ...eact-js-conf-2016-diversity-scholarship.md |   6 +-
 ...react-components-elements-and-instances.md |  18 +--
 content/blog/2015-12-29-react-v0.14.4.md      |   8 +-
 .../blog/2016-02-19-new-versioning-scheme.md  |  10 +-
 content/blog/2016-03-07-react-v15-rc1.md      |  16 +--
 content/blog/2016-03-16-react-v15-rc2.md      |   2 +-
 content/blog/2016-03-29-react-v0.14.8.md      |   4 +-
 content/blog/2016-04-07-react-v15.md          |  18 +--
 content/blog/2016-04-08-react-v15.0.1.md      |   6 +-
 .../2016-07-13-mixins-considered-harmful.md   |  36 ++---
 ...07-22-create-apps-with-no-configuration.md |  24 ++--
 .../2016-08-05-relay-state-of-the-state.md    |  14 +-
 .../blog/2016-09-28-our-first-50000-stars.md  |  12 +-
 content/blog/2016-11-16-react-v15.4.0.md      |  20 +--
 content/blog/2017-04-07-react-v15.5.0.md      |  26 ++--
 ...017-05-18-whats-new-in-create-react-app.md |  16 +--
 content/blog/2017-06-13-react-v15.6.0.md      |  16 +--
 .../2017-07-26-error-handling-in-react-16.md  |  16 +--
 .../2017-09-08-dom-attributes-in-react-16.md  |  16 +--
 content/blog/2017-09-25-react-v15.6.2.md      |  10 +-
 content/blog/2017-09-26-react-v16.0.md        |  32 ++---
 ...17-11-28-react-v16.2.0-fragment-support.md |  48 +++----
 ...12-07-introducing-the-react-rfc-process.md |   6 +-
 ...improving-the-repository-infrastructure.md |  56 ++++----
 .../2018-03-01-sneak-peek-beyond-react-16.md  |   2 +-
 .../2018-03-27-update-on-async-rendering.md   |  30 ++--
 content/blog/2018-03-29-react-v-16-3.md       |  10 +-
 content/blog/2018-05-23-react-v-16-4.md       |  24 ++--
 ...07-you-probably-dont-need-derived-state.md |  24 ++--
 content/blog/2018-08-01-react-v-16-4-2.md     |  22 +--
 ...18-09-10-introducing-the-react-profiler.md |  24 ++--
 .../blog/2018-10-01-create-react-app-v2.md    |  12 +-
 content/blog/2018-10-23-react-v-16-6.md       |  22 +--
 content/blog/2018-11-27-react-16-roadmap.md   |  18 +--
 content/blog/2018-12-19-react-v-16-7.md       |  12 +-
 content/blog/2019-02-06-react-v16.8.0.md      |  32 ++---
 content/community/conferences.it-IT.md        |   4 +-
 content/community/conferences.ko-KR.md        |   4 +-
 content/community/conferences.md              | 128 +++++++++---------
 content/community/conferences.zh-CN.md        |   8 +-
 content/community/courses.md                  |   4 +-
 content/community/meetups.md                  |  60 ++++----
 content/community/podcasts.md                 |   4 +-
 content/community/support.md                  |   6 +-
 content/community/tools-jsx.md                |   4 +-
 content/community/tools-starter-kits.md       |   4 +-
 content/community/tools-ui-components.md      |   4 +-
 content/community/videos.it-IT.md             |  32 ++---
 content/community/videos.ko-KR.md             |  32 ++---
 content/community/videos.md                   |  26 ++--
 content/community/videos.zh-CN.md             |  32 ++---
 content/docs/accessibility.md                 |  66 ++++-----
 content/docs/add-react-to-a-website.md        |  22 +--
 content/docs/addons-animation.md              |  32 ++---
 content/docs/addons-create-fragment.md        |   6 +-
 content/docs/addons-perf.md                   |  28 ++--
 content/docs/addons-pure-render-mixin.md      |   2 +-
 content/docs/addons-shallow-compare.md        |   2 +-
 content/docs/addons-shallow-renderer.md       |   8 +-
 content/docs/addons-test-utils.md             |  38 +++---
 .../docs/addons-two-way-binding-helpers.md    |  10 +-
 content/docs/addons-update.md                 |  18 +--
 content/docs/addons.md                        |   6 +-
 content/docs/cdn-links.md                     |   2 +-
 content/docs/code-splitting.md                |  18 +--
 content/docs/codebase-overview.md             |  30 ++--
 content/docs/components-and-props.md          |  10 +-
 content/docs/composition-vs-inheritance.md    |   6 +-
 content/docs/conditional-rendering.md         |   8 +-
 content/docs/context.md                       |  26 ++--
 content/docs/create-a-new-react-app.md        |  14 +-
 content/docs/cross-origin-errors.md           |   8 +-
 content/docs/design-principles.md             |  26 ++--
 content/docs/error-boundaries.md              |  16 +--
 content/docs/faq-ajax.md                      |   6 +-
 content/docs/faq-build.md                     |   6 +-
 content/docs/faq-functions.md                 |  34 ++---
 content/docs/faq-internals.md                 |   6 +-
 content/docs/faq-state.md                     |  16 +--
 content/docs/faq-structure.md                 |  10 +-
 content/docs/faq-styling.md                   |  10 +-
 content/docs/faq-versioning.md                |   8 +-
 content/docs/forms.md                         |  16 +--
 content/docs/forwarding-refs.md               |   8 +-
 content/docs/fragments.md                     |  10 +-
 content/docs/getting-started.md               |  38 +++---
 content/docs/handling-events.md               |   2 +-
 content/docs/hello-world.md                   |   6 +-
 content/docs/higher-order-components.md       |  18 +--
 content/docs/hooks-custom.md                  |   8 +-
 content/docs/hooks-effect.md                  |  26 ++--
 content/docs/hooks-faq.md                     |  36 ++---
 content/docs/hooks-intro.md                   |  18 +--
 content/docs/hooks-overview.md                |  16 +--
 content/docs/hooks-reference.md               |  44 +++---
 content/docs/hooks-rules.md                   |  10 +-
 content/docs/hooks-state.md                   |  20 +--
 content/docs/how-to-contribute.md             |  42 +++---
 content/docs/implementation-notes.md          |  28 ++--
 .../docs/integrating-with-other-libraries.md  |  18 +--
 content/docs/introducing-jsx.md               |  14 +-
 content/docs/jsx-in-depth.md                  |  32 ++---
 content/docs/legacy-context.md                |  10 +-
 content/docs/lifting-state-up.md              |   8 +-
 content/docs/lists-and-keys.md                |  12 +-
 content/docs/optimizing-performance.md        |  30 ++--
 content/docs/portals.md                       |   4 +-
 content/docs/react-without-es6.md             |   8 +-
 content/docs/reconciliation.md                |  16 +--
 content/docs/reference-dom-elements.md        |  24 ++--
 content/docs/reference-events.md              |  40 +++---
 content/docs/reference-glossary.md            |  34 ++---
 content/docs/reference-react-component.md     |  72 +++++-----
 content/docs/reference-react-dom-server.md    |  12 +-
 content/docs/reference-react-dom.md           |  16 +--
 content/docs/reference-react.md               |  54 ++++----
 content/docs/reference-test-renderer.md       |  48 +++----
 content/docs/refs-and-the-dom.md              |  22 +--
 content/docs/render-props.md                  |   8 +-
 content/docs/rendering-elements.md            |   6 +-
 content/docs/state-and-lifecycle.md           |  16 +--
 content/docs/static-type-checking.md          |  36 ++---
 content/docs/strict-mode.md                   |  10 +-
 content/docs/thinking-in-react.md             |  16 +--
 content/docs/typechecking-with-proptypes.md   |   6 +-
 content/docs/uncontrolled-components.md       |   4 +-
 content/docs/web-components.md                |   4 +-
 content/tutorial/tutorial.md                  |  62 ++++-----
 content/warnings/dont-call-proptypes.md       |   8 +-
 content/warnings/invalid-hook-call-warning.md |   8 +-
 content/warnings/legacy-factories.md          |   8 +-
 content/warnings/refs-must-have-owner.md      |   6 +-
 209 files changed, 1814 insertions(+), 1814 deletions(-)

diff --git a/content/blog/2013-06-05-why-react.md b/content/blog/2013-06-05-why-react.md
index 30d54b24c8..6c23552a12 100644
--- a/content/blog/2013-06-05-why-react.md
+++ b/content/blog/2013-06-05-why-react.md
@@ -6,13 +6,13 @@ author: [petehunt]
 There are a lot of JavaScript MVC frameworks out there. Why did we build React
 and why would you want to use it?
 
-## React isn't an MVC framework.
+## React isn't an MVC framework. {#react-isnt-an-mvc-framework}
 
 React is a library for building composable user interfaces. It encourages
 the creation of reusable UI components which present data that changes over
 time.
 
-## React doesn't use templates.
+## React doesn't use templates. {#react-doesnt-use-templates}
 
 Traditionally, web application UIs are built using templates or HTML directives.
 These templates dictate the full set of abstractions that you are allowed to use
@@ -33,7 +33,7 @@ to render views, which we see as an advantage over templates for a few reasons:
 We've also created [JSX](/docs/jsx-in-depth.html), an optional syntax
 extension, in case you prefer the readability of HTML to raw JavaScript.
 
-## Reactive updates are dead simple.
+## Reactive updates are dead simple. {#reactive-updates-are-dead-simple}
 
 React really shines when your data changes over time.
 
@@ -63,7 +63,7 @@ Because this re-render is so fast (around 1ms for TodoMVC), the developer
 doesn't need to explicitly specify data bindings. We've found this approach
 makes it easier to build apps.
 
-## HTML is just the beginning.
+## HTML is just the beginning. {#html-is-just-the-beginning}
 
 Because React has its own lightweight representation of the document, we can do
 some pretty cool things with it:
diff --git a/content/blog/2013-06-12-community-roundup.md b/content/blog/2013-06-12-community-roundup.md
index c8d4af256f..ff7103e8bf 100644
--- a/content/blog/2013-06-12-community-roundup.md
+++ b/content/blog/2013-06-12-community-roundup.md
@@ -5,7 +5,7 @@ author: [vjeux]
 
 React was open sourced two weeks ago and it's time for a little round-up of what has been going on.
 
-## Khan Academy Question Editor
+## Khan Academy Question Editor {#khan-academy-question-editor}
 
 It looks like [Sophie Alpert](http://sophiebits.com/) is the first person outside of Facebook and Instagram to push React code to production. We are very grateful for her contributions in form of pull requests, bug reports and presence on IRC ([#reactjs on Freenode](irc://chat.freenode.net/reactjs)). Sophie wrote about her experience using React:
 
@@ -16,7 +16,7 @@ It looks like [Sophie Alpert](http://sophiebits.com/) is the first person outsid
 >
 > [Read the full post...](http://sophiebits.com/2013/06/09/using-react-to-speed-up-khan-academy.html)
 
-## Pimp my Backbone.View (by replacing it with React)
+## Pimp my Backbone.View (by replacing it with React) {#pimp-my-backboneview-by-replacing-it-with-react}
 
 [Paul Seiffert](https://blog.mayflower.de/) wrote a blog post that explains how to integrate React into Backbone applications.
 
@@ -28,7 +28,7 @@ It looks like [Sophie Alpert](http://sophiebits.com/) is the first person outsid
 >
 > [Read the full post...](https://blog.mayflower.de/3937-Backbone-React.html)
 
-## Using facebook's React with require.js
+## Using facebook's React with require.js {#using-facebooks-react-with-requirejs}
 
 [Mario Mueller](http://blog.xenji.com/) wrote a menu component in React and was able to easily integrate it with require.js, EventEmitter2 and bower.
 
@@ -36,7 +36,7 @@ It looks like [Sophie Alpert](http://sophiebits.com/) is the first person outsid
 >
 > [Read the full post...](http://blog.xenji.com/2013/06/facebooks-react-require-js.html)
 
-## Origins of React
+## Origins of React {#origins-of-react}
 
 [Pete Hunt](http://www.petehunt.net/blog/) explained what differentiates React from other JavaScript libraries in [a previous blog post](/blog/2013/06/05/why-react.html). [Lee Byron](http://leebyron.com/) gives another perspective on Quora:
 
diff --git a/content/blog/2013-06-19-community-roundup-2.md b/content/blog/2013-06-19-community-roundup-2.md
index 3350d68216..3071db80b8 100644
--- a/content/blog/2013-06-19-community-roundup-2.md
+++ b/content/blog/2013-06-19-community-roundup-2.md
@@ -5,7 +5,7 @@ author: [vjeux]
 
 Since the launch we have received a lot of feedback and are actively working on React 0.4. In the meantime, here are the highlights of this week.
 
-## Some quick thoughts on React
+## Some quick thoughts on React {#some-quick-thoughts-on-react}
 
 [Andrew Greig](http://www.andrewgreig.com/) made a blog post that gives a high level description of what React is.
 
@@ -19,7 +19,7 @@ Since the launch we have received a lot of feedback and are actively working on
 >
 > [Read the full post...](http://www.andrewgreig.com/637/)
 
-## React and Socket.IO Chat Application
+## React and Socket.IO Chat Application {#react-and-socketio-chat-application}
 
 [Danial Khosravi](https://danialk.github.io/) made a real-time chat application that interacts with the back-end using Socket.IO.
 
@@ -28,7 +28,7 @@ Since the launch we have received a lot of feedback and are actively working on
 >
 > [Read the full post...](https://danialk.github.io/blog/2013/06/16/reactjs-and-socket-dot-io-chat-application/)
 
-## React and Other Frameworks
+## React and Other Frameworks {#react-and-other-frameworks}
 
 [Pete Hunt](http://www.petehunt.net/blog/) wrote an answer on Quora comparing React and Angular directives. At the end, he explains how you can make an Angular directive that is in fact being rendered with React.
 
@@ -40,7 +40,7 @@ Since the launch we have received a lot of feedback and are actively working on
 
 In the same vein, [Markov Twain](https://twitter.com/markov_twain/status/345702941845499906) re-implemented the examples on the front-page [with Ember](http://jsbin.com/azihiw/2/edit) and [Vlad Yazhbin](https://twitter.com/vla) re-implemented the tutorial [with Angular](http://jsfiddle.net/vla/Cdrse/).
 
-## Web Components: React & x-tags
+## Web Components: React & x-tags {#web-components-react--x-tags}
 
 Mozilla and Google are actively working on Web Components. [Vjeux](http://blog.vjeux.com/) wrote a proof of concept that shows how to implement them using React.
 
@@ -49,7 +49,7 @@ Mozilla and Google are actively working on Web Components. [Vjeux](http://blog.v
 >
 > [Read the full post...](http://blog.vjeux.com/2013/javascript/custom-components-react-x-tags.html)
 
-## React TodoMVC Example
+## React TodoMVC Example {#react-todomvc-example}
 
 [TodoMVC.com](http://todomvc.com/) is a website that collects various implementations of the same basic Todo app. [Pete Hunt](http://www.petehunt.net/blog/) wrote an idiomatic React version.
 
@@ -60,7 +60,7 @@ Mozilla and Google are actively working on Web Components. [Vjeux](http://blog.v
 >
 > [Read the source code...](https://github.com/tastejs/todomvc/tree/gh-pages/labs/architecture-examples/react)
 
-## JSX is not HTML
+## JSX is not HTML {#jsx-is-not-html}
 
 Many of you pointed out differences between JSX and HTML. In order to clear up some confusion, we have added some documentation that covers the four main differences:
 
diff --git a/content/blog/2013-06-21-react-v0-3-3.md b/content/blog/2013-06-21-react-v0-3-3.md
index f09bf8a6f1..31f150de2e 100644
--- a/content/blog/2013-06-21-react-v0-3-3.md
+++ b/content/blog/2013-06-21-react-v0-3-3.md
@@ -6,18 +6,18 @@ author: [zpao]
 We have a ton of great stuff coming in v0.4, but in the meantime we're releasing v0.3.3. This release addresses some small issues people were having and simplifies our tools to make them easier to use.
 
 
-## react-tools
+## react-tools {#react-tools}
 
 * Upgrade Commoner so `require` statements are no longer relativized when passing through the transformer. This was a feature needed when building React, but doesn't translate well for other consumers of `bin/jsx`.
 * Upgraded our dependencies on Commoner and Recast so they use a different directory for their cache.
 * Freeze our esprima dependency.
 
 
-## React
+## React {#react}
 
 * Allow reusing the same DOM node to render different components. e.g. `React.renderComponent(<div/>, domNode); React.renderComponent(<span/>, domNode);` will work now.
 
 
-## JSXTransformer
+## JSXTransformer {#jsxtransformer}
 
 * Improved the in-browser transformer so that transformed scripts will execute in the expected scope. The allows components to be defined and used from separate files.
diff --git a/content/blog/2013-06-27-community-roundup-3.md b/content/blog/2013-06-27-community-roundup-3.md
index 2d297f20f3..371da7ed67 100644
--- a/content/blog/2013-06-27-community-roundup-3.md
+++ b/content/blog/2013-06-27-community-roundup-3.md
@@ -5,7 +5,7 @@ author: [vjeux]
 
 The highlight of this week is that an interaction-heavy app has been ported to React. React components are solving issues they had with nested views.
 
-## Moving From Backbone To React
+## Moving From Backbone To React {#moving-from-backbone-to-react}
 
 [Clay Allsopp](https://twitter.com/clayallsopp) successfully ported [Propeller](http://usepropeller.com/blog/posts/from-backbone-to-react/), a fairly big, interaction-heavy JavaScript app, to React.
 
@@ -17,7 +17,7 @@ The highlight of this week is that an interaction-heavy app has been ported to R
 >
 > [Read the full post...](http://usepropeller.com/blog/posts/from-backbone-to-react/)
 
-## Grunt Task for JSX
+## Grunt Task for JSX {#grunt-task-for-jsx}
 
 [Eric Clemmons](https://ericclemmons.github.io/) wrote a task for [Grunt](http://gruntjs.com/) that applies the JSX transformation to your JavaScript files. It also works with [Browserify](http://browserify.org/) if you want all your files to be concatenated and minified together.
 
@@ -45,7 +45,7 @@ The highlight of this week is that an interaction-heavy app has been ported to R
 >
 > [Check out the project ...](https://github.com/ericclemmons/grunt-react)
 
-## Backbone/Handlebars Nested Views
+## Backbone/Handlebars Nested Views {#backbonehandlebars-nested-views}
 
 [Joel Burget](http://joelburget.com/) wrote a blog post talking about the way we would write React-like components in Backbone and Handlebars.
 
@@ -57,13 +57,13 @@ The highlight of this week is that an interaction-heavy app has been ported to R
 >
 > [Read the full post...](http://joelburget.com/react/)
 
-## JSRomandie Meetup
+## JSRomandie Meetup {#jsromandie-meetup}
 
 [Renault John Lecoultre](https://twitter.com/renajohn/) from [BugBuster](http://www.bugbuster.com) did a React introduction talk at a JS meetup called [JS Romandie](https://twitter.com/jsromandie) last week.
 
 <script async class="speakerdeck-embed" data-id="888a9d50c01b01300df36658d0894ac1" data-ratio="1.33333333333333" src="//speakerdeck.com/assets/embed.js"></script>
 
-## CoffeeScript integration
+## CoffeeScript integration {#coffeescript-integration}
 
 [Vjeux](http://blog.vjeux.com/) used the fact that JSX is just a syntactic sugar on-top of regular JS to rewrite the React front-page examples in CoffeeScript.
 
@@ -81,7 +81,7 @@ The highlight of this week is that an interaction-heavy app has been ported to R
 >
 > [Read the full post...](http://blog.vjeux.com/2013/javascript/react-coffeescript.html)
 
-## Tutorial in Plain JavaScript
+## Tutorial in Plain JavaScript {#tutorial-in-plain-javascript}
 
 We've seen a lot of people comparing React with various frameworks. [Ricardo Tomasi](http://ricardo.cc/) decided to re-implement the tutorial without any framework, just plain JavaScript.
 
diff --git a/content/blog/2013-07-02-react-v0-4-autobind-by-default.md b/content/blog/2013-07-02-react-v0-4-autobind-by-default.md
index c8e5155ff9..9c98fd9b2a 100644
--- a/content/blog/2013-07-02-react-v0-4-autobind-by-default.md
+++ b/content/blog/2013-07-02-react-v0-4-autobind-by-default.md
@@ -6,7 +6,7 @@ author: [zpao]
 React v0.4 is very close to completion. As we finish it off, we'd like to share with you some of the major changes we've made since v0.3. This is the first of several posts we'll be making over the next week.
 
 
-## What is React.autoBind?
+## What is React.autoBind? {#what-is-reactautobind}
 
 If you take a look at most of our current examples, you'll see us using `React.autoBind` for event handlers. This is used in place of `Function.prototype.bind`. Remember that in JS, [function calls are late-bound](https://bonsaiden.github.io/JavaScript-Garden/#function.this). That means that if you simply pass a function around, the `this` used inside won't necessarily be the `this` you expect. `Function.prototype.bind` creates a new, properly bound, function so that when called, `this` is exactly what you expect it to be.
 
@@ -33,7 +33,7 @@ React.createClass({
 ```
 
 
-## What's Changing in v0.4?
+## What's Changing in v0.4? {#whats-changing-in-v04}
 
 After using `React.autoBind` for a few weeks, we realized that there were very few times that we didn't want that behavior. So we made it the default! Now all methods defined within `React.createClass` will already be bound to the correct instance.
 
diff --git a/content/blog/2013-07-03-community-roundup-4.md b/content/blog/2013-07-03-community-roundup-4.md
index 12c32a1185..b7bd158c29 100644
--- a/content/blog/2013-07-03-community-roundup-4.md
+++ b/content/blog/2013-07-03-community-roundup-4.md
@@ -5,7 +5,7 @@ author: [vjeux]
 
 React reconciliation process appears to be very well suited to implement a text editor with a live preview as people at Khan Academy show us.
 
-## Khan Academy
+## Khan Academy {#khan-academy}
 
 [Ben Kamens](http://bjk5.com/) explains how [Sophie Alpert](http://sophiebits.com/) and [Joel Burget](http://joelburget.com/) are promoting React inside of [Khan Academy](https://www.khanacademy.org/). They now have three projects in the works using React.
 
@@ -21,7 +21,7 @@ The best part is the demo of how React reconciliation process makes live editing
 
 [![](../images/blog/monkeys.gif)](http://bjk5.com/post/53742233351/getting-your-team-to-adopt-new-technology)
 
-## React Snippets
+## React Snippets {#react-snippets}
 
 Over the past several weeks, members of our team, [Pete Hunt](http://www.petehunt.net/) and [Paul O'Shannessy](http://zpao.com/), answered many questions that were asked in the [React group](https://groups.google.com/forum/#!forum/reactjs). They give a good overview of how to integrate React with other libraries and APIs through the use of [Mixins](/docs/reusable-components.html) and [Lifecycle Methods](/docs/working-with-the-browser.html).
 
@@ -44,13 +44,13 @@ Over the past several weeks, members of our team, [Pete Hunt](http://www.petehun
 >
 > * [JSFiddle](http://jsfiddle.net/LQxy7/): Your React component simply render empty divs, and then in componentDidMount() you call React.renderComponent() on each of those divs to set up a new root React tree. Be sure to explicitly unmountAndReleaseReactRootNode() for each component in componentWillUnmount().
 
-## Introduction to React Screencast
+## Introduction to React Screencast {#introduction-to-react-screencast}
 
 [Pete Hunt](http://www.petehunt.net/) recorded himself implementing a simple `<Blink>` tag in React.
 
 <figure><iframe src="https://player.vimeo.com/video/67248575" width="100%" height="340" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></figure>
 
-## Snake in React
+## Snake in React {#snake-in-react}
 
 [Tom Occhino](http://tomocchino.com/) implemented Snake in 150 lines with React.
 
diff --git a/content/blog/2013-07-11-react-v0-4-prop-validation-and-default-values.md b/content/blog/2013-07-11-react-v0-4-prop-validation-and-default-values.md
index e7b091693c..8a5cc18c52 100644
--- a/content/blog/2013-07-11-react-v0-4-prop-validation-and-default-values.md
+++ b/content/blog/2013-07-11-react-v0-4-prop-validation-and-default-values.md
@@ -6,7 +6,7 @@ author: [zpao]
 Many of the questions we got following the public launch of React revolved around `props`, specifically that people wanted to do validation and to make sure their components had sensible defaults.
 
 
-## Validation
+## Validation {#validation}
 
 Oftentimes you want to validate your `props` before you use them. Perhaps you want to ensure they are a specific type. Or maybe you want to restrict your prop to specific values. Or maybe you want to make a specific prop required. This was always possible — you could have written validations in your `render` or `componentWillReceiveProps` functions, but that gets clunky fast.
 
@@ -29,7 +29,7 @@ React.createClass({
 ```
 
 
-## Default Values
+## Default Values {#default-values}
 
 One common pattern we've seen with our React code is to do something like this:
 
diff --git a/content/blog/2013-07-17-react-v0-4-0.md b/content/blog/2013-07-17-react-v0-4-0.md
index 0c229a7cf3..2a50e8b1e0 100644
--- a/content/blog/2013-07-17-react-v0-4-0.md
+++ b/content/blog/2013-07-17-react-v0-4-0.md
@@ -13,7 +13,7 @@ React v0.4 has some big changes. We've also restructured the documentation to be
 When you're ready, [go download it](/docs/installation.html)!
 
 
-### React
+### React {#react}
 
 * Switch from using `id` attribute to `data-reactid` to track DOM nodes. This allows you to integrate with other JS and CSS libraries more easily.
 * Support for more DOM elements and attributes (e.g., `<canvas>`)
@@ -25,7 +25,7 @@ When you're ready, [go download it](/docs/installation.html)!
 * We've implemented an improved synthetic event system that conforms to the W3C spec.
 * Updates to your component are batched now, which may result in a significantly faster re-render of components. `this.setState` now takes an optional callback as its second parameter. If you were using `onClick={this.setState.bind(this, state)}` previously, you'll want to make sure you add a third parameter so that the event is not treated as the callback.
 
-### JSX
+### JSX {#jsx}
 
 * Support for comment nodes `<div>{/* this is a comment and won't be rendered */}</div>`
 * Children are now transformed directly into arguments instead of being wrapped in an array
@@ -33,7 +33,7 @@ When you're ready, [go download it](/docs/installation.html)!
   Previously this would be transformed into `React.DOM.div(null, [Component1(null), Component2(null)])`.
   If you were using React without JSX previously, your code should still work.
 
-### react-tools
+### react-tools {#react-tools}
 
 * Fixed a number of bugs when transforming directories
 * No longer re-write `require()`s to be relative unless specified
diff --git a/content/blog/2013-07-23-community-roundup-5.md b/content/blog/2013-07-23-community-roundup-5.md
index 34d74869cc..02e0d53559 100644
--- a/content/blog/2013-07-23-community-roundup-5.md
+++ b/content/blog/2013-07-23-community-roundup-5.md
@@ -5,7 +5,7 @@ author: [vjeux]
 
 We launched the [React Facebook Page](https://www.facebook.com/react) along with the React v0.4 launch. 700 people already liked it to get updated on the project :)
 
-## Cross-browser onChange
+## Cross-browser onChange {#cross-browser-onchange}
 
 [Sophie Alpert](http://sophiebits.com/) from [Khan Academy](https://www.khanacademy.org/) worked on a cross-browser implementation of `onChange` event that landed in v0.4. She wrote a blog post explaining the various browser quirks she had to deal with.
 
@@ -16,7 +16,7 @@ We launched the [React Facebook Page](https://www.facebook.com/react) along with
 > [Read the full post...](http://sophiebits.com/2013/06/18/a-near-perfect-oninput-shim-for-ie-8-and-9.html)
 
 
-## React Samples
+## React Samples {#react-samples}
 
 Learning a new library is always easier when you have working examples you can play with. [jwh](https://github.com/jhw) put many of them on his [react-samples GitHub repo](https://github.com/jhw/react-samples).
 
@@ -50,7 +50,7 @@ Learning a new library is always easier when you have working examples you can p
 > * Toggle [#1](https://rawgithub.com/jhw/react-samples/master/html/toggle.html)
 
 
-## React Chosen Wrapper
+## React Chosen Wrapper {#react-chosen-wrapper}
 
 [Cheng Lou](https://github.com/chenglou) wrote a wrapper for the [Chosen](https://harvesthq.github.io/chosen/) input library called [react-chosen](https://github.com/chenglou/react-chosen). It took just 25 lines to be able to use jQuery component as a React one.
 
@@ -64,21 +64,21 @@ React.renderComponent(
 ```
 
 
-## JSX and ES6 Template Strings
+## JSX and ES6 Template Strings {#jsx-and-es6-template-strings}
 
 [Domenic Denicola](http://domenicdenicola.com/) wrote a slide deck about the great applications of ES6 features and one slide shows how we could use Template Strings to compile JSX at run-time without the need for a pre-processing phase.
 
 <figure><iframe src="https://www.slideshare.net/slideshow/embed_code/24187146?rel=0&startSlide=36" width="100%" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px" allowfullscreen webkitallowfullscreen mozallowfullscreen> </iframe></figure>
 
 
-## React Presentation
+## React Presentation {#react-presentation}
 
 [Tom Occhino](http://tomocchino.com/) and [Jordan Walke](https://github.com/jordwalke), React developers, did a presentation of React at Facebook Seattle's office. Check out the first 25 minutes for the presentation and the remaining 45 for a Q&A. I highly recommend you watching this video.
 
 <figure><iframe width="650" height="400" src="//www.youtube-nocookie.com/embed/XxVg_s8xAms" frameborder="0" allowfullscreen></iframe></figure>
 
 
-## Docs
+## Docs {#docs}
 
 [Pete Hunt](http://www.petehunt.net/) rewrote the entirety of the docs for v0.4. The goal was to add more explanation about why we built React and what the best practices are.
 
diff --git a/content/blog/2013-07-26-react-v0-4-1.md b/content/blog/2013-07-26-react-v0-4-1.md
index 569c45a827..181bb09bee 100644
--- a/content/blog/2013-07-26-react-v0-4-1.md
+++ b/content/blog/2013-07-26-react-v0-4-1.md
@@ -6,7 +6,7 @@ author: [zpao]
 React v0.4.1 is a small update, mostly containing correctness fixes. Some code has been restructured internally but those changes do not impact any of our public APIs.
 
 
-## React
+## React {#react}
 
 * `setState` callbacks are now executed in the scope of your component.
 * `click` events now work on Mobile Safari.
@@ -16,7 +16,7 @@ React v0.4.1 is a small update, mostly containing correctness fixes. Some code h
 * Added checksums to detect and correct cases where server-side rendering markup mismatches what React expects client-side.
 
 
-## JSXTransformer
+## JSXTransformer {#jsxtransformer}
 
 * Improved environment detection so it can be run in a non-browser environment.
 
diff --git a/content/blog/2013-07-30-use-react-and-jsx-in-ruby-on-rails.md b/content/blog/2013-07-30-use-react-and-jsx-in-ruby-on-rails.md
index e436b671e1..60529a4cef 100644
--- a/content/blog/2013-07-30-use-react-and-jsx-in-ruby-on-rails.md
+++ b/content/blog/2013-07-30-use-react-and-jsx-in-ruby-on-rails.md
@@ -12,7 +12,7 @@ This gem has 2 primary purposes:
 2. To allow you to write JSX without an external build step to transform that into JS.
 
 
-## Packaging react.js
+## Packaging react.js {#packaging-reactjs}
 
 To make `react.js` available for use client-side, simply add `react` to your manifest, and declare the variant you'd like to use in your environment. When you use `:production`, the minified and optimized `react.min.js` will be used instead of the development version. For example:
 
@@ -32,7 +32,7 @@ end
 ```
 
 
-## Writing JSX
+## Writing JSX {#writing-jsx}
 
 When you name your file with `myfile.js.jsx`, `react-rails` will automatically try to transform that file. For the time being, we still require that you include the docblock at the beginning of the file. For example, this file will get transformed on request.
 
@@ -42,12 +42,12 @@ React.renderComponent(<MyComponent/>, document.getElementById('example'))
 ```
 
 
-## Asset Pipeline
+## Asset Pipeline {#asset-pipeline}
 
 `react-rails` takes advantage of the [asset pipeline](http://guides.rubyonrails.org/asset_pipeline.html) that was introduced in Rails 3.1. A very important part of that pipeline is the `assets:precompile` Rake task. `react-rails` will ensure that your JSX files will be transformed into regular JS before all of your assets are minified and packaged.
 
 
-## Installation
+## Installation {#installation}
 
 Installation follows the same process you're familiar with. You can install it globally with `gem install react-rails`, though we suggest you add the dependency to your `Gemfile` directly.
 
diff --git a/content/blog/2013-08-05-community-roundup-6.md b/content/blog/2013-08-05-community-roundup-6.md
index 987a0fa05d..22db39d88e 100644
--- a/content/blog/2013-08-05-community-roundup-6.md
+++ b/content/blog/2013-08-05-community-roundup-6.md
@@ -5,13 +5,13 @@ author: [vjeux]
 
 This is the first Community Round-up where none of the items are from Facebook/Instagram employees. It's great to see the adoption of React growing.
 
-## React Game Tutorial
+## React Game Tutorial {#react-game-tutorial}
 
 [Caleb Cassel](https://twitter.com/CalebCassel) wrote a [step-by-step tutorial](https://rawgithub.com/calebcassel/react-demo/master/part1.html) about making a small game. It covers JSX, State and Events, Embedded Components and Integration with Backbone.
 <figure><a href="https://rawgithub.com/calebcassel/react-demo/master/part1.html"><img src="../images/blog/dog-tutorial.png"></a></figure>
 
 
-## Reactify
+## Reactify {#reactify}
 
 [Andrey Popp](http://andreypopp.com/) created a [Browserify](http://browserify.org/) helper to compile JSX files.
 
@@ -27,7 +27,7 @@ This is the first Community Round-up where none of the items are from Facebook/I
 
 
 
-## React Integration with Este
+## React Integration with Este {#react-integration-with-este}
 
 [Daniel Steigerwald](http://daniel.steigerwald.cz/) is now using React within [Este](https://github.com/steida/este), which is a development stack for web apps in CoffeeScript that are statically typed using the Closure Library.
 
@@ -52,7 +52,7 @@ este.demos.react.todoApp = este.react.create (`/** @lends {React.ReactComponent.
 [Check it out on GitHub...](https://github.com/steida/este-library/blob/master/este/demos/thirdparty/react/start.coffee)
 
 
-## React Stylus Boilerplate
+## React Stylus Boilerplate {#react-stylus-boilerplate}
 
 [Zaim Bakar](https://zaim.github.io/) shared his boilerplate to get started with Stylus CSS processor.
 
@@ -67,7 +67,7 @@ este.demos.react.todoApp = este.react.create (`/** @lends {React.ReactComponent.
 > [Check it out on GitHub...](https://github.com/zaim/react-stylus-boilerplate)
 
 
-## WebFUI
+## WebFUI {#webfui}
 
 [Conrad Barski](http://lisperati.com/), author of the popular book [Land of Lisp](http://landoflisp.com/), wants to use React for his ClojureScript library called [WebFUI](https://github.com/drcode/webfui).
 
diff --git a/content/blog/2013-08-19-use-react-and-jsx-in-python-applications.md b/content/blog/2013-08-19-use-react-and-jsx-in-python-applications.md
index 95375f38a7..bbbc4da636 100644
--- a/content/blog/2013-08-19-use-react-and-jsx-in-python-applications.md
+++ b/content/blog/2013-08-19-use-react-and-jsx-in-python-applications.md
@@ -5,7 +5,7 @@ author: [kmeht]
 
 Today we're happy to announce the initial release of [PyReact](https://github.com/facebook/react-python), which makes it easier to use React and JSX in your Python applications. It's designed to provide an API to transform your JSX files into JavaScript, as well as provide access to the latest React source files.
 
-## Usage
+## Usage {#usage}
 
 Transform your JSX files via the provided `jsx` module:
 
@@ -30,7 +30,7 @@ from react import source
 react_js = source.path_for('react.min.js')
 ```
 
-## Django
+## Django {#django}
 
 PyReact includes a JSX compiler for [django-pipeline](https://github.com/cyberdelia/django-pipeline). Add it to your project's pipeline settings like this:
 
@@ -40,7 +40,7 @@ PIPELINE_COMPILERS = (
 )
 ```
 
-## Installation
+## Installation {#installation}
 
 PyReact is hosted on PyPI, and can be installed with `pip`:
 
diff --git a/content/blog/2013-08-26-community-roundup-7.md b/content/blog/2013-08-26-community-roundup-7.md
index fd5cb62e6b..bc526b4662 100644
--- a/content/blog/2013-08-26-community-roundup-7.md
+++ b/content/blog/2013-08-26-community-roundup-7.md
@@ -14,13 +14,13 @@ It's been three months since we open sourced React and it is going well. Some st
 * 2 early adopters: [Khan Academy](http://sophiebits.com/2013/06/09/using-react-to-speed-up-khan-academy.html) and [Propeller](http://usepropeller.com/blog/posts/from-backbone-to-react/)
 
 
-## Wolfenstein Rendering Engine Ported to React
+## Wolfenstein Rendering Engine Ported to React {#wolfenstein-rendering-engine-ported-to-react}
 
 [Pete Hunt](http://www.petehunt.net/) ported the render code of the web version of Wolfenstein 3D to React. Check out [the demo](http://www.petehunt.net/wolfenstein3D-react/wolf3d.html) and [render.js](https://github.com/petehunt/wolfenstein3D-react/blob/master/js/renderer.js#L183) file for the implementation.
 <figure><a href="http://www.petehunt.net/wolfenstein3D-react/wolf3d.html"><img src="../images/blog/wolfenstein_react.png"></a></figure>
 
 
-## React & Meteor
+## React & Meteor {#react--meteor}
 
 [Ben Newman](https://twitter.com/benjamn) made a [13-lines wrapper](https://github.com/benjamn/meteor-react/blob/master/lib/mixin.js) to use React and Meteor together. [Meteor](http://www.meteor.com/) handles the real-time data synchronization between client and server. React provides the declarative way to write the interface and only updates the parts of the UI that changed.
 
@@ -46,7 +46,7 @@ It's been three months since we open sourced React and it is going well. Some st
 >
 > [Read more ...](https://github.com/benjamn/meteor-react)
 
-## React Page
+## React Page {#react-page}
 
 [Jordan Walke](https://github.com/jordwalke) implemented a complete React project creator called [react-page](https://github.com/facebook/react-page/). It supports both server-side and client-side rendering, source transform and packaging JSX files using CommonJS modules, and instant reload.
 
diff --git a/content/blog/2013-09-24-community-roundup-8.md b/content/blog/2013-09-24-community-roundup-8.md
index e91b13e63f..d94649e0f2 100644
--- a/content/blog/2013-09-24-community-roundup-8.md
+++ b/content/blog/2013-09-24-community-roundup-8.md
@@ -9,7 +9,7 @@ First, we are organizing a [React Hackathon](http://reactjshack-a-thon.splashtha
 
 We've also reached a point where there are too many questions for us to handle directly. We're encouraging people to ask questions on [StackOverflow](http://stackoverflow.com/questions/tagged/reactjs) using the tag [[reactjs]](http://stackoverflow.com/questions/tagged/reactjs). Many members of the team and community have subscribed to the tag, so feel free to ask questions there. We think these will be more discoverable than Google Groups archives or IRC logs.
 
-## JavaScript Jabber
+## JavaScript Jabber {#javascript-jabber}
 
 [Pete Hunt](http://www.petehunt.net/) and [Jordan Walke](https://github.com/jordwalke) were interviewed on [JavaScript Jabber](http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/) for an hour.  They go over many aspects of React such as 60 FPS, Data binding, Performance, Diffing Algorithm, DOM Manipulation, Node.js support, server-side rendering, JSX, requestAnimationFrame and the community. This is a gold mine of information about React.
 
@@ -24,13 +24,13 @@ We've also reached a point where there are too many questions for us to handle d
 > [Read the full conversation ...](http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/)
 
 
-## JSXTransformer Trick
+## JSXTransformer Trick {#jsxtransformer-trick}
 
 While this is not going to work for all the attributes since they are camelCased in React, this is a pretty cool trick.
 
 <div style="margin-left: 74px;"><blockquote class="twitter-tweet"><p>Turn any DOM element into a React.js function: JSXTransformer.transform(&quot;/** <a href="https://twitter.com/jsx">@jsx</a> React.DOM */&quot; + element.innerHTML).code</p>&mdash; Ross Allen (@ssorallen) <a href="https://twitter.com/ssorallen/statuses/377105575441489920">September 9, 2013</a></blockquote></div>
 
-## Remarkable React
+## Remarkable React {#remarkable-react}
 
 [Stoyan Stefanov](http://www.phpied.com/) gave a talk at [BrazilJS](http://braziljs.com.br/) about React and wrote an article with the content of the presentation. He goes through the difficulties of writing _active apps_ using the DOM API and shows how React handles it.
 
@@ -49,18 +49,18 @@ While this is not going to work for all the attributes since they are camelCased
 > [Read More ...](http://www.phpied.com/remarkable-react/)
 
 
-## Markdown in React
+## Markdown in React {#markdown-in-react}
 
 [Sophie Alpert](http://sophiebits.com/) converted [marked](https://github.com/chjj/marked), a Markdown JavaScript implementation, in React: [marked-react](https://github.com/sophiebits/marked-react). Even without using JSX, the HTML generation is now a lot cleaner. It is also safer as forgetting a call to `escape` will not introduce an XSS vulnerability.
 <figure><a href="https://github.com/sophiebits/marked-react/commit/cb70c9df6542c7c34ede9efe16f9b6580692a457"><img src="../images/blog/markdown_refactor.png"></a></figure>
 
 
-## Unite from BugBusters
+## Unite from BugBusters {#unite-from-bugbusters}
 
 [Renault John Lecoultre](https://twitter.com/renajohn) wrote [Unite](https://www.bugbuster.com/), an interactive tool for analyzing code dynamically using React. It integrates with CodeMirror.
 <figure><a href="https://unite.bugbuster.com/"><img src="../images/blog/unite.png"></a></figure>
 
-## #reactjs IRC Logs
+## #reactjs IRC Logs {#reactjs-irc-logs}
 
 [Vjeux](http://blog.vjeux.com/) re-implemented the display part of the IRC logger in React. Just 130 lines are needed for a performant infinite scroll with timestamps and color-coded author names.
 
diff --git a/content/blog/2013-10-16-react-v0.5.0.md b/content/blog/2013-10-16-react-v0.5.0.md
index 46836135fe..88b7f4d7b1 100644
--- a/content/blog/2013-10-16-react-v0.5.0.md
+++ b/content/blog/2013-10-16-react-v0.5.0.md
@@ -9,16 +9,16 @@ The biggest change you'll notice as a developer is that we no longer support `cl
 
 The other major change in v0.5 is that we've added an additional build - `react-with-addons` - which adds support for some extras that we've been working on including animations and two-way binding. [Read more about these addons in the docs](/docs/addons.html).
 
-## Thanks to Our Community
+## Thanks to Our Community {#thanks-to-our-community}
 
 We added *22 new people* to the list of authors since we launched React v0.4.1 nearly 3 months ago. With a total of 48 names in our `AUTHORS` file, that means we've nearly doubled the number of contributors in that time period. We've seen the number of people contributing to discussion on IRC, mailing lists, Stack Overflow, and GitHub continue rising. We've also had people tell us about talks they've given in their local community about React.
 
 It's been awesome to see the things that people are building with React, and we can't wait to see what you come up with next!
 
 
-## Changelog
+## Changelog {#changelog}
 
-### React
+### React {#react}
 
 * Memory usage improvements - reduced allocations in core which will help with GC pauses
 * Performance improvements - in addition to speeding things up, we made some tweaks to stay out of slow path code in V8 and Nitro.
@@ -39,11 +39,11 @@ It's been awesome to see the things that people are building with React, and we
 * Better support for server-side rendering - [react-page](https://github.com/facebook/react-page) has helped improve the stability for server-side rendering.
 * Made it possible to use React in environments enforcing a strict [Content Security Policy](https://developer.mozilla.org/en-US/docs/Security/CSP/Introducing_Content_Security_Policy). This also makes it possible to use React to build Chrome extensions.
 
-### React with Addons (New!)
+### React with Addons (New!) {#react-with-addons-new}
 
 * Introduced a separate build with several "addons" which we think can help improve the React experience. We plan to deprecate this in the long-term, instead shipping each as standalone pieces. [Read more in the docs](/docs/addons.html).
 
-### JSX
+### JSX {#jsx}
 
 * No longer transform `class` to `className` as part of the transform! This is a breaking change - if you were using `class`, you *must* change this to `className` or your components will be visually broken.
 * Added warnings to the in-browser transformer to make it clear it is not intended for production use.
diff --git a/content/blog/2013-10-29-react-v0-5-1.md b/content/blog/2013-10-29-react-v0-5-1.md
index 08407d6aff..e70b730886 100644
--- a/content/blog/2013-10-29-react-v0-5-1.md
+++ b/content/blog/2013-10-29-react-v0-5-1.md
@@ -5,16 +5,16 @@ author: [zpao]
 
 This release focuses on fixing some small bugs that have been uncovered over the past two weeks. I would like to thank everybody involved, specifically members of the community who fixed half of the issues found. Thanks to [Sophie Alpert][1], [Andrey Popp][2], and [Laurence Rowe][3] for their contributions!
 
-## Changelog
+## Changelog {#changelog}
 
-### React
+### React {#react}
 
 * Fixed bug with `<input type="range">` and selection events.
 * Fixed bug with selection and focus.
 * Made it possible to unmount components from the document root.
 * Fixed bug for `disabled` attribute handling on non-`<input>` elements.
 
-### React with Addons
+### React with Addons {#react-with-addons}
 
 * Fixed bug with transition and animation event detection.
 
diff --git a/content/blog/2013-10-3-community-roundup-9.md b/content/blog/2013-10-3-community-roundup-9.md
index d69d464419..9eb3d2d1af 100644
--- a/content/blog/2013-10-3-community-roundup-9.md
+++ b/content/blog/2013-10-3-community-roundup-9.md
@@ -8,7 +8,7 @@ We organized a React hackathon last week-end in the Facebook Seattle office. 50
 ![](../images/blog/react-hackathon.jpg)
 
 
-## React Hackathon Winner
+## React Hackathon Winner {#react-hackathon-winner}
 
 [Alex Swan](http://bold-it.com/) implemented [Qu.izti.me](http://qu.izti.me/), a multi-player quiz game. It is real-time via Web Socket and mobile friendly.
 
@@ -19,7 +19,7 @@ We organized a React hackathon last week-end in the Facebook Seattle office. 50
 >
 > [Read More...](http://bold-it.com/javascript/facebook-react-example/)
 
-## JSConf EU Talk: Rethinking Best Practices
+## JSConf EU Talk: Rethinking Best Practices {#jsconf-eu-talk-rethinking-best-practices}
 
 [Pete Hunt](http://www.petehunt.net/) presented React at JSConf EU. He covers three controversial design decisions of React:
 
@@ -32,7 +32,7 @@ The video will be available soon on the [JSConf EU website](http://2013.jsconf.e
 <figure><iframe src="https://www.slideshare.net/slideshow/embed_code/26589373" width="100%" height="450" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" allowfullscreen></iframe></figure>
 
 
-## Pump - Clojure bindings for React
+## Pump - Clojure bindings for React {#pump---clojure-bindings-for-react}
 
 [Alexander Solovyov](http://solovyov.net/) has been working on React bindings for ClojureScript. This is really exciting as it is using "native" ClojureScript data structures.
 
@@ -52,7 +52,7 @@ The video will be available soon on the [JSConf EU website](http://2013.jsconf.e
 [Check it out on GitHub...](https://github.com/piranha/pump)
 
 
-## JSXHint
+## JSXHint {#jsxhint}
 
 [Todd Kennedy](http://blog.selfassembled.org/) working at [Cond&eacute; Nast](http://www.condenast.com/) implemented a wrapper on-top of [JSHint](http://www.jshint.com/) that first converts JSX files to JS.
 
@@ -65,7 +65,7 @@ The video will be available soon on the [JSConf EU website](http://2013.jsconf.e
 > [Check it out on GitHub...](https://github.com/CondeNast/JSXHint)
 
 
-## Turbo React
+## Turbo React {#turbo-react}
 
 [Ross Allen](https://twitter.com/ssorallen) working at [Mesosphere](http://mesosphere.io/) combined [Turbolinks](https://github.com/rails/turbolinks/), a library used by Ruby on Rails to speed up page transition, and React.
 
@@ -79,7 +79,7 @@ The video will be available soon on the [JSConf EU website](http://2013.jsconf.e
 > [Check out the demo...](https://turbo-react.herokuapp.com/)
 
 
-## Reactive Table
+## Reactive Table {#reactive-table}
 
 [Stoyan Stefanov](http://www.phpied.com/) continues his series of blog posts about React. This one is an introduction tutorial on rendering a simple table with React.
 
diff --git a/content/blog/2013-11-06-community-roundup-10.md b/content/blog/2013-11-06-community-roundup-10.md
index 6aa3a9b6c0..f85b77e6a8 100644
--- a/content/blog/2013-11-06-community-roundup-10.md
+++ b/content/blog/2013-11-06-community-roundup-10.md
@@ -7,7 +7,7 @@ This is the 10th round-up already and React has come quite far since it was open
 
 The best part is that no drastic changes have been required to support all those use cases. Most of the efforts were targeted at polishing edge cases, performance improvements, and documentation.
 
-## Khan Academy - Officially moving to React
+## Khan Academy - Officially moving to React {#khan-academy---officially-moving-to-react}
 
 [Joel Burget](http://joelburget.com/) announced at Hack Reactor that new front-end code at Khan Academy should be written in React!
 
@@ -22,14 +22,14 @@ The best part is that no drastic changes have been required to support all those
 > [Read the full article](http://joelburget.com/backbone-to-react/)
 
 
-## React: Rethinking best practices
+## React: Rethinking best practices {#react-rethinking-best-practices}
 
 [Pete Hunt](http://www.petehunt.net/)'s talk at JSConf EU 2013 is now available in video.
 
 <figure><iframe width="650" height="370" src="//www.youtube-nocookie.com/embed/x7cQ3mrcKaY" frameborder="0" allowfullscreen></iframe></figure>
 
 
-## Server-side React with PHP
+## Server-side React with PHP {#server-side-react-with-php}
 
 [Stoyan Stefanov](http://www.phpied.com/)'s series of articles on React has two new entries on how to execute React on the server to generate the initial page load.
 
@@ -50,7 +50,7 @@ The best part is that no drastic changes have been required to support all those
 > <figure><a href="http://www.phpied.com/server-side-react-with-php-part-2/"><img src="../images/blog/react-php.png"></a></figure>
 
 
-## TodoMVC Benchmarks
+## TodoMVC Benchmarks {#todomvc-benchmarks}
 
 Webkit has a [TodoMVC Benchmark](https://github.com/WebKit/webkit/tree/master/PerformanceTests/DoYouEvenBench) that compares different frameworks. They recently included React and here are the results (average of 10 runs in Chrome 30):
 
@@ -89,13 +89,13 @@ By default, React "re-renders" all the components when anything changes. This is
 
 The fact that you can control when components are rendered is a very important characteristic of React as it gives you control over its performance. We are going to talk more about performance in the future, stay tuned.
 
-## Guess the filter
+## Guess the filter {#guess-the-filter}
 
 [Connor McSheffrey](http://conr.me) implemented a small game using React. The goal is to guess which filter has been used to create the Instagram photo.
 <figure><a href="http://guessthefilter.com/"><img src="../images/blog/guess_filter.jpg"></a></figure>
 
 
-## React vs FruitMachine
+## React vs FruitMachine {#react-vs-fruitmachine}
 
 [Andrew Betts](http://trib.tv/), director of the [Financial Times Labs](http://labs.ft.com/), posted an article comparing [FruitMachine](https://github.com/ftlabs/fruitmachine) and React.
 
@@ -105,7 +105,7 @@ The fact that you can control when components are rendered is a very important c
 
 Even though we weren't inspired by FruitMachine (React has been used in production since before FruitMachine was open sourced), it's great to see similar technologies emerging and becoming popular.
 
-## React Brunch
+## React Brunch {#react-brunch}
 
 [Matthew McCray](http://elucidata.net/) implemented [react-brunch](https://npmjs.org/package/react-brunch), a JSX compilation step for [Brunch](http://brunch.io/).
 
@@ -117,7 +117,7 @@ Even though we weren't inspired by FruitMachine (React has been used in producti
 >
 > [Read more...](https://npmjs.org/package/react-brunch)
 
-## Random Tweet
+## Random Tweet {#random-tweet}
 
 I'm going to start adding a tweet at the end of each round-up. We'll start with this one:
 
diff --git a/content/blog/2013-11-18-community-roundup-11.md b/content/blog/2013-11-18-community-roundup-11.md
index 9386299988..7fe40e47a1 100644
--- a/content/blog/2013-11-18-community-roundup-11.md
+++ b/content/blog/2013-11-18-community-roundup-11.md
@@ -5,14 +5,14 @@ author: [vjeux]
 
 This round-up is the proof that React has taken off from its Facebook's root: it features three in-depth presentations of React done by external people. This is awesome, keep them coming!
 
-## Super VanJS 2013 Talk
+## Super VanJS 2013 Talk {#super-vanjs-2013-talk}
 
 [Steve Luscher](https://github.com/steveluscher) working at [LeanPub](https://leanpub.com/) made a 30 min talk at [Super VanJS](https://twitter.com/vanjs). He does a remarkable job at explaining why React is so fast with very exciting demos using the HTML5 Audio API.
 
 <figure><iframe width="650" height="338" src="//www.youtube-nocookie.com/embed/1OeXsL5mr4g" frameborder="0" allowfullscreen></iframe></figure>
 
 
-## React Tips
+## React Tips {#react-tips}
 
 [Connor McSheffrey](http://connormcsheffrey.com/) and [Cheng Lou](https://github.com/chenglou) added a new section to the documentation. It's a list of small tips that you will probably find useful while working on React. Since each article is very small and focused, we [encourage you to contribute](/tips/introduction.html)!
 
@@ -30,7 +30,7 @@ This round-up is the proof that React has taken off from its Facebook's root: it
 - [False in JSX](/tips/false-in-jsx.html)
 
 
-## Intro to the React Framework
+## Intro to the React Framework {#intro-to-the-react-framework}
 
 [Pavan Podila](http://blog.pixelingene.com/) wrote an in-depth introduction to React on TutsPlus. This is definitively worth reading.
 
@@ -40,7 +40,7 @@ This round-up is the proof that React has taken off from its Facebook's root: it
 > [Read the full article ...](http://dev.tutsplus.com/tutorials/intro-to-the-react-framework--net-35660)
 
 
-## 140-characters textarea
+## 140-characters textarea {#140-characters-textarea}
 
 [Brian Kim](https://github.com/brainkim) wrote a small textarea component that gradually turns red as you reach the 140-characters limit. Because he only changes the background color, React is smart enough not to mess with the text selection.
 
@@ -48,13 +48,13 @@ This round-up is the proof that React has taken off from its Facebook's root: it
 <script async src="//codepen.io/assets/embed/ei.js"></script>
 
 
-## Genesis Skeleton
+## Genesis Skeleton {#genesis-skeleton}
 
 [Eric Clemmons](https://ericclemmons.github.io/) is working on a "Modern, opinionated, full-stack starter kit for rapid, streamlined application development". The version 0.4.0 has just been released and has first-class support for React.
 <figure><a href="http://genesis-skeleton.com/"><img src="../images/blog/genesis_skeleton.png"></a>a></figure>
 
 
-## AgFlow Talk
+## AgFlow Talk {#agflow-talk}
 
 [Robert Zaremba](http://rz.scale-it.pl/) working on [AgFlow](http://www.agflow.com/) recently talked in Poland about React.
 
@@ -67,7 +67,7 @@ This round-up is the proof that React has taken off from its Facebook's root: it
 <figure><iframe src="https://docs.google.com/presentation/d/1JSFbjCuuexwOHCeHWBMNRIJdyfD2Z0ZQwX65WOWkfaI/embed?start=false" frameborder="0" width="100%" height="468" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"> </iframe></figure>
 
 
-## JSX
+## JSX {#jsx}
 
 [Todd Kennedy](http://tck.io/) working at Cond&eacute; Nast wrote [JSXHint](https://github.com/CondeNast/JSXHint) and explains in a blog post his perspective on JSX.
 
@@ -79,13 +79,13 @@ This round-up is the proof that React has taken off from its Facebook's root: it
 > [Read the full article...](http://tck.io/posts/jsxhint_and_react.html)
 
 
-## Photo Gallery
+## Photo Gallery {#photo-gallery}
 
 [Maykel Loomans](http://miekd.com/), designer at Instagram, wrote a gallery for photos he shot using React.
 <figure><a href="http://photos.miekd.com/xoxo2013/"><img src="../images/blog/xoxo2013.png"></a>a></figure>
 
 
-## Random Tweet
+## Random Tweet {#random-tweet}
 
 <img src="../images/blog/steve_reverse.gif" style="float: right;" />
 <div style="width: 320px;"><blockquote class="twitter-tweet"><p>I think this reversed gif of Steve Urkel best describes my changing emotions towards the React Lib <a href="http://t.co/JoX0XqSXX3">http://t.co/JoX0XqSXX3</a></p>&mdash; Ryan Seddon (@ryanseddon) <a href="https://twitter.com/ryanseddon/statuses/398572848802852864">November 7, 2013</a></blockquote></div>
diff --git a/content/blog/2013-12-19-react-v0.8.0.md b/content/blog/2013-12-19-react-v0.8.0.md
index 1a94597f8b..71c384d0e3 100644
--- a/content/blog/2013-12-19-react-v0.8.0.md
+++ b/content/blog/2013-12-19-react-v0.8.0.md
@@ -16,9 +16,9 @@ In order to make the transition to 0.8 for our current users as painless as poss
 We hope that by releasing `react` on npm, we will enable a new set of uses that have been otherwise difficult. All feedback is welcome!
 
 
-## Changelog
+## Changelog {#changelog}
 
-### React
+### React {#react}
 
 * Added support for more attributes:
   * `rows` & `cols` for `<textarea>`
@@ -29,16 +29,16 @@ We hope that by releasing `react` on npm, we will enable a new set of uses that
 * Fixed Selection events in IE11
 * Added `onContextMenu` events
 
-### React with Addons
+### React with Addons {#react-with-addons}
 
 * Fixed bugs with TransitionGroup when children were undefined
 * Added support for `onTransition`
 
-### react-tools
+### react-tools {#react-tools}
 
 * Upgraded `jstransform` and `esprima-fb`
 
-### JSXTransformer
+### JSXTransformer {#jsxtransformer}
 
 * Added support for use in IE8
 * Upgraded browserify, which reduced file size by ~65KB (16KB gzipped)
diff --git a/content/blog/2013-12-23-community-roundup-12.md b/content/blog/2013-12-23-community-roundup-12.md
index 368acb7f7a..994975227f 100644
--- a/content/blog/2013-12-23-community-roundup-12.md
+++ b/content/blog/2013-12-23-community-roundup-12.md
@@ -5,7 +5,7 @@ author: [vjeux]
 
 React got featured on the front-page of Hacker News thanks to the Om library. If you try it out for the first time, take a look at the [docs](/docs/getting-started.html) and do not hesitate to ask questions on the [Google Group](https://groups.google.com/group/reactjs), [IRC](irc://chat.freenode.net/reactjs) or [Stack Overflow](http://stackoverflow.com/questions/tagged/reactjs). We are trying our best to help you out!
 
-## The Future of JavaScript MVC
+## The Future of JavaScript MVC {#the-future-of-javascript-mvc}
 
 [David Nolen](https://swannodette.github.io/) announced Om, a thin wrapper on-top of React in ClojureScript. It stands out by only using immutable data structures. This unlocks the ability to write a very efficient [shouldComponentUpdate](/docs/component-specs.html#updating-shouldcomponentupdate) and get huge performance improvements on some tasks.
 
@@ -20,7 +20,7 @@ React got featured on the front-page of Hacker News thanks to the Om library. If
 
 
 
-## Scroll Position with React
+## Scroll Position with React {#scroll-position-with-react}
 
 Managing the scroll position when new content is inserted is usually very tricky to get right. [Vjeux](http://blog.vjeux.com/) discovered that [componentWillUpdate](/docs/component-specs.html#updating-componentwillupdate) and [componentDidUpdate](/docs/component-specs.html#updating-componentdidupdate) were triggered exactly at the right time to manage the scroll position.
 
@@ -43,7 +43,7 @@ Managing the scroll position when new content is inserted is usually very tricky
 > [Check out the blog article...](http://blog.vjeux.com/2013/javascript/scroll-position-with-react.html)
 
 
-## Lights Out
+## Lights Out {#lights-out}
 
 React declarative approach is well suited to write games. [Cheng Lou](https://github.com/chenglou) wrote the famous Lights Out game in React. It's a good example of use of [TransitionGroup](/docs/animation.html) to implement animations.
 <figure><a href="https://chenglou.github.io/react-lights-out/"><img src="../images/blog/lights-out.png"></a></figure>
@@ -51,7 +51,7 @@ React declarative approach is well suited to write games. [Cheng Lou](https://gi
 [Try it out!](https://chenglou.github.io/react-lights-out/)
 
 
-## Reactive Table Bookmarklet
+## Reactive Table Bookmarklet {#reactive-table-bookmarklet}
 
 [Stoyan Stefanov](http://www.phpied.com/) wrote a bookmarklet to process tables on the internet. It adds a little "pop" button that expands to a full-screen view with sorting, editing and export to csv and json.
 <figure><a href="http://www.phpied.com/reactivetable-bookmarklet/"><img src="../images/blog/reactive-bookmarklet.png"></a></figure>
@@ -59,13 +59,13 @@ React declarative approach is well suited to write games. [Cheng Lou](https://gi
 [Check out the blog post...](http://www.phpied.com/reactivetable-bookmarklet/)
 
 
-## MontageJS Tutorial in React
+## MontageJS Tutorial in React {#montagejs-tutorial-in-react}
 
 [Ross Allen](https://twitter.com/ssorallen) implemented [MontageJS](http://montagejs.org/)'s [Reddit tutorial](http://montagejs.org/docs/tutorial-reddit-client-with-montagejs.html) in React. This is a good opportunity to compare the philosophies of the two libraries.
 
 [View the source on JSFiddle...](https://jsfiddle.net/ssorallen/fEsYt/)
 
-## Writing Good React Components
+## Writing Good React Components {#writing-good-react-components}
 
 [William Högman Rudenmalm](http://blog.whn.se/) wrote an article on how to write good React components. This is full of good advice.
 
@@ -78,7 +78,7 @@ React declarative approach is well suited to write games. [Cheng Lou](https://gi
 > [Read the full article ...](http://blog.whn.se/post/69621609605/writing-good-react-components)
 
 
-## Hoodie React TodoMVC
+## Hoodie React TodoMVC {#hoodie-react-todomvc}
 
 [Sven Lito](http://svenlito.com/) integrated the React TodoMVC example within an [Hoodie](http://hood.ie/) web app environment. This should let you get started using Hoodie and React.
 
@@ -88,7 +88,7 @@ hoodie new todomvc -t "hoodiehq/hoodie-react-todomvc"
 
 [Check out on GitHub...](https://github.com/hoodiehq/hoodie-react-todomvc)
 
-## JSX Compiler
+## JSX Compiler {#jsx-compiler}
 
 Ever wanted to have a quick way to see what a JSX tag would be converted to? [Tim Yung](http://www.yungsters.com/) made a page for it.
 <figure><a href="/react/jsx-compiler.html"><img src="../images/blog/jsx-compiler.png"></a></figure>
@@ -97,6 +97,6 @@ Ever wanted to have a quick way to see what a JSX tag would be converted to? [Ti
 
 
 
-## Random Tweet
+## Random Tweet {#random-tweet}
 
 <center><blockquote class="twitter-tweet" lang="en"><p>.<a href="https://twitter.com/jordwalke">@jordwalke</a> lays down some truth <a href="http://t.co/AXAn0UlUe3">http://t.co/AXAn0UlUe3</a>, optimizing your JS application shouldn&#39;t force you to rewrite so much code <a href="https://twitter.com/search?q=%23reactjs&amp;src=hash">#reactjs</a></p>&mdash; David Nolen (@swannodette) <a href="https://twitter.com/swannodette/statuses/413780079249215488">December 19, 2013</a></blockquote></center>
diff --git a/content/blog/2013-12-30-community-roundup-13.md b/content/blog/2013-12-30-community-roundup-13.md
index 9002e106fa..fad6b1e017 100644
--- a/content/blog/2013-12-30-community-roundup-13.md
+++ b/content/blog/2013-12-30-community-roundup-13.md
@@ -6,7 +6,7 @@ author: [vjeux]
 Happy holidays! This blog post is a little-late Christmas present for all the React users. Hopefully it will inspire you to write awesome web apps in 2014!
 
 
-## React Touch
+## React Touch {#react-touch}
 
 [Pete Hunt](http://www.petehunt.net/) wrote three demos showing that React can be used to run 60fps native-like experiences on mobile web. A frosted glass effect, an image gallery with 3d animations and an infinite scroll view.
 
@@ -15,14 +15,14 @@ Happy holidays! This blog post is a little-late Christmas present for all the Re
 [Try out the demos!](https://petehunt.github.io/react-touch/)
 
 
-## Introduction to React
+## Introduction to React {#introduction-to-react}
 
 [Stoyan Stefanov](http://www.phpied.com/) talked at Joe Dev On Tech about React. He goes over all the features of the library and ends with a concrete example.
 
 <figure><iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/SMMRJif5QW0" frameborder="0" allowfullscreen></iframe></figure>
 
 
-## JSX: E4X The Good Parts
+## JSX: E4X The Good Parts {#jsx-e4x-the-good-parts}
 
 JSX is often compared to the now defunct E4X, [Vjeux](http://blog.vjeux.com/) went over all the E4X features and explained how JSX is different and hopefully doesn't repeat the same mistakes.
 
@@ -35,7 +35,7 @@ JSX is often compared to the now defunct E4X, [Vjeux](http://blog.vjeux.com/) we
 > [Continue reading ...](http://blog.vjeux.com/2013/javascript/jsx-e4x-the-good-parts.html)
 
 
-## React + Socket.io
+## React + Socket.io {#react--socketio}
 
 [Geert Pasteels](http://enome.be/nl) made a small experiment with Socket.io. He wrote a very small mixin that synchronizes React state with the server. Just include this mixin to your React component and it is now live!
 
@@ -60,7 +60,7 @@ componentWillUnmount: function () {
 [Check it out on GitHub...](https://github.com/Enome/react.io)
 
 
-## cssobjectify
+## cssobjectify {#cssobjectify}
 
 [Andrey Popp](http://andreypopp.com/) implemented a source transform that takes a CSS file and converts it to JSON. This integrates pretty nicely with React.
 
@@ -89,7 +89,7 @@ var MyComponent = React.createClass({
 [Check it out on GitHub...](https://github.com/andreypopp/cssobjectify)
 
 
-## ngReact
+## ngReact {#ngreact}
 
 [David Chang](http://davidandsuzi.com/) working at [HasOffer](http://www.hasoffers.com/) wanted to speed up his Angular app and replaced Angular primitives by React at different layers. When using React naively it is 67% faster, but when combining it with angular's transclusion it is 450% slower.
 
@@ -99,7 +99,7 @@ var MyComponent = React.createClass({
 > [Read the full article...](http://davidandsuzi.com/ngreact-react-components-in-angular/)
 
 
-## vim-jsx
+## vim-jsx {#vim-jsx}
 
 [Max Wang](https://github.com/mxw) made a vim syntax highlighting and indentation plugin for vim.
 
@@ -112,6 +112,6 @@ var MyComponent = React.createClass({
 > [View on GitHub...](https://github.com/mxw/vim-jsx)
 
 
-## Random Tweet
+## Random Tweet {#random-tweet}
 
 <center><blockquote class="twitter-tweet" lang="en"><p>I may be starting to get annoying with this, but ReactJS is really exciting. I truly feel the virtual DOM is a game changer.</p>&mdash; Eric Florenzano (@ericflo) <a href="https://twitter.com/ericflo/statuses/413842834974732288">December 20, 2013</a></blockquote></center>
diff --git a/content/blog/2014-01-06-community-roundup-14.md b/content/blog/2014-01-06-community-roundup-14.md
index edc6dad663..75395546af 100644
--- a/content/blog/2014-01-06-community-roundup-14.md
+++ b/content/blog/2014-01-06-community-roundup-14.md
@@ -5,7 +5,7 @@ author: [vjeux]
 
 The theme of this first round-up of 2014 is integration. I've tried to assemble a list of articles and projects that use React in various environments.
 
-## React Baseline
+## React Baseline {#react-baseline}
 
 React is only one-piece of your web application stack. [Mark Lussier](https://github.com/intabulas) shared his baseline stack that uses React along with Grunt, Browserify, Bower, Zepto, Director and Sass. This should help you get started using React for a new project.
 
@@ -18,7 +18,7 @@ React is only one-piece of your web application stack. [Mark Lussier](https://gi
 > [Check it out on GitHub...](https://github.com/intabulas/reactjs-baseline)
 
 
-## Animal Sounds
+## Animal Sounds {#animal-sounds}
 
 [Josh Duck](http://joshduck.com/) used React in order to build a Windows 8 tablet app. This is a good example of a touch app written in React.
 [![](../images/blog/animal-sounds.jpg)](http://apps.microsoft.com/windows/en-us/app/baby-play-animal-sounds/9280825c-2ed9-41c0-ba38-aa9a5b890bb9)
@@ -26,7 +26,7 @@ React is only one-piece of your web application stack. [Mark Lussier](https://gi
 [Download the app...](http://apps.microsoft.com/windows/en-us/app/baby-play-animal-sounds/9280825c-2ed9-41c0-ba38-aa9a5b890bb9)
 
 
-## React Rails Tutorial
+## React Rails Tutorial {#react-rails-tutorial}
 
 [Selem Delul](http://selem.im) bundled the [React Tutorial](/tutorial/tutorial.html) into a rails app. This is a good example on how to get started with a rails project.
 
@@ -41,7 +41,7 @@ React is only one-piece of your web application stack. [Mark Lussier](https://gi
 >
 > [View on GitHub...](https://github.com/necrodome/react-rails-tutorial)
 
-## Mixing with Backbone
+## Mixing with Backbone {#mixing-with-backbone}
 
 [Eldar Djafarov](http://eldar.djafarov.com/) implemented a mixin to link Backbone models to React state and a small abstraction to write two-way binding on-top.
 
@@ -50,7 +50,7 @@ React is only one-piece of your web application stack. [Mark Lussier](https://gi
 [Check out the blog post...](http://eldar.djafarov.com/2013/11/reactjs-mixing-with-backbone/)
 
 
-## React Infinite Scroll
+## React Infinite Scroll {#react-infinite-scroll}
 
 [Guillaume Rivals](https://twitter.com/guillaumervls) implemented an InfiniteScroll component. This is a good example of a React component that has a simple yet powerful API.
 
@@ -67,13 +67,13 @@ React is only one-piece of your web application stack. [Mark Lussier](https://gi
 [Try it out on GitHub!](https://github.com/guillaumervls/react-infinite-scroll)
 
 
-## Web Components Style
+## Web Components Style {#web-components-style}
 
 [Thomas Aylott](http://subtlegradient.com/) implemented an API that looks like Web Components but using React underneath.
 
 [View the source on JSFiddle...](http://jsfiddle.net/SubtleGradient/ue2Aa)
 
-## React vs Angular
+## React vs Angular {#react-vs-angular}
 
 React is often compared with Angular. [Pete Hunt](http://skulbuny.com/2013/10/31/react-vs-angular/) wrote an opinionated post on the subject.
 
@@ -85,6 +85,6 @@ React is often compared with Angular. [Pete Hunt](http://skulbuny.com/2013/10/31
 
 
 
-## Random Tweet
+## Random Tweet {#random-tweet}
 
 <div><blockquote class="twitter-tweet" lang="en"><p>Really intrigued by React.js. I&#39;ve looked at all JS frameworks, and excepting <a href="https://twitter.com/serenadejs">@serenadejs</a> this is the first one which makes sense to me.</p>&mdash; Jonas Nicklas (@jonicklas) <a href="https://twitter.com/jonicklas/statuses/412640708755869696">December 16, 2013</a></blockquote></div>
diff --git a/content/blog/2014-02-05-community-roundup-15.md b/content/blog/2014-02-05-community-roundup-15.md
index 729a2edea5..8d5f5f606b 100644
--- a/content/blog/2014-02-05-community-roundup-15.md
+++ b/content/blog/2014-02-05-community-roundup-15.md
@@ -7,14 +7,14 @@ Interest in React seems to have surged ever since David Nolen ([@swannodette](ht
 
 In this React Community Round-up, we are taking a closer look at React from a functional programming perspective.
 
-## "React: Another Level of Indirection"
+## "React: Another Level of Indirection" {#react-another-level-of-indirection}
 To start things off, Eric Normand ([@ericnormand](https://twitter.com/ericnormand)) of [LispCast](http://lispcast.com) makes the case for [React from a general functional programming standpoint](http://www.lispcast.com/react-another-level-of-indirection) and explains how React's "Virtual DOM provides the last piece of the Web Frontend Puzzle for ClojureScript".
 
 > The Virtual DOM is an indirection mechanism that solves the difficult problem of DOM programming: how to deal with incremental changes to a stateful tree structure. By abstracting away the statefulness, the Virtual DOM turns the real DOM into an immediate mode GUI, which is perfect for functional programming.
 >
 > [Read the full post...](http://www.lispcast.com/react-another-level-of-indirection)
 
-## Reagent: Minimalistic React for ClojureScript
+## Reagent: Minimalistic React for ClojureScript {#reagent-minimalistic-react-for-clojurescript}
 Dan Holmsand ([@holmsand](https://twitter.com/holmsand)) created [Reagent](https://holmsand.github.io/reagent/), a simplistic ClojureScript API to React.
 
 > It allows you to define efficient React components using nothing but plain ClojureScript functions and data, that describe your UI using a Hiccup-like syntax.
@@ -24,7 +24,7 @@ Dan Holmsand ([@holmsand](https://twitter.com/holmsand)) created [Reagent](https
 > [Check it out on GitHub...](https://holmsand.github.io/reagent/)
 
 
-## Functional DOM programming
+## Functional DOM programming {#functional-dom-programming}
 
 React's one-way data-binding naturally lends itself to a functional programming approach. Facebook's Pete Hunt ([@floydophone](https://twitter.com/floydophone)) explores how one would go about [writing web apps in a functional manner](https://medium.com/p/67d81637d43). Spoiler alert:
 
@@ -38,7 +38,7 @@ Pete also explains this in detail at his #MeteorDevShop talk (about 30 Minutes):
 
 
 
-## Kioo: Separating markup and logic
+## Kioo: Separating markup and logic {#kioo-separating-markup-and-logic}
 [Creighton Kirkendall](https://github.com/ckirkendall) created [Kioo](https://github.com/ckirkendall/kioo), which adds Enlive-style templating to React. HTML templates are separated from the application logic. Kioo comes with separate examples for both Om and Reagent.
 
 A basic example from github:
@@ -85,7 +85,7 @@ A basic example from github:
 (om/root app-state my-page (.-body js/document))
 ```
 
-## Om
+## Om {#om}
 
 In an interview with David Nolen, Tom Coupland ([@tcoupland](https://twitter.com/tcoupland)) of InfoQ provides a nice summary of recent developments around Om ("[Om: Enhancing Facebook's React with Immutability](http://www.infoq.com/news/2014/01/om-react)").
 
@@ -93,7 +93,7 @@ In an interview with David Nolen, Tom Coupland ([@tcoupland](https://twitter.com
 >
 > [Read the full interview...](http://www.infoq.com/news/2014/01/om-react)
 
-### A slice of React, ClojureScript and Om
+### A slice of React, ClojureScript and Om {#a-slice-of-react-clojurescript-and-om}
 
 Fredrik Dyrkell ([@lexicallyscoped](https://twitter.com/lexicallyscoped)) rewrote part of the [React tutorial in both ClojureScript and Om](http://www.lexicallyscoped.com/2013/12/25/slice-of-reactjs-and-cljs.html), along with short, helpful explanations.
 
@@ -105,21 +105,21 @@ In a separate post, Dyrkell breaks down [how to build a binary clock component](
 
 [[Demo](http://www.lexicallyscoped.com/demo/binclock/)] [[Code](https://github.com/fredyr/binclock/blob/master/src/binclock/core.cljs)]
 
-### Time Travel: Implementing undo in Om
+### Time Travel: Implementing undo in Om {#time-travel-implementing-undo-in-om}
 David Nolen shows how to leverage immutable data structures to [add global undo](https://swannodette.github.io/2013/12/31/time-travel/) functionality to an app – using just 13 lines of ClojureScript.
 
-### A Step-by-Step Om Walkthrough
+### A Step-by-Step Om Walkthrough {#a-step-by-step-om-walkthrough}
 
 [Josh Lehman](http://www.joshlehman.me) took the time to create an extensive [step-by-step walkthrough](http://www.joshlehman.me/rewriting-the-react-tutorial-in-om/) of the React tutorial in Om. The well-documented source is on [github](https://github.com/jalehman/omtut-starter).
 
-### Omkara
+### Omkara {#omkara}
 
 [brendanyounger](https://github.com/brendanyounger) created [omkara](https://github.com/brendanyounger/omkara), a starting point for ClojureScript web apps based on Om/React. It aims to take advantage of server-side rendering and comes with a few tips on getting started with Om/React projects.
 
-### Om Experience Report
+### Om Experience Report {#om-experience-report}
 Adam Solove ([@asolove](https://twitter.com/asolove/)) [dives a little deeper into Om, React and ClojureScript](http://adamsolove.com/js/clojure/2014/01/06/om-experience-report.html). He shares some helpful tips he gathered while building his [CartoCrayon](https://github.com/asolove/carto-crayon) prototype.
 
-## Not-so-random Tweet
+## Not-so-random Tweet {#not-so-random-tweet}
 
 
 <div><blockquote class="twitter-tweet" lang="en"><p>[@swannodette](https://twitter.com/swannodette) No thank you! It's honestly a bit weird because Om is exactly what I didn't know I wanted for doing functional UI work.</p>&mdash; Adam Solove (@asolove) <a href="https://twitter.com/asolove/status/420294067637858304">January 6, 2014</a></blockquote></div>
diff --git a/content/blog/2014-02-15-community-roundup-16.md b/content/blog/2014-02-15-community-roundup-16.md
index 84796ba64c..064cbb8cc1 100644
--- a/content/blog/2014-02-15-community-roundup-16.md
+++ b/content/blog/2014-02-15-community-roundup-16.md
@@ -6,14 +6,14 @@ author: [jgebhardt]
 There have been many posts recently covering the <i>why</i> and <i>how</i> of React. This week's community round-up includes a collection of recent articles to help you get started with React, along with a few posts that explain some of the inner workings.
 
 
-## React in a nutshell
+## React in a nutshell {#react-in-a-nutshell}
 Got five minutes to pitch React to your coworkers? John Lynch ([@johnrlynch](https://twitter.com/johnrlynch)) put together [this excellent and refreshing slideshow](http://slid.es/johnlynch/reactjs):
 
 <iframe src="//slid.es/johnlynch/reactjs/embed" width="100%" height="420" scrolling="no" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
 
 
 
-## React's diff algorithm
+## React's diff algorithm {#reacts-diff-algorithm}
 
 React core team member Christopher Chedeau ([@vjeux](https://twitter.com/vjeux)) explores the innards of React's tree diffing algorithm in this [extensive and well-illustrated post](http://calendar.perfplanet.com/2013/diff/). <figure>[![](../images/blog/react-diff-tree.png)](http://calendar.perfplanet.com/2013/diff/)</figure>
 
@@ -22,7 +22,7 @@ While we're talking about tree diffing: Matt Esch ([@MatthewEsch](https://twitte
 
 
 
-## Many, many new introductions to React!
+## Many, many new introductions to React! {#many-many-new-introductions-to-react}
 
 
 
@@ -40,23 +40,23 @@ Taylor Lapeyre ([@taylorlapeyre](https://twitter.com/taylorlapeyre)) wrote anoth
 
 [This "Deep explanation for newbies"](http://www.webdesignporto.com/react-js-in-pure-javascript-facebook-library/?utm_source=echojs&utm_medium=post&utm_campaign=echojs) by [@ProJavaScript](https://twitter.com/ProJavaScript) explains how to get started building a React game without using the optional JSX syntax.
 
-### React around the world
+### React around the world {#react-around-the-world}
 
 It's great to see the React community expand internationally. [This site](http://habrahabr.ru/post/189230/) features a React introduction in Russian.
 
-### React tutorial series
+### React tutorial series {#react-tutorial-series}
 
 [Christopher Pitt](https://medium.com/@followchrisp) explains [React Components](https://medium.com/react-tutorials/828c397e3dc8) and [React Properties](https://medium.com/react-tutorials/ef11cd55caa0). The former includes a nice introduction to using JSX, while the latter focuses on adding interactivity and linking multiple components together. Also check out the [other posts in his React Tutorial series](https://medium.com/react-tutorials), e.g. on using [React + Backbone Model](https://medium.com/react-tutorials/8aaec65a546c) and [React + Backbone Router](https://medium.com/react-tutorials/c00be0cf1592).
 
-### Beginner tutorial: Implementing the board game Go
+### Beginner tutorial: Implementing the board game Go {#beginner-tutorial-implementing-the-board-game-go}
 
 [Chris LaRose](http://cjlarose.com/) walks through the steps of creating a Go app in React, showing how to separate application logic from the rendered components. Check out his [tutorial](http://cjlarose.com/2014/01/09/react-board-game-tutorial.html) or go straight to the [code](https://github.com/cjlarose/react-go).
 
-### Egghead.io video tutorials
+### Egghead.io video tutorials {#eggheadio-video-tutorials}
 
 Joe Maddalone ([@joemaddalone](https://twitter.com/joemaddalone)) of [egghead.io](https://egghead.io/) created a series of React video tutorials, such as [this](http://www.youtube-nocookie.com/v/rFvZydtmsxM) introduction to React Components. [[part 1](http://www.youtube-nocookie.com/v/rFvZydtmsxM)], [[part 2](http://www.youtube-nocookie.com/v/5yvFLrt7N8M)]
 
-### "React: Finally, a great server/client web stack"
+### "React: Finally, a great server/client web stack" {#react-finally-a-great-serverclient-web-stack}
 
 Eric Florenzano ([@ericflo](https://twitter.com/ericflo)) sheds some light on what makes React perfect for server rendering:
 
@@ -66,12 +66,12 @@ Eric Florenzano ([@ericflo](https://twitter.com/ericflo)) sheds some light on wh
 
 > [Read the full post...](http://eflorenzano.com/blog/2014/01/23/react-finally-server-client/)
 
-## Building a complex React component
+## Building a complex React component {#building-a-complex-react-component}
 [Matt Harrison](http://matt-harrison.com/) walks through the process of [creating an SVG-based Resistance Calculator](http://matt-harrison.com/building-a-complex-web-component-with-facebooks-react-library/) using React. <figure>[![](../images/blog/resistance-calculator.png)](http://matt-harrison.com/building-a-complex-web-component-with-facebooks-react-library/)</figure>
 
 
 
-## Random Tweets
+## Random Tweets {#random-tweets}
 
 <div><blockquote class="twitter-tweet" lang="en"><p>[#reactjs](https://twitter.com/search?q=%23reactjs&src=hash) has very simple API, but it's amazing how much work has been done under the hood to make it blazing fast.</p>&mdash; Anton Astashov (@anton_astashov) <a href="https://twitter.com/anton_astashov/status/417556491646693378">December 30, 2013</a></blockquote></div>
 
diff --git a/content/blog/2014-02-16-react-v0.9-rc1.md b/content/blog/2014-02-16-react-v0.9-rc1.md
index 177f7372cc..afc3822ba8 100644
--- a/content/blog/2014-02-16-react-v0.9-rc1.md
+++ b/content/blog/2014-02-16-react-v0.9-rc1.md
@@ -20,7 +20,7 @@ We've also published version `0.9.0-rc1` of the `react` and `react-tools` packag
 
 Please try these builds out and [file an issue on GitHub](https://github.com/facebook/react/issues/new) if you see anything awry.
 
-## Upgrade Notes
+## Upgrade Notes {#upgrade-notes}
 
 In addition to the changes to React core listed below, we've made a small change to the way JSX interprets whitespace to make things more consistent. With this release, space between two components on the same line will be preserved, while a newline separating a text node from a tag will be eliminated in the output. Consider the code:
 
@@ -53,11 +53,11 @@ We believe this new behavior is more helpful and eliminates cases where unwanted
 
 In cases where you want to preserve the space adjacent to a newline, you can write a JS string like `{"Monkeys: "}` in your JSX source. We've included a script to do an automated codemod of your JSX source tree that preserves the old whitespace behavior by adding and removing spaces appropriately. You can [install jsx\_whitespace\_transformer from npm](https://github.com/facebook/react/blob/master/npm-jsx_whitespace_transformer/README.md) and run it over your source tree to modify files in place. The transformed JSX files will preserve your code's existing whitespace behavior.
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes}
 
 - The lifecycle methods `componentDidMount` and `componentDidUpdate` no longer receive the root node as a parameter; use `this.getDOMNode()` instead
 - Whenever a prop is equal to `undefined`, the default value returned by `getDefaultProps` will now be used instead
@@ -69,7 +69,7 @@ In cases where you want to preserve the space adjacent to a newline, you can wri
 - On `input`, `select`, and `textarea` elements, `.getValue()` is no longer supported; use `.getDOMNode().value` instead
 - `this.context` on components is now reserved for internal use by React
 
-#### New Features
+#### New Features {#new-features}
 
 - React now never rethrows errors, so stack traces are more accurate and Chrome's purple break-on-error stop sign now works properly
 - Added a new tool for profiling React components and identifying places where defining `shouldComponentUpdate` can give performance improvements
@@ -92,7 +92,7 @@ In cases where you want to preserve the space adjacent to a newline, you can wri
 - Added support for `onReset` on `<form>` elements
 - The `autoFocus` attribute is now polyfilled consistently on `input`, `select`, and `textarea`
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes}
 
 - React no longer adds an `__owner__` property to each component's `props` object; passed-in props are now never mutated
 - When nesting top-level components (e.g., calling `React.renderComponent` within `componentDidMount`), events now properly bubble to the parent component
@@ -112,7 +112,7 @@ In cases where you want to preserve the space adjacent to a newline, you can wri
 - `scrollLeft` and `scrollTop` are no longer accessed on document.body, eliminating a warning in Chrome
 - General performance fixes, memory optimizations, improvements to warnings and error messages
 
-### React with Addons
+### React with Addons {#react-with-addons}
 
 - `React.addons.TransitionGroup` was renamed to `React.addons.CSSTransitionGroup`
 - `React.addons.TransitionGroup` was added as a more general animation wrapper
@@ -122,7 +122,7 @@ In cases where you want to preserve the space adjacent to a newline, you can wri
 - Performance optimizations for CSSTransitionGroup
 - On checkbox `<input>` elements, `checkedLink` is now supported for two-way binding
 
-### JSX Compiler and react-tools Package
+### JSX Compiler and react-tools Package {#jsx-compiler-and-react-tools-package}
 
 - Whitespace normalization has changed; now space between two tags on the same line will be preserved, while newlines between two tags will be removed
 - The `react-tools` npm package no longer includes the React core libraries; use the `react` package instead.
diff --git a/content/blog/2014-02-20-react-v0.9.md b/content/blog/2014-02-20-react-v0.9.md
index 19eb598245..bcb02397cb 100644
--- a/content/blog/2014-02-20-react-v0.9.md
+++ b/content/blog/2014-02-20-react-v0.9.md
@@ -20,7 +20,7 @@ As always, the release is available for download from the CDN:
 
 We've also published version `0.9.0` of the `react` and `react-tools` packages on npm and the `react` package on bower.
 
-## What’s New?
+## What’s New? {#whats-new}
 
 This version includes better support for normalizing event properties across all supported browsers so that you need to worry even less about cross-browser differences. We've also made many improvements to error messages and have refactored the core to never rethrow errors, so stack traces are more accurate and Chrome's purple break-on-error stop sign now works properly.
 
@@ -28,7 +28,7 @@ We've also added to the add-ons build [React.addons.TestUtils](/docs/test-utils.
 
 We've also made several other improvements and a few breaking changes; the full changelog is provided below.
 
-## JSX Whitespace
+## JSX Whitespace {#jsx-whitespace}
 
 In addition to the changes to React core listed below, we've made a small change to the way JSX interprets whitespace to make things more consistent. With this release, space between two components on the same line will be preserved, while a newline separating a text node from a tag will be eliminated in the output. Consider the code:
 
@@ -61,11 +61,11 @@ We believe this new behavior is more helpful and eliminates cases where unwanted
 
 In cases where you want to preserve the space adjacent to a newline, you can write `{'Monkeys: '}` or `Monkeys:{' '}` in your JSX source. We've included a script to do an automated codemod of your JSX source tree that preserves the old whitespace behavior by adding and removing spaces appropriately. You can [install jsx\_whitespace\_transformer from npm](https://github.com/facebook/react/blob/master/npm-jsx_whitespace_transformer/README.md) and run it over your source tree to modify files in place. The transformed JSX files will preserve your code's existing whitespace behavior.
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes}
 
 - The lifecycle methods `componentDidMount` and `componentDidUpdate` no longer receive the root node as a parameter; use `this.getDOMNode()` instead
 - Whenever a prop is equal to `undefined`, the default value returned by `getDefaultProps` will now be used instead
@@ -77,7 +77,7 @@ In cases where you want to preserve the space adjacent to a newline, you can wri
 - On `input`, `select`, and `textarea` elements, `.getValue()` is no longer supported; use `.getDOMNode().value` instead
 - `this.context` on components is now reserved for internal use by React
 
-#### New Features
+#### New Features {#new-features}
 
 - React now never rethrows errors, so stack traces are more accurate and Chrome's purple break-on-error stop sign now works properly
 - Added support for SVG tags `defs`, `linearGradient`, `polygon`, `radialGradient`, `stop`
@@ -102,7 +102,7 @@ In cases where you want to preserve the space adjacent to a newline, you can wri
 - Added support for `onReset` on `<form>` elements
 - The `autoFocus` attribute is now polyfilled consistently on `input`, `select`, and `textarea`
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes}
 
 - React no longer adds an `__owner__` property to each component's `props` object; passed-in props are now never mutated
 - When nesting top-level components (e.g., calling `React.renderComponent` within `componentDidMount`), events now properly bubble to the parent component
@@ -123,7 +123,7 @@ In cases where you want to preserve the space adjacent to a newline, you can wri
 - `scrollLeft` and `scrollTop` are no longer accessed on document.body, eliminating a warning in Chrome
 - General performance fixes, memory optimizations, improvements to warnings and error messages
 
-### React with Addons
+### React with Addons {#react-with-addons}
 
 - `React.addons.TestUtils` was added to help write unit tests
 - `React.addons.TransitionGroup` was renamed to `React.addons.CSSTransitionGroup`
@@ -134,7 +134,7 @@ In cases where you want to preserve the space adjacent to a newline, you can wri
 - Performance optimizations for CSSTransitionGroup
 - On checkbox `<input>` elements, `checkedLink` is now supported for two-way binding
 
-### JSX Compiler and react-tools Package
+### JSX Compiler and react-tools Package {#jsx-compiler-and-react-tools-package}
 
 - Whitespace normalization has changed; now space between two tags on the same line will be preserved, while newlines between two tags will be removed
 - The `react-tools` npm package no longer includes the React core libraries; use the `react` package instead.
diff --git a/content/blog/2014-02-24-community-roundup-17.md b/content/blog/2014-02-24-community-roundup-17.md
index f689cf4490..41dd68a08b 100644
--- a/content/blog/2014-02-24-community-roundup-17.md
+++ b/content/blog/2014-02-24-community-roundup-17.md
@@ -6,50 +6,50 @@ author: [jgebhardt]
 
 It's exciting to see the number of real-world React applications and components skyrocket over the past months! This community round-up features a few examples of inspiring React applications and components.
 
-## React in the Real World
+## React in the Real World {#react-in-the-real-world}
 
-### Facebook Lookback video editor
+### Facebook Lookback video editor {#facebook-lookback-video-editor}
 Large parts of Facebook's web frontend are already powered by React. The recently released Facebook [Lookback video and its corresponding editor](https://www.facebook.com/lookback/edit/) are great examples of a complex, real-world React app.
 
-### Russia's largest bank is now powered by React
+### Russia's largest bank is now powered by React {#russias-largest-bank-is-now-powered-by-react}
 Sberbank, Russia's largest bank, recently switched large parts of their site to use React, as detailed in [this post by Vyacheslav Slinko](https://groups.google.com/forum/#!topic/reactjs/Kj6WATX0atg).
 
-### Relato
+### Relato {#relato}
 [Relato](https://bripkens.github.io/relato/) by [Ben Ripkens](https://github.com/bripkens) shows Open Source Statistics based on npm data. It features a filterable and sortable table built in React. Check it out &ndash; it's super fast!
 
-### Makona Editor
+### Makona Editor {#makona-editor}
 
  John Lynch ([@johnrlynch](https://twitter.com/johnrlynch)) created Makona, a block-style document editor for the web. Blocks of different content types comprise documents, authored using plain markup. At the switch of a toggle, block contents are then rendered on the page. While not quite a WYSIWYG editor, Makona uses plain textareas for input. This makes it compatible with a wider range of platforms than traditional rich text editors.
 [![](../images/blog/makona-editor.png)](https://johnthethird.github.io/makona-editor/)
 
-### Create Chrome extensions using React
+### Create Chrome extensions using React {#create-chrome-extensions-using-react}
 React is in no way limited to just web pages. Brandon Tilley ([@BinaryMuse](https://twitter.com/BinaryMuse)) just released a detailed walk-through of [how he built his Chrome extension "Fast Tab Switcher" using React](http://brandontilley.com/2014/02/24/creating-chrome-extensions-with-react.html).
 
 
-### Twitter Streaming Client
+### Twitter Streaming Client {#twitter-streaming-client}
 
 Javier Aguirre ([@javaguirre](https://twitter.com/javaguirre)) put together a simple [twitter streaming client using node, socket.io and React](http://javaguirre.net/2014/02/11/twitter-streaming-api-with-node-socket-io-and-reactjs/).
 
 
-### Sproutsheet
+### Sproutsheet {#sproutsheet}
 
 [Sproutsheet](http://sproutsheet.com/) is a gardening calendar. You can use it to track certain events that happen in the life of your plants. It's currently in beta and supports localStorage, and data/image import and export.
 
-### Instant Domain Search
+### Instant Domain Search {#instant-domain-search}
 [Instant Domain Search](https://instantdomainsearch.com/) also uses React. It sure is instant!
 
 
-### SVG-based graphical node editor
+### SVG-based graphical node editor {#svg-based-graphical-node-editor}
 [NoFlo](http://noflojs.org/) and [Meemoo](http://meemoo.org/) developer [Forresto Oliphant](http://www.forresto.com/) built an awesome SVG-based [node editor](https://forresto.github.io/prototyping/react/) in React.
  [![](../images/blog/react-svg-fbp.png)](https://forresto.github.io/prototyping/react/)
 
 
-### Ultimate Tic-Tac-Toe Game in React
+### Ultimate Tic-Tac-Toe Game in React {#ultimate-tic-tac-toe-game-in-react}
 Rafał Cieślak ([@Ravicious](https://twitter.com/Ravicious)) wrote a [React version](https://ravicious.github.io/ultimate-ttt/) of [Ultimate Tic Tac Toe](http://mathwithbaddrawings.com/2013/06/16/ultimate-tic-tac-toe/). Find the source [here](https://github.com/ravicious/ultimate-ttt).
 
 
 
-### ReactJS Gallery
+### ReactJS Gallery {#reactjs-gallery}
 
 [Emanuele Rampichini](https://github.com/lele85)'s [ReactJS Gallery](https://github.com/lele85/ReactGallery) is a cool demo app that shows fullscreen images from a folder on the server. If the folder content changes, the gallery app updates via websockets.
 
@@ -59,29 +59,29 @@ Emanuele shared this awesome demo video with us:
 
 
 
-## React Components
+## React Components {#react-components}
 
 
-### Table Sorter
+### Table Sorter {#table-sorter}
 [Table Sorter](https://bgerm.github.io/react-table-sorter-demo/) by [bgerm](https://github.com/bgerm) [[source](https://github.com/bgerm/react-table-sorter-demo)] is another helpful React component.
 
-### Static-search
+### Static-search {#static-search}
 
 Dmitry Chestnykh [@dchest](https://twitter.com/dchest) wrote a [static search indexer](https://github.com/dchest/static-search) in Go, along with a [React-based web front-end](http://www.codingrobots.com/search/) that consumes search result via JSON.
 
-### Lorem Ipsum component
+### Lorem Ipsum component {#lorem-ipsum-component}
 
 [Martin Andert](https://github.com/martinandert) created [react-lorem-component](https://github.com/martinandert/react-lorem-component), a simple component for all your placeholding needs.
 
-### Input with placeholder shim
+### Input with placeholder shim {#input-with-placeholder-shim}
 [react-input-placeholder](enigma-io/react-input-placeholder) by [enigma-io](@enigma-io) is a small wrapper around React.DOM.input that shims in placeholder functionality for browsers that don't natively support it.
 
-### diContainer
+### diContainer {#dicontainer}
 
 [dicontainer](https://github.com/SpektrumFM/dicontainer) provides a dependency container that lets you inject Angular-style providers and services as simple React.js Mixins.
 
 
-## React server rendering
+## React server rendering {#react-server-rendering}
 
 Ever wonder how to pre-render React components on the server? [react-server-example](https://github.com/mhart/react-server-example) by Michael Hart ([@hichaelmart](https://twitter.com/hichaelmart)) walks through the necessary steps.
 
@@ -89,6 +89,6 @@ Similarly, Alan deLevie ([@adelevie](https://twitter.com/adelevie)) created [rea
 
 
 
-## Random Tweet
+## Random Tweet {#random-tweet}
 
 <div><blockquote class="twitter-tweet" lang="en"><p>Recent changes: web ui is being upgraded to [#reactjs](https://twitter.com/search?q=%23reactjs&src=hash), HEAD~4 at [https://camlistore.googlesource.com/camlistore/](https://camlistore.googlesource.com/camlistore/)</p>&mdash; Camlistore (@Camlistore) <a href="https://twitter.com/Camlistore/status/423925795820539904">January 16, 2014</a></blockquote></div>
diff --git a/content/blog/2014-03-14-community-roundup-18.md b/content/blog/2014-03-14-community-roundup-18.md
index c91e47a122..f803a1feef 100644
--- a/content/blog/2014-03-14-community-roundup-18.md
+++ b/content/blog/2014-03-14-community-roundup-18.md
@@ -5,11 +5,11 @@ author: [jgebhardt]
 
 In this Round-up, we are taking a few closer looks at React's interplay with different frameworks and architectures.
 
-## "Little framework BIG splash"
+## "Little framework BIG splash" {#little-framework-big-splash}
 
 Let's start with yet another refreshing introduction to React: Craig Savolainen ([@maedhr](https://twitter.com/maedhr)) walks through some first steps, demonstrating [how to build a Google Maps component](http://infinitemonkeys.influitive.com/little-framework-big-splash) using React.
 
-## Architecting your app with react
+## Architecting your app with react {#architecting-your-app-with-react}
 
 Brandon Konkle ([@bkonkle](https://twitter.com/bkonkle))
 [Architecting your app with react](http://lincolnloop.com/blog/architecting-your-app-react-part-1/)
@@ -19,13 +19,13 @@ We're looking forward to part 2!
 >
 > [Read the full article...](http://lincolnloop.com/blog/architecting-your-app-react-part-1/)
 
-## React vs. async DOM manipulation
+## React vs. async DOM manipulation {#react-vs-async-dom-manipulation}
 
 Eliseu Monar ([@eliseumds](https://twitter.com/eliseumds))'s post "[ReactJS vs async concurrent rendering](http://eliseumds.tumblr.com/post/77843550010/vitalbox-pchr-reactjs-vs-async-concurrent-rendering)" is a great example of how React quite literally renders a whole array of common web development work(arounds) obsolete.
 
 
 
-## React, Scala and the Play Framework
+## React, Scala and the Play Framework {#react-scala-and-the-play-framework}
 [Matthias Nehlsen](http://matthiasnehlsen.com/) wrote a detailed introductory piece on [React and the Play Framework](http://matthiasnehlsen.com/blog/2014/01/05/play-framework-and-facebooks-react-library/), including a helpful architectural diagram of a typical React app.
 
 Nehlsen's React frontend is the second implementation of his chat application's frontend, following an AngularJS version. Both implementations are functionally equivalent and offer some perspective on differences between the two frameworks.
@@ -34,17 +34,17 @@ In [another article](http://matthiasnehlsen.com/blog/2014/01/24/scala-dot-js-and
 
 Also check out his [talk](http://m.ustream.tv/recorded/42780242) at Ping Conference 2014, in which he walks through a lot of the previously content in great detail.
 
-## React and Backbone
+## React and Backbone {#react-and-backbone}
 
 The folks over at [Venmo](https://venmo.com/) are using React in conjunction with Backbone.
 Thomas Boyt ([@thomasaboyt](https://twitter.com/thomasaboyt)) wrote [this detailed piece](http://www.thomasboyt.com/2013/12/17/using-reactjs-as-a-backbone-view.html) about why React and Backbone are "a fantastic pairing".
 
-## React vs. Ember
+## React vs. Ember {#react-vs-ember}
 
 Eric Berry ([@coderberry](https://twitter.com/coderberry)) developed Ember equivalents for some of the official React examples. Read his post for a side-by-side comparison of the respective implementations: ["Facebook React vs. Ember"](https://instructure.github.io/blog/2013/12/17/facebook-react-vs-ember/).
 
 
-## React and plain old HTML
+## React and plain old HTML {#react-and-plain-old-html}
 
 Daniel Lo Nigro ([@Daniel15](https://twitter.com/Daniel15)) created [React-Magic](https://github.com/reactjs/react-magic), which leverages React to ajaxify plain old html pages and even [allows CSS transitions between pageloads](http://stuff.dan.cx/facebook/react-hacks/magic/red.php).
 
@@ -54,15 +54,15 @@ Daniel Lo Nigro ([@Daniel15](https://twitter.com/Daniel15)) created [React-Magic
 
 On a related note, [Reactize](https://turbo-react.herokuapp.com/) by Ross Allen ([@ssorallen](https://twitter.com/ssorallen)) is a similarly awesome project: A wrapper for Rails' [Turbolinks](https://github.com/rails/turbolinks/), which seems to have inspired John Lynch ([@johnrlynch](https://twitter.com/johnrlynch)) to then create [a server-rendered version using the JSX transformer in Rails middleware](http://www.rigelgroupllc.com/blog/2014/01/12/react-jsx-transformer-in-rails-middleware/).
 
-## React and Object.observe
+## React and Object.observe {#react-and-objectobserve}
 Check out [François de Campredon](https://github.com/fdecampredon)'s implementation of [TodoMVC based on React and ES6's Object.observe](https://github.com/fdecampredon/react-observe-todomvc/).
 
 
-## React and Angular
+## React and Angular {#react-and-angular}
 
 Ian Bicking ([@ianbicking](https://twitter.com/ianbicking)) of Mozilla Labs [explains why he "decided to go with React instead of Angular.js"](https://plus.google.com/+IanBicking/posts/Qj8R5SWAsfE).
 
-### ng-React Update
+### ng-React Update {#ng-react-update}
 
 [David Chang](https://github.com/davidchang) works through some performance improvements of his [ngReact](https://github.com/davidchang/ngReact) project. His post ["ng-React Update - React 0.9 and Angular Track By"](http://davidandsuzi.com/ngreact-update/) includes some helpful advice on boosting render performance for Angular components.
 
@@ -77,11 +77,11 @@ React was also recently mentioned at ng-conf, where the Angular team commented o
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/srt3OBP2kGc?start=113" frameborder="0" allowfullscreen></iframe>
 
-## React and Web Components
+## React and Web Components {#react-and-web-components}
 
 Jonathan Krause ([@jonykrause](https://twitter.com/jonykrause)) offers his thoughts regarding [parallels between React and Web Components](http://jonykrau.se/posts/the-value-of-react), highlighting the value of React's ability to render pages on the server practically for free.
 
-## Immutable React
+## Immutable React {#immutable-react}
 
 [Peter Hausel](http://pk11.kinja.com/) shows how to build a Wikipedia auto-complete demo based on immutable data structures (similar to [mori](https://npmjs.org/package/mori)), really taking advantage of the framework's one-way reactive data binding:
 
@@ -90,16 +90,16 @@ Jonathan Krause ([@jonykrause](https://twitter.com/jonykrause)) offers his thoug
 > [Read the full post](http://tech.kinja.com/immutable-react-1495205675)
 
 
-## D3 and React
+## D3 and React {#d3-and-react}
 
 [Ben Smith](http://10consulting.com/) built some great SVG-based charting components using a little less of D3 and a little more of React: [D3 and React - the future of charting components?](http://10consulting.com/2014/02/19/d3-plus-reactjs-for-charting/)
 
-## Om and React
+## Om and React {#om-and-react}
 Josh Haberman ([@joshhaberman](https://twitter.com/JoshHaberman)) discusses performance differences between React, Om and traditional MVC frameworks in "[A closer look at OM vs React performance](http://blog.reverberate.org/2014/02/on-future-of-javascript-mvc-frameworks.html)".
 
 Speaking of Om: [Omchaya](https://github.com/sgrove/omchaya) by Sean Grove ([@sgrove](https://twitter.com/sgrove)) is a neat Cljs/Om example project.
 
 
-## Random Tweets
+## Random Tweets {#random-tweets}
 
 <div><blockquote class="twitter-tweet" lang="en"><p>Worked for 2 hours on a [@react_js](https://twitter.com/react_js) app sans internet. Love that I could get stuff done with it without googling every question.</p>&mdash; John Shimek (@varikin) <a href="https://twitter.com/varikin/status/436606891657949185">February 20, 2014</a></blockquote></div>
diff --git a/content/blog/2014-03-19-react-v0.10-rc1.md b/content/blog/2014-03-19-react-v0.10-rc1.md
index 9ece98ccd0..cc065e0879 100644
--- a/content/blog/2014-03-19-react-v0.10-rc1.md
+++ b/content/blog/2014-03-19-react-v0.10-rc1.md
@@ -20,7 +20,7 @@ We've also published version `0.10.0-rc1` of the `react` and `react-tools` packa
 
 Please try these builds out and [file an issue on GitHub](https://github.com/facebook/react/issues/new) if you see anything awry.
 
-## Clone On Mount
+## Clone On Mount {#clone-on-mount}
 
 The main purpose of this release is to provide a smooth upgrade path as we evolve some of the implementation of core. In v0.9 we started warning in cases where you called methods on unmounted components. This is part of an effort to enforce the idea that the return value of a component (`React.DOM.div()`, `MyComponent()`) is in fact not a reference to the component instance React uses in the virtual DOM. The return value is instead a light-weight object that React knows how to use. Since the return value currently is a reference to the same object React uses internally, we need to make this transition in stages as many people have come to depend on this implementation detail.
 
@@ -47,25 +47,25 @@ These warnings and method forwarding are only enabled in the development build.
 
 The plan for v0.11 is that we will go fully to "descriptors". Method calls on the return value of `MyComponent()` will fail hard.
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### New Features
+#### New Features {#new-features}
 * Added warnings to help migrate towards descriptors
 * Made it possible to server render without React-related markup (`data-reactid`, `data-react-checksum`). This DOM will not be mountable by React. [Read the docs for `React.renderComponentToStaticMarkup`](/docs/top-level-api.html#react.rendercomponenttostaticmarkup)
 * Added support for more attributes:
   * `srcSet` for `<img>` to specify images at different pixel ratios
   * `textAnchor` for SVG
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes}
 * Ensure all void elements don’t insert a closing tag into the markup.
 * Ensure `className={false}` behaves consistently
 * Ensure `this.refs` is defined, even if no refs are specified.
 
-### Addons
+### Addons {#addons}
 
 * `update` function to deal with immutable data. [Read the docs](/docs/update.html)
 
-### react-tools
+### react-tools {#react-tools}
 * Added an option argument to `transform` function. The only option supported is `harmony`, which behaves the same as `jsx --harmony` on the command line. This uses the ES6 transforms from [jstransform](https://github.com/facebook/jstransform).
diff --git a/content/blog/2014-03-21-react-v0.10.md b/content/blog/2014-03-21-react-v0.10.md
index 2b1ac59b39..121c88a222 100644
--- a/content/blog/2014-03-21-react-v0.10.md
+++ b/content/blog/2014-03-21-react-v0.10.md
@@ -20,7 +20,7 @@ We've also published version `0.10.0` of the `react` and `react-tools` packages
 
 Please try these builds out and [file an issue on GitHub](https://github.com/facebook/react/issues/new) if you see anything awry.
 
-## Clone On Mount
+## Clone On Mount {#clone-on-mount}
 
 The main purpose of this release is to provide a smooth upgrade path as we evolve some of the implementation of core. In v0.9 we started warning in cases where you called methods on unmounted components. This is part of an effort to enforce the idea that the return value of a component (`React.DOM.div()`, `MyComponent()`) is in fact not a reference to the component instance React uses in the virtual DOM. The return value is instead a light-weight object that React knows how to use. Since the return value currently is a reference to the same object React uses internally, we need to make this transition in stages as many people have come to depend on this implementation detail.
 
@@ -47,26 +47,26 @@ These warnings and method forwarding are only enabled in the development build.
 
 The plan for v0.11 is that we will go fully to "descriptors". Method calls on the return value of `MyComponent()` will fail hard.
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### New Features
+#### New Features {#new-features}
 * Added warnings to help migrate towards descriptors
 * Made it possible to server render without React-related markup (`data-reactid`, `data-react-checksum`). This DOM will not be mountable by React. [Read the docs for `React.renderComponentToStaticMarkup`](/docs/top-level-api.html#react.rendercomponenttostaticmarkup)
 * Added support for more attributes:
   * `srcSet` for `<img>` to specify images at different pixel ratios
   * `textAnchor` for SVG
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes}
 * Ensure all void elements don’t insert a closing tag into the markup.
 * Ensure `className={false}` behaves consistently
 * Ensure `this.refs` is defined, even if no refs are specified.
 
-### Addons
+### Addons {#addons}
 
 * `update` function to deal with immutable data. [Read the docs](/docs/update.html)
 
-### react-tools
+### react-tools {#react-tools}
 * Added an option argument to `transform` function. The only option supported is `harmony`, which behaves the same as `jsx --harmony` on the command line. This uses the ES6 transforms from [jstransform](https://github.com/facebook/jstransform).
 
diff --git a/content/blog/2014-03-28-the-road-to-1.0.md b/content/blog/2014-03-28-the-road-to-1.0.md
index 2b167b8c16..2e9f3ac0b7 100644
--- a/content/blog/2014-03-28-the-road-to-1.0.md
+++ b/content/blog/2014-03-28-the-road-to-1.0.md
@@ -7,17 +7,17 @@ When we launched React last spring, we purposefully decided not to call it 1.0.
 
 Our primary goal with 1.0 is to clarify our messaging and converge on an API that is aligned with our goals. In order to do that, we want to clean up bad patterns we've seen in use and really help enable developers write good code.
 
-## Descriptors
+## Descriptors {#descriptors}
 
 The first part of this is what we're calling "descriptors". I talked about this briefly in our [v0.10 announcements][v0.10]. The goal here is to separate our virtual DOM representation from our use of it. Simply, this means the return value of a component (e.g. `React.DOM.div()`, `MyComponent()`) will be a simple object containing the information React needs to render. Currently the object returned is actually linked to React's internal representation of the component and even directly to the DOM element. This has enabled some bad patterns that are quite contrary to how we want people to use React. That's our failure.
 
 We added some warnings in v0.9 to start migrating some of these bad patterns. With v0.10 we'll catch more. You'll see more on this soon as we expect to ship v0.11 with descriptors.
 
-## API Cleanup
+## API Cleanup {#api-cleanup}
 
 This is really connected to everything. We want to keep the API as simple as possible and help developers [fall into the pit of success][pitofsuccess]. Enabling bad patterns with bad APIs is not success.
 
-## ES6
+## ES6 {#es6}
 
 Before we even launched React publicly, members of the team were talking about how we could leverage ES6, namely classes, to improve the experience of creating React components. Calling `React.createClass(...)` isn't great. We don't quite have the right answer here yet, but we're close. We want to make sure we make this as simple as possible. It could look like this:
 
@@ -31,23 +31,23 @@ class MyComponent extends React.Component {
 
 There are other features of ES6 we're already using in core. I'm sure we'll see more of that. The `jsx` executable we ship with `react-tools` already supports transforming many parts of ES6 into code that will run on older browsers.
 
-## Context
+## Context {#context}
 
 While we haven't documented `context`, it exists in some form in React already. It exists as a way to pass values through a tree without having to use props at every single point. We've seen this need crop up time and time again, so we want to make this as easy as possible. Its use has performance tradeoffs, and there are known weaknesses in our implementation, so we want to make sure this is a solid feature.
 
-## Addons
+## Addons {#addons}
 
 As you may know, we ship a separate build of React with some extra features we called "addons". While this has served us fine, it's not great for our users. It's made testing harder, but also results in more cache misses for people using a CDN. The problem we face is that many of these "addons" need access to parts of React that we don't expose publicly. Our goal is to ship each addon on its own and let each hook into React as needed. This would also allow others to write and distribute "addons".
 
-## Browser Support
+## Browser Support {#browser-support}
 
 As much as we'd all like to stop supporting older browsers, it's not always possible. Facebook still supports IE8. While React won't support IE8 forever, our goal is to have 1.0 support IE8. Hopefully we can continue to abstract some of these rough parts.
 
-## Animations
+## Animations {#animations}
 
 Finding a way to define animations in a declarative way is a hard problem. We've been exploring the space for a long time. We've introduced some half-measures to alleviate some use cases, but the larger problem remains. While we'd like to make this a part of 1.0, realistically we don't think we'll have a good solution in place.
 
-## Miscellaneous
+## Miscellaneous {#miscellaneous}
 
 There are several other things I listed on [our projects page][projects] that we're tracking. Some of them are internals and have no obvious outward effect (improve tests, repo separation, updated test runner). I encourage you to take a look.
 
diff --git a/content/blog/2014-06-27-community-roundup-19.md b/content/blog/2014-06-27-community-roundup-19.md
index e61d85375d..7a8956d60e 100644
--- a/content/blog/2014-06-27-community-roundup-19.md
+++ b/content/blog/2014-06-27-community-roundup-19.md
@@ -3,12 +3,12 @@ title: "Community Round-up #19"
 author: [chenglou]
 ---
 
-## React Meetups!
+## React Meetups! {#react-meetups}
 Ever wanted to find developers who also share the same interest in React than you? Recently, there has been a React Meetup in [San Francisco](http://www.meetup.com/ReactJS-San-Francisco/) (courtesy of [Telmate](http://www.telmate.com)), and one in [London](http://www.meetup.com/London-React-User-Group/) (courtesy of [Stuart Harris](http://www.meetup.com/London-React-User-Group/members/105837542/), [Cain Ullah](http://www.meetup.com/London-React-User-Group/members/15509971/) and [Zoe Merchant](http://www.meetup.com/London-React-User-Group/members/137058242/)). These two events have been big successes; a second one in London is [already planned](http://www.meetup.com/London-React-User-Group/events/191406572/).
 
 If you don't live near San Francisco or London, why not start one in your community?
 
-## Complementary Tools
+## Complementary Tools {#complementary-tools}
 In case you haven't seen it, we've consolidated the tooling solution around React on [this wiki page](https://github.com/facebook/react/wiki/Complementary-Tools). Some of the notable recent entries include:
 
 - [Ryan Florence](https://github.com/rpflorence) and [Michael Jackson](https://github.com/mjackson)'s [react-nested-router](https://github.com/rpflorence/react-nested-router), which is a translation of the Ember router API to React.
@@ -19,7 +19,7 @@ In case you haven't seen it, we've consolidated the tooling solution around Reac
 
 These are some of the links that often pop up on the #reactjs IRC channel. If you made something that you think deserves to be shown on the wiki, feel free to add it!
 
-## React in Interesting Places
+## React in Interesting Places {#react-in-interesting-places}
 
 The core concepts React themselves is something very valuable that the community is exploring and pushing further. A year ago, we wouldn't have imagined something like [Bruce Hauman](http://rigsomelight.com)'s [Flappy Bird ClojureScript port](http://rigsomelight.com/2014/05/01/interactive-programming-flappy-bird-clojurescript.html), whose interactive programming has been made possible through React:
 
@@ -31,24 +31,24 @@ And don't forget [Pete Hunt](https://github.com/petehunt)'s Wolfenstein 3D rende
 
 Give us a shoutout on IRC or [React Google Groups](https://groups.google.com/forum/#!forum/reactjs) if you've used React in some Interesting places.
 
-## Even More People Using React
+## Even More People Using React {#even-more-people-using-react}
 
-### Prismatic
+### Prismatic {#prismatic}
 [Prismatic](http://getprismatic.com/home) recently shrank their codebase fivefold with the help of React and its popular ClojureScript wrapper, [Om](https://github.com/swannodette/om). They detailed their very positive experience [here](http://blog.getprismatic.com/om-sweet-om-high-functional-frontend-engineering-with-clojurescript-and-react/).
 
 > Finally, the state is normalized: each piece of information is represented in a single place. Since React ensures consistency between the DOM and the application data, the programmer can focus on ensuring that the state properly stays up to date in response to user input. If the application state is normalized, then this consistency is guaranteed by definition, completely avoiding the possibility of an entire class of common bugs.
 
-### Adobe Brackets
+### Adobe Brackets {#adobe-brackets}
 [Kevin Dangoor](http://www.kevindangoor.com) works on [Brackets](http://brackets.io/?lang=en), the open-source code editor. After writing [his first impression on React](http://www.kevindangoor.com/2014/05/simplifying-code-with-react/), he followed up with another insightful [article](http://www.kevindangoor.com/2014/05/react-in-brackets/) on how to gradually make the code transition, how to preserve the editor's good parts, and how to tune Brackets' tooling around JSX.
 
 > We don’t need to switch to React everywhere, all at once. It’s not a framework that imposes anything on the application structure. [...] Easy, iterative adoption is definitely something in React’s favor for us.
 
-### Storehouse
+### Storehouse {#storehouse}
 [Storehouse](https://www.storehouse.co) (Apple Design Award 2014)'s web presence is build with React. Here's [an example story](https://www.storehouse.co/stories/y2ad-mexico-city-clouds). Congratulations on the award!
 
-### Vim Awesome
+### Vim Awesome {#vim-awesome}
 [Vim Awesome](http://vimawesome.com), an open-source Vim plugins directory built on React, was just launched. Be sure to [check out the source code](https://github.com/divad12/vim-awesome) if you're curious to see an example of how to build a small single-page React app.
 
-## Random Tweets
+## Random Tweets {#random-tweets}
 
 <blockquote class="twitter-tweet" lang="en"><p>Spent 12 hours so far with <a href="https://twitter.com/hashtag/reactjs?src=hash">#reactjs</a>. Spent another 2 wondering why we&#39;ve been doing JS frameworks wrong until now. React makes me happy.</p>&mdash; Paul Irwin (@paulirwin) <a href="https://twitter.com/paulirwin/statuses/481263947589242882">June 24, 2014</a></blockquote>
diff --git a/content/blog/2014-07-13-react-v0.11-rc1.md b/content/blog/2014-07-13-react-v0.11-rc1.md
index eb294dfb8c..08b34c4534 100644
--- a/content/blog/2014-07-13-react-v0.11-rc1.md
+++ b/content/blog/2014-07-13-react-v0.11-rc1.md
@@ -21,12 +21,12 @@ We've also published version `0.11.0-rc1` of the `react` and `react-tools` packa
 Please try these builds out and [file an issue on GitHub](https://github.com/facebook/react/issues/new) if you see anything awry.
 
 
-## `getDefaultProps`
+## `getDefaultProps` {#getdefaultprops}
 
 Starting in React 0.11, `getDefaultProps()` is called only once when `React.createClass()` is called, instead of each time a component is rendered. This means that `getDefaultProps()` can no longer vary its return value based on `this.props` and any objects will be shared across all instances. This change improves performance and will make it possible in the future to do PropTypes checks earlier in the rendering process, allowing us to give better error messages.
 
 
-## Rendering to `null`
+## Rendering to `null` {#rendering-to-null}
 
 Since React's release, people have been using work arounds to "render nothing". Usually this means returning an empty `<div/>` or `<span/>`. Some people even got clever and started returning `<noscript/>` to avoid extraneous DOM nodes. We finally provided a "blessed" solution that allows developers to write meaningful code. Returning `null` is an explicit indication to React that you do not want anything rendered. Behind the scenes we make this work with a `<noscript>` element, though in the future we hope to not put anything in the document. In the mean time, `<noscript>` elements do not affect layout in any way, so you can feel safe using `null` today!
 
@@ -49,7 +49,7 @@ render: function() {
 ```
 
 
-## JSX Namespacing
+## JSX Namespacing {#jsx-namespacing}
 
 Another feature request we've been hearing for a long time is the ability to have namespaces in JSX. Given that JSX is just JavaScript, we didn't want to use XML namespacing. Instead we opted for a standard JS approach: object property access. Instead of assigning variables to access components stored in an object (such as a component library), you can now use the component directly as `<Namespace.Component/>`.
 
@@ -73,7 +73,7 @@ render: function() {
 ```
 
 
-## Improved keyboard event normalization
+## Improved keyboard event normalization {#improved-keyboard-event-normalization}
 
 Keyboard events now contain a normalized `e.key` value according to the [DOM Level 3 Events spec](http://www.w3.org/TR/DOM-Level-3-Events/#keys-special), allowing you to write simpler key handling code that works in all browsers, such as:
 
@@ -91,20 +91,20 @@ handleKeyDown: function(e) {
 
 Keyboard and mouse events also now include a normalized `e.getModifierState()` that works consistently across browsers.
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes}
 * `getDefaultProps()` is now called once per class and shared across all instances
 
-#### New Features
+#### New Features {#new-features}
 * Rendering to `null`
 * Keyboard events include normalized `e.key` and `e.getModifierState()` properties
 * New normalized `onBeforeInput` event
 * `React.Children.count` has been added as a helper for counting the number of children
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes}
 
 * Re-renders are batched in more cases
 * Events: `e.view` properly normalized
@@ -118,24 +118,24 @@ Keyboard and mouse events also now include a normalized `e.getModifierState()` t
 * `img` event listeners are now unbound properly, preventing the error "Two valid but unequal nodes with the same `data-reactid`"
 * Added explicit warning when missing polyfills
 
-### React With Addons
+### React With Addons {#react-with-addons}
 * PureRenderMixin
 * Perf: a new set of tools to help with performance analysis
 * Update: New `$apply` command to transform values
 * TransitionGroup bug fixes with null elements, Android
 
-### React NPM Module
+### React NPM Module {#react-npm-module}
 * Now includes the pre-built packages under `dist/`.
 * `envify` is properly listed as a dependency instead of a peer dependency
 
-### JSX
+### JSX {#jsx}
 * Added support for namespaces, eg `<Components.Checkbox />`
 * JSXTransformer
   * Enable the same `harmony` features available in the command line with `<script type="text/jsx;harmony=true">`
   * Scripts are downloaded in parallel for more speed. They are still executed in order (as you would expect with normal script tags)
   * Fixed a bug preventing sourcemaps from working in Firefox
 
-### React Tools Module
+### React Tools Module {#react-tools-module}
 * Improved readme with usage and API information
 * Improved ES6 transforms available with `--harmony` option
 * Added `--source-map-inline` option to the `jsx` executable
diff --git a/content/blog/2014-07-17-react-v0.11.md b/content/blog/2014-07-17-react-v0.11.md
index 9fa25662c9..6a0c6c3bcc 100644
--- a/content/blog/2014-07-17-react-v0.11.md
+++ b/content/blog/2014-07-17-react-v0.11.md
@@ -28,12 +28,12 @@ We've also published version `0.11.0` of the `react` and `react-tools` packages
 Please try these builds out and [file an issue on GitHub](https://github.com/facebook/react/issues/new) if you see anything awry.
 
 
-## `getDefaultProps`
+## `getDefaultProps` {#getdefaultprops}
 
 Starting in React 0.11, `getDefaultProps()` is called only once when `React.createClass()` is called, instead of each time a component is rendered. This means that `getDefaultProps()` can no longer vary its return value based on `this.props` and any objects will be shared across all instances. This change improves performance and will make it possible in the future to do PropTypes checks earlier in the rendering process, allowing us to give better error messages.
 
 
-## Rendering to `null`
+## Rendering to `null` {#rendering-to-null}
 
 Since React's release, people have been using work arounds to "render nothing". Usually this means returning an empty `<div/>` or `<span/>`. Some people even got clever and started returning `<noscript/>` to avoid extraneous DOM nodes. We finally provided a "blessed" solution that allows developers to write meaningful code. Returning `null` is an explicit indication to React that you do not want anything rendered. Behind the scenes we make this work with a `<noscript>` element, though in the future we hope to not put anything in the document. In the mean time, `<noscript>` elements do not affect layout in any way, so you can feel safe using `null` today!
 
@@ -56,7 +56,7 @@ render: function() {
 ```
 
 
-## JSX Namespacing
+## JSX Namespacing {#jsx-namespacing}
 
 Another feature request we've been hearing for a long time is the ability to have namespaces in JSX. Given that JSX is just JavaScript, we didn't want to use XML namespacing. Instead we opted for a standard JS approach: object property access. Instead of assigning variables to access components stored in an object (such as a component library), you can now use the component directly as `<Namespace.Component/>`.
 
@@ -80,7 +80,7 @@ render: function() {
 ```
 
 
-## Improved keyboard event normalization
+## Improved keyboard event normalization {#improved-keyboard-event-normalization}
 
 Keyboard events now contain a normalized `e.key` value according to the [DOM Level 3 Events spec](http://www.w3.org/TR/DOM-Level-3-Events/#keys-special), allowing you to write simpler key handling code that works in all browsers, such as:
 
@@ -98,34 +98,34 @@ handleKeyDown: function(e) {
 
 Keyboard and mouse events also now include a normalized `e.getModifierState()` that works consistently across browsers.
 
-## Descriptors
+## Descriptors {#descriptors}
 
 In our [v0.10 release notes](/blog/2014/03/21/react-v0.10.html#clone-on-mount), we called out that we were deprecating the existing behavior of the component function call (eg `component = MyComponent(props, ...children)` or `component = <MyComponent prop={...}/>`). Previously that would create an instance and React would modify that internally. You could store that reference and then call functions on it (eg `component.setProps(...)`). This no longer works. `component` in the above examples will be a descriptor and not an instance that can be operated on. The v0.10 release notes provide a complete example along with a migration path. The development builds also provided warnings if you called functions on descriptors.
 
 Along with this change to descriptors, `React.isValidComponent` and `React.PropTypes.component` now actually validate that the value is a descriptor. Overwhelmingly, these functions are used to validate the value of `MyComponent()`, which as mentioned is now a descriptor, not a component instance. We opted to reduce code churn and make the migration to 0.11 as easy as possible. However, we realize this is has caused some confusion and we're working to make sure we are consistent with our terminology.
 
-## Prop Type Validation
+## Prop Type Validation {#prop-type-validation}
 
 Previously `React.PropTypes` validation worked by simply logging to the console. Internally, each validator was responsible for doing this itself. Additionally, you could write a custom validator and the expectation was that you would also simply `console.log` your error message. Very shortly into the 0.11 cycle we changed this so that our validators return (*not throw*) an `Error` object. We then log the `error.message` property in a central place in ReactCompositeComponent. Overall the result is the same, but this provides a clearer intent in validation. In addition, to better transition into our descriptor factory changes, we also currently run prop type validation twice in development builds. As a result, custom validators doing their own logging result in duplicate messages. To update, simply return an `Error` with your message instead.
 
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes}
 * `getDefaultProps()` is now called once per class and shared across all instances
 * `MyComponent()` now returns a descriptor, not an instance
 * `React.isValidComponent` and `React.PropTypes.component` validate *descriptors*, not component instances.
 * Custom `propType` validators should return an `Error` instead of logging directly
 
-#### New Features
+#### New Features {#new-features}
 * Rendering to `null`
 * Keyboard events include normalized `e.key` and `e.getModifierState()` properties
 * New normalized `onBeforeInput` event
 * `React.Children.count` has been added as a helper for counting the number of children
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes}
 
 * Re-renders are batched in more cases
 * Events: `e.view` properly normalized
@@ -139,24 +139,24 @@ Previously `React.PropTypes` validation worked by simply logging to the console.
 * `img` event listeners are now unbound properly, preventing the error "Two valid but unequal nodes with the same `data-reactid`"
 * Added explicit warning when missing polyfills
 
-### React With Addons
+### React With Addons {#react-with-addons}
 * PureRenderMixin: a mixin which helps optimize "pure" components
 * Perf: a new set of tools to help with performance analysis
 * Update: New `$apply` command to transform values
 * TransitionGroup bug fixes with null elements, Android
 
-### React NPM Module
+### React NPM Module {#react-npm-module}
 * Now includes the pre-built packages under `dist/`.
 * `envify` is properly listed as a dependency instead of a peer dependency
 
-### JSX
+### JSX {#jsx}
 * Added support for namespaces, eg `<Components.Checkbox />`
 * JSXTransformer
   * Enable the same `harmony` features available in the command line with `<script type="text/jsx;harmony=true">`
   * Scripts are downloaded in parallel for more speed. They are still executed in order (as you would expect with normal script tags)
   * Fixed a bug preventing sourcemaps from working in Firefox
 
-### React Tools Module
+### React Tools Module {#react-tools-module}
 * Improved readme with usage and API information
 * Improved ES6 transforms available with `--harmony` option
 * Added `--source-map-inline` option to the `jsx` executable
diff --git a/content/blog/2014-07-25-react-v0.11.1.md b/content/blog/2014-07-25-react-v0.11.1.md
index cb210d0ea3..a13780af9f 100644
--- a/content/blog/2014-07-25-react-v0.11.1.md
+++ b/content/blog/2014-07-25-react-v0.11.1.md
@@ -28,16 +28,16 @@ We've also published version `0.11.1` of the `react` and `react-tools` packages
 
 Please try these builds out and [file an issue on GitHub](https://github.com/facebook/react/issues/new) if you see anything awry.
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes}
 * `setState` can be called inside `componentWillMount` in non-DOM environments
 * `SyntheticMouseEvent.getEventModifierState` correctly renamed to `getModifierState`
 * `getModifierState` correctly returns a `boolean`
 * `getModifierState` is now correctly case sensitive
 * Empty Text node used in IE8 `innerHTML` workaround is now removed, fixing rerendering in certain cases
 
-### JSXTransformer
+### JSXTransformer {#jsxtransformer}
 * Fix duplicate variable declaration (caused issues in some browsers)
diff --git a/content/blog/2014-07-28-community-roundup-20.md b/content/blog/2014-07-28-community-roundup-20.md
index b21d21167e..93b91c5296 100644
--- a/content/blog/2014-07-28-community-roundup-20.md
+++ b/content/blog/2014-07-28-community-roundup-20.md
@@ -5,28 +5,28 @@ author: [LoukaN]
 
 It's an exciting time for React as there are now more commits from open source contributors than from Facebook engineers! Keep up the good work :)
 
-## Atom moves to React
+## Atom moves to React {#atom-moves-to-react}
 
 [Atom, GitHub's code editor, is now using React](http://blog.atom.io/2014/07/02/moving-atom-to-react.html) to build the editing experience. They made the move in order to improve performance. By default, React helped them eliminate unnecessary reflows, enabling them to focus on architecting the rendering pipeline in order to minimize repaints by using hardware acceleration. This is a testament to the fact that React's architecture is perfect for high performant applications.
 
 [<img src="../images/blog/gpu-cursor-move.gif" style="width: 100%;" />](http://blog.atom.io/2014/07/02/moving-atom-to-react.html)
 
 
-## Why Does React Scale?
+## Why Does React Scale? {#why-does-react-scale}
 
 At the last [JSConf.us](http://2014.jsconf.us/), Vjeux talked about the design decisions made in the API that allows it to scale to a large number of developers. If you don't have 20 minutes, take a look at the [annotated slides](https://speakerdeck.com/vjeux/why-does-react-scale-jsconf-2014).
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/D-ioDiacTm8" frameborder="0" allowfullscreen></iframe>
 
 
-## Live Editing
+## Live Editing {#live-editing}
 
 One of the best features of React is that it provides the foundations to implement concepts that were otherwise extremely difficult, like server-side rendering, undo-redo, rendering to non-DOM environments like canvas... [Dan Abramov](https://twitter.com/dan_abramov) got hot code reloading working with webpack in order to [live edit a React project](https://gaearon.github.io/react-hot-loader/)!
 
 <iframe src="//player.vimeo.com/video/100010922" width="100%" height="315" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
 
 
-## ReactIntl Mixin by Yahoo
+## ReactIntl Mixin by Yahoo {#reactintl-mixin-by-yahoo}
 
 There are a couple of React-related projects that recently appeared on Yahoo's GitHub, the first one being an  [internationalization mixin](https://github.com/yahoo/react-intl). It's great to see them getting excited about React and contributing back to the community.
 
@@ -49,12 +49,12 @@ React.renderComponent(
 );
 ```
 
-## Thinking and Learning React
+## Thinking and Learning React {#thinking-and-learning-react}
 
 Josephine Hall, working at Icelab, used React to write a mobile-focused application. She wrote a blog post [“Thinking and Learning React.js”](http://icelab.com.au/articles/thinking-and-learning-reactjs/) to share her experience with elements they had to use. You'll learn about routing, event dispatch, touchable components, and basic animations.
 
 
-## London React Meetup
+## London React Meetup {#london-react-meetup}
 
 If you missed the last [London React Meetup](http://www.meetup.com/London-React-User-Group/events/191406572/), the video is available, with lots of great content.
 
@@ -68,19 +68,19 @@ If you missed the last [London React Meetup](http://www.meetup.com/London-React-
 In related news, the next [React SF Meetup](http://www.meetup.com/ReactJS-San-Francisco/events/195518392/) will be from Prezi: [“Immediate Mode on the Web: How We Implemented the Prezi Viewer in JavaScript”](https://medium.com/prezi-engineering/how-and-why-prezi-turned-to-javascript-56e0ca57d135). While not in React, their tech is really awesome and shares a lot of React's design principles and perf optimizations.
 
 
-## Using React and KendoUI Together
+## Using React and KendoUI Together {#using-react-and-kendoui-together}
 
 One of the strengths of React is that it plays nicely with other libraries. Jim Cowart proved it by writing a tutorial that explains how to write [React component adapters for KendoUI](http://www.ifandelse.com/using-reactjs-and-kendoui-together/).
 
 <figure><a href="http://www.ifandelse.com/using-reactjs-and-kendoui-together/"><img src="../images/blog/kendoui.png" /></a></figure>
 
 
-## Acorn JSX
+## Acorn JSX {#acorn-jsx}
 
 Ingvar Stepanyan extended the Acorn JavaScript parser to support JSX. The result is a [JSX parser](https://github.com/RReverser/acorn-jsx) that's 1.5–2.0x faster than the official JSX implementation. It is an experiment and is not meant to be used for serious things, but it's always a good thing to get competition on performance!
 
 
-## ReactScriptLoader
+## ReactScriptLoader {#reactscriptloader}
 
 Yariv Sadan created [ReactScriptLoader](https://github.com/yariv/ReactScriptLoader) to make it easier to write components that require an external script.
 
@@ -109,6 +109,6 @@ var Foo = React.createClass({
 });
 ```
 
-## Random Tweet
+## Random Tweet {#random-tweet}
 
 <blockquote class="twitter-tweet" data-conversation="none" lang="en"><p>“<a href="https://twitter.com/apphacker">@apphacker</a>: I take back the mean things I said about <a href="https://twitter.com/reactjs">@reactjs</a> I actually like it.” Summarizing the life of ReactJS in a single tweet.</p>&mdash; Jordan (@jordwalke) <a href="https://twitter.com/jordwalke/statuses/490747339607265280">July 20, 2014</a></blockquote>
diff --git a/content/blog/2014-08-03-community-roundup-21.md b/content/blog/2014-08-03-community-roundup-21.md
index 66bab2ecbd..33eaeffc85 100644
--- a/content/blog/2014-08-03-community-roundup-21.md
+++ b/content/blog/2014-08-03-community-roundup-21.md
@@ -3,7 +3,7 @@ title: "Community Round-up #21"
 author: [LoukaN]
 ---
 
-## React Router
+## React Router {#react-router}
 [Ryan Florence](http://ryanflorence.com/) and [Michael Jackson](https://twitter.com/mjackson) ported Ember's router to React in a project called [React Router](https://github.com/rackt/react-router). This is a very good example of both communities working together to make the web better!
 
 ```javascript
@@ -19,7 +19,7 @@ React.renderComponent((
 ), document.getElementById('example'));
 ```
 
-## Going Big with React
+## Going Big with React {#going-big-with-react}
 
 Areeb Malik, from Facebook, talks about his experience using React. "On paper, all those JS frameworks look promising: clean implementations, quick code design, flawless execution. But what happens when you stress test JavaScript? What happens when you throw 6 megabytes of code at it? In this talk, we'll investigate how React performs in a high stress situation, and how it has helped our team build safe code on a massive scale"
 
@@ -30,7 +30,7 @@ Areeb Malik, from Facebook, talks about his experience using React. "On paper, a
 -->
 
 
-## What is React?
+## What is React? {#what-is-react}
 
 [Craig McKeachie](http://www.funnyant.com/author/admin/) author of [JavaScript Framework Guide](http://www.funnyant.com/javascript-framework-guide/) wrote an excellent news named ["What is React.js? Another Template Library?](http://www.funnyant.com/reactjs-what-is-it/)
 
@@ -47,7 +47,7 @@ Areeb Malik, from Facebook, talks about his experience using React. "On paper, a
 - Can I build something complex with React?
 
 
-## Referencing Dynamic Children
+## Referencing Dynamic Children {#referencing-dynamic-children}
 
 While Matt Zabriskie was working on [react-tabs](https://www.npmjs.com/package/react-tabs) he discovered how to use React.Children.map and React.addons.cloneWithProps in order to [reference dynamic children](http://www.mattzabriskie.com/blog/react-referencing-dynamic-children).
 
@@ -65,28 +65,28 @@ var App = React.createClass({
 ```
 
 
-## JSX with Sweet.js using Readtables
+## JSX with Sweet.js using Readtables {#jsx-with-sweetjs-using-readtables}
 
 Have you ever wondered how JSX was implemented? James Long wrote a very instructive blog post that explains how to [compile JSX with Sweet.js using Readtables](http://jlongster.com/Compiling-JSX-with-Sweet.js-using-Readtables).
 
 [![](../images/blog/sweet-jsx.png)](http://jlongster.com/Compiling-JSX-with-Sweet.js-using-Readtables)
 
 
-## First Look: Getting Started with React
+## First Look: Getting Started with React {#first-look-getting-started-with-react}
 
 [Kirill Buga](http://modernweb.com/authors/kirill-buga/) wrote an article on Modern Web explaining how [React is different from traditional MVC](http://modernweb.com/2014/07/23/getting-started-reactjs/) used by most JavaScript applications
 
 <figure><a href="http://modernweb.com/2014/07/23/getting-started-reactjs"><img src="../images/blog/first-look.png" /></a></figure>
 
 
-## React Draggable
+## React Draggable {#react-draggable}
 
 [Matt Zabriskie](https://github.com/mzabriskie) released a [project](https://github.com/mzabriskie/react-draggable) to make your react components draggable.
 
 [![](../images/blog/react-draggable.png)](https://mzabriskie.github.io/react-draggable/example/)
 
 
-## HTML Parser2 React
+## HTML Parser2 React {#html-parser2-react}
 
 [Jason Brown](https://browniefed.github.io/) adapted htmlparser2 to React: [htmlparser2-react](https://www.npmjs.com/package/htmlparser2-react). That allows you to convert raw HTML to the virtual DOM.
 This is not the intended way to use React but can be useful as last resort if you have an existing piece of HTML.
@@ -100,14 +100,14 @@ var parsedComponent = reactParser(html, React);
 ```
 
 
-## Building UIs with React
+## Building UIs with React {#building-uis-with-react}
 
 If you haven't yet tried out React, Jacob Rios did a Hangout where he covers the most important aspects and thankfully he recorded it!
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/lAn7GVoGlKU" frameborder="0" allowfullscreen></iframe>
 
 
-## Random Tweets
+## Random Tweets {#random-tweets}
 
 <blockquote class="twitter-tweet" lang="en"><p>We shipped reddit&#39;s first production <a href="https://twitter.com/reactjs">@reactjs</a> code last week, our checkout process.&#10;&#10;<a href="https://t.co/KUInwsCmAF">https://t.co/KUInwsCmAF</a></p>&mdash; Brian Holt (@holtbt) <a href="https://twitter.com/holtbt/statuses/493852312604254208">July 28, 2014</a></blockquote>
 <blockquote class="twitter-tweet" lang="en"><p>.<a href="https://twitter.com/AirbnbNerds">@AirbnbNerds</a> just launched our first user-facing React.js feature to production! We love it so far. <a href="https://t.co/KtyudemcIW">https://t.co/KtyudemcIW</a> /<a href="https://twitter.com/floydophone">@floydophone</a></p>&mdash; spikebrehm (@spikebrehm) <a href="https://twitter.com/spikebrehm/statuses/491645223643013121">July 22, 2014</a></blockquote>
diff --git a/content/blog/2014-09-12-community-round-up-22.md b/content/blog/2014-09-12-community-round-up-22.md
index 977ba76dcd..316706e300 100644
--- a/content/blog/2014-09-12-community-round-up-22.md
+++ b/content/blog/2014-09-12-community-round-up-22.md
@@ -16,19 +16,19 @@ This has been an exciting summer as four big companies: Yahoo, Mozilla, Airbnb a
 <blockquote width="300" class="twitter-tweet" lang="en"><p>We shipped reddit&#39;s first production <a href="https://twitter.com/reactjs">@reactjs</a> code last week, our checkout process.&#10;&#10;<a href="https://t.co/KUInwsCmAF">https://t.co/KUInwsCmAF</a></p>&mdash; Brian Holt (@holtbt) <a href="https://twitter.com/holtbt/statuses/493852312604254208">July 28, 2014</a></blockquote>
 </td></tr></table>
 
-## React's Architecture
+## React's Architecture {#reacts-architecture}
 
 [Vjeux](http://blog.vjeux.com/), from the React team, gave a talk at OSCON on the history of React and the various optimizations strategies that are implemented. You can also check out the [annotated slides](https://speakerdeck.com/vjeux/oscon-react-architecture) or [Chris Dawson](http://thenewstack.io/author/chrisdawson/)'s notes titled [JavaScript’s History and How it Led To React](http://thenewstack.io/javascripts-history-and-how-it-led-to-reactjs/).
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/eCf5CquV_Bw" frameborder="0" allowfullscreen></iframe>
 
 
-## v8 optimizations
+## v8 optimizations {#v8-optimizations}
 
 Jakob Kummerow landed [two optimizations to V8](http://www.chromium.org/developers/speed-hall-of-fame#TOC-2014-06-18) specifically targeted at optimizing React. That's really exciting to see browser vendors helping out on performance!
 
 
-## Reusable Components by Khan Academy
+## Reusable Components by Khan Academy {#reusable-components-by-khan-academy}
 
 [Khan Academy](https://www.khanacademy.org/) released [many high quality standalone components](https://khan.github.io/react-components/) they are using. This is a good opportunity to see what React code used in production look like.
 
@@ -44,14 +44,14 @@ var translated = (
 ```
 
 
-## React + Browserify + Gulp
+## React + Browserify + Gulp {#react--browserify--gulp}
 
 [Trường](http://truongtx.me/) wrote a little guide to help your [getting started using React, Browserify and Gulp](http://truongtx.me/2014/07/18/using-reactjs-with-browserify-and-gulp/).
 
 <figure><a href="http://truongtx.me/2014/07/18/using-reactjs-with-browserify-and-gulp/"><img src="../images/blog/react-browserify-gulp.jpg" /></a></figure>
 
 
-## React Style
+## React Style {#react-style}
 
 After React put HTML inside of JavaScript, Sander Spies takes the same approach with CSS: [IntegratedCSS](https://github.com/SanderSpies/react-style). It seems weird at first but this is the direction where React is heading.
 
@@ -76,7 +76,7 @@ var Button = React.createClass({
 ```
 
 
-## Virtual DOM in Elm
+## Virtual DOM in Elm {#virtual-dom-in-elm}
 
 [Evan Czaplicki](http://evan.czaplicki.us) explains how Elm implements the idea of a Virtual DOM and a diffing algorithm. This is great to see React ideas spread to other languages.
 
@@ -85,14 +85,14 @@ var Button = React.createClass({
 > [Read the full article](http://elm-lang.org/blog/Blazing-Fast-Html.elm)
 
 
-## Components Tutorial
+## Components Tutorial {#components-tutorial}
 
 If you are getting started with React, [Joe Maddalone](http://www.joemaddalone.com/) made a good tutorial on how to build your first component.
 
 <iframe width="650" height="200" src="//www.youtube-nocookie.com/embed/rFvZydtmsxM" frameborder="0" allowfullscreen></iframe>
 
 
-## Saving time & staying sane?
+## Saving time & staying sane? {#saving-time--staying-sane}
 
 When [Kent William Innholt](http://http://kentwilliam.com/) who works at [M>Path](http://mpath.com/) summed up his experience using React in an [article](http://kentwilliam.com/articles/saving-time-staying-sane-pros-cons-of-react-js).
 
@@ -106,7 +106,7 @@ When [Kent William Innholt](http://http://kentwilliam.com/) who works at [M>Path
 > [Read the article...](http://kentwilliam.com/articles/saving-time-staying-sane-pros-cons-of-react-js)
 
 
-## Weather
+## Weather {#weather}
 
 To finish this round-up, Andrew Gleave made a page that displays the [Weather](https://github.com/andrewgleave/react-weather). It's great to see that React is also used for small prototypes.
 
diff --git a/content/blog/2014-09-16-react-v0.11.2.md b/content/blog/2014-09-16-react-v0.11.2.md
index 376cecdab0..c7e2cbc105 100644
--- a/content/blog/2014-09-16-react-v0.11.2.md
+++ b/content/blog/2014-09-16-react-v0.11.2.md
@@ -26,20 +26,20 @@ We've also published version `0.11.2` of the `react` and `react-tools` packages
 
 Please try these builds out and [file an issue on GitHub](https://github.com/facebook/react/issues/new) if you see anything awry.
 
-### React Core
+### React Core {#react-core}
 
-#### New Features
+#### New Features {#new-features}
 
 * Added support for `<dialog>` element and associated `open` attribute
 * Added support for `<picture>` element and associated `media` and `sizes` attributes
 * Added `React.createElement` API in preparation for React v0.12
   * `React.createDescriptor` has been deprecated as a result
 
-### JSX
+### JSX {#jsx}
 
 * `<picture>` is now parsed into `React.DOM.picture`
 
-### React Tools
+### React Tools {#react-tools}
 
 * Update `esprima` and `jstransform` for correctness fixes
 * The `jsx` executable now exposes a `--strip-types` flag which can be used to remove TypeScript-like type annotations
diff --git a/content/blog/2014-10-14-introducing-react-elements.md b/content/blog/2014-10-14-introducing-react-elements.md
index a6a5423fe3..fb343cc53a 100644
--- a/content/blog/2014-10-14-introducing-react-elements.md
+++ b/content/blog/2014-10-14-introducing-react-elements.md
@@ -22,13 +22,13 @@ Everything is backwards compatible for now, and as always React will provide you
 Continue reading if you want all the nitty gritty details...
 
 
-## New Terminology
+## New Terminology {#new-terminology}
 
 We wanted to make it easier for new users to see the parallel with the DOM (and why React is different). To align our terminology we now use the term `ReactElement` instead of _descriptor_. Likewise, we use the term `ReactNode` instead of _renderable_.
 
 [See the full React terminology guide.](https://gist.github.com/sebmarkbage/fcb1b6ab493b0c77d589)
 
-## Creating a ReactElement
+## Creating a ReactElement {#creating-a-reactelement}
 
 We now expose an external API for programmatically creating a `ReactElement` object.
 
@@ -44,7 +44,7 @@ var reactDivElement = div(props, children);
 ```
 
 
-## Deprecated: Auto-generated Factories
+## Deprecated: Auto-generated Factories {#deprecated-auto-generated-factories}
 
 Imagine if `React.createClass` was just a plain JavaScript class. If you call a class as a plain function you would call the component's constructor to create a Component instance, not a `ReactElement`:
 
@@ -69,9 +69,9 @@ In future versions of React, we want to be able to support pure classes without
 This is the biggest change to 0.12. Don't worry though. This functionality continues to work the same for this release, it just warns you if you're using a deprecated API. That way you can upgrade piece-by-piece instead of everything at once.
 
 
-## Upgrading to 0.12
+## Upgrading to 0.12 {#upgrading-to-012}
 
-### React With JSX
+### React With JSX {#react-with-jsx}
 
 If you use the React specific [JSX](https://facebook.github.io/jsx/) transform, the upgrade path is simple. Just make sure you have React in scope.
 
@@ -95,7 +95,7 @@ var MyOtherComponent = React.createClass({
 
 *NOTE: React's JSX will not call arbitrary functions in future releases. This restriction is introduced so that it's easier to reason about the output of JSX by both the reader of your code and optimizing compilers. The JSX syntax is not tied to React. Just the transpiler. You can still use [the JSX spec](https://facebook.github.io/jsx/) with a different transpiler for custom purposes.*
 
-### React Without JSX
+### React Without JSX {#react-without-jsx}
 
 If you don't use JSX and just call components as functions, you will need to explicitly create a factory before calling it:
 
@@ -151,7 +151,7 @@ var MyDOMComponent = React.createClass({
 
 We realize that this is noisy. At least it's on the top of the file (out of sight, out of mind). This a tradeoff we had to make to get [the other benefits](https://gist.github.com/sebmarkbage/d7bce729f38730399d28) that this model unlocks.
 
-### Anti-Pattern: Exporting Factories
+### Anti-Pattern: Exporting Factories {#anti-pattern-exporting-factories}
 
 If you have an isolated project that only you use, then you could create a helper that creates both the class and the factory at once:
 
@@ -169,7 +169,7 @@ It also encourages you to put more logic into these helper functions. Something
 To fit into the React ecosystem we recommend that you always export pure classes from your shared modules and let the consumer decide the best strategy for generating `ReactElement`s.
 
 
-## Third-party Languages
+## Third-party Languages {#third-party-languages}
 
 The signature of a `ReactElement` is something like this:
 
@@ -185,7 +185,7 @@ The signature of a `ReactElement` is something like this:
 Languages with static typing that don't need validation (e.g. [Om in ClojureScript](https://github.com/swannodette/om)), and production level compilers will be able to generate these objects inline instead of going through the validation step. This optimization will allow significant performance improvements in React.
 
 
-## Your Thoughts and Ideas
+## Your Thoughts and Ideas {#your-thoughts-and-ideas}
 
 We'd love to hear your feedback on this API and your preferred style. A plausible alternative could be to directly inline objects instead of creating factory functions:
 
@@ -208,7 +208,7 @@ This moves the noise down into the render method though. It also doesn't provide
 *NOTE: This won't work in this version of React because it's conflicting with other legacy APIs that we're deprecating. (We temporarily add a `element._isReactElement = true` marker on the object.)*
 
 
-## The Next Step: ES6 Classes
+## The Next Step: ES6 Classes {#the-next-step-es6-classes}
 
 After 0.12 we'll begin work on moving to ES6 classes. We will still support `React.createClass` as a backwards compatible API. If you use an ES6 transpiler you will be able to declare your components like this:
 
diff --git a/content/blog/2014-10-16-react-v0.12-rc1.md b/content/blog/2014-10-16-react-v0.12-rc1.md
index cff0274301..9a6202a004 100644
--- a/content/blog/2014-10-16-react-v0.12-rc1.md
+++ b/content/blog/2014-10-16-react-v0.12-rc1.md
@@ -20,31 +20,31 @@ The release candidate is available for download:
 We've also published version `0.12.0-rc1` of the `react` and `react-tools` packages on npm and the `react` package on bower.
 
 
-## React Elements
+## React Elements {#react-elements}
 
 The biggest conceptual change we made in v0.12 is the move to React Elements. [We talked about this topic in depth earlier this week](/blog/2014/10/14/introducing-react-elements.html). If you haven't already, you should read up on the exciting changes in there!
 
 
-## JSX Changes
+## JSX Changes {#jsx-changes}
 
 Earlier this year we decided to write [a specification for JSX](https://facebook.github.io/jsx/). This has allowed us to make some changes focused on the React specific JSX and still allow others to innovate in the same space.
 
 
-### The `@jsx` Pragma is Gone!
+### The `@jsx` Pragma is Gone! {#the-jsx-pragma-is-gone}
 
 We have wanted to do this since before we even open sourced React. No more `/** @jsx React.DOM */`!. The React specific JSX transform assumes you have `React` in scope (which had to be true before anyway).
 
 `JSXTransformer` and `react-tools` have both been updated to account for this.
 
 
-### JSX for Function Calls is No Longer Supported
+### JSX for Function Calls is No Longer Supported {#jsx-for-function-calls-is-no-longer-supported}
 
 The React specific JSX transform no longer transforms to function calls. Instead we use `React.createElement` and pass it arguments. This allows us to make optimizations and better support React as a compile target for things like Om. Read more in the [React Elements introduction](/blog/2014/10/14/introducting-react-elements.html).
 
 The result of this change is that we will no longer support arbitrary function calls. We understand that the ability to do was a convenient shortcut for many people but we believe the gains will be worth it.
 
 
-### JSX Lower-case Convention
+### JSX Lower-case Convention {#jsx-lower-case-convention}
 
 We used to have a whitelist of HTML tags that got special treatment in JSX. However as new HTML tags got added to the spec, or we added support for more SVG tags, we had to go update our whitelist. Additionally, there was ambiguity about the behavior. There was always the chance that something new added to the tag list would result in breaking your code. For example:
 
@@ -63,7 +63,7 @@ Currently we still use the whitelist as a sanity check. The transform will fail
 In addition, the HTML tags are converted to strings instead of using `React.DOM` directly. `<div/>` becomes `React.createElement('div')` instead of `React.DOM.div()`.
 
 
-### JSX Spread Attributes
+### JSX Spread Attributes {#jsx-spread-attributes}
 
 Previously there wasn't a way to for you to pass a dynamic or unknown set of properties through JSX. This is now possible using the spread `...` operator.
 
@@ -89,7 +89,7 @@ return <MyComponent {...myProps} />;
 ```
 
 
-## Breaking Change: `key` and `ref` Removed From `this.props`
+## Breaking Change: `key` and `ref` Removed From `this.props` {#breaking-change-key-and-ref-removed-from-thisprops}
 
 The props `key` and `ref` were already reserved property names. This turned out to be difficult to explicitly statically type since any object can accept these extra props. It also screws up JIT optimizations of React internals in modern VMs.
 
@@ -104,14 +104,14 @@ You can no longer access `this.props.ref` and `this.props.key` from inside the C
 You do NOT need to change the way to define `key` and `ref`, only if you need to read it. E.g. `<div key="my-key" />` and `div({ key: 'my-key' })` still works.
 
 
-## Breaking Change: Default Props Resolution
+## Breaking Change: Default Props Resolution {#breaking-change-default-props-resolution}
 
 This is a subtle difference but `defaultProps` are now resolved at `ReactElement` creation time instead of when it's mounted. This is means that we can avoid allocating an extra object for the resolved props.
 
 You will primarily see this breaking if you're also using `transferPropsTo`.
 
 
-## Deprecated: transferPropsTo
+## Deprecated: transferPropsTo {#deprecated-transferpropsto}
 
 `transferPropsTo` is deprecated in v0.12 and will be removed in v0.13. This helper function was a bit magical. It auto-merged a certain whitelist of properties and excluded others. It was also transferring too many properties. This meant that we have to keep a whitelist of valid HTML attributes in the React runtime. It also means that we can't catch typos on props.
 
@@ -130,12 +130,12 @@ return div(this.props);
 Although to avoid passing too many props down, you'll probably want to use something like ES7 rest properties. [Read more about upgrading from transferPropsTo](https://gist.github.com/sebmarkbage/a6e220b7097eb3c79ab7).
 
 
-## Deprecated: Returning `false` in Event Handlers
+## Deprecated: Returning `false` in Event Handlers {#deprecated-returning-false-in-event-handlers}
 
 It used to be possible to return `false` from event handlers to preventDefault. We did this because this works in most browsers. This is a confusing API and we might want to use the return value for something else. Therefore, this is deprecated. Use `event.preventDefault()` instead.
 
 
-## Renamed APIs
+## Renamed APIs {#renamed-apis}
 
 As part of the [new React terminology](https://gist.github.com/sebmarkbage/fcb1b6ab493b0c77d589) we aliased some existing APIs to use the new naming convention:
 
diff --git a/content/blog/2014-10-17-community-roundup-23.md b/content/blog/2014-10-17-community-roundup-23.md
index 62a9840fe8..2088c9332c 100644
--- a/content/blog/2014-10-17-community-roundup-23.md
+++ b/content/blog/2014-10-17-community-roundup-23.md
@@ -6,13 +6,13 @@ author: [LoukaN]
 
 This round-up is a special edition on [Flux](https://facebook.github.io/flux/). If you expect to see diagrams showing arrows that all point in the same direction, you won't be disappointed!
 
-## React And Flux at ForwardJS
+## React And Flux at ForwardJS {#react-and-flux-at-forwardjs}
 
 Facebook engineers [Jing Chen](https://github.com/jingc) and [Bill Fisher](https://github.com/fisherwebdev) gave a talk about Flux and React at [ForwardJS](http://forwardjs.com/), and how using an application architecture with a unidirectional data flow helped solve recurring bugs.
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/i__969noyAM" frameborder="0" allowfullscreen></iframe>
 
-# Yahoo
+# Yahoo {#yahoo}
 
 Yahoo is converting Yahoo Mail to React and Flux and in the process, they open sourced several components. This will help you get an isomorphic application up and running.
 
@@ -22,7 +22,7 @@ Yahoo is converting Yahoo Mail to React and Flux and in the process, they open s
 - [Flux Examples](https://github.com/yahoo/flux-examples)
 
 
-## Reflux
+## Reflux {#reflux}
 
 [Mikael Brassman](https://spoike.ghost.io/) wrote [Reflux](https://github.com/spoike/refluxjs), a library that implements Flux concepts. Note that it diverges significantly from the way we use Flux at Facebook. He explains [the reasons why in a blog post](https://spoike.ghost.io/deconstructing-reactjss-flux/).
 
@@ -31,7 +31,7 @@ Yahoo is converting Yahoo Mail to React and Flux and in the process, they open s
 </center>
 
 
-## React and Flux Interview
+## React and Flux Interview {#react-and-flux-interview}
 
 [Ian Obermiller](http://ianobermiller.com/), engineer at Facebook, [made a lengthy interview](http://ianobermiller.com/blog/2014/09/15/react-and-flux-interview/) on the experience of using React and Flux in order to build probably the biggest React application ever written so far.
 
@@ -42,7 +42,7 @@ Yahoo is converting Yahoo Mail to React and Flux and in the process, they open s
 > [Read the full interview...](http://ianobermiller.com/blog/2014/09/15/react-and-flux-interview/)
 
 
-## Adobe's Brackets Project Tree
+## Adobe's Brackets Project Tree {#adobes-brackets-project-tree}
 
 [Kevin Dangoor](http://www.kevindangoor.com/) is converting the project tree of [Adobe's Bracket text editor](http://brackets.io/) to React and Flux. He wrote about his experience [using Flux](http://www.kevindangoor.com/2014/09/intro-to-the-new-brackets-project-tree/).
 
@@ -51,7 +51,7 @@ Yahoo is converting Yahoo Mail to React and Flux and in the process, they open s
 </center>
 
 
-## Async Requests with Flux Revisited
+## Async Requests with Flux Revisited {#async-requests-with-flux-revisited}
 
 [Reto Schläpfer](http://www.code-experience.com/the-code-experience/) came back to a Flux project he hasn't worked on for a month and [saw many ways to improve the way he implemented Flux](http://www.code-experience.com/async-requests-with-react-js-and-flux-revisited/). He summarized his learnings in a blog post.
 
@@ -68,7 +68,7 @@ Yahoo is converting Yahoo Mail to React and Flux and in the process, they open s
 > [Read the full article...](http://www.code-experience.com/async-requests-with-react-js-and-flux-revisited/)
 
 
-## Undo-Redo with Immutable Data Structures
+## Undo-Redo with Immutable Data Structures {#undo-redo-with-immutable-data-structures}
 
 [Ameya Karve](https://github.com/ameyakarve) explained how to use [Mori](https://github.com/swannodette/mori), a library that provides immutable data structures, in order to [implement undo-redo](http://ameyakarve.com/jekyll/update/2014/02/06/Undo-React-Flux-Mori.html). This usually very challenging feature only takes a few lines of code with Flux!
 
@@ -89,7 +89,7 @@ undo: function() {
 ```
 
 
-## Flux in practice
+## Flux in practice {#flux-in-practice}
 
 [Gary Chambers](https://twitter.com/garychambers108) wrote a [guide to get started with Flux](https://medium.com/@garychambers108/flux-in-practice-ec08daa9041a). This is a very practical introduction to Flux.
 
@@ -98,14 +98,14 @@ undo: function() {
 > [Read the full guide...](https://medium.com/@garychambers108/flux-in-practice-ec08daa9041a)
 
 
-## Components, React and Flux
+## Components, React and Flux {#components-react-and-flux}
 
 [Dan Abramov](https://twitter.com/dan_abramov) working at Stampsy made a talk about React and Flux. It's a very good overview of the concepts at play.
 
 <iframe src="//slides.com/danabramov/components-react-flux-wip/embed"  width="100%" height="315" scrolling="no" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
 
 
-## React and Flux
+## React and Flux {#react-and-flux}
 
 [Christian Alfoni](https://github.com/christianalfoni) wrote an article where [he compares Backbone, Angular and Flux](https://christianalfoni.github.io/javascript/2014/08/20/react-js-and-flux.html) on a simple example that's representative of a real project he worked on.
 
@@ -117,7 +117,7 @@ undo: function() {
 
 
 
-## Flux: Step by Step approach
+## Flux: Step by Step approach {#flux-step-by-step-approach}
 
 [Nicola Paolucci](https://github.com/durdn) from Atlassian wrote a great guide to help your getting understand [Flux step by step](https://blogs.atlassian.com/2014/08/flux-architecture-step-by-step/).
 
@@ -126,7 +126,7 @@ undo: function() {
 </center>
 
 
-## DeLorean: Back to the future!
+## DeLorean: Back to the future! {#delorean-back-to-the-future}
 
 [DeLorean](https://github.com/deloreanjs/delorean) is a tiny Flux pattern implementation developed by [Fatih Kadir Akin](https://github.com/f).
 
@@ -139,13 +139,13 @@ undo: function() {
 > - Improve your UI/data consistency using rollbacks
 
 
-## Facebook's iOS Infrastructure
+## Facebook's iOS Infrastructure {#facebooks-ios-infrastructure}
 
 Last but not least, Flux and React ideas are not limited to JavaScript inside of the browser. The iOS team at Facebook re-implemented Newsfeed using very similar patterns.
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/XhXC4SKOGfQ" frameborder="0" allowfullscreen></iframe>
 
 
-## Random Tweet
+## Random Tweet {#random-tweet}
 
 <blockquote class="twitter-tweet" lang="en"><p>If you build your app with flux, you can swap out React for a canvas or svg view layer and keep 85% of your code. (or the thing after React)</p>&mdash; Ryan Florence (@ryanflorence) <a href="https://twitter.com/ryanflorence/status/507309645372076034">September 3, 2014</a></blockquote>
diff --git a/content/blog/2014-10-28-react-v0.12.md b/content/blog/2014-10-28-react-v0.12.md
index c61f07f822..824b2d6b06 100644
--- a/content/blog/2014-10-28-react-v0.12.md
+++ b/content/blog/2014-10-28-react-v0.12.md
@@ -21,7 +21,7 @@ The release is available for download:
 
 We've also published version `0.12.0` of the `react` and `react-tools` packages on npm and the `react` package on bower.
 
-## New Terminology & Updated APIs
+## New Terminology & Updated APIs {#new-terminology--updated-apis}
 
 v0.12 is bringing about some new terminology. [We introduced](/blog/2014/10/14/introducing-react-elements.html) this 2 weeks ago and we've also documented it in [a new section of the documentation](/docs/glossary.html). As a part of this, we also corrected many of our top-level APIs to align with the terminology. `Component` has been removed from all of our `React.render*` methods. While at one point the argument you passed to these functions was called a Component, it no longer is. You are passing ReactElements. To align with `render` methods in your component classes, we decided to keep the top-level functions short and sweet. `React.renderComponent` is now `React.render`.
 
@@ -29,7 +29,7 @@ We also corrected some other misnomers. `React.isValidComponent` actually determ
 
 The old methods will still work but will warn upon first use. They will be removed in v0.13.
 
-## JSX Changes
+## JSX Changes {#jsx-changes}
 
 [We talked more in depth about these before](/blog/2014/10/16/react-v0.12-rc1.html#jsx-changes), so here are the highlights.
 
@@ -38,13 +38,13 @@ The old methods will still work but will warn upon first use. They will be remov
 * DOM components don't make use of `React.DOM`, instead we pass the tag name directly. `<div/>` becomes `React.createElement('div')`
 * We introduced spread attributes as a quick way to transfer props.
 
-## DevTools Improvements, No More `__internals`
+## DevTools Improvements, No More `__internals` {#devtools-improvements-no-more-__internals}
 
 For months we've gotten complaints about the React DevTools message. It shouldn't have logged the up-sell message when you were already using the DevTools. Unfortunately this was because the way we implemented these tools resulted in the DevTools knowing about React, but not the reverse. We finally gave this some attention and enabled React to know if the DevTools are installed. We released an update to the devtools several weeks ago making this possible. Extensions in Chrome should auto-update so you probably already have the update installed!
 
 As a result of this update, we no longer need to expose several internal modules to the world. If you were taking advantage of this implementation detail, your code will break. `React.__internals` is no more.
 
-## License Change - BSD
+## License Change - BSD {#license-change---bsd}
 
 We updated the license on React to the BSD 3-Clause license with an explicit patent grant. Previously we used the Apache 2 license. These licenses are very similar and our extra patent grant is equivalent to the grant provided in the Apache license. You can still use React with the confidence that we have granted the use of any patents covering it. This brings us in line with the same licensing we use across the majority of our open source projects at Facebook.
 
@@ -52,11 +52,11 @@ You can read the full text of the [LICENSE](https://github.com/facebook/react/bl
 
 - - -
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes}
 
 * `key` and `ref` moved off props object, now accessible on the element directly
 * React is now BSD licensed with accompanying Patents grant
@@ -64,12 +64,12 @@ You can read the full text of the [LICENSE](https://github.com/facebook/react/bl
 * `React.__internals` is removed - it was exposed for DevTools which no longer needs access
 * Composite Component functions can no longer be called directly - they must be wrapped with `React.createFactory` first. This is handled for you when using JSX.
 
-#### New Features
+#### New Features {#new-features}
 
 * Spread operator (`{...}`) introduced to deprecate `this.transferPropsTo`
 * Added support for more HTML attributes: `acceptCharset`, `classID`, `manifest`
 
-#### Deprecations
+#### Deprecations {#deprecations}
 
 * `React.renderComponent` --> `React.render`
 * `React.renderComponentToString` --> `React.renderToString`
@@ -83,7 +83,7 @@ You can read the full text of the [LICENSE](https://github.com/facebook/react/bl
 * **DEPRECATED** Convenience Constructor usage as function, instead wrap with `React.createFactory`
 * **DEPRECATED** use of `key={null}` to assign implicit keys
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes}
 
 * Better handling of events and updates in nested results, fixing value restoration in "layered" controlled components
 * Correctly treat `event.getModifierState` as case sensitive
@@ -96,32 +96,32 @@ You can read the full text of the [LICENSE](https://github.com/facebook/react/bl
   * `scrollLeft`, `scrollTop` removed, these should not be specified as props
 * Improved error messages
 
-### React With Addons
+### React With Addons {#react-with-addons}
 
-#### New Features
+#### New Features {#new-features-1}
 
 * `React.addons.batchedUpdates` added to API for hooking into update cycle
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes-1}
 
 * `React.addons.update` uses `assign` instead of `copyProperties` which does `hasOwnProperty` checks. Properties on prototypes will no longer be updated correctly.
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes-1}
 
 * Fixed some issues with CSS Transitions
 
-### JSX
+### JSX {#jsx}
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes-2}
 
 * Enforced convention: lower case tag names are always treated as HTML tags, upper case tag names are always treated as composite components
 * JSX no longer transforms to simple function calls
 
-#### New Features
+#### New Features {#new-features-2}
 
 * `@jsx React.DOM` no longer required
 * spread (`{...}`) operator introduced to allow easier use of props
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes-2}
 
 * JSXTransformer: Make sourcemaps an option when using APIs directly (eg, for react-rails)
diff --git a/content/blog/2014-11-25-community-roundup-24.md b/content/blog/2014-11-25-community-roundup-24.md
index bf34f58f5a..42dcd82a41 100644
--- a/content/blog/2014-11-25-community-roundup-24.md
+++ b/content/blog/2014-11-25-community-roundup-24.md
@@ -4,7 +4,7 @@ layout: post
 author: [steveluscher]
 ---
 
-## Keep it Simple
+## Keep it Simple {#keep-it-simple}
 
 Pedro Nauck ([pedronauck](https://github.com/pedronauck)) delivered an impeccably illustrated deck at Brazil's _Front in Floripa_ conference. Watch him talk about how to keep delivering value as your app scales, by keeping your development process simple.
 
@@ -20,7 +20,7 @@ James Pearce ([jamesgpearce](https://github.com/jamesgpearce)) carried Big-Coffe
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/m2fuO2wl_3c" frameborder="0" allowfullscreen></iframe>
 
-## All About Isomorphism
+## All About Isomorphism {#all-about-isomorphism}
 
 Michael Ridgway ([mridgway](https://github.com/mridgway)) shows us how Yahoo! (who recently [moved Yahoo! Mail to React](http://www.slideshare.net/rmsguhan/react-meetup-mailonreact)) renders their React+Flux application, server-side.
 
@@ -30,11 +30,11 @@ Péter Márton ([hekike](https://github.com/hekike)) helps us brew a cold one (l
 
 And, lest you think that client-server isomorphism exists in pursuit of crawalable, indexable HTML alone, watch as Nate Hunzaker ([nhunzaker](https://github.com/nhunzaker)) [server renders data visualizations as SVG](http://viget.com/extend/visualization-is-for-sharing-using-react-for-portable-data-visualization) with React.
 
-## React Router Mows the Lawn
+## React Router Mows the Lawn {#react-router-mows-the-lawn}
 
 Ryan Florence ([rpflorence](https://github.com/rpflorence])) and Michael Jackson ([mjackson](https://github.com/mjackson)) unveiled a new API for [React Router](https://github.com/rackt/react-router) that solves some of its user's problems by eliminating the problems themselves. Read all about what React Router learned from its community of users, and how they've [rolled your ideas into their latest release](https://github.com/rackt/react-router/wiki/Announcements).
 
-## React in Practice
+## React in Practice {#react-in-practice}
 
 Jonathan Beebe ([somethingkindawierd](https://github.com/somethingkindawierd)) spoke about how he uses React to build tools that deliver hope to those trying to make the best of a bad situation. Watch his talk from this year's _Nodevember_ conference in Nashville
 
@@ -44,13 +44,13 @@ If you take a peek under the covers, you'll find that React powers [Carousel](ht
 
 We enjoyed a cinematic/narrative experience with this React-powered, interactive story by British author William Boyd. Dive into “[The Vanishing Game](https://thevanishinggame.wellstoried.com)” and see for yourself.
 
-## Be Kind, Rewind
+## Be Kind, Rewind {#be-kind-rewind}
 
 Spend the next 60 seconds watching Daniel Woelfel ([dwwoelfel](https://github.com/dwwoelfel)) serialize a React app's state as a string, then deserialize it to produce a working UI. Read about how he uses this technique to [reproduce bugs](http://blog.circleci.com/local-state-global-concerns/) reported to him by his users.
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/5yHFTN-_mOo" frameborder="0" allowfullscreen></iframe>
 
-## Community Components
+## Community Components {#community-components}
 
 Tom Chen ([tomchentw](https://github.com/tomchentw)) brings us a [react-google-maps](https://tomchentw.github.io/react-google-maps/) component, and a way to syntax highlight source code using Prism and the [react-prism](https://tomchentw.github.io/react-prism/) component, for good measure.
 
@@ -58,23 +58,23 @@ Jed Watson ([jedwatson](https://github.com/JedWatson)) helps you manage touch, t
 
 To find these, and more community-built components, consult the [React Components](http://react-components.com/) and [React Rocks](http://react.rocks) component directories. React Rocks recently exceeded one-hundred listed components and counting. See one missing? Add the keyword `react-component` to your `package.json` to get listed on React Components, and [submit a link to React Rocks](https://docs.google.com/forms/d/1TpnwJmLcmmGj-_TI68upu_bKBViYeiKx7Aj9uKmV6wY/viewform).
 
-## Waiter, There's a CSS In My JavaScript
+## Waiter, There's a CSS In My JavaScript {#waiter-theres-a-css-in-my-javascript}
 
 The internet is abuzz with talk of styling React components using JavaScript instead of CSS. Christopher Chedeau ([vjeux](https://github.com/vjeux)) talks about some of the [fundamental style management challenges](https://speakerdeck.com/vjeux/react-css-in-js) we grapple with, at Facebook scale. A number of implementations of JavaScript centric style management solutions have appeared in the wild, including the React-focused [react-style](https://github.com/js-next/react-style).
 
-## Test Isolation
+## Test Isolation {#test-isolation}
 
 Yahoo! shows us how they make use of `iframe` elements to [unit test React components in isolation](http://yahooeng.tumblr.com/post/102274727496/to-testutil-or-not-to-testutil).
 
-## You've Got The Hang of Flux, Now Let's Flow
+## You've Got The Hang of Flux, Now Let's Flow {#youve-got-the-hang-of-flux-now-lets-flow}
 
 Facebook Open Source released [Flow](https://code.facebook.com/posts/1505962329687926/flow-a-new-static-type-checker-for-javascript/) this month – a static type checker for JavaScript. Naturally, Flow supports JSX, and you can use it to [type check React applications](https://code.facebook.com/posts/1505962329687926/flow-a-new-static-type-checker-for-javascript/#compatibility). There's never been a better reason to start making use of `propTypes` in your component specifications!
 
-## Countdown to React.js Conf 2014
+## Countdown to React.js Conf 2014 {#countdown-to-reactjs-conf-2014}
 
 We're counting down the days until [React.js Conf](http://conf.reactjs.com) at Facebook's headquarters in Menlo Park, California, on January 28th & 29th, 2015. Thank you, to everyone who responded to the Call for Presenters. Mark the dates; tickets go on sale in three waves: at noon PST on November 28th, December 5th, and December 12th, 2014.
 
-## React Meetups Around the World
+## React Meetups Around the World {#react-meetups-around-the-world}
 
 <blockquote class="twitter-tweet" lang="en"><p>React JS meetup having pretty good turn up rate today <a href="https://twitter.com/hashtag/londonreact?src=hash">#londonreact</a> <a href="http://t.co/c360dlVVAe">pic.twitter.com/c360dlVVAe</a></p>&mdash; Alexander Savin (@karismafilms) <a href="https://twitter.com/karismafilms/status/535152580377468928">November 19, 2014</a></blockquote>
 
diff --git a/content/blog/2014-12-18-react-v0.12.2.md b/content/blog/2014-12-18-react-v0.12.2.md
index ef038fa5f2..75f78277f6 100644
--- a/content/blog/2014-12-18-react-v0.12.2.md
+++ b/content/blog/2014-12-18-react-v0.12.2.md
@@ -22,16 +22,16 @@ We've also published version `0.12.2` of the `react` and `react-tools` packages
 
 Please try these builds out and [file an issue on GitHub](https://github.com/facebook/react/issues/new) if you see anything awry.
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
 * Added support for more HTML attributes: `formAction`, `formEncType`, `formMethod`, `formTarget`, `marginHeight`, `marginWidth`
 * Added `strokeOpacity` to the list of unitless CSS properties
 * Removed trailing commas (allows npm module to be bundled and used in IE8)
 * Fixed bug resulting in error when passing `undefined` to `React.createElement` - now there is a useful warning
 
-### React Tools
+### React Tools {#react-tools}
 
 * JSX-related transforms now always use double quotes for props and `displayName`
 
diff --git a/content/blog/2014-12-19-react-js-conf-diversity-scholarship.md b/content/blog/2014-12-19-react-js-conf-diversity-scholarship.md
index bb7cd23fb3..6b6b85c13a 100644
--- a/content/blog/2014-12-19-react-js-conf-diversity-scholarship.md
+++ b/content/blog/2014-12-19-react-js-conf-diversity-scholarship.md
@@ -18,19 +18,19 @@ Facebook will make determinations on scholarship recipients in its sole discreti
 
 To apply for the scholarship, please visit the Application Page: <https://www.surveymonkey.com/s/XVJGK6R>
 
-## Award Includes
+## Award Includes {#award-includes}
 
 * Paid registration fee for the React.js Conf January 28 & 29th at Facebook’s Headquarters in Menlo Park, CA
 * Paid travel and lodging expenses
 * Additional $200 meal stipend
 
-## Important Dates
+## Important Dates {#important-dates}
 
 * Monday, January 5, 2015: Applications for the React.js Conf Scholarship must be submitted in full
 * Friday, January 9, 2015: Award recipients will be notified by email of their acceptance
 * Wednesday & Thursday, January 28 & 29, 2015: React.js Conf
 
-## Eligibility
+## Eligibility {#eligibility}
 
 * Must currently be studying or working in Computer Science or a related field
 * International applicants are welcome, but you will be responsible for securing your own visa to attend the conference
diff --git a/content/blog/2015-01-27-react-v0.13.0-beta-1.md b/content/blog/2015-01-27-react-v0.13.0-beta-1.md
index 76fea92da4..d6cdd6c5c4 100644
--- a/content/blog/2015-01-27-react-v0.13.0-beta-1.md
+++ b/content/blog/2015-01-27-react-v0.13.0-beta-1.md
@@ -12,7 +12,7 @@ We just published a beta version of React v0.13.0 to [npm](https://www.npmjs.com
 So what is that one feature I'm so excited about that I just couldn't wait to share?
 
 
-## Plain JavaScript Classes!!
+## Plain JavaScript Classes!! {#plain-javascript-classes}
 
 JavaScript originally didn't have a built-in class system. Every popular framework built their own, and so did we. This means that you have a learn slightly different semantics for each framework.
 
@@ -21,7 +21,7 @@ We figured that we're not in the business of designing a class system. We just w
 In React 0.13.0 you no longer need to use `React.createClass` to create React components. If you have a transpiler you can use ES6 classes today. You can use the transpiler we ship with `react-tools` by making use of the harmony option: `jsx --harmony`.
 
 
-### ES6 Classes
+### ES6 Classes {#es6-classes}
 
 ```javascript
 class HelloMessage extends React.Component {
@@ -56,7 +56,7 @@ Counter.propTypes = { initialCount: React.PropTypes.number };
 Counter.defaultProps = { initialCount: 0 };
 ```
 
-### ES7+ Property Initializers
+### ES7+ Property Initializers {#es7-property-initializers}
 
 Wait, assigning to properties seems like a very imperative way of defining classes! You're right, however, we designed it this way because it's idiomatic. We fully expect a more declarative syntax for property initialization to arrive in future version of JavaScript. It might look something like this:
 
@@ -81,7 +81,7 @@ export class Counter extends React.Component {
 
 This was inspired by TypeScript's property initializers.
 
-### Autobinding
+### Autobinding {#autobinding}
 
 `React.createClass` has a built-in magic feature that bound all methods to `this` automatically for you. This can be a little confusing for JavaScript developers that are not used to this feature in other classes, or it can be confusing when they move from React to other classes.
 
@@ -111,7 +111,7 @@ class Counter extends React.Component {
 }
 ```
 
-### Mixins
+### Mixins {#mixins}
 
 Unfortunately, we will not launch any mixin support for ES6 classes in React. That would defeat the purpose of only using idiomatic JavaScript concepts.
 
@@ -125,7 +125,7 @@ Luckily, if you want to keep using mixins, you can just keep using `React.create
 >
 > The classic `React.createClass` style of creating classes will continue to work just fine.
 
-## Other Languages!
+## Other Languages! {#other-languages}
 
 Since these classes are just plain old JavaScript classes, you can use other languages that compile to JavaScript classes, such as TypeScript.
 
diff --git a/content/blog/2015-02-18-react-conf-roundup-2015.md b/content/blog/2015-02-18-react-conf-roundup-2015.md
index 3f7d3dfc26..5adcf96b53 100644
--- a/content/blog/2015-02-18-react-conf-roundup-2015.md
+++ b/content/blog/2015-02-18-react-conf-roundup-2015.md
@@ -6,7 +6,7 @@ author: [steveluscher]
 
 It was a privilege to welcome the React community to Facebook HQ on January 28–29 for the first-ever React.js Conf, and a pleasure to be able to unveil three new technologies that we've been using internally at Facebook for some time: GraphQL, Relay, and React Native.
 
-## The talks
+## The talks {#the-talks}
 
 <div class="skinny-row">
   <div class="skinny-col">
@@ -241,7 +241,7 @@ It was a privilege to welcome the React community to Facebook HQ on January 28
   </div>
 </div>
 
-## Reactions
+## Reactions {#reactions}
 
 The conference is over, but the conversation has just begun.
 
diff --git a/content/blog/2015-02-20-introducing-relay-and-graphql.md b/content/blog/2015-02-20-introducing-relay-and-graphql.md
index 90ab3093f0..4bd8809ce5 100644
--- a/content/blog/2015-02-20-introducing-relay-and-graphql.md
+++ b/content/blog/2015-02-20-introducing-relay-and-graphql.md
@@ -4,7 +4,7 @@ layout: post
 author: [wincent]
 ---
 
-## Data fetching for React applications
+## Data fetching for React applications {#data-fetching-for-react-applications}
 
 There's more to building an application than creating a user interface. Data fetching is still a tricky problem, especially as applications become more complicated. At [React.js Conf](http://conf.reactjs.com/) we announced two projects we've created at Facebook to make data fetching simple for developers, even as a product grows to include dozens of contributors and the application becomes as complex as Facebook itself.
 
@@ -14,7 +14,7 @@ The two projects &mdash; Relay and GraphQL &mdash; have been in use in productio
 
 <script async class="speakerdeck-embed" data-id="7af7c2f33bf9451a892dcd91de55b7c2" data-ratio="1.29456384323641" src="//speakerdeck.com/assets/embed.js"></script>
 
-## What is Relay?
+## What is Relay? {#what-is-relay}
 
 Relay is a new framework from Facebook that provides data-fetching functionality for React applications. It was announced at React.js Conf (January 2015).
 
@@ -22,13 +22,13 @@ Each component specifies its own data dependencies declaratively using a query l
 
 Developers compose these React components naturally, and Relay takes care of composing the data queries into efficient batches, providing each component with exactly the data that it requested (and no more), updating those components when the data changes, and maintaining a client-side store (cache) of all data.
 
-## What is GraphQL?
+## What is GraphQL? {#what-is-graphql}
 
 GraphQL is a data querying language designed to describe the complex, nested data dependencies of modern applications. It's been in production use in Facebook's native apps for several years.
 
 On the server, we configure the GraphQL system to map queries to underlying data-fetching code. This configuration layer allows GraphQL to work with arbitrary underlying storage mechanisms. Relay uses GraphQL as its query language, but it is not tied to a specific implementation of GraphQL.
 
-## The value proposition
+## The value proposition {#the-value-proposition}
 
 Relay was born out of our experiences building large applications at Facebook. Our overarching goal is to enable developers to create correct, high-performance applications in a straightforward and obvious way. The design enables even large teams to make changes with a high degree of isolation and confidence. Fetching data is hard, dealing with ever-changing data is hard, and performance is hard. Relay aims to reduce these problems to simple ones, moving the tricky bits into the framework and freeing you to concentrate on building your application.
 
@@ -48,13 +48,13 @@ By handling all data-fetching via a single abstraction, we're able to handle a b
 - **Simplified server implementation:** Rather than having a proliferation of end-points (per action, per route), a single GraphQL endpoint can serve as a facade for any number of underlying resources.
 - **Uniform mutations:** There is one consistent pattern for performing mutations (writes), and it is conceptually baked into the data querying model itself. You can think of a mutation as a query with side-effects: you provide some parameters that describe the change to be made (eg. attaching a comment to a record) and a query that specifies the data you'll need to update your view of the world after the mutation completes (eg. the comment count on the record), and the data flows through the system using the normal flow. We can do an immediate "optimistic" update on the client (ie. update the view under the assumption that the write will succeed), and finally commit it, retry it or roll it back in the event of an error when the server payload comes back.
 
-## How does it relate to Flux?
+## How does it relate to Flux? {#how-does-it-relate-to-flux}
 
 In some ways Relay is inspired by Flux, but the mental model is much simpler. Instead of multiple stores, there is one central store that caches all GraphQL data. Instead of explicit subscriptions, the framework itself can track which data each component requests, and which components should be updated whenever the data change. Instead of actions, modifications take the form of mutations.
 
 At Facebook, we have apps built entirely using Flux, entirely using Relay, or with both. One pattern we see emerging is letting Relay manage the bulk of the data flow for an application, but using Flux stores on the side to handle a subset of application state.
 
-## Open source plans
+## Open source plans {#open-source-plans}
 
 We're working very hard right now on getting both GraphQL (a spec, and a reference implementation) and Relay ready for public release (no specific dates yet, but we are super excited about getting these out there).
 
diff --git a/content/blog/2015-02-24-react-v0.13-rc1.md b/content/blog/2015-02-24-react-v0.13-rc1.md
index 28ec58dbea..6bf6e84f5c 100644
--- a/content/blog/2015-02-24-react-v0.13-rc1.md
+++ b/content/blog/2015-02-24-react-v0.13-rc1.md
@@ -24,11 +24,11 @@ We've also published version `0.13.0-rc1` of the `react` and `react-tools` packa
 
 - - -
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes}
 
 * Mutating `props` after an element is created is deprecated and will cause warnings in development mode; future versions of React will incorporate performance optimizations assuming that props aren't mutated
 * Static methods (defined in `statics`) are no longer autobound to the component class
@@ -37,7 +37,7 @@ We've also published version `0.13.0-rc1` of the `react` and `react-tools` packa
 * `setState` and `forceUpdate` on an unmounted component now warns instead of throwing. That avoids a possible race condition with Promises.
 * Access to most internal properties has been completely removed, including `this._pendingState` and `this._rootNodeID`.
 
-#### New Features
+#### New Features {#new-features}
 
 * Support for using ES6 classes to build React components; see the [v0.13.0 beta 1 notes](/blog/2015/01/27/react-v0.13.0-beta-1.html) for details
 * Added new top-level API `React.findDOMNode(component)`, which should be used in place of `component.getDOMNode()`. The base class for ES6-based components will not have `getDOMNode`. This change will enable some more patterns moving forward.
@@ -45,26 +45,26 @@ We've also published version `0.13.0-rc1` of the `react` and `react-tools` packa
 * `this.setState()` can now take a function as the first argument for transactional state updates, such as `this.setState((state, props) => ({count: state.count + 1}));` -- this means that you no longer need to use `this._pendingState`, which is now gone.
 * Support for iterators and immutable-js sequences as children
 
-#### Deprecations
+#### Deprecations {#deprecations}
 
 * `ComponentClass.type` is deprecated. Just use `ComponentClass` (usually as `element.type === ComponentClass`)
 * Some methods that are available on `createClass`-based components are removed or deprecated from ES6 classes (for example, `getDOMNode`, `setProps`, `replaceState`).
 
 
-### React with Add-Ons
+### React with Add-Ons {#react-with-add-ons}
 
-#### Deprecations
+#### Deprecations {#deprecations-1}
 
 * `React.addons.classSet` is now deprecated. This functionality can be replaced with several freely available modules. [classnames](https://www.npmjs.com/package/classnames) is one such module.
 
 
-### React Tools
+### React Tools {#react-tools}
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes-1}
 
 * When transforming ES6 syntax, `class` methods are no longer enumerable by default, which requires `Object.defineProperty`; if you support browsers such as IE8, you can pass `--target es3` to mirror the old behavior
 
-#### New Features
+#### New Features {#new-features-1}
 
 * `--target` option is available on the jsx command, allowing users to specify and ECMAScript version to target.
   * `es5` is the default.
@@ -72,7 +72,7 @@ We've also published version `0.13.0-rc1` of the `react` and `react-tools` packa
 * The transform for the call spread operator has also been enabled.
 
 
-### JSX
+### JSX {#jsx}
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes-2}
 * A change was made to how some JSX was parsed, specifically around the use of `>` or `}` when inside an element. Previously it would be treated as a string but now it will be treated as a parse error. We will be releasing a standalone executable to find and fix potential issues in your JSX code.
diff --git a/content/blog/2015-02-24-streamlining-react-elements.md b/content/blog/2015-02-24-streamlining-react-elements.md
index aa76a70438..a5bb932778 100644
--- a/content/blog/2015-02-24-streamlining-react-elements.md
+++ b/content/blog/2015-02-24-streamlining-react-elements.md
@@ -8,7 +8,7 @@ React v0.13 is right around the corner and so we wanted to discuss some upcoming
 
 If you use React in an idiomatic way, chances are, you’ll never see any of these warnings. In that case, you can skip this blog post. You can just enjoy the benefits! These changes will unlock simplified semantics, better error messages, stack traces and compiler optimizations!
 
-## Immutable Props
+## Immutable Props {#immutable-props}
 
 In React 0.12, the props object was mutable. It allows you to do patterns like this:
 
@@ -22,7 +22,7 @@ if (shouldUseFoo) {
 
 The problem is that we don’t have a convenient way to tell when you’re done mutating.
 
-### Problem: Mutating Props You Don’t Own
+### Problem: Mutating Props You Don’t Own {#problem-mutating-props-you-dont-own}
 
 If you mutate something, you destroy the original value. Therefore, there is nothing to diff against. Imagine something like this:
 
@@ -40,13 +40,13 @@ Additionally, if this element is reused in other places or used to switch back a
 
 It has always been broken to mutate the props of something passed into you. The problem is that we can’t warn you about this special case if you accidentally do this.
 
-### Problem: Too Late Validation
+### Problem: Too Late Validation {#problem-too-late-validation}
 
 In React 0.12, we do PropType validation very deep inside React during mounting. This means that by the time you get an error, the debugger stack is long gone. This makes it difficult to find complex issues during debugging. We have to do this since it is fairly common for extra props to be added between the call to React.createElement and the mount time. So the type is incomplete until then.
 
 The static analysis in Flow is also impaired by this. There is no convenient place in the code where Flow can determine that the props are finalized.
 
-### Solution: Immutable Props
+### Solution: Immutable Props {#solution-immutable-props}
 
 Therefore, we would like to be able to freeze the element.props object so that it is immediately immutable at the JSX callsite (or createElement). In React 0.13 we will start warning you if you mutate `element.props` after this point.
 
@@ -79,7 +79,7 @@ return <Foo nestedObject={this.state.myModel} />;
 
 In this case it's still ok to mutate the myModel object in state. We recommend that you use fully immutable models. E.g. by using immutable-js. However, we realize that mutable models are still convenient in many cases. Therefore we're only considering shallow freezing the props object that belongs to the ReactElement itself. Not nested objects.
 
-### Solution: Early PropType Warnings
+### Solution: Early PropType Warnings {#solution-early-proptype-warnings}
 
 We will also start warning you for PropTypes at the JSX or createElement callsite. This will help debugging as you’ll have the stack trace right there. Similarly, Flow also validates PropTypes at this callsite.
 
@@ -90,7 +90,7 @@ var element1 = <Foo />; // extra prop is optional
 var element2 = React.addons.cloneWithProps(element1, { extra: 'prop' });
 ```
 
-## Owner
+## Owner {#owner}
 
 In React each child has both a "parent" and an “owner”. The owner is the component that created a ReactElement. I.e. the render method which contains the JSX or createElement callsite.
 
@@ -106,7 +106,7 @@ In this example, the owner of the `span` is `Foo` but the parent is the `div`.
 
 There is also an undocumented feature called "context" that also relies on the concept of an “owner” to pass hidden props down the tree.
 
-### Problem: The Semantics are Opaque and Confusing
+### Problem: The Semantics are Opaque and Confusing {#problem-the-semantics-are-opaque-and-confusing}
 
 The problem is that these are hidden artifacts attached to the ReactElement. In fact, you probably didn’t even know about it. It silently changes semantics. Take this for example:
 
@@ -121,7 +121,7 @@ class Component {
 
 These two inputs have different owners, therefore React will not keep its state when the conditional switches. There is nothing in the code to indicate that. Similarly, if you use `React.addons.cloneWithProps`, the owner changes.
 
-### Problem: Timing Matters
+### Problem: Timing Matters {#problem-timing-matters}
 
 The owner is tracked by the currently executing stack. This means that the semantics of a ReactElement varies depending on when it is executed. Take this example:
 
@@ -140,25 +140,25 @@ class B {
 
 The owner of the `span` is actually `B`, not `A` because of the timing of the callback. This all adds complexity and suffers from similar problems as mutation.
 
-### Problem: It Couples JSX to React
+### Problem: It Couples JSX to React {#problem-it-couples-jsx-to-react}
 
 Have you wondered why JSX depends on React? Couldn’t the transpiler have that built-in to its runtime? The reason you need to have `React.createElement` in scope is because we depend on internal state of React to capture the current "owner". Without this, you wouldn’t need to have React in scope.
 
-### Solution: Make Context Parent-Based Instead of Owner-Based
+### Solution: Make Context Parent-Based Instead of Owner-Based {#solution-make-context-parent-based-instead-of-owner-based}
 
 The first thing we’re doing is warning you if you’re using the "owner" feature in a way that relies on it propagating through owners. Instead, we’re planning on propagating it through parents to its children. In almost all cases, this shouldn’t matter. In fact, parent-based contexts is simply a superset.
 
-### Solution: Remove the Semantic Implications of Owner
+### Solution: Remove the Semantic Implications of Owner {#solution-remove-the-semantic-implications-of-owner}
 
 It turns out that there are very few cases where owners are actually important part of state-semantics. As a precaution, we’ll warn you if it turns out that the owner is important to determine state. In almost every case this shouldn’t matter. Unless you’re doing some weird optimizations, you shouldn’t see this warning.
 
-### Pending: Change the refs Semantics
+### Pending: Change the refs Semantics {#pending-change-the-refs-semantics}
 
 Refs are still based on "owner". We haven’t fully solved this special case just yet.
 
 In 0.13 we introduced a new callback-refs API that doesn’t suffer from these problems but we’ll keep on a nice declarative alternative to the current semantics for refs. As always, we won’t deprecate something until we’re sure that you’ll have a nice upgrade path.
 
-## Keyed Objects as Maps
+## Keyed Objects as Maps {#keyed-objects-as-maps}
 
 In React 0.12, and earlier, you could use keyed objects to provide an external key to an element or a set. This pattern isn’t actually widely used. It shouldn’t be an issue for most of you.
 
@@ -166,11 +166,11 @@ In React 0.12, and earlier, you could use keyed objects to provide an external k
 <div>{ {a: <span />, b: <span />} }</div>
 ```
 
-### Problem: Relies on Enumeration Order
+### Problem: Relies on Enumeration Order {#problem-relies-on-enumeration-order}
 
 The problem with this pattern is that it relies on enumeration order of objects. This is technically unspecified, even though implementations now agree to use insertion order. Except for the special case when numeric keys are used.
 
-### Problem: Using Objects as Maps is Bad
+### Problem: Using Objects as Maps is Bad {#problem-using-objects-as-maps-is-bad}
 
 It is generally accepted that using objects as maps screw up type systems, VM optimizations, compilers etc. It is much better to use a dedicated data structure like ES6 Maps.
 
@@ -184,13 +184,13 @@ return <div>{children}</div>;
 
 Imagine if `item.title === '__proto__'` for example.
 
-### Problem: Can’t be Differentiated from Arbitrary Objects
+### Problem: Can’t be Differentiated from Arbitrary Objects {#problem-cant-be-differentiated-from-arbitrary-objects}
 
 Since these objects can have any keys with almost any value, we can’t differentiate them from a mistake. If you put some random object, we will try our best to traverse it and render it, instead of failing with a helpful warning. In fact, this is one of the few places where you can accidentally get an infinite loop in React.
 
 To differentiate ReactElements from one of these objects, we have to tag them with `_isReactElement`. This is another issue preventing us from inlining ReactElements as simple object literals.
 
-### Solution: Just use an Array and key={…}
+### Solution: Just use an Array and key={…} {#solution-just-use-an-array-and-key}
 
 Most of the time you can just use an array with keyed ReactElements.
 
@@ -199,7 +199,7 @@ var children = items.map(item => <span key={item.title} />);
 <div>{children}</div>
 ```
 
-### Solution: React.addons.createFragment
+### Solution: React.addons.createFragment {#solution-reactaddonscreatefragment}
 
 However, this is not always possible if you’re trying to add a prefix key to an unknown set (e.g. this.props.children). It is also not always the easiest upgrade path. Therefore, we are adding a helper to `React.addons` called `createFragment()`. This accepts a keyed object and returns an opaque type.
 
@@ -211,7 +211,7 @@ The exact signature of this kind of fragment will be determined later. It will l
 
 Note: This will still not be valid as the direct return value of `render()`. Unfortunately, they still need to be wrapped in a `<div />` or some other element.
 
-## Compiler Optimizations: Unlocked!
+## Compiler Optimizations: Unlocked! {#compiler-optimizations-unlocked}
 
 These changes also unlock several possible compiler optimizations for static content in React 0.14. These optimizations were previously only available to template-based frameworks. They will now also be possible for React code! Both for JSX and `React.createElement/Factory`*!
 
@@ -223,7 +223,7 @@ See these GitHub Issues for a deep dive into compiler optimizations:
 
 \* If you use the recommended pattern of explicit React.createFactory calls on the consumer side - since they are easily statically analyzed.
 
-## Rationale
+## Rationale {#rationale}
 
 I thought that these changes were particularly important because the mere existence of these patterns means that even components that DON’T use these patterns have to pay the price. There are other problematic patterns such as mutating state, but they’re at least localized to a component subtree so they don’t harm the ecosystem.
 
diff --git a/content/blog/2015-03-03-react-v0.13-rc2.md b/content/blog/2015-03-03-react-v0.13-rc2.md
index 76e6ec25cd..10ab150a4f 100644
--- a/content/blog/2015-03-03-react-v0.13-rc2.md
+++ b/content/blog/2015-03-03-react-v0.13-rc2.md
@@ -25,7 +25,7 @@ We've also published version `0.13.0-rc2` of the `react` and `react-tools` packa
 
 - - -
 
-## React.cloneElement
+## React.cloneElement {#reactcloneelement}
 
 In React v0.13 RC2 we will introduce a new API, similar to `React.addons.cloneWithProps`, with this signature:
 
diff --git a/content/blog/2015-03-04-community-roundup-25.md b/content/blog/2015-03-04-community-roundup-25.md
index c1f4e04bca..c5a23249c4 100644
--- a/content/blog/2015-03-04-community-roundup-25.md
+++ b/content/blog/2015-03-04-community-roundup-25.md
@@ -4,7 +4,7 @@ layout: post
 author: [matthewjohnston4]
 ---
 
-## React 101
+## React 101 {#react-101}
 
 Interest in React has been exploding recently, so it's a good time to explore some great recent tutorials and videos that cover getting started.
 
@@ -22,7 +22,7 @@ Our own [Sebastian Markbåge](https://github.com/sebmarkbage) was on the [Web Pl
 
 <iframe style="border: none" src="//html5-player.libsyn.com/embed/episode/id/3370114/height/75/width/200/theme/standard-mini/direction/no/autoplay/no/autonext/no/thumbnail/yes/preload/no/no_addthis/no/" height="26" width="100%" scrolling="no" allowfullscreen="" webkitallowfullscreen="" mozallowfullscreen="" oallowfullscreen="" msallowfullscreen=""></iframe>
 
-## Community Additions
+## Community Additions {#community-additions}
 
 [Formidable Labs](https://github.com/FormidableLabs) have been busy, as they've also[ just launched Radium](http://projects.formidablelabs.com/radium/), a React component that provides you with the ability to use inline styles instead of CSS. They're also [looking for some help](http://projects.formidablelabs.com/radium-bootstrap/) contributing to a Radium Bootstrap implementation.
 
@@ -34,7 +34,7 @@ Our own [Sebastian Markbåge](https://github.com/sebmarkbage) was on the [Web Pl
 
 [react-meteor](https://github.com/reactjs/react-meteor), a package that replaces the default templating system of the Meteor platform with React, recently received a big update.
 
-## Rebuilding with React
+## Rebuilding with React {#rebuilding-with-react}
 
 [Rich Manalang](https://github.com/rmanalan) from Atlassian [explains why](https://developer.atlassian.com/blog/2015/02/rebuilding-hipchat-with-react/) they rebuilt their HipChat web client from scratch using React, and how they're already using it to rebuild their native desktop clients.
 
@@ -46,11 +46,11 @@ A team from New Zealand called [Atomic](https://atomic.io/) is [building web and
 
 <center><a href="http://polarrist.tumblr.com/post/111290422225/polarr-photo-editor-2-0-alpha-is-here"><img src="../images/blog/polarr.jpg"></a></center>
 
-## It's F8!
+## It's F8! {#its-f8}
 
 F8 2015 is just around the corner, and you can [sign up for the video streams](https://www.fbf8.com/stream.html) in advance because we're sure to be covering all things React.
 
-## Meetups
+## Meetups {#meetups}
 
 <table><tr><td width="50%" valign="top">
 <blockquote class="twitter-tweet" lang="en"><p>Our <a href="https://twitter.com/reactjs">@reactjs</a> meetup is in full effect <a href="https://twitter.com/hashtag/ReactJS?src=hash">#ReactJS</a> &#10;&#10;btw bathroom code is 6012 lol <a href="http://t.co/7iUpvmm3zz">pic.twitter.com/7iUpvmm3zz</a></p>&mdash; littleBits (@littleBits) <a href="https://twitter.com/littleBits/status/570373833028472832">February 25, 2015</a></blockquote>
diff --git a/content/blog/2015-03-10-react-v0.13.md b/content/blog/2015-03-10-react-v0.13.md
index 76d1ca0253..47a450d2e5 100644
--- a/content/blog/2015-03-10-react-v0.13.md
+++ b/content/blog/2015-03-10-react-v0.13.md
@@ -29,11 +29,11 @@ We've also published version `0.13.0` of the `react` and `react-tools` packages
 
 - - -
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes}
 
 * Deprecated patterns that warned in 0.12 no longer work: most prominently, calling component classes without using JSX or React.createElement and using non-component functions with JSX or createElement
 * Mutating `props` after an element is created is deprecated and will cause warnings in development mode; future versions of React will incorporate performance optimizations assuming that props aren't mutated
@@ -43,7 +43,7 @@ We've also published version `0.13.0` of the `react` and `react-tools` packages
 * `setState` and `forceUpdate` on an unmounted component now warns instead of throwing. That avoids a possible race condition with Promises.
 * Access to most internal properties has been completely removed, including `this._pendingState` and `this._rootNodeID`.
 
-#### New Features
+#### New Features {#new-features}
 
 * Support for using ES6 classes to build React components; see the [v0.13.0 beta 1 notes](/blog/2015/01/27/react-v0.13.0-beta-1.html) for details.
 * Added new top-level API `React.findDOMNode(component)`, which should be used in place of `component.getDOMNode()`. The base class for ES6-based components will not have `getDOMNode`. This change will enable some more patterns moving forward.
@@ -52,31 +52,31 @@ We've also published version `0.13.0` of the `react` and `react-tools` packages
 * `this.setState()` can now take a function as the first argument for transactional state updates, such as `this.setState((state, props) => ({count: state.count + 1}));` – this means that you no longer need to use `this._pendingState`, which is now gone.
 * Support for iterators and immutable-js sequences as children.
 
-#### Deprecations
+#### Deprecations {#deprecations}
 
 * `ComponentClass.type` is deprecated. Just use `ComponentClass` (usually as `element.type === ComponentClass`).
 * Some methods that are available on `createClass`-based components are removed or deprecated from ES6 classes (`getDOMNode`, `replaceState`, `isMounted`, `setProps`, `replaceProps`).
 
 
-### React with Add-Ons
+### React with Add-Ons {#react-with-add-ons}
 
-#### New Features
+#### New Features {#new-features-1}
 
 * [`React.addons.createFragment` was added](/docs/create-fragment.html) for adding keys to entire sets of children.
 
-#### Deprecations
+#### Deprecations {#deprecations-1}
 
 * `React.addons.classSet` is now deprecated. This functionality can be replaced with several freely available modules. [classnames](https://www.npmjs.com/package/classnames) is one such module.
 * Calls to `React.addons.cloneWithProps` can be migrated to use `React.cloneElement` instead – make sure to merge `style` and `className` manually if desired.
 
 
-### React Tools
+### React Tools {#react-tools}
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes-1}
 
 * When transforming ES6 syntax, `class` methods are no longer enumerable by default, which requires `Object.defineProperty`; if you support browsers such as IE8, you can pass `--target es3` to mirror the old behavior
 
-#### New Features
+#### New Features {#new-features-2}
 
 * `--target` option is available on the jsx command, allowing users to specify and ECMAScript version to target.
   * `es5` is the default.
@@ -84,7 +84,7 @@ We've also published version `0.13.0` of the `react` and `react-tools` packages
 * The transform for the call spread operator has also been enabled.
 
 
-### JSX
+### JSX {#jsx}
 
-#### Breaking Changes
+#### Breaking Changes {#breaking-changes-2}
 * A change was made to how some JSX was parsed, specifically around the use of `>` or `}` when inside an element. Previously it would be treated as a string but now it will be treated as a parse error. The [`jsx_orphaned_brackets_transformer`](https://www.npmjs.com/package/jsx_orphaned_brackets_transformer) package on npm can be used to find and fix potential issues in your JSX code.
diff --git a/content/blog/2015-03-16-react-v0.13.1.md b/content/blog/2015-03-16-react-v0.13.1.md
index 16b2e1bc0d..89243418a4 100644
--- a/content/blog/2015-03-16-react-v0.13.1.md
+++ b/content/blog/2015-03-16-react-v0.13.1.md
@@ -22,26 +22,26 @@ We've also published version `0.13.1` of the `react` and `react-tools` packages
 
 - - -
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes}
 
 * Don't throw when rendering empty `<select>` elements
 * Ensure updating `style` works when transitioning from `null`
 
-### React with Add-Ons
+### React with Add-Ons {#react-with-add-ons}
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes-1}
 
 * TestUtils: Don't warn about `getDOMNode` for ES6 classes
 * TestUtils: Ensure wrapped full page components (`<html>`, `<head>`, `<body>`) are treated as DOM components
 * Perf: Stop double-counting DOM components
 
-### React Tools
+### React Tools {#react-tools}
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes-2}
 
 * Fix option parsing for `--non-strict-es6module`
 
diff --git a/content/blog/2015-03-19-building-the-facebook-news-feed-with-relay.md b/content/blog/2015-03-19-building-the-facebook-news-feed-with-relay.md
index 18933939ab..ffc443ae0f 100644
--- a/content/blog/2015-03-19-building-the-facebook-news-feed-with-relay.md
+++ b/content/blog/2015-03-19-building-the-facebook-news-feed-with-relay.md
@@ -9,7 +9,7 @@ We're working hard to prepare GraphQL and Relay for public release. In the meant
 
 <br/>
 
-## The Relay Architecture
+## The Relay Architecture {#the-relay-architecture}
 
 The diagram below shows the main parts of the Relay architecture on the client and the server:
 
@@ -26,7 +26,7 @@ This post will focus on **Relay components** that describe encapsulated units of
 
 <br/>
 
-## A Relay Application
+## A Relay Application {#a-relay-application}
 
 To see how components work and can be composed, let's implement a basic version of the Facebook News Feed in Relay. Our application will have two components: a `<NewsFeed>` that renders a list of `<Story>` items. We'll introduce the plain React version of each component first and then convert it to a Relay component. The goal is something like the following:
 
@@ -34,7 +34,7 @@ To see how components work and can be composed, let's implement a basic version
 
 <br/>
 
-## The `<Story>` Begins
+## The `<Story>` Begins {#the-story-begins}
 
 The first step is a React `<Story>` component that accepts a `story` prop with the story's text and author information. Note that all examples uses ES6 syntax and elide presentation details to focus on the pattern of data access.
 
@@ -56,7 +56,7 @@ export default class Story extends React.Component {
 
 <br/>
 
-## What's the `<Story>`?
+## What's the `<Story>`? {#whats-the-story}
 
 Relay automates the process of fetching data for components by wrapping existing React components in Relay containers (themselves React components):
 
@@ -102,7 +102,7 @@ Queries use ES6 template literals tagged with the `Relay.QL` function. Similar t
 
 <br/>
 
-## `<Story>`s on Demand
+## `<Story>`s on Demand {#storys-on-demand}
 
 We can render a Relay component by providing Relay with the component (`<Story>`) and the ID of the data (a story ID). Given this information, Relay will first fetch the results of the query and then `render()` the component. The value of `props.story` will be a plain JavaScript object such as the following:
 
@@ -126,7 +126,7 @@ The diagram below shows how Relay containers make data available to our React co
 
 <br/>
 
-## `<NewsFeed>` Worthy
+## `<NewsFeed>` Worthy {#newsfeed-worthy}
 
 Now that the `<Story>` is over we can continue with the `<NewsFeed>` component. Again, we'll start with a React version:
 
@@ -153,7 +153,7 @@ module.exports = NewsFeed;
 
 <br/>
 
-## All the News Fit to be Relayed
+## All the News Fit to be Relayed {#all-the-news-fit-to-be-relayed}
 
 `<NewsFeed>` has two new requirements: it composes `<Story>` and requests more data at runtime.
 
@@ -207,7 +207,7 @@ Now when `loadMore()` is called, Relay will send a GraphQL request for the addit
 
 <br/>
 
-## In Conclusion
+## In Conclusion {#in-conclusion}
 
 These two components form a solid core for our application. With the use of Relay containers and GraphQL queries, we've enabled the following benefits:
 
diff --git a/content/blog/2015-03-30-community-roundup-26.md b/content/blog/2015-03-30-community-roundup-26.md
index 1ad461ad65..ae2dc49792 100644
--- a/content/blog/2015-03-30-community-roundup-26.md
+++ b/content/blog/2015-03-30-community-roundup-26.md
@@ -9,14 +9,14 @@ We open sourced React Native last week and the community reception blew away all
 <blockquote class="twitter-tweet" lang="en"><p><a href="https://twitter.com/hashtag/reactnative?src=hash">#reactnative</a> is like when you get a new expansion pack, and everybody is running around clueless about which NPC to talk to for the quests</p>&mdash; Ryan Florence (@ryanflorence) <a href="https://twitter.com/ryanflorence/status/581810423554543616">March 28, 2015</a></blockquote>
 
 
-## When is React Native Android coming?
+## When is React Native Android coming? {#when-is-react-native-android-coming}
 
 **Give us 6 months**. At Facebook, we strive to only open-source projects that we are using in production. While the Android backend for React Native is starting to work (see video below at 37min), it hasn't been shipped to any users yet. There's a lot of work that goes into open-sourcing a project, and we want to do it right so that you have a great experience when using it.
 
 <iframe width="650" height="315" src="https://www.youtube-nocookie.com/embed/X6YbAKiLCLU?start=2220" frameborder="0" allowfullscreen></iframe>
 
 
-## Ray Wenderlich - Property Finder
+## Ray Wenderlich - Property Finder {#ray-wenderlich---property-finder}
 
 If you are getting started with React Native, you should absolutely [use this tutorial](http://www.raywenderlich.com/99473/introducing-react-native-building-apps-javascript) from Colin Eberhardt. It goes through all the steps to make a reasonably complete app.
 
@@ -25,59 +25,59 @@ If you are getting started with React Native, you should absolutely [use this tu
 Colin also [blogged about his experience using React Native](http://blog.scottlogic.com/2015/03/26/react-native-retrospective.html) for a few weeks and gives his thoughts on why you would or wouldn't use it.
 
 
-## The Changelog
+## The Changelog {#the-changelog}
 
 Spencer Ahrens and I had the great pleasure to talk about React Native on [The Changelog](https://thechangelog.com/149/) podcast. It was really fun to chat for an hour, I hope that you'll enjoy listening to it. :)
 
 <audio src="http://fdlyr.co/d/changelog/cdn.5by5.tv/audio/broadcasts/changelog/2015/changelog-149.mp3" controls="controls" style="width: 100%"></audio>
 
 
-## Hacker News
+## Hacker News {#hacker-news}
 
 Less than 24 hours after React Native was open sourced, Simarpreet Singh built an [Hacker News reader app from scratch](https://github.com/iSimar/HackerNews-React-Native). It's unbelievable how fast he was able to pull it off!
 
 [![](../images/blog/hacker-news-react-native.png)](https://github.com/iSimar/HackerNews-React-Native)
 
 
-## Parse + React
+## Parse + React {#parse--react}
 
 There's a huge ecosystem of JavaScript modules on npm and React Native was designed to work well with the ones that don't have DOM dependencies. Parse is a great example; you can `npm install parse` on your React Native project and it'll work as is. :) We still have [a](https://github.com/facebook/react-native/issues/406) [few](https://github.com/facebook/react-native/issues/370) [issues](https://github.com/facebook/react-native/issues/316) to solve; please create an issue if your favorite library doesn't work out of the box.
 
 [![](../images/blog/parse-react.jpg)](http://blog.parse.com/2015/03/25/parse-and-react-shared-chemistry/)
 
 
-## tcomb-form-native
+## tcomb-form-native {#tcomb-form-native}
 
 Giulio Canti is the author of the [tcomb-form library](https://github.com/gcanti/tcomb-form) for React. He already [ported it to React Native](https://github.com/gcanti/tcomb-form-native) and it looks great!
 
 [![](../images/blog/tcomb-react-native.png)](https://github.com/gcanti/tcomb-form-native)
 
 
-## Facebook Login with React Native
+## Facebook Login with React Native {#facebook-login-with-react-native}
 
 One of the reason we built React Native is to be able to use all the libraries in the native ecosystem. Brent Vatne leads the way and explains [how to use Facebook Login with React Native](http://brentvatne.ca/facebook-login-with-react-native/).
 
 
-## Modus Create
+## Modus Create {#modus-create}
 
 Jay Garcia spent a lot of time during the beta working on a NES music player with React Native. He wrote a blog post to share his experience and explains some code snippets.
 
 [![](../images/blog/modus-create.gif)](http://moduscreate.com/react-native-has-landed/)
 
 
-## React Native with Babel and webpack
+## React Native with Babel and webpack {#react-native-with-babel-and-webpack}
 
 React Native ships with a custom packager and custom ES6 transforms instead of using what the open source community settled on such as [webpack](https://webpack.js.org/) and [Babel](https://babeljs.io/). The main reason for this is performance – we couldn't get those tools to have sub-second reload time on a large codebase.
 
 Roman Liutikov found a way to [use webpack and Babel to run on React Native](https://github.com/roman01la/react-native-babel)! In the future, we want to work with those projects to provide cleaner extension mechanisms.
 
 
-## A Dynamic, Crazy, Native Mobile Future—Powered by JavaScript
+## A Dynamic, Crazy, Native Mobile Future—Powered by JavaScript {#a-dynamic-crazy-native-mobile-futurepowered-by-javascript}
 
 Clay Allsopp wrote a post about [all the crazy things you could do with a JavaScript engine that renders native views](https://medium.com/@clayallsopp/a-dynamic-crazy-native-mobile-future-powered-by-javascript-70f2d56b1987). What about native embeds, seamless native browser, native search engine or even app generation...
 
 
-## Random Tweet
+## Random Tweet {#random-tweet}
 
 We've spent a lot of efforts getting the onboarding as easy as possible and we're really happy that people noticed. We still have a lot of work to do on documentation, stay tuned!
 
diff --git a/content/blog/2015-04-17-react-native-v0.4.md b/content/blog/2015-04-17-react-native-v0.4.md
index 00fef05944..6b3a2a627a 100644
--- a/content/blog/2015-04-17-react-native-v0.4.md
+++ b/content/blog/2015-04-17-react-native-v0.4.md
@@ -8,7 +8,7 @@ It's been three weeks since we open sourced React Native and there's been some i
 
 I'd especially like to thank community members Brent Vatne and James Ide who have both already contributed meaningfully to the project and have been extremely helpful on IRC and with issues and pull requests
 
-## Changelog
+## Changelog {#changelog}
 
 The main focus of the past few weeks has been to make React Native the best possible experience for people outside of Facebook. Here's a high level summary of what's happened since we open sourced:
 
@@ -20,6 +20,6 @@ The main focus of the past few weeks has been to make React Native the best poss
 * **Patent Grant**: Many of you had concerns and questions around the PATENTS file. We pushed [a new version of the grant](https://code.facebook.com/posts/1639473982937255/updating-our-open-source-patent-grant/).
 * **Per commit history**: In order to synchronize from Facebook to GitHub, we used to do one giant commit every few days. We improved our tooling and now have per commit history that maintains author information (both internal and external from pull requests), and we retroactively applied this to historical diffs to provide proper attribution.
 
-## Where are we going?
+## Where are we going? {#where-are-we-going}
 
 In addition to supporting pull requests, issues, and general improvements, we're also working hard on our internal React Native integrations and on React Native for Android.
diff --git a/content/blog/2015-04-18-react-v0.13.2.md b/content/blog/2015-04-18-react-v0.13.2.md
index c0acbccf0f..c188fc3780 100644
--- a/content/blog/2015-04-18-react-v0.13.2.md
+++ b/content/blog/2015-04-18-react-v0.13.2.md
@@ -20,11 +20,11 @@ We've also published version `0.13.2` of the `react` and `react-tools` packages
 
 - - -
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### New Features
+#### New Features {#new-features}
 
 * Added `strokeDashoffset`, `flexPositive`, `flexNegative` to the list of unitless CSS properties
 * Added support for more DOM properties:
@@ -32,20 +32,20 @@ We've also published version `0.13.2` of the `react` and `react-tools` packages
   * `high`, `low`, `optimum` - for `<meter>` elements
   * `unselectable` - IE-specific property to prevent user selection
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes}
 
 * Fixed a case where re-rendering after rendering null didn't properly pass context
 * Fixed a case where re-rendering after rendering with `style={null}` didn't properly update `style`
 * Update `uglify` dependency to prevent a bug in IE8
 * Improved warnings
 
-### React with Add-Ons
+### React with Add-Ons {#react-with-add-ons}
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes-1}
 
 * Immutabilty Helpers: Ensure it supports `hasOwnProperty` as an object key
 
-### React Tools
+### React Tools {#react-tools}
 
 * Improve documentation for new options
 
diff --git a/content/blog/2015-05-01-graphql-introduction.md b/content/blog/2015-05-01-graphql-introduction.md
index ff6759dac6..e90ffc4df6 100644
--- a/content/blog/2015-05-01-graphql-introduction.md
+++ b/content/blog/2015-05-01-graphql-introduction.md
@@ -12,7 +12,7 @@ GraphQL was not invented to enable Relay. In fact, GraphQL predates Relay by nea
 We plan to open-source a reference implementation of a GraphQL server and publish a language specification in the coming months. Our goal is to evolve GraphQL to adapt to a wide range of backends, so that projects and companies can use this technology to access their own data. We believe that this is a compelling way to structure servers and to provide powerful abstractions, frameworks and tools – including, but not exclusively, Relay – for product developers.
 
 
-## What is GraphQL?
+## What is GraphQL? {#what-is-graphql}
 
 A GraphQL query is a string interpreted by a server that returns data in a specified format. Here is an example query: 
 
@@ -62,12 +62,12 @@ We will dig into the syntax and semantics of GraphQL in a later post, but even a
 * **Introspective:** GraphQL is introspective. Clients and tools can query the type system using the GraphQL syntax itself. This is a powerful platform for building tools and client software, such as automatic parsing of incoming data into strongly-typed interfaces. It is especially useful in statically typed languages such as Swift, Objective-C and Java, as it obviates the need for repetitive and error-prone code to shuffle raw, untyped JSON into strongly-typed business objects.
 
 
-## Why invent something new?
+## Why invent something new? {#why-invent-something-new}
 
 Obviously GraphQL is not the first system to manage client-server interactions. In today's world there are two dominant architectural styles for client-server interaction: REST and *ad hoc* endpoints. 
 
 
-### REST
+### REST {#rest}
 
 REST, an acronym for Representational State Transfer, is an architectural style rather than a formal protocol. There is actually much debate about what exactly REST is and is not. We wish to avoid such debates. We are interested in the typical attributes of systems that *self-identify* as REST, rather than systems which are formally REST.
 
@@ -85,7 +85,7 @@ Nearly all externally facing REST APIs we know of trend or end up in these non-i
 Because of multiple round-trips and over-fetching, applications built in the REST style inevitably end up building *ad hoc* endpoints that are superficially in the REST style. These actually couple the data to a particular view which explicitly violates one of REST's major goals. Most REST systems of any complexity end up as a continuum of endpoints that span from “traditional” REST to *ad hoc* endpoints.
 
 
-### Ad Hoc Endpoints
+### Ad Hoc Endpoints {#ad-hoc-endpoints}
 
 Many applications have no formalized client-server contract. Product developers access server capabilities through *ad hoc* endpoints and write custom code to fetch the data they need. Servers define procedures, and they return data. This approach has the virtue of simplicity, but can often become untenable as systems age.
 
@@ -101,7 +101,7 @@ This is a liberating platform for product developers. With GraphQL, no more cont
 Product developers are free to focus on their client software and requirements while rarely leaving their development environment; they can more confidently support shipped clients as a system evolves; and they are using a protocol designed to operate well within the constraints of mobile applications. Product developers can query for exactly what they want, in the way they think about it, across their entire application's data model. 
 
 
-## What's next?
+## What's next? {#whats-next}
 
 Over the coming months, we will share more technical details about GraphQL, including additional language features, tools that support it, and how it is built and used at Facebook. These posts will culminate in a formal specification of GraphQL to guide implementors across various languages and platforms. We also plan on releasing a reference implementation in the summer, in order to provide a basis for custom deployments and a platform for experimentation. We're incredibly excited to share this system and work with the open source community to improve it.
 
diff --git a/content/blog/2015-05-08-react-v0.13.3.md b/content/blog/2015-05-08-react-v0.13.3.md
index 05467d48bd..00c72feded 100644
--- a/content/blog/2015-05-08-react-v0.13.3.md
+++ b/content/blog/2015-05-08-react-v0.13.3.md
@@ -20,23 +20,23 @@ We've also published version `0.13.3` of the `react` and `react-tools` packages
 
 - - -
 
-## Changelog
+## Changelog {#changelog}
 
-### React Core
+### React Core {#react-core}
 
-#### New Features
+#### New Features {#new-features}
 
 * Added `clipPath` element and attribute for SVG
 * Improved warnings for deprecated methods in plain JS classes
 
-#### Bug Fixes
+#### Bug Fixes {#bug-fixes}
 
 * Loosened `dangerouslySetInnerHTML` restrictions so `{__html: undefined}` will no longer throw
 * Fixed extraneous context warning with non-pure `getChildContext`
 * Ensure `replaceState(obj)` retains prototype of `obj`
 
-### React with Add-ons
+### React with Add-ons {#react-with-add-ons}
 
-### Bug Fixes
+### Bug Fixes {#bug-fixes-1}
 
 * Test Utils: Ensure that shallow rendering works when components define `contextTypes`
diff --git a/content/blog/2015-06-12-deprecating-jstransform-and-react-tools.md b/content/blog/2015-06-12-deprecating-jstransform-and-react-tools.md
index b3c371d87b..07b092fec1 100644
--- a/content/blog/2015-06-12-deprecating-jstransform-and-react-tools.md
+++ b/content/blog/2015-06-12-deprecating-jstransform-and-react-tools.md
@@ -9,21 +9,21 @@ As many people have noticed already, React and React Native have both switched t
 
 react-tools has always been a very thin wrapper around JSTransform. It has served as a great tool for the community to get up and running, but at this point we're ready to [let it go](https://www.youtube.com/watch?v=moSFlvxnbgk). We won't ship a new version for v0.14.
 
-## Migrating to Babel
+## Migrating to Babel {#migrating-to-babel}
 
 Many people in the React and broader JavaScript community have already adopted Babel. It has [integrations with a number of tools](http://babeljs.io/docs/setup/). Depending on your tool, you'll want to read up on the instructions.
 
 We've been working with the Babel team as we started making use of it and we're confident that it will be the right tool to use with React.
 
-## Other Deprecations
+## Other Deprecations {#other-deprecations}
 
-### esprima-fb
+### esprima-fb {#esprima-fb}
 
 As a result of no longer maintaining JSTransform, we no longer have a need to maintain our Esprima fork ([esprima-fb](https://github.com/facebook/esprima/)). The upstream Esprima and other esprima-based forks, like Espree, have been doing an excellent job of supporting new language features recently. If you have a need of an esprima-based parser, we encourage you to look into using one of those.
 
 Alternatively, if you need to parse JSX, take a look at [acorn](https://github.com/marijnh/acorn) parser in combination with [acorn-jsx](https://github.com/RReverser/acorn-jsx) plugin which is used inside of Babel and thus always supports the latest syntax.
 
-### JSXTransformer
+### JSXTransformer {#jsxtransformer}
 JSXTransformer is another tool we built specifically for consuming JSX in the browser. It was always intended as a quick way to prototype code before setting up a build process. It would look for `<script>` tags with `type="text/jsx"` and then transform and run. This ran the same code that react-tools ran on the server. Babel ships with [a nearly identical tool](https://babeljs.io/docs/usage/browser/), which has already been integrated into [JS Bin](https://jsbin.com/).
 
 We'll be deprecating JSXTransformer, however the current version will still be available from various CDNs and Bower.
diff --git a/content/blog/2015-07-03-react-v0.14-beta-1.md b/content/blog/2015-07-03-react-v0.14-beta-1.md
index 4f1450556a..e4171f0774 100644
--- a/content/blog/2015-07-03-react-v0.14-beta-1.md
+++ b/content/blog/2015-07-03-react-v0.14-beta-1.md
@@ -9,7 +9,7 @@ With React 0.14, we're continuing to let React mature and to make minor changes
 
 You can install the new beta with `npm install react@0.14.0-beta1` and `npm install react-dom@0.14.0-beta1`. As mentioned in [Deprecating react-tools](/blog/2015/06/12/deprecating-jstransform-and-react-tools.html), we're no longer updating the react-tools package so this release doesn't include a new version of it. Please try the new version out and let us know what you think, and please do file issues on our GitHub repo if you run into any problems.
 
-## Two Packages
+## Two Packages {#two-packages}
 
 As we look at packages like [react-native](https://github.com/facebook/react-native), [react-art](https://github.com/reactjs/react-art), [react-canvas](https://github.com/Flipboard/react-canvas), and [react-three](https://github.com/Izzimach/react-three), it's become clear that the beauty and essence of React has nothing to do with browsers or the DOM.
 
@@ -42,7 +42,7 @@ The addons have moved to separate packages as well: `react-addons-clone-with-pro
 
 For now, please use the same version of `react` and `react-dom` in your apps to avoid versioning problems -- but we plan to remove this requirement later. (This release includes the old methods in the `react` package with a deprecation warning, but they'll be removed completely in 0.15.)
 
-## DOM node refs
+## DOM node refs {#dom-node-refs}
 
 The other big change we're making in this release is exposing refs to DOM components as the DOM node itself. That means: we looked at what you can do with a `ref` to a DOM component and realized that the only useful thing you can do with it is call `this.refs.giraffe.getDOMNode()` to get the underlying DOM node. In this release, `this.refs.giraffe` _is_ the actual DOM node.
 
diff --git a/content/blog/2015-08-03-new-react-devtools-beta.md b/content/blog/2015-08-03-new-react-devtools-beta.md
index 8f7565cc0f..97e60181f4 100644
--- a/content/blog/2015-08-03-new-react-devtools-beta.md
+++ b/content/blog/2015-08-03-new-react-devtools-beta.md
@@ -8,7 +8,7 @@ out!
 
 ![The full devtools gif](../images/blog/devtools-full.gif)
 
-## Why entirely new?
+## Why entirely new? {#why-entirely-new}
 
 Perhaps the biggest reason was to create a defined API for dealing with
 internals, so that other tools could benefit as well and not have to depend on
@@ -20,18 +20,18 @@ is imperative, mutation-driven, and tightly integrated with Chrome-specific
 APIs. The new devtools are much less coupled to Chrome, and easier to reason
 about thanks to React.
 
-## What are the benefits?
+## What are the benefits? {#what-are-the-benefits}
 
 - 100% React
 - Firefox compatible
 - React Native compatible
 - more extensible & hackable
 
-## Are there any new features?
+## Are there any new features? {#are-there-any-new-features}
 
 Yeah!
 
-### The Tree View
+### The Tree View {#the-tree-view}
 
 ![The new tree view of the devtools](../images/blog/devtools-tree-view.png)
 
@@ -47,21 +47,21 @@ Yeah!
   - Show the source for a component in the "Sources" pane
   - Show the element in the "Elements" pane
 
-### Searching
+### Searching {#searching}
 
 Select the search bar (or press "/"), and start searching for a component by
 name.
 
 ![](../images/blog/devtools-search.gif)
 
-### The Side Pane
+### The Side Pane {#the-side-pane}
 
 - Now shows the `context` for a component
 - Right-click to store a prop/state value as a global variable
 
 ![](../images/blog/devtools-side-pane.gif)
 
-## How do I install it?
+## How do I install it? {#how-do-i-install-it}
 
 First, disable the Chrome web store version, or it will break things. Then
 [download the .crx](https://github.com/facebook/react-devtools/releases) and
@@ -72,19 +72,19 @@ there.
 Once we've determined that there aren't any major regressions, we'll update
 the official web store version, and everyone will be automatically upgraded.
 
-### Also Firefox!
+### Also Firefox! {#also-firefox}
 
 We also have an initial version of the devtools for Firefox, which you can
 download from the same [release page](https://github.com/facebook/react-devtools/releases).
 
-## Feedback welcome
+## Feedback welcome {#feedback-welcome}
 
 Let us know what issues you run into
 [on GitHub](https://github.com/facebook/react-devtools/issues), and check out
 [the README](https://github.com/facebook/react-devtools/tree/devtools-next)
 for more info.
 
-## Update
+## Update {#update}
 *August 12, 2015*
 
 A second beta is out, with a number of bugfixes. It is also listed on the
diff --git a/content/blog/2015-08-11-relay-technical-preview.md b/content/blog/2015-08-11-relay-technical-preview.md
index c3ee61c974..c574ccce25 100644
--- a/content/blog/2015-08-11-relay-technical-preview.md
+++ b/content/blog/2015-08-11-relay-technical-preview.md
@@ -3,11 +3,11 @@ title: "Relay Technical Preview"
 author: [josephsavona]
 ---
 
-# Relay
+# Relay {#relay}
 
 Today we're excited to share an update on Relay - the technical preview is now open-source and [available on GitHub](http://github.com/facebook/relay).
 
-## Why Relay
+## Why Relay {#why-relay}
 
 While React simplified the process of developing complex user-interfaces, it left open the question of how to interact with data on the server. It turns out that this was a significant source of friction for our developers; fragile coupling between client and server caused data-related bugs and made iteration harder. Furthermore, developers were forced to constantly re-implement complex async logic instead of focusing on their apps. Relay addresses these concerns by borrowing important lessons from React: it provides *declarative, component-oriented data fetching for React applications*.
 
@@ -17,13 +17,13 @@ Relay is also component-oriented, extending the notion of a React component to i
 
 Relay is in use at Facebook in production apps, and we're using it more and more because *Relay lets developers focus on their products and move fast*. It's working for us and we'd like to share it with the community.
 
-## What's Included
+## What's Included {#whats-included}
 
 We're open-sourcing a technical preview of Relay - the core framework that we use internally, with some modifications for use outside Facebook. As this is the first release, it's good to keep in mind that there may be some incomplete or missing features. We'll continue to develop Relay and are working closely with the GraphQL community to ensure that Relay tracks updates during GraphQL's RFC period. But we couldn't wait any longer to get this in your hands, and we're looking forward to your feedback and contributions.
 
 Relay is available on [GitHub](http://github.com/facebook/relay) and [npm](https://www.npmjs.com/package/react-relay).
 
-## What's Next
+## What's Next {#whats-next}
 
 The team is super excited to be releasing Relay - and just as excited about what's next. Here are some of the things we'll be focusing on:
 
diff --git a/content/blog/2015-09-02-new-react-developer-tools.md b/content/blog/2015-09-02-new-react-developer-tools.md
index cf92d647a9..1651cf2157 100644
--- a/content/blog/2015-09-02-new-react-developer-tools.md
+++ b/content/blog/2015-09-02-new-react-developer-tools.md
@@ -18,7 +18,7 @@ It contains a handful of new features, including:
 * Right-click any props or state value to make it available as `$tmp` from the console
 * Full React Native support
 
-## Installation
+## Installation {#installation}
 
 Download the new devtools from the [Chrome Web Store](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi) and on [Mozilla Add-ons](https://addons.mozilla.org/en-US/firefox/addon/react-devtools/) for Firefox. If you're developing using React, we highly recommend installing these devtools.
 
diff --git a/content/blog/2015-09-10-react-v0.14-rc1.md b/content/blog/2015-09-10-react-v0.14-rc1.md
index 1992e3271b..e69c93ab48 100644
--- a/content/blog/2015-09-10-react-v0.14-rc1.md
+++ b/content/blog/2015-09-10-react-v0.14-rc1.md
@@ -7,7 +7,7 @@ We’re happy to announce our first release candidate for React 0.14! We gave yo
 
 Let us know if you run into any problems by filing issues on our [GitHub repo](https://github.com/facebook/react).
 
-## Installation
+## Installation {#installation}
 
 We recommend using React from `npm` and using a tool like browserify or webpack to build your code into a single package:
 
@@ -30,9 +30,9 @@ If you can’t use `npm` yet, we also provide pre-built browser builds for your
 
 These builds are also available in the `react` package on bower.
 
-## Changelog
+## Changelog {#changelog}
 
-### Major changes
+### Major changes {#major-changes}
 
 - #### Two Packages: React and React DOM
 
@@ -118,7 +118,7 @@ These builds are also available in the `react` package on bower.
     **Constant hoisting for React elements:** The `optimisation.react.constantElements` transform hoists element creation to the top level for subtrees that are fully static, which reduces calls to `React.createElement` and the resulting allocations. More importantly, it tells React that the subtree hasn’t changed so React can completely skip it when reconciling.
 
 
-### Breaking changes
+### Breaking changes {#breaking-changes}
 
 As always, we have a few breaking changes in this release. Whenever we make large changes, we warn for at least one release so you have time to update your code. The Facebook codebase has over 15,000 React components, so on the React team, we always try to minimize the pain of breaking changes.
 
@@ -133,7 +133,7 @@ And these two changes did not warn in 0.13 but should be easy to find and clean
 - `React.initializeTouchEvents` is no longer necessary and has been removed completely. Touch events now work automatically.
 - Add-Ons: Due to the DOM node refs change mentioned above, `TestUtils.findAllInRenderedTree` and related helpers are no longer able to take a DOM component, only a custom component.
 
-### New deprecations, introduced with a warning
+### New deprecations, introduced with a warning {#new-deprecations-introduced-with-a-warning}
 
 - Due to the DOM node refs change mentioned above, `this.getDOMNode()` is now deprecated and `ReactDOM.findDOMNode(this)` can be used instead. Note that in most cases, calling `findDOMNode` is now unnecessary – see the example above in the “DOM node refs” section.
 
@@ -145,7 +145,7 @@ And these two changes did not warn in 0.13 but should be easy to find and clean
 - Add-Ons: `cloneWithProps` is now deprecated. Use [`React.cloneElement`](/docs/top-level-api.html#react.cloneelement) instead (unlike `cloneWithProps`, `cloneElement` does not merge `className` or `style` automatically; you can merge them manually if needed).
 - Add-Ons: To improve reliability, `CSSTransitionGroup` will no longer listen to transition events. Instead, you should specify transition durations manually using props such as `transitionEnterTimeout={500}`.
 
-### Notable enhancements
+### Notable enhancements {#notable-enhancements}
 
 - Added `React.Children.toArray` which takes a nested children object and returns a flat array with keys assigned to each child. This helper makes it easier to manipulate collections of children in your `render` methods, especially if you want to reorder or slice `this.props.children` before passing it down. In addition, `React.Children.map` now returns plain arrays too.
 - React uses `console.error` instead of `console.warn` for warnings so that browsers show a full stack trace in the console. (Our warnings appear when you use patterns that will break in future releases and for code that is likely to behave unexpectedly, so we do consider our warnings to be “must-fix” errors.)
@@ -161,13 +161,13 @@ And these two changes did not warn in 0.13 but should be easy to find and clean
 - Add-Ons: A [`shallowCompare`](https://github.com/facebook/react/pull/3355) add-on has been added as a migration path for `PureRenderMixin` in ES6 classes.
 - Add-Ons: `CSSTransitionGroup` can now use [custom class names](https://github.com/facebook/react/blob/48942b85/docs/docs/10.1-animation.md#custom-classes) instead of appending `-enter-active` or similar to the transition name.
 
-### New helpful warnings
+### New helpful warnings {#new-helpful-warnings}
 
 - React DOM now warns you when nesting HTML elements invalidly, which helps you avoid surprising errors during updates.
 - Passing `document.body` directly as the container to `ReactDOM.render` now gives a warning as doing so can cause problems with browser extensions that modify the DOM.
 - Using multiple instances of React together is not supported, so we now warn when we detect this case to help you avoid running into the resulting problems.
 
-### Notable bug fixes
+### Notable bug fixes {#notable-bug-fixes}
 
 - Click events are handled by React DOM more reliably in mobile browsers, particularly in Mobile Safari.
 - SVG elements are created with the correct namespace in more cases.
diff --git a/content/blog/2015-09-14-community-roundup-27.md b/content/blog/2015-09-14-community-roundup-27.md
index e2b832a97c..01e4b394a4 100644
--- a/content/blog/2015-09-14-community-roundup-27.md
+++ b/content/blog/2015-09-14-community-roundup-27.md
@@ -6,7 +6,7 @@ author: [steveluscher]
 
 In the weeks following the [open-source release](/blog/2015/08/11/relay-technical-preview.html) of the Relay technical preview, the community has been abuzz with activity. We are honored to have been able to enjoy a steady stream of ideas and contributions from such a talented group of individuals. Let's take a look at some of the things we've achieved, together!
 
-## Teaching servers to speak GraphQL
+## Teaching servers to speak GraphQL {#teaching-servers-to-speak-graphql}
 
 Every great Relay app starts by finding a GraphQL server to talk to. The community has spent the past few weeks teaching GraphQL to a few backend systems.
 
@@ -24,7 +24,7 @@ Espen Hovlandsdal ([rexxars](https://github.com/rexxars)) built a [sql-to-graphq
 
 Mick Hansen ([mickhansen](https://github.com/mickhansen)) offers a set of [schema-building helpers](https://github.com/mickhansen/graphql-sequelize) for use with the [Sequelize ORM](http://docs.sequelizejs.com/en/latest/) for MySQL, PostgreSQL, SQLite, and MSSQL.
 
-## GraphQL beyond JavaScript
+## GraphQL beyond JavaScript {#graphql-beyond-javascript}
 
 Robert Mosolgo ([rmosolgo](https://github.com/rmosolgo)) brought the full set of schema-building and query execution tools to Ruby, in the form of [graphql-ruby](https://github.com/rmosolgo/graphql-ruby) and [graphql-relay-ruby](https://github.com/rmosolgo/graphql-relay-ruby). Check out his [Rails-based demo](https://github.com/rmosolgo/graphql-ruby-demo).
 
@@ -38,7 +38,7 @@ Oleg Ilyenko ([OlegIlyenko](https://github.com/OlegIlyenko)) made a beautiful an
 
 Joe McBride ([joemcbride](https://github.com/joemcbride)) has an up-and-running example of GraphQL for .NET, [graphql-dotnet](https://github.com/joemcbride/graphql-dotnet).
 
-## Show me, don't tell me
+## Show me, don't tell me {#show-me-dont-tell-me}
 
 Interact with this [visual tour of Relay's architecture](http://sgwilym.github.io/relay-visual-learners/) by Sam Gwilym ([sgwilym](https://github.com/sgwilym)).
 
@@ -48,19 +48,19 @@ Interact with this [visual tour of Relay's architecture](http://sgwilym.github.i
 
 Sam has already launched a product that leverages Relay's data-fetching, optimistic responses, pagination, and mutations &ndash; all atop a Ruby GraphQL server: [new.comique.co](http://new.comique.co/)
 
-## Skeletons in the closet
+## Skeletons in the closet {#skeletons-in-the-closet}
 
 Joseph Rollins ([fortruce](https://github.com/fortruce)) created a hot-reloading, auto schema-regenerating, [Relay skeleton](https://github.com/fortruce/relay-skeleton) that you can use to get up and running quickly.
 
 Michael Hart ([mhart](https://mhart)) built a [simple-relay-starter](https://github.com/mhart/simple-relay-starter) kit using Browserify.
 
-## Routing around
+## Routing around {#routing-around}
 
 Jimmy Jia ([taion](@taion)) and Gerald Monaco ([devknoll](@devknoll)) have been helping lost URLs find their way to Relay apps through their work on [react-router-relay](relay-tools/react-router-relay). Check out Christoph Nakazawa's ([cpojer](@cpojer)) [blog post](medium.com/@cpojer/relay-and-routing-36b5439bad9) on the topic. Jimmy completed the Relay TodoMVC example with routing, which you can check out at [taion/relay-todomvc](taion/relay-todomvc).
 
 Chen Hung-Tu ([transedward](https://github.com/transedward)) built a chat app atop the above mentioned router, with threaded conversations and pagination. Check it out at [transedward/relay-chat](https://github.com/transedward/relay-chat).
 
-## In your words
+## In your words {#in-your-words}
 
 <div class="skinny-row">
   <div class="skinny-col">
diff --git a/content/blog/2015-10-01-react-render-and-top-level-api.md b/content/blog/2015-10-01-react-render-and-top-level-api.md
index 4d7cdc22cc..10d8e94a5f 100644
--- a/content/blog/2015-10-01-react-render-and-top-level-api.md
+++ b/content/blog/2015-10-01-react-render-and-top-level-api.md
@@ -24,7 +24,7 @@ This is important and often forgotten. Forgetting to call `unmountComponentAtNod
 
 It is not unique to the DOM. If you want to insert a React Native view in the middle of an existing iOS app you will hit similar issues.
 
-## Helpers
+## Helpers {#helpers}
 
 If you have multiple React roots, or a single root that gets deleted over time, we recommend that you always create your own wrapper API. These will all look slightly different depending on what your outer system looks like. For example, at Facebook we have a system that automatically ties into our page transition router to automatically call `unmountComponentAtNode`.
 
@@ -32,7 +32,7 @@ Rather than calling `ReactDOM.render()` directly everywhere, consider writing/us
 
 In your environment you may want to always configure internationalization, routers, user data etc. If you have many different React roots it can be a pain to set up configuration nodes all over the place. By creating your own wrapper you can unify that configuration into one place.
 
-## Object Oriented Updates
+## Object Oriented Updates {#object-oriented-updates}
 
 If you call `ReactDOM.render` a second time to update properties, all your props are completely replaced.
 
diff --git a/content/blog/2015-10-07-react-v0.14.md b/content/blog/2015-10-07-react-v0.14.md
index 3db41a7ad9..fd539f9158 100644
--- a/content/blog/2015-10-07-react-v0.14.md
+++ b/content/blog/2015-10-07-react-v0.14.md
@@ -9,7 +9,7 @@ If you tried the release candidate, thank you – your support is invaluable and
 
 As with all of our releases, we consider this version to be stable enough to use in production and recommend that you upgrade in order to take advantage of our latest improvements.
 
-## Upgrade Guide
+## Upgrade Guide {#upgrade-guide}
 
 Like always, we have a few breaking changes in this release. We know changes can be painful (the Facebook codebase has over 15,000 React components), so we always try to make changes gradually in order to minimize the pain.
 
@@ -19,7 +19,7 @@ For the two major changes which require significant code changes, we've included
 
 See the changelog below for more details.
 
-## Installation
+## Installation {#installation}
 
 We recommend using React from `npm` and using a tool like browserify or webpack to build your code into a single bundle. To install the two packages:
 
@@ -39,9 +39,9 @@ If you can’t use `npm` yet, we provide pre-built browser builds for your conve
   Dev build with warnings: <https://fb.me/react-dom-0.14.0.js>  
   Minified build for production: <https://fb.me/react-dom-0.14.0.min.js>  
 
-## Changelog
+## Changelog {#changelog}
 
-### Major changes
+### Major changes {#major-changes}
 
 - #### Two Packages: React and React DOM
 
@@ -142,7 +142,7 @@ If you can’t use `npm` yet, we provide pre-built browser builds for your conve
     **Constant hoisting for React elements:** The `optimisation.react.constantElements` transform hoists element creation to the top level for subtrees that are fully static, which reduces calls to `React.createElement` and the resulting allocations. More importantly, it tells React that the subtree hasn’t changed so React can completely skip it when reconciling.
 
 
-### Breaking changes
+### Breaking changes {#breaking-changes}
 
 In almost all cases, we change our APIs gradually and warn for at least one release to give you time to clean up your code. These two breaking changes did not have a warning in 0.13 but should be easy to find and clean up:
 
@@ -155,7 +155,7 @@ These three breaking changes had a warning in 0.13, so you shouldn’t have to d
 - Plain objects are no longer supported as React children; arrays should be used instead. You can use the [`createFragment`](/docs/create-fragment.html) helper to migrate, which now returns an array.
 - Add-Ons: `classSet` has been removed. Use [classnames](https://github.com/JedWatson/classnames) instead.
 
-### New deprecations, introduced with a warning
+### New deprecations, introduced with a warning {#new-deprecations-introduced-with-a-warning}
 
 Each of these changes will continue to work as before with a new warning until the release of 0.15 so you can upgrade your code gradually.
 
@@ -169,7 +169,7 @@ Each of these changes will continue to work as before with a new warning until t
 - Add-Ons: `cloneWithProps` is now deprecated. Use [`React.cloneElement`](/docs/top-level-api.html#react.cloneelement) instead (unlike `cloneWithProps`, `cloneElement` does not merge `className` or `style` automatically; you can merge them manually if needed).
 - Add-Ons: To improve reliability, `CSSTransitionGroup` will no longer listen to transition events. Instead, you should specify transition durations manually using props such as `transitionEnterTimeout={500}`.
 
-### Notable enhancements
+### Notable enhancements {#notable-enhancements}
 
 - Added `React.Children.toArray` which takes a nested children object and returns a flat array with keys assigned to each child. This helper makes it easier to manipulate collections of children in your `render` methods, especially if you want to reorder or slice `this.props.children` before passing it down. In addition, `React.Children.map` now returns plain arrays too.
 - React uses `console.error` instead of `console.warn` for warnings so that browsers show a full stack trace in the console. (Our warnings appear when you use patterns that will break in future releases and for code that is likely to behave unexpectedly, so we do consider our warnings to be “must-fix” errors.)
@@ -185,13 +185,13 @@ Each of these changes will continue to work as before with a new warning until t
 - Add-Ons: A [`shallowCompare`](https://github.com/facebook/react/pull/3355) add-on has been added as a migration path for `PureRenderMixin` in ES6 classes.
 - Add-Ons: `CSSTransitionGroup` can now use [custom class names](https://github.com/facebook/react/blob/48942b85/docs/docs/10.1-animation.md#custom-classes) instead of appending `-enter-active` or similar to the transition name.
 
-### New helpful warnings
+### New helpful warnings {#new-helpful-warnings}
 
 - React DOM now warns you when nesting HTML elements invalidly, which helps you avoid surprising errors during updates.
 - Passing `document.body` directly as the container to `ReactDOM.render` now gives a warning as doing so can cause problems with browser extensions that modify the DOM.
 - Using multiple instances of React together is not supported, so we now warn when we detect this case to help you avoid running into the resulting problems.
 
-### Notable bug fixes
+### Notable bug fixes {#notable-bug-fixes}
 
 - Click events are handled by React DOM more reliably in mobile browsers, particularly in Mobile Safari.
 - SVG elements are created with the correct namespace in more cases.
diff --git a/content/blog/2015-10-19-reactiflux-is-moving-to-discord.md b/content/blog/2015-10-19-reactiflux-is-moving-to-discord.md
index 00234b3b73..522ac658f5 100644
--- a/content/blog/2015-10-19-reactiflux-is-moving-to-discord.md
+++ b/content/blog/2015-10-19-reactiflux-is-moving-to-discord.md
@@ -5,45 +5,45 @@ author: [benigeri]
 
 TL;DR: Slack decided that Reactiflux had too many members and disabled new invites. Reactiflux is moving to Discord. Join us: [http://join.reactiflux.com](http://join.reactiflux.com/)
 
-## What happened with Slack?
+## What happened with Slack? {#what-happened-with-slack}
 
 A few weeks ago, Reactiflux reached 7,500 members on Slack. Shortly after, Slack decided we were too big and disabled invites. There was no way for new users to join. Many of us were sad and upset. We loved Slack.  Our community was built around it.
 
 We reached out to Slack several times, but their decision was firm. Our large community caused performance issues. Slack wants to focus on building a great product for teams, not necessarily large open communities. Losing focus and building for too many use cases always leads to product bloat, and eventually a decrease in quality.
 
-## So… why Discord?
+## So… why Discord? {#so-why-discord}
 
 After a [long and thorough debate](https://github.com/reactiflux/volunteers/issues/25), Discord quickly emerged as the most promising service. After just a few days, 400 members had joined the Discord server, and many already loved it.
 
-### Easiest to join
+### Easiest to join {#easiest-to-join}
 
 Discord is the easiest platform to join. New users can immediately join our conversations without having to create an account. All they need to do is provide a name. No permission granting, no password, no email confirmation.
 
 This is critically useful for us, and will make Reactiflux even more open and accessible.
 
-### Great apps
+### Great apps {#great-apps}
 
 Out of all of the services we’ve tried, Discord’s apps are by far the most polished. They are well designed, easy to use, and surprisingly fast. In addition to the web app, they have mobile apps on both iOS and Android as well as desktop apps for OS X and Windows, with Linux support coming soon.
 
 Their desktop apps are built with React and Electron, and their iOS app is built with React Native.
 
-### Moderation tools
+### Moderation tools {#moderation-tools}
 
 So far, we’ve been fortunate not to have to deal with spammers and trolls. As our community continues to grow, that might change. Unsurprisingly, Discord is the only app we’ve seen with legitimate moderation tools. It was built for gaming communities, after all.
 
-### Great multiple Server support
+### Great multiple Server support {#great-multiple-server-support}
 
 Your  Discord account works with every Discord server, which is the equivalent of a Slack team. You don’t need to create a new account every time you join a new team. You can join new servers in one click, and it’s very easy to switch between them. Discord messages also work across servers, so your personal conversations are not scoped to a single server.
 
 Instead of having one huge, crowded Reactiflux server, we can branch off closely related channels into sub-servers. Communities will start overlapping, and it will be easy to interact with non-Reactiflux channels.
 
-### It’s hosted
+### It’s hosted {#its-hosted}
 
 Self-hosted apps require maintenance. We’re all busy, and we can barely find the time to keep our landing page up to date and running smoothly. More than anything, we need a stable platform, and we don’t have the resources to guarantee that right now.
 
 It’s a much safer bet to offload the hosting to Discord, who is already keeping the lights on for all their users.
 
-### We like the team
+### We like the team {#we-like-the-team}
 
 And they seem to like us back. They are excited for us to join them, and they’ve been very responsive to our feedback and suggestions.
 
@@ -51,11 +51,11 @@ They implemented code syntax highlighting just a few days after we told them we
 
 Discord’s team has already built a solid suite of apps, and they have shown us how much they care about their users. We’re excited to see how they will continue to improve their product.
 
-## And what’s the catch?
+## And what’s the catch? {#and-whats-the-catch}
 
 Choosing the best chat service is subjective. There are a million reasons why Discord *might be* a terrible idea. Here are the ones that we’re most worried about:
 
-### Difficult channel management
+### Difficult channel management {#difficult-channel-management}
 
 Channel management seems to be the biggest issue. There is no way to opt out of channels; you can only mute them. And you can only mute channels one by one. There is no way to star channels, and channels can only be sorted on the server level. Each user will see the list of channels in the same order.
 
@@ -63,23 +63,23 @@ As the number of channels grow, it will be challenging to keep things in order.
 
 We can build simple tools to make channel lookup easier, and the Discord team is working on improvements that should make this more manageable.
 
-### No Search
+### No Search {#no-search}
 
 Lack of search is clearly a bummer, but Discord is working on it. Search is coming!
 
-### Firewall
+### Firewall {#firewall}
 
 A couple of users aren’t able to access Discord at work since other corporate filters classify it as a gaming application. This sucks, but it seems to be a  rare case. So far, it seems only to affect 0.6% of our current community (3/500).
 
 We hope that these users can get Discord's domains whitelisted, and we’ll try to find a solution if this is a widespread issue. The Discord team is aware of the issue as well.
 
-## Is Discord going to disappear tomorrow?
+## Is Discord going to disappear tomorrow? {#is-discord-going-to-disappear-tomorrow}
 
 Probably not tomorrow. They have 14 people [full time](https://discordapp.com/company), and they’ve raised money from some of the best investors in Silicon Valley, including [Benchmark](http://www.benchmark.com/) and [Accel](http://www.accel.com/companies/).
 
 By focusing on gaming communities, Discord has differentiated itself from the many other communication apps. Discord is well received and has a rapidly growing user base.  They plan to keep their basic offerings free for unlimited users and hope to make money with premium offerings (themes, add-ons, content, and more).
 
-## Join us!
+## Join us! {#join-us}
 
 More than 500 of us have already migrated to the new Reactiflux.  Join us, we're one click away: [http://join.reactiflux.com](http://join.reactiflux.com/)
 
diff --git a/content/blog/2015-10-28-react-v0.14.1.md b/content/blog/2015-10-28-react-v0.14.1.md
index b63897b0f6..cf7fc27137 100644
--- a/content/blog/2015-10-28-react-v0.14.1.md
+++ b/content/blog/2015-10-28-react-v0.14.1.md
@@ -21,20 +21,20 @@ We've also published version `0.14.1` of the `react`, `react-dom`, and addons pa
 
 - - -
 
-## Changelog
+## Changelog {#changelog}
 
-### React DOM
+### React DOM {#react-dom}
 - Fixed bug where events wouldn't fire in old browsers when using React in development mode
 - Fixed bug preventing use of `dangerouslySetInnerHTML` with Closure Compiler Advanced mode
 - Added support for `srcLang`, `default`, and `kind` attributes for `<track>` elements
 - Added support for `color` attribute
 - Ensured legacy `.props` access on DOM nodes is updated on re-renders
 
-### React TestUtils Add-on
+### React TestUtils Add-on {#react-testutils-add-on}
 - Fixed `scryRenderedDOMComponentsWithClass` so it works with SVG
 
-### React CSSTransitionGroup Add-on
+### React CSSTransitionGroup Add-on {#react-csstransitiongroup-add-on}
 - Fix bug preventing `0` to be used as a timeout value
 
-### React on Bower
+### React on Bower {#react-on-bower}
 - Added `react-dom.js` to `main` to improve compatibility with tooling
diff --git a/content/blog/2015-11-02-react-v0.14.2.md b/content/blog/2015-11-02-react-v0.14.2.md
index 85a7f2a34c..abc2df4af3 100644
--- a/content/blog/2015-11-02-react-v0.14.2.md
+++ b/content/blog/2015-11-02-react-v0.14.2.md
@@ -21,9 +21,9 @@ We've also published version `0.14.2` of the `react`, `react-dom`, and addons pa
 
 - - -
 
-## Changelog
+## Changelog {#changelog}
 
-### React DOM
+### React DOM {#react-dom}
 - Fixed bug with development build preventing events from firing in some versions of Internet Explorer & Edge
 - Fixed bug with development build when using es5-sham in older versions of Internet Explorer
 - Added support for `integrity` attribute
diff --git a/content/blog/2015-11-18-react-v0.14.3.md b/content/blog/2015-11-18-react-v0.14.3.md
index 03f3c39b5e..19efc7576d 100644
--- a/content/blog/2015-11-18-react-v0.14.3.md
+++ b/content/blog/2015-11-18-react-v0.14.3.md
@@ -24,17 +24,17 @@ We've also published version `0.14.3` of the `react`, `react-dom`, and addons pa
 
 - - -
 
-## Changelog
+## Changelog {#changelog}
 
-### React DOM
+### React DOM {#react-dom}
 - Added support for `nonce` attribute for `<script>` and `<style>` elements
 - Added support for `reversed` attribute for `<ol>` elements
 
-### React TestUtils Add-on
+### React TestUtils Add-on {#react-testutils-add-on}
 - Fixed bug with shallow rendering and function refs
 
-### React CSSTransitionGroup Add-on
+### React CSSTransitionGroup Add-on {#react-csstransitiongroup-add-on}
 - Fixed bug resulting in timeouts firing incorrectly when mounting and unmounting rapidly
 
-### React on Bower
+### React on Bower {#react-on-bower}
 - Added `react-dom-server.js` to expose `renderToString` and `renderToStaticMarkup` for usage in the browser
diff --git a/content/blog/2015-12-04-react-js-conf-2016-diversity-scholarship.md b/content/blog/2015-12-04-react-js-conf-2016-diversity-scholarship.md
index 5ff3d0020a..7f0da6aa0b 100644
--- a/content/blog/2015-12-04-react-js-conf-2016-diversity-scholarship.md
+++ b/content/blog/2015-12-04-react-js-conf-2016-diversity-scholarship.md
@@ -26,18 +26,18 @@ At Facebook, we believe that anyone anywhere can make a positive impact by devel
 
 To apply for the scholarship, please visit the application page: **<http://goo.gl/forms/PEmKj8oUp4>**
 
-## Award Includes
+## Award Includes {#award-includes}
 
 * Paid registration fee for the React.js Conf February 22 & 23 in downtown San Francisco, CA
 * Paid lodging expenses for February 21, 22, 23
 
-## Important Dates
+## Important Dates {#important-dates}
 
 * Sunday December 13th 2015 - 11:59 PST: Applications for the React.js Conf Scholarship must be submitted in full
 * Wednesday, December 16th, 2015: Award recipients will be notified by email of their acceptance
 * Monday & Tuesday, February 22 & 23, 2016: React.js Conf
 
-## Eligibility
+## Eligibility {#eligibility}
 
 * Must currently be studying or working in Computer Science or a related field
 * International applicants are welcome, but you will be responsible for securing your own visa to attend the conference
diff --git a/content/blog/2015-12-18-react-components-elements-and-instances.md b/content/blog/2015-12-18-react-components-elements-and-instances.md
index 45e7ed217b..dd71836d09 100644
--- a/content/blog/2015-12-18-react-components-elements-and-instances.md
+++ b/content/blog/2015-12-18-react-components-elements-and-instances.md
@@ -5,7 +5,7 @@ author: [gaearon]
 
 The difference between **components, their instances, and elements** confuses many React beginners. Why are there three different terms to refer to something that is painted on screen?
 
-## Managing the Instances
+## Managing the Instances {#managing-the-instances}
 
 If you’re new to React, you probably only worked with component classes and instances before. For example, you may declare a `Button` *component* by creating a class. When the app is running, you may have several *instances* of this component on screen, each with its own properties and local state. This is the traditional object-oriented UI programming. Why introduce *elements*?
 
@@ -53,13 +53,13 @@ Each component instance has to keep references to its DOM node and to the instan
 
 So how is React different?
 
-## Elements Describe the Tree
+## Elements Describe the Tree {#elements-describe-the-tree}
 
 In React, this is where the *elements* come to rescue. **An element is a plain object *describing* a component instance or DOM node and its desired properties.** It contains only information about the component type (for example, a `Button`), its properties (for example, its `color`), and any child elements inside it.
 
 An element is not an actual instance. Rather, it is a way to tell React what you *want* to see on the screen. You can’t call any methods on the element. It’s just an immutable description object with two fields: `type: (string | ReactClass)` and `props: Object`[^1].
 
-### DOM Elements
+### DOM Elements {#dom-elements}
 
 When an element’s `type` is a string, it represents a DOM node with that tag name, and `props` correspond to its attributes. This is what React will render. For example:
 
@@ -94,7 +94,7 @@ What’s important is that both child and parent elements are *just descriptions
 
 React elements are easy to traverse, don’t need to be parsed, and of course they are much lighter than the actual DOM elements—they’re just objects!
 
-### Component Elements
+### Component Elements {#component-elements}
 
 However, the `type` of an element can also be a function or a class corresponding to a React component:
 
@@ -168,7 +168,7 @@ This mix and matching helps keep components decoupled from each other, as they c
 * `DangerButton` is a `Button` with specific properties.
 * `DeleteAccount` contains a `Button` and a `DangerButton` inside a `<div>`.
 
-### Components Encapsulate Element Trees
+### Components Encapsulate Element Trees {#components-encapsulate-element-trees}
 
 When React sees an element with a function or class `type`, it knows to ask *that* component what element it renders to, given the corresponding `props`.
 
@@ -236,7 +236,7 @@ That’s it! For a React component, props are the input, and an element tree is
 
 We let React create, update, and destroy instances. We *describe* them with elements we return from the components, and React takes care of managing the instances.
 
-### Components Can Be Classes or Functions
+### Components Can Be Classes or Functions {#components-can-be-classes-or-functions}
 
 In the code above, `Form`, `Message`, and `Button` are React components. They can either be written as functions, like above, or as classes descending from `React.Component`. These three ways to declare a component are mostly equivalent:
 
@@ -300,7 +300,7 @@ A function component is less powerful but is simpler, and acts like a class comp
 
 **However, whether functions or classes, fundamentally they are all components to React. They take the props as their input, and return the elements as their output.**
 
-### Top-Down Reconciliation
+### Top-Down Reconciliation {#top-down-reconciliation}
 
 When you call:
 
@@ -360,7 +360,7 @@ Only components declared as classes have instances, and you never create them di
 
 React takes care of creating an instance for every class component, so you can write components in an object-oriented way with methods and local state, but other than that, instances are not very important in the React’s programming model and are managed by React itself.
 
-## Summary
+## Summary {#summary}
 
 An *element* is a plain object describing what you want to appear on the screen in terms of the DOM nodes or other components. Elements can contain other elements in their props. Creating a React element is cheap. Once an element is created, it is never mutated.
 
@@ -374,7 +374,7 @@ Function components don’t have instances at all. Class components have instanc
 
 Finally, to create elements, use [`React.createElement()`](/docs/top-level-api.html#react.createelement), [JSX](/docs/jsx-in-depth.html), or an [element factory helper](/docs/top-level-api.html#react.createfactory). Don’t write elements as plain objects in the real code—just know that they are plain objects under the hood.
 
-## Further Reading
+## Further Reading {#further-reading}
 
 * [Introducing React Elements](/blog/2014/10/14/introducing-react-elements.html)
 * [Streamlining React Elements](/blog/2015/02/24/streamlining-react-elements.html)
diff --git a/content/blog/2015-12-29-react-v0.14.4.md b/content/blog/2015-12-29-react-v0.14.4.md
index d2acefd9a1..38161766af 100644
--- a/content/blog/2015-12-29-react-v0.14.4.md
+++ b/content/blog/2015-12-29-react-v0.14.4.md
@@ -24,14 +24,14 @@ We've also published version `0.14.4` of the `react`, `react-dom`, and addons pa
 
 - - -
 
-## Changelog
+## Changelog {#changelog}
 
-### React
+### React {#react}
 - Minor internal changes for better compatibility with React Native
 
-### React DOM
+### React DOM {#react-dom}
 - The `autoCapitalize` and `autoCorrect` props are now set as attributes in the DOM instead of properties to improve cross-browser compatibility
 - Fixed bug with controlled `<select>` elements not handling updates properly
 
-### React Perf Add-on
+### React Perf Add-on {#react-perf-add-on}
 - Some DOM operation names have been updated for clarity in the output of `.printDOM()`
diff --git a/content/blog/2016-02-19-new-versioning-scheme.md b/content/blog/2016-02-19-new-versioning-scheme.md
index dec47e9ee4..375854eb0a 100644
--- a/content/blog/2016-02-19-new-versioning-scheme.md
+++ b/content/blog/2016-02-19-new-versioning-scheme.md
@@ -9,7 +9,7 @@ This change shouldn't materially affect most of you. Moving to major semver vers
 
 The core of the React API has been stable for years. Our business as well as many of yours all depend heavily on the use of React as a core piece of our infrastructure. We're committed to the stability as well as the progress of React going forward.
 
-## Bring Everyone Along
+## Bring Everyone Along {#bring-everyone-along}
 
 React isn't just a library but an ecosystem. We know that your applications and ours are not just isolated islands of code. It is a network of your own application code, your own open source components and third party libraries that all depend on React.
 
@@ -19,7 +19,7 @@ Therefore it is important that we don't just upgrade our own codebases but that
 
 <img src="../images/blog/versioning-poll.png" width="596">
 
-## Introducing Minor Releases
+## Introducing Minor Releases {#introducing-minor-releases}
 
 Ideally everyone could just depend on the latest version of React all the time.
 
@@ -31,11 +31,11 @@ We know that in practice that is not possible. In the future, we expect more new
 
 That means that if one component needs a new API, there is no need for any of the other components to do any further work. They remain compatible.
 
-## What Happened to 1.0.0?
+## What Happened to 1.0.0? {#what-happened-to-100}
 
 Part of React's growth and popularity is that it is stable and performant in production. People have long asked what React v1.0 will look. Technically some breaking changes are important to avoid stagnating, but we still achieve stability by making it easy to upgrade. If major version numbers indicate API stability and engender trust that it can be used in production, then we got there a long time ago. There are too many preconceived notions of what v1.0 is. We're still following semver. We're just communicating stability by moving the 0 from the beginning to the end.
 
-## Breaking Changes
+## Breaking Changes {#breaking-changes}
 
 Minor revision releases will include deprecation warnings and tips for how to upgrade an API or pattern that will be removed or changed in the future.
 
@@ -43,7 +43,7 @@ We will continue to release [codemods](https://www.youtube.com/watch?v=d0pOgY8__
 
 Once we've reached the end of life for a particular major version, we'll release a new major version where all deprecated APIs have been removed.
 
-## Avoiding The Major Cliff
+## Avoiding The Major Cliff {#avoiding-the-major-cliff}
 
 If you try to upgrade your component to 16.0.0 you might find that your application no longer works if you still have other dependencies. E.g. if Ryan's and Jed's components are only compatible with 15.x.x.
 
diff --git a/content/blog/2016-03-07-react-v15-rc1.md b/content/blog/2016-03-07-react-v15-rc1.md
index 5fa53e2aa7..49066ef0c6 100644
--- a/content/blog/2016-03-07-react-v15-rc1.md
+++ b/content/blog/2016-03-07-react-v15-rc1.md
@@ -9,7 +9,7 @@ But now we're ready, so without further ado, we're shipping a release candidate
 
 Please try it out before we publish the final release. Let us know if you run into any problems by filing issues on our [GitHub repo](https://github.com/facebook/react).
 
-## Upgrade Guide
+## Upgrade Guide {#upgrade-guide}
 
 Like always, we have a few breaking changes in this release. We know changes can be painful (the Facebook codebase has over 15,000 React components), so we always try to make changes gradually in order to minimize the pain.
 
@@ -17,7 +17,7 @@ If your code is free of warnings when running under React 0.14, upgrading should
 
 See the changelog below for more details.
 
-## Installation
+## Installation {#installation}
 
 We recommend using React from `npm` and using a tool like browserify or webpack to build your code into a single bundle. To install the two packages:
 
@@ -37,9 +37,9 @@ If you can’t use `npm` yet, we provide pre-built browser builds for your conve
   Dev build with warnings: <https://fb.me/react-dom-15.0.0-rc.1.js>  
   Minified build for production: <https://fb.me/react-dom-15.0.0-rc.1.min.js>  
 
-## Changelog
+## Changelog {#changelog}
 
-### Major changes
+### Major changes {#major-changes}
 
 - #### `document.createElement` is in and `data-reactid` is out
 
@@ -59,7 +59,7 @@ If you can’t use `npm` yet, we provide pre-built browser builds for your conve
 
 
 
-### Breaking changes
+### Breaking changes {#breaking-changes}
 
 It's worth calling out the DOM structure changes above again, in particular the change from `<span>`s. In the course of updating the Facebook codebase, we found a very small amount of code that was depending on the markup that React generated. Some of these cases were integration tests like WebDriver which were doing very specific XPath queries to target nodes. Others were simply tests using `ReactDOM.renderToStaticMarkup` and comparing markup. Again, there were a very small number of changes that had to be made, but we don't want anybody to be blindsided. We encourage everybody to run their test suites when upgrading and consider alternative approaches when possible. One approach that will work for some cases is to explicitly use `<span>`s in your `render` method.
 
@@ -69,14 +69,14 @@ These deprecations were introduced in v0.14 with a warning and the APIs are now
 - Deprecated APIs removed from `React.addons`, specifically `batchedUpdates` and `cloneWithProps`.
 - Deprecated APIs removed from component instances, specifically `setProps`, `replaceProps`, and `getDOMNode`.
 
-### New deprecations, introduced with a warning
+### New deprecations, introduced with a warning {#new-deprecations-introduced-with-a-warning}
 
 Each of these changes will continue to work as before with a new warning until the release of React 16 so you can upgrade your code gradually.
 
 - `LinkedStateMixin` and `valueLink` are now deprecated due to very low popularity. If you need this, you can use a wrapper component that implements the same behavior: [react-linked-input](https://www.npmjs.com/package/react-linked-input).
 
 
-### New helpful warnings
+### New helpful warnings {#new-helpful-warnings}
 
 - If you use a minified copy of the _development_ build, React DOM kindly encourages you to use the faster production build instead.
 - React DOM: When specifying a unit-less CSS value as a string, a future version will not add `px` automatically. This version now warns in this case (ex: writing `style={{width: '300'}}`. (Unitless *number* values like `width: 300` are unchanged.)
@@ -84,7 +84,7 @@ Each of these changes will continue to work as before with a new warning until t
 - Elements will now warn when attempting to read `ref` and `key` from the props.
 - React DOM now attempts to warn for mistyped event handlers on DOM elements (ex: `onclick` which should be `onClick`)
 
-### Notable bug fixes
+### Notable bug fixes {#notable-bug-fixes}
 
 - Fixed multiple small memory leaks
 - Input events are handled more reliably in IE 10 and IE 11; spurious events no longer fire when using a placeholder.
diff --git a/content/blog/2016-03-16-react-v15-rc2.md b/content/blog/2016-03-16-react-v15-rc2.md
index 73030e9a45..c6711dca25 100644
--- a/content/blog/2016-03-16-react-v15-rc2.md
+++ b/content/blog/2016-03-16-react-v15-rc2.md
@@ -11,7 +11,7 @@ The other change is to our SVG code. In RC1 we had made the decision to pass thr
 
 Thanks again to everybody who has tried the RC1 and reported issues. It has been extremely important and we wouldn't be able to do this without your help!
 
-## Installation
+## Installation {#installation}
 
 We recommend using React from `npm` and using a tool like browserify or webpack to build your code into a single bundle. To install the two packages:
 
diff --git a/content/blog/2016-03-29-react-v0.14.8.md b/content/blog/2016-03-29-react-v0.14.8.md
index 2a5bc763fa..1e1cf6310e 100644
--- a/content/blog/2016-03-29-react-v0.14.8.md
+++ b/content/blog/2016-03-29-react-v0.14.8.md
@@ -26,7 +26,7 @@ We've also published version `0.14.8` of the `react`, `react-dom`, and addons pa
 
 - - -
 
-## Changelog
+## Changelog {#changelog}
 
-### React
+### React {#react}
 - Fixed memory leak when rendering on the server
diff --git a/content/blog/2016-04-07-react-v15.md b/content/blog/2016-04-07-react-v15.md
index 1731d11a00..c847aa9d5a 100644
--- a/content/blog/2016-04-07-react-v15.md
+++ b/content/blog/2016-04-07-react-v15.md
@@ -19,7 +19,7 @@ While this isn’t directly related to the release, we understand that in order
 
 We are also experimenting with a new changelog format in this post. Every change now links to the corresponding pull request and mentions the author. Let us know whether you find this useful!
 
-## Upgrade Guide
+## Upgrade Guide {#upgrade-guide}
 
 As usual with major releases, React 15 will remove support for some of the patterns deprecated nine months ago in React 0.14. We know changes can be painful (the Facebook codebase has over 20,000 React components, and that’s not even counting React Native), so we always try to make changes gradually in order to minimize the pain.
 
@@ -27,7 +27,7 @@ If your code is free of warnings when running under React 0.14, upgrading should
 
 See the changelog below for more details.
 
-## Installation
+## Installation {#installation}
 
 We recommend using React from `npm` and using a tool like browserify or webpack to build your code into a single bundle. To install the two packages:
 
@@ -47,9 +47,9 @@ If you can’t use `npm` yet, we provide pre-built browser builds for your conve
   Dev build with warnings: <https://fb.me/react-dom-15.0.0.js>  
   Minified build for production: <https://fb.me/react-dom-15.0.0.min.js>  
 
-## Changelog
+## Changelog {#changelog}
 
-### Major changes
+### Major changes {#major-changes}
 
 - #### `document.createElement` is in and `data-reactid` is out
 
@@ -83,7 +83,7 @@ If you can’t use `npm` yet, we provide pre-built browser builds for your conve
 
     <small>[@zpao](https://github.com/zpao) in [#6243](https://github.com/facebook/react/pull/6243)</small>
 
-### Breaking changes
+### Breaking changes {#breaking-changes}
 
 - #### No more extra `<span>`s
 
@@ -125,7 +125,7 @@ If you can’t use `npm` yet, we provide pre-built browser builds for your conve
     - React-specific properties on DOM `refs` (e.g. `this.refs.div.props`) were deprecated, and are removed now.  
     <small>[@jimfb](https://github.com/jimfb) in [#5495](https://github.com/facebook/react/pull/5495)</small>
 
-### New deprecations, introduced with a warning
+### New deprecations, introduced with a warning {#new-deprecations-introduced-with-a-warning}
 
 Each of these changes will continue to work as before with a new warning until the release of React 16 so you can upgrade your code gradually.
 
@@ -138,7 +138,7 @@ Each of these changes will continue to work as before with a new warning until t
 - `ReactPerf.printDOM()` was renamed to `ReactPerf.printOperations()`, and `ReactPerf.getMeasurementsSummaryMap()` was renamed to `ReactPerf.getWasted()`.  
 <small>[@gaearon](https://github.com/gaearon) in [#6287](https://github.com/facebook/react/pull/6287)</small>
 
-### New helpful warnings
+### New helpful warnings {#new-helpful-warnings}
 
 - If you use a minified copy of the _development_ build, React DOM kindly encourages you to use the faster production build instead.  
 <small>[@sophiebits](https://github.com/sophiebits) in [#5083](https://github.com/facebook/react/pull/5083)</small>
@@ -182,7 +182,7 @@ Each of these changes will continue to work as before with a new warning until t
 - PropTypes: `arrayOf()` and `objectOf()` provide better error messages for invalid arguments.  
 <small>[@chicoxyzzy](https://github.com/chicoxyzzy) in [#5390](https://github.com/facebook/react/pull/5390)</small>
 
-### Notable bug fixes
+### Notable bug fixes {#notable-bug-fixes}
 
 - Fixed multiple small memory leaks.  
 <small>[@sophiebits](https://github.com/sophiebits) in [#4983](https://github.com/facebook/react/pull/4983) and [@victor-homyakov](https://github.com/victor-homyakov) in [#6309](https://github.com/facebook/react/pull/6309)</small>
@@ -235,7 +235,7 @@ Each of these changes will continue to work as before with a new warning until t
 - Add-Ons: ReactPerf no longer instruments adding or removing an event listener because they don’t really touch the DOM due to event delegation.  
 <small>[@antoaravinth](https://github.com/antoaravinth) in [#5209](https://github.com/facebook/react/pull/5209)</small>
 
-### Other improvements
+### Other improvements {#improvements}
 
 - React now uses `loose-envify` instead of `envify` so it installs fewer transitive dependencies.  
 <small>[@qerub](https://github.com/qerub) in [#6303](https://github.com/facebook/react/pull/6303)</small>
diff --git a/content/blog/2016-04-08-react-v15.0.1.md b/content/blog/2016-04-08-react-v15.0.1.md
index 2f1b14bd07..6db9cc4225 100644
--- a/content/blog/2016-04-08-react-v15.0.1.md
+++ b/content/blog/2016-04-08-react-v15.0.1.md
@@ -23,12 +23,12 @@ As usual, you can get install the `react` package via npm or download a browser
   Dev build with warnings: <https://fb.me/react-dom-15.0.1.js>  
   Minified build for production: <https://fb.me/react-dom-15.0.1.min.js>  
 
-## Changelog
+## Changelog {#changelog}
 
-### React
+### React {#react}
 - Restore `React.__spread` API to unbreak code compiled with some tools making use of this undocumented API. It is now officially deprecated.  
   <small>[@zpao](https://github.com/zpao) in [#6444](https://github.com/facebook/react/pull/6444)</small>
 
-### ReactDOM
+### ReactDOM {#reactdom}
 - Fixed issue resulting in loss of cursor position in controlled inputs.  
   <small>[@sophiebits](https://github.com/sophiebits) in [#6449](https://github.com/facebook/react/pull/6449)</small>
diff --git a/content/blog/2016-07-13-mixins-considered-harmful.md b/content/blog/2016-07-13-mixins-considered-harmful.md
index 957bd71ad1..2ea907ea8a 100644
--- a/content/blog/2016-07-13-mixins-considered-harmful.md
+++ b/content/blog/2016-07-13-mixins-considered-harmful.md
@@ -13,7 +13,7 @@ Three years passed since React was released. The landscape has changed. Multiple
 
 In this post, we will consider the problems commonly caused by mixins. Then we will suggest several alternative patterns for the same use cases. We have found those patterns to scale better with the complexity of the codebase than mixins.
 
-## Why Mixins are Broken
+## Why Mixins are Broken {#why-mixins-are-broken}
 
 At Facebook, React usage has grown from a few components to thousands of them. This gives us a window into how people use React. Thanks to declarative rendering and top-down data flow, many teams were able to fix a bunch of bugs while shipping new features as they adopted React.
 
@@ -21,7 +21,7 @@ However it’s inevitable that some of our code using React gradually became inc
 
 This doesn’t mean that mixins themselves are bad. People successfully employ them in different languages and paradigms, including some functional languages. At Facebook, we extensively use traits in Hack which are fairly similar to mixins. Nevertheless, we think that mixins are unnecessary and problematic in React codebases. Here’s why.
 
-### Mixins introduce implicit dependencies
+### Mixins introduce implicit dependencies {#mixins-introduce-implicit-dependencies}
 
 Sometimes a component relies on a certain method defined in the mixin, such as `getClassName()`. Sometimes it’s the other way around, and mixin calls a method like `renderHeader()` on the component. JavaScript is a dynamic language so it’s hard to enforce or document these dependencies.
 
@@ -31,7 +31,7 @@ These implicit dependencies make it hard for new team members to contribute to a
 
 Often, mixins come to depend on other mixins, and removing one of them breaks the other. In these situations it is very tricky to tell how the data flows in and out of mixins, and what their dependency graph looks like. Unlike components, mixins don’t form a hierarchy: they are flattened and operate in the same namespace.
 
-### Mixins cause name clashes
+### Mixins cause name clashes {#mixins-cause-name-clashes}
 
 There is no guarantee that two particular mixins can be used together. For example, if `FluxListenerMixin` defines `handleChange()` and `WindowSizeMixin` defines `handleChange()`, you can’t use them together. You also can’t define a method with this name on your own component.
 
@@ -41,7 +41,7 @@ If you have a name conflict with a mixin from a third party package, you can’t
 
 The situation is no better for mixin authors. Even adding a new method to a mixin is always a potentially breaking change because a method with the same name might already exist on some of the components using it, either directly or through another mixin. Once written, mixins are hard to remove or change. Bad ideas don’t get refactored away because refactoring is too risky.
 
-### Mixins cause snowballing complexity
+### Mixins cause snowballing complexity {#mixins-cause-snowballing-complexity}
 
 Even when mixins start out simple, they tend to become complex over time. The example below is based on a real scenario I’ve seen play out in a codebase.
 
@@ -55,7 +55,7 @@ Every new requirement makes the mixins harder to understand. Components using th
 
 These are the same problems we faced building apps before React. We found that they are solved by declarative rendering, top-down data flow, and encapsulated components. At Facebook, we have been migrating our code to use alternative patterns to mixins, and we are generally happy with the results. You can read about those patterns below.
 
-## Migrating from Mixins
+## Migrating from Mixins {#migrating-from-mixins}
 
 Let’s make it clear that mixins are not technically deprecated. If you use `React.createClass()`, you may keep using them. We only say that they didn’t work well for us, and so we won’t recommend using them in the future.
 
@@ -63,7 +63,7 @@ Every section below corresponds to a mixin usage pattern that we found in the Fa
 
 We hope that you find this list helpful. Please let us know if we missed important use cases so we can either amend the list or be proven wrong!
 
-### Performance Optimizations
+### Performance Optimizations {#performance-optimizations}
 
 One of the most commonly used mixins is [`PureRenderMixin`](/docs/pure-render-mixin.html). You might be using it in some components to [prevent unnecessary re-renders](/docs/advanced-performance.html#shouldcomponentupdate-in-action) when the props and state are shallowly equal to the previous props and state:
 
@@ -78,7 +78,7 @@ var Button = React.createClass({
 });
 ```
 
-#### Solution
+#### Solution {#solution}
 
 To express the same without mixins, you can use the [`shallowCompare`](/docs/shallow-compare.html) function directly instead:
 
@@ -99,7 +99,7 @@ If you use a custom mixin implementing a `shouldComponentUpdate` function with d
 
 We understand that more typing can be annoying. For the most common case, we plan to [introduce a new base class](https://github.com/facebook/react/pull/7195) called `React.PureComponent` in the next minor release. It uses the same shallow comparison as `PureRenderMixin` does today.
 
-### Subscriptions and Side Effects
+### Subscriptions and Side Effects {#subscriptions-and-side-effects}
 
 The second most common type of mixins that we encountered are mixins that subscribe a React component to a third-party data source. Whether this data source is a Flux Store, an Rx Observable, or something else, the pattern is very similar: the subscription is created in `componentDidMount`, destroyed in `componentWillUnmount`, and the change handler calls `this.setState()`.
 
@@ -145,13 +145,13 @@ var CommentList = React.createClass({
 module.exports = CommentList;
 ```
 
-#### Solution
+#### Solution {#solution-1}
 
 If there is just one component subscribed to this data source, it is fine to embed the subscription logic right into the component. Avoid premature abstractions.
 
 If several components used this mixin to subscribe to a data source, a nice way to avoid repetition is to use a pattern called [“higher-order components”](https://medium.com/@dan_abramov/mixins-are-dead-long-live-higher-order-components-94a0d2f9e750). It can sound intimidating so we will take a closer look at how this pattern naturally emerges from the component model.
 
-#### Higher-Order Components Explained
+#### Higher-Order Components Explained {#higher-order-components-explained}
 
 Let’s forget about React for a second. Consider these two functions that add and multiply numbers, logging the results as they do that:
 
@@ -339,7 +339,7 @@ var CommentListWithSubscription = withSubscription(CommentList);
 module.exports = CommentListWithSubscription;
 ```
 
-#### Solution, Revisited
+#### Solution, Revisited {#solution-revisited}
 
 Now that we understand higher-order components better, let’s take another look at the complete solution that doesn’t involve mixins. There are a few minor changes that are annotated with inline comments:
 
@@ -395,7 +395,7 @@ Higher-order components are a powerful pattern. You can pass additional argument
 
 Like any solution, higher-order components have their own pitfalls. For example, if you heavily use [refs](/docs/more-about-refs.html), you might notice that wrapping something into a higher-order component changes the ref to point to the wrapping component. In practice we discourage using refs for component communication so we don’t think it’s a big issue. In the future, we might consider adding [ref forwarding](https://github.com/facebook/react/issues/4213) to React to solve this annoyance.
 
-### Rendering Logic
+### Rendering Logic {#rendering-logic}
 
 The next most common use case for mixins that we discovered in our codebase is sharing rendering logic between components.
 
@@ -436,7 +436,7 @@ var UserRow = React.createClass({
 
 Multiple components may be sharing `RowMixin` to render the header, and each of them would need to define `getHeaderText()`.
 
-#### Solution
+#### Solution {#solution-2}
 
 If you see rendering logic inside a mixin, it’s time to extract a component!
 
@@ -469,7 +469,7 @@ Props keep component dependencies explicit, easy to replace, and enforceable wit
 >
 > Defining components as functions is not required. There is also nothing wrong with using lifecycle methods and state—they are first-class React features. We use function components in this example because they are easier to read and we didn’t need those extra features, but classes would work just as fine.
 
-### Context
+### Context {#context}
 
 Another group of mixins we discovered were helpers for providing and consuming [React context](/docs/context.html). Context is an experimental unstable feature, has [certain issues](https://github.com/facebook/react/issues/2517), and will likely change its API in the future. We don’t recommend using it unless you’re confident there is no other way of solving your problem.
 
@@ -510,7 +510,7 @@ var Link = React.createClass({
 module.exports = Link;
 ```
 
-#### Solution
+#### Solution {#solution-3}
 
 We agree that hiding context usage from consuming components is a good idea until the context API stabilizes. However, we recommend using higher-order components instead of mixins for this.
 
@@ -555,7 +555,7 @@ module.exports = withRouter(Link);
 
 If you’re using a third party library that only provides a mixin, we encourage you to file an issue with them linking to this post so that they can provide a higher-order component instead. In the meantime, you can create a higher-order component around it yourself in exactly the same way.
 
-### Utility Methods
+### Utility Methods {#utility-methods}
 
 Sometimes, mixins are used solely to share utility functions between components:
 
@@ -584,7 +584,7 @@ var Button = React.createClass({
 });
 ```
 
-#### Solution
+#### Solution {#solution-4}
 
 Put utility functions into regular JavaScript modules and import them. This also makes it easier to test them or use them outside of your components:
 
@@ -603,7 +603,7 @@ var Button = React.createClass({
 });
 ```
 
-### Other Use Cases
+### Other Use Cases {#other-use-cases}
 
 Sometimes people use mixins to selectively add logging to lifecycle methods in some components. In the future, we intend to provide an [official DevTools API](https://github.com/facebook/react/issues/5306) that would let you implement something similar without touching the components. However it’s still very much a work in progress. If you heavily depend on logging mixins for debugging, you might want to keep using those mixins for a little longer.
 
diff --git a/content/blog/2016-07-22-create-apps-with-no-configuration.md b/content/blog/2016-07-22-create-apps-with-no-configuration.md
index 3c09e321f4..f7ae427308 100644
--- a/content/blog/2016-07-22-create-apps-with-no-configuration.md
+++ b/content/blog/2016-07-22-create-apps-with-no-configuration.md
@@ -5,9 +5,9 @@ author: [gaearon]
 
 **[Create React App](https://github.com/facebookincubator/create-react-app)** is a new officially supported way to create single-page React applications. It offers a modern build setup with no configuration.
 
-## Getting Started
+## Getting Started {#getting-started}
 
-### Installation
+### Installation {#installation}
 
 First, install the global package:
 
@@ -17,7 +17,7 @@ npm install -g create-react-app
 
 Node.js 4.x or higher is required.
 
-### Creating an App
+### Creating an App {#creating-an-app}
 
 Now you can use it to create a new app:
 
@@ -29,7 +29,7 @@ This will take a while as npm installs the transitive dependencies, but once it
 
 ![created folder](../images/blog/create-apps-with-no-configuration/created-folder.png)
 
-### Starting the Server
+### Starting the Server {#starting-the-server}
 
 Run `npm start` to launch the development server. The browser will open automatically with the created app’s URL.
 
@@ -46,7 +46,7 @@ ESLint is also integrated so lint warnings are displayed right in the console:
 
 We only picked a small subset of lint rules that often lead to bugs.
 
-### Building for Production
+### Building for Production {#building-for-production}
 
 To build an optimized bundle, run `npm run build`:
 
@@ -54,7 +54,7 @@ To build an optimized bundle, run `npm run build`:
 
 It is minified, correctly envified, and the assets include content hashes for caching.
 
-### One Dependency
+### One Dependency {#one-dependency}
 
 Your `package.json` contains only a single build dependency and a few scripts:
 
@@ -78,7 +78,7 @@ Your `package.json` contains only a single build dependency and a few scripts:
 
 We take care of updating Babel, ESLint, and webpack to stable compatible versions so you can update a single dependency to get them all.
 
-### Zero Configuration
+### Zero Configuration {#zero-configuration}
 
 It is worth repeating: there are no configuration files or complicated folder structures. The tool only generates the files you need to build your app.
 
@@ -99,7 +99,7 @@ hello-world/
 
 All the build settings are preconfigured and can’t be changed. Some features, such as testing, are currently missing. This is an intentional limitation, and we recognize it might not work for everybody. And this brings us to the last point.
 
-### No Lock-In
+### No Lock-In {#no-lock-in}
 
 We first saw this feature in [Enclave](https://github.com/eanplatter/enclave), and we loved it. We talked to [Ean](https://twitter.com/EanPlatter), and he was excited to collaborate with us. He already sent a few pull requests!
 
@@ -107,7 +107,7 @@ We first saw this feature in [Enclave](https://github.com/eanplatter/enclave), a
 
 We expect that at early stages, many people will “eject” for one reason or another, but as we learn from them, we will make the default setup more and more compelling while still providing no configuration.
 
-## Try It Out!
+## Try It Out! {#try-it-out}
 
 You can find [**Create React App**](https://github.com/facebookincubator/create-react-app) with additional instructions on GitHub.
 
@@ -115,7 +115,7 @@ This is an experiment, and only time will tell if it becomes a popular way of cr
 
 We welcome you to participate in this experiment. Help us build the React tooling that more people can use. We are always [open to feedback](https://github.com/facebookincubator/create-react-app/issues/11).
 
-## The Backstory
+## The Backstory {#the-backstory}
 
 React was one of the first libraries to embrace transpiling JavaScript. As a result, even though you can [learn React without any tooling](https://github.com/facebook/react/blob/3fd582643ef3d222a00a0c756292c15b88f9f83c/examples/basic-jsx/index.html), the React ecosystem has commonly become associated with an overwhelming explosion of tools.
 
@@ -135,7 +135,7 @@ This doesn’t mean those tools aren’t great. To many of us, they have become
 
 Still, we knew it was frustrating to spend days setting up a project when all you wanted was to learn React. We wanted to fix this.
 
-## Could We Fix This?
+## Could We Fix This? {#could-we-fix-this}
 
 We found ourselves in an unusual dilemma.
 
@@ -145,7 +145,7 @@ However, tooling at Facebook is different than at many smaller companies. Lintin
 
 The React community is very important to us. We knew that we couldn’t fix the problem within the limits of our open source philosophy. This is why we decided to make an exception, and to ship something that we didn’t use ourselves, but that we thought would be useful to the community.
 
-## The Quest for a React <abbr title="Command Line Interface">CLI</abbr>
+## The Quest for a React <abbr title="Command Line Interface">CLI</abbr> {#the-quest-for-a-react-abbr-titlecommand-line-interfacecliabbr}
 
 Having just attended [EmberCamp](http://embercamp.com/) a week ago, I was excited about [Ember CLI](https://ember-cli.com/). Ember users have a great “getting started” experience thanks to a curated set of tools united under a single command-line interface. I have heard similar feedback about [Elm Reactor](https://github.com/elm-lang/elm-reactor).
 
diff --git a/content/blog/2016-08-05-relay-state-of-the-state.md b/content/blog/2016-08-05-relay-state-of-the-state.md
index 3248738fee..7ed34e9c0a 100644
--- a/content/blog/2016-08-05-relay-state-of-the-state.md
+++ b/content/blog/2016-08-05-relay-state-of-the-state.md
@@ -5,7 +5,7 @@ author: [josephsavona]
 
 This month marks a year since we released Relay and we'd like to share an update on the project and what's next.
 
-## A Year In Review
+## A Year In Review {#a-year-in-review}
 
 A year after launch, we're incredibly excited to see an active community forming around Relay and that companies such as Twitter are [using Relay in production](https://fabric.io/blog/building-fabric-mission-control-with-graphql-and-relay):
 
@@ -28,11 +28,11 @@ We've also seen some great open-source projects spring up around Relay:
 
 This is just a small sampling of the community's contributions. So far we've merged over 300 PRs - about 25% of our commits - from over 80 of you. These PRs have improved everything from the website and docs down the very core of the framework. We're humbled by these outstanding contributions and excited to keep working with each of you!
 
-# Retrospective & Roadmap
+# Retrospective & Roadmap {#retrospective--roadmap}
 
 Earlier this year we paused to reflect on the state of the project. What was working well? What could be improved? What features should we add, and what could we remove? A few themes emerged: performance on mobile, developer experience, and empowering the community.
 
-## Mobile Perf
+## Mobile Perf {#mobile-perf}
 
 First, Relay was built to serve the needs of product developers at Facebook. In 2016, that means helping developers to build apps that work well on [mobile devices connecting on slower networks](https://newsroom.fb.com/news/2015/10/news-feed-fyi-building-for-all-connectivity/). For example, people in developing markets commonly use [2011 year-class phones](https://code.facebook.com/posts/307478339448736/year-class-a-classification-system-for-android/) and connect via [2G class networks](https://code.facebook.com/posts/952628711437136/classes-performance-and-network-segmentation-on-android/). These scenarios present their own challenges.
 
@@ -44,17 +44,17 @@ Ideally, though, we could begin fetching data as soon as the native code had loa
 
 The key is that GraphQL is already static - we just need to fully embrace this fact. More on this later.
 
-## Developer Experience
+## Developer Experience {#developer-experience}
 
 Next, we've paid attention to the community's feedback and know that, to put it simply, Relay could be "easier" to use (and "simpler" too). This isn't entirely surprising to us - Relay was originally designed as a routing library and gradually morphed into a data-fetching library. Concepts like Relay "routes", for example, no longer serve as critical a role and are just one more concept that developers have to learn about. Another example is mutations: while writes *are* inherently more complex than reads, our API doesn't make the simple things simple enough.
 
 Alongside our focus on mobile performance, we've also kept the developer experience in mind as we evolve Relay core.
 
-## Empowering the Community
+## Empowering the Community {#empowering-the-community}
 
 Finally, we want to make it easier for people in the community to develop useful libraries that work with Relay. By comparison, React's small surface area - components - allows developers to build cool things like routing, higher-order components, or reusable text editors. For Relay, this would mean having the framework provide core primitives that users can build upon. We want it to be possible for the community to integrate Relay with view libraries other than React, or to build real-time subscriptions as a complementary library.
 
-# What's Next
+# What's Next {#whats-next}
 
 These were big goals, and also a bit scary; we knew that incremental improvements would only allow us to move so fast. So in April we started a project to build a new implementation of Relay core targeting low-end mobile devices from the start.
 
@@ -71,7 +71,7 @@ Stepping back, we recognize that any API changes will require an investment on y
 
 Ultimately, we're making these changes because we believe they make Relay better all around: simpler for developers building apps and faster for the people using them.
 
-# Conclusion
+# Conclusion {#conclusion}
 
 If you made it this far, congrats and thanks for reading! We'll be sharing more information about these changes in some upcoming talks:
 
diff --git a/content/blog/2016-09-28-our-first-50000-stars.md b/content/blog/2016-09-28-our-first-50000-stars.md
index 07d78020d0..de9f9c8225 100644
--- a/content/blog/2016-09-28-our-first-50000-stars.md
+++ b/content/blog/2016-09-28-our-first-50000-stars.md
@@ -5,7 +5,7 @@ author: [vjeux]
 
 Just three and a half years ago we open sourced a little JavaScript library called React. The journey since that day has been incredibly exciting.
 
-## Commemorative T-Shirt
+## Commemorative T-Shirt {#commemorative-t-shirt}
 
 In order to celebrate 50,000 GitHub stars, [Maggie Appleton](http://www.maggieappleton.com/) from [egghead.io](http://egghead.io/) has designed us a special T-shirt, which will be available for purchase from Teespring **only for a week** through Thursday, October 6. Maggie also wrote [a blog post](https://www.behance.net/gallery/43269677/Reacts-50000-Stars-Shirt) showing all the different concepts she came up with before settling on the final design.
 
@@ -20,7 +20,7 @@ The T-shirts are super soft using American Apparel's tri-blend fabric; we also h
 
 Proceeds from the shirts will be donated to [CODE2040](http://www.code2040.org/), a nonprofit that creates access, awareness, and opportunities in technology for underrepresented minorities with a specific focus on Black and Latinx talent.
 
-## Archeology
+## Archeology {#archeology}
 
 We've spent a lot of time trying to explain the concepts behind React and the problems it attempts to solve, but we haven't talked much about how React evolved before being open sourced. This milestone seemed like as good a time as any to dig through the earliest commits and share some of the more important moments and fun facts.
 
@@ -81,7 +81,7 @@ TestProject.PersonDisplayer = {
 };
 ```
 
-## FBolt is Born
+## FBolt is Born {#fbolt-is-born}
 
 Through his FaxJS experiment, Jordan became convinced that functional APIs  — which discouraged mutation —  offered a better, more scalable way to build user interfaces. He imported his library into Facebook's codebase in March of 2012 and renamed it “FBolt”, signifying an extension of Bolt where components are written in a functional programming style. Or maybe “FBolt” was a nod to FaxJS – he didn't tell us! ;)
 
@@ -96,7 +96,7 @@ I might add for the sake of discussion, that many systems advertise some kind of
 
 Most of Tom's other commits at the time were on the first version of [GraphiQL](https://github.com/graphql/graphiql), a project which was recently open sourced.
 
-## Adding JSX
+## Adding JSX {#adding-jsx}
 
 Since about 2010 Facebook has been using an extension of PHP called [XHP](https://www.facebook.com/notes/facebook-engineering/xhp-a-new-way-to-write-php/294003943919/), which enables engineers to create UIs using XML literals right inside their PHP code. It was first introduced to help prevent XSS holes but ended up being an excellent way to structure applications with custom components.
 
@@ -180,7 +180,7 @@ Adam made a very insightful comment, which is now the default way we write lists
 
 React didn't end up using Adam's implementation directly. Instead, we created JSX by forking [js-xml-literal](https://github.com/laverdet/js-xml-literal), a side project by XHP creator Marcel Laverdet. JSX took its name from js-xml-literal, which Jordan modified to just be syntactic sugar for deeply nested function calls.
 
-## API Churn
+## API Churn {#api-churn}
 
 During the first year of React, internal adoption was growing quickly but there was quite a lot of churn in the component APIs and naming conventions:
 
@@ -214,7 +214,7 @@ As the project was about to be open sourced, [Lee Byron](https://twitter.com/lee
     * objectWillAction
     * objectDidAction
 
-## Instagram
+## Instagram {#instagram}
 
 In 2012, Instagram got acquired by Facebook. [Pete Hunt](https://twitter.com/floydophone), who was working on Facebook photos and videos at the time, joined their newly formed web team. He wanted to build their website completely in React, which was in stark contrast with the incremental adoption model that had been used at Facebook.
 
diff --git a/content/blog/2016-11-16-react-v15.4.0.md b/content/blog/2016-11-16-react-v15.4.0.md
index f1322c7c08..4c92845956 100644
--- a/content/blog/2016-11-16-react-v15.4.0.md
+++ b/content/blog/2016-11-16-react-v15.4.0.md
@@ -7,7 +7,7 @@ Today we are releasing React 15.4.0.
 
 We didn't announce the [previous](https://github.com/facebook/react/blob/master/CHANGELOG.md#1510-may-20-2016) [minor](https://github.com/facebook/react/blob/master/CHANGELOG.md#1520-july-1-2016) [releases](https://github.com/facebook/react/blob/master/CHANGELOG.md#1530-july-29-2016) on the blog because most of the changes were bug fixes. However, 15.4.0 is a special release, and we would like to highlight a few notable changes in it.
 
-### Separating React and React DOM
+### Separating React and React DOM {#separating-react-and-react-dom}
 
 [More than a year ago](/blog/2015/09/10/react-v0.14-rc1.html#two-packages-react-and-react-dom), we started separating React and React DOM into separate packages. We deprecated `React.render()` in favor of `ReactDOM.render()` in React 0.14, and removed DOM-specific APIs from `React` completely in React 15. However, the React DOM implementation still [secretly lived inside the React package](https://www.reddit.com/r/javascript/comments/3m6wyu/found_this_line_in_the_react_codebase_made_me/cvcyo4a/).
 
@@ -21,7 +21,7 @@ However, there is a possibility that you imported private APIs from `react/lib/*
 
 Another thing to watch out for is that React DOM Server is now about the same size as React DOM since it contains its own copy of the React reconciler. We don't recommend using React DOM Server on the client in most cases.
 
-### Profiling Components with Chrome Timeline
+### Profiling Components with Chrome Timeline {#profiling-components-with-chrome-timeline}
 
 You can now visualize React components in the Chrome Timeline. This lets you see which components exactly get mounted, updated, and unmounted, how much time they take relative to each other.
 
@@ -43,7 +43,7 @@ Note that the numbers are relative so components will render faster in productio
 
 Currently Chrome, Edge, and IE are the only browsers supporting this feature, but we use the standard [User Timing API](https://developer.mozilla.org/en-US/docs/Web/API/User_Timing_API) so we expect more browsers to add support for it.
 
-### Mocking Refs for Snapshot Testing
+### Mocking Refs for Snapshot Testing {#mocking-refs-for-snapshot-testing}
 
 If you're using Jest [snapshot testing](https://facebook.github.io/jest/blog/2016/07/27/jest-14.html), you might have had [issues](https://github.com/facebook/react/issues/7371) with components that rely on refs. With React 15.4.0, we introduce a way to provide mock refs to the test renderer. For example, consider this component using a ref in `componentDidMount`:
 
@@ -94,7 +94,7 @@ You can learn more about snapshot testing in [this Jest blog post](https://faceb
 
 ---
 
-## Installation
+## Installation {#installation}
 
 We recommend using [Yarn](https://yarnpkg.com/) or [npm](https://www.npmjs.com/) for managing front-end dependencies. If you're new to package managers, the [Yarn documentation](https://yarnpkg.com/en/docs/getting-started) is a good place to get started.
 
@@ -133,9 +133,9 @@ We've also published version `15.4.0` of the `react`, `react-dom`, and addons pa
 
 - - -
 
-## Changelog
+## Changelog {#changelog}
 
-### React
+### React {#react}
 * React package and browser build no longer "secretly" includes React DOM.  
   <small>([@sebmarkbage](https://github.com/sebmarkbage) in [#7164](https://github.com/facebook/react/pull/7164) and [#7168](https://github.com/facebook/react/pull/7168))</small>
 * Required PropTypes now fail with specific messages for null and undefined.  
@@ -143,7 +143,7 @@ We've also published version `15.4.0` of the `react`, `react-dom`, and addons pa
 * Improved development performance by freezing children instead of copying.  
   <small>([@keyanzhang](https://github.com/keyanzhang) in [#7455](https://github.com/facebook/react/pull/7455))</small>
 
-### React DOM
+### React DOM {#react-dom}
 * Fixed occasional test failures when React DOM is used together with shallow renderer.  
   <small>([@goatslacker](https://github.com/goatslacker) in [#8097](https://github.com/facebook/react/pull/8097))</small>
 * Added a warning for invalid `aria-` attributes.  
@@ -159,15 +159,15 @@ We've also published version `15.4.0` of the `react`, `react-dom`, and addons pa
 * Fixed a bug with updating text in IE 8.  
   <small>([@mnpenner](https://github.com/mnpenner) in [#7832](https://github.com/facebook/react/pull/7832))</small>
 
-### React Perf
+### React Perf {#react-perf}
 * When ReactPerf is started, you can now view the relative time spent in components as a chart in Chrome Timeline.  
   <small>([@gaearon](https://github.com/gaearon) in [#7549](https://github.com/facebook/react/pull/7549))</small>
 
-### React Test Utils
+### React Test Utils {#react-test-utils}
 * If you call `Simulate.click()` on a `<input disabled onClick={foo} />` then `foo` will get called whereas it didn't before.  
   <small>([@nhunzaker](https://github.com/nhunzaker) in [#7642](https://github.com/facebook/react/pull/7642))</small>
 
-### React Test Renderer
+### React Test Renderer {#react-test-renderer}
 * Due to packaging changes, it no longer crashes when imported together with React DOM in the same file.  
   <small>([@sebmarkbage](https://github.com/sebmarkbage) in [#7164](https://github.com/facebook/react/pull/7164) and [#7168](https://github.com/facebook/react/pull/7168))</small>
 * `ReactTestRenderer.create()` now accepts `{createNodeMock: element => mock}` as an optional argument so you can mock refs with snapshot testing.  
diff --git a/content/blog/2017-04-07-react-v15.5.0.md b/content/blog/2017-04-07-react-v15.5.0.md
index 9446f0e834..b5741f9ab9 100644
--- a/content/blog/2017-04-07-react-v15.5.0.md
+++ b/content/blog/2017-04-07-react-v15.5.0.md
@@ -7,7 +7,7 @@ It's been exactly one year since the last breaking change to React. Our next maj
 
 To that end, today we're releasing React 15.5.0.
 
-### New Deprecation Warnings
+### New Deprecation Warnings {#new-deprecation-warnings}
 
 The biggest change is that we've extracted `React.PropTypes` and `React.createClass` into their own packages. Both are still accessible via the main `React` object, but using either will log a one-time deprecation warning to the console when in development mode. This will enable future code size optimizations.
 
@@ -19,7 +19,7 @@ So while the warnings may cause frustration in the short-term, we believe **prod
 
 For each of these new deprecations, we've provided a codemod to automatically migrate your code. They are available as part of the [react-codemod](https://github.com/reactjs/react-codemod) project.
 
-### Migrating from React.PropTypes
+### Migrating from React.PropTypes {#migrating-from-reactproptypes}
 
 Prop types are a feature for runtime validation of props during development. We've extracted the built-in prop types to a separate package to reflect the fact that not everybody uses them.
 
@@ -65,7 +65,7 @@ The `propTypes`, `contextTypes`, and `childContextTypes` APIs will work exactly
 
 You may also consider using [Flow](https://flow.org/) to statically type check your JavaScript code, including [React components](https://flow.org/en/docs/react/components/).
 
-### Migrating from React.createClass
+### Migrating from React.createClass {#migrating-from-reactcreateclass}
 
 When React was initially released, there was no idiomatic way to create classes in JavaScript, so we provided our own: `React.createClass`.
 
@@ -106,7 +106,7 @@ Basic usage:
 jscodeshift -t react-codemod/transforms/class.js path/to/components
 ```
 
-### Discontinuing support for React Addons
+### Discontinuing support for React Addons {#discontinuing-support-for-react-addons}
 
 We're discontinuing active maintenance of React Addons packages. In truth, most of these packages haven't been actively maintained in a long time. They will continue to work indefinitely, but we recommend migrating away as soon as you can to prevent future breakages.
 
@@ -121,7 +121,7 @@ We're discontinuing active maintenance of React Addons packages. In truth, most
 
 We're also discontinuing support for the `react-with-addons` UMD build. It will be removed in React 16.
 
-### React Test Utils
+### React Test Utils {#react-test-utils}
 
 Currently, the React Test Utils live inside `react-addons-test-utils`. As of 15.5, we're deprecating that package and moving them to `react-dom/test-utils` instead:
 
@@ -147,7 +147,7 @@ import { createRenderer } from 'react-test-renderer/shallow';
 
 ---
 
-## Acknowledgements
+## Acknowledgements {#acknowledgements}
 
 A special thank you to these folks for transferring ownership of npm package names:
 
@@ -157,7 +157,7 @@ A special thank you to these folks for transferring ownership of npm package nam
 
 ---
 
-## Installation
+## Installation {#installation}
 
 We recommend using [Yarn](https://yarnpkg.com/) or [npm](https://www.npmjs.com/) for managing front-end dependencies. If you're new to package managers, the [Yarn documentation](https://yarnpkg.com/en/docs/getting-started) is a good place to get started.
 
@@ -196,11 +196,11 @@ We've also published version `15.5.0` of the `react`, `react-dom`, and addons pa
 
 ---
 
-## Changelog
+## Changelog {#changelog}
 
-## 15.5.0 (April 7, 2017)
+## 15.5.0 (April 7, 2017) {#1550-april-7-2017}
 
-### React
+### React {#react}
 
 * Added a deprecation warning for `React.createClass`. Points users to create-react-class instead. ([@acdlite](https://github.com/acdlite) in [d9a4fa4](https://github.com/facebook/react/commit/d9a4fa4f51c6da895e1655f32255cf72c0fe620e))
 * Added a deprecation warning for `React.PropTypes`. Points users to prop-types instead. ([@acdlite](https://github.com/acdlite) in [043845c](https://github.com/facebook/react/commit/043845ce75ea0812286bbbd9d34994bb7e01eb28))
@@ -209,17 +209,17 @@ We've also published version `15.5.0` of the `react`, `react-dom`, and addons pa
 * Another fix for Closure Compiler. ([@Shastel](https://github.com/Shastel) in [#8882](https://github.com/facebook/react/pull/8882))
 * Added component stack info to invalid element type warning. ([@n3tr](https://github.com/n3tr) in [#8495](https://github.com/facebook/react/pull/8495))
 
-### React DOM
+### React DOM {#react-dom}
 
 * Fixed Chrome bug when backspacing in number inputs. ([@nhunzaker](https://github.com/nhunzaker) in [#7359](https://github.com/facebook/react/pull/7359))
 * Added `react-dom/test-utils`, which exports the React Test Utils. ([@bvaughn](https://github.com/bvaughn))
 
-### React Test Renderer
+### React Test Renderer {#react-test-renderer}
 
 * Fixed bug where `componentWillUnmount` was not called for children. ([@gre](https://github.com/gre) in [#8512](https://github.com/facebook/react/pull/8512))
 * Added `react-test-renderer/shallow`, which exports the shallow renderer. ([@bvaughn](https://github.com/bvaughn))
 
-### React Addons
+### React Addons {#react-addons}
 
 * Last release for addons; they will no longer be actively maintained.
 * Removed `peerDependencies` so that addons continue to work indefinitely. ([@acdlite](https://github.com/acdlite) and [@bvaughn](https://github.com/bvaughn) in [8a06cd7](https://github.com/facebook/react/commit/8a06cd7a786822fce229197cac8125a551e8abfa) and [67a8db3](https://github.com/facebook/react/commit/67a8db3650d724a51e70be130e9008806402678a))
diff --git a/content/blog/2017-05-18-whats-new-in-create-react-app.md b/content/blog/2017-05-18-whats-new-in-create-react-app.md
index dce35748e6..9446de7e9e 100644
--- a/content/blog/2017-05-18-whats-new-in-create-react-app.md
+++ b/content/blog/2017-05-18-whats-new-in-create-react-app.md
@@ -11,7 +11,7 @@ As usual with Create React App, **you can enjoy these improvements in your exist
 
 Newly created apps will get these improvements automatically.
 
-### webpack 2
+### webpack 2 {#webpack-2}
 
 >*This change was contributed by [@Timer](https://github.com/Timer) in [#1291](https://github.com/facebookincubator/create-react-app/pull/1291).*
 
@@ -27,7 +27,7 @@ The biggest notable webpack 2 feature is the ability to write and import [ES6 mo
 
 In the future, as the ecosystem around ES6 modules matures, you can expect more improvements to your app's bundle size thanks to [tree shaking](https://webpack.js.org/guides/tree-shaking/).
 
-### Runtime Error Overlay
+### Runtime Error Overlay {#error-overlay}
 
 >*This change was contributed by [@Timer](https://github.com/Timer) and [@nicinabox](https://github.com/nicinabox) in [#1101](https://github.com/facebookincubator/create-react-app/pull/1101), [@bvaughn](https://github.com/bvaughn) in [#2201](https://github.com/facebookincubator/create-react-app/pull/2201).*
 
@@ -44,7 +44,7 @@ A GIF is worth a thousand words:
 In the future, we plan to teach the runtime error overlay to understand more about your React app. For example, after React 16 we plan to show React component stacks in addition to the JavaScript stacks when an error is thrown.
 
 
-### Progressive Web Apps by Default
+### Progressive Web Apps by Default {#progressive-web-apps-by-default}
 
 >*This change was contributed by [@jeffposnick](https://github.com/jeffposnick) in [#1728](https://github.com/facebookincubator/create-react-app/pull/1728).*
 
@@ -57,7 +57,7 @@ New apps automatically have these features, but you can easily convert an existi
 We will be adding [more documentation](https://github.com/facebookincubator/create-react-app/blob/master/packages/react-scripts/template/README.md#making-a-progressive-web-app) on this topic in the coming weeks. Please feel free to [ask any questions](https://github.com/facebookincubator/create-react-app/issues/new) on the issue tracker!
 
 
-### Jest 20
+### Jest 20 {#jest-20}
 
 >*This change was contributed by [@rogeliog](https://github.com/rogeliog) in [#1614](https://github.com/facebookincubator/create-react-app/pull/1614) and [@gaearon](https://github.com/gaearon) in [#2171](https://github.com/facebookincubator/create-react-app/pull/2171).*
    
@@ -69,7 +69,7 @@ Highlights include a new [immersive watch mode](https://facebook.github.io/jest/
 
 Additionally, Create React App now support configuring a few Jest options related to coverage reporting.
 
-### Code Splitting with Dynamic import()
+### Code Splitting with Dynamic import() {#code-splitting-with-dynamic-import}
 
 >*This change was contributed by [@Timer](https://github.com/Timer) in [#1538](https://github.com/facebookincubator/create-react-app/pull/1538) and [@tharakawj](https://github.com/tharakawj) in [#1801](https://github.com/facebookincubator/create-react-app/pull/1801).*
    
@@ -79,7 +79,7 @@ In this release, we are adding support for the [dynamic `import()` proposal](htt
 
 ![Creating chunks with dynamic import](../images/blog/cra-dynamic-import.gif)
 
-### Better Console Output
+### Better Console Output {#better-console-output}
 
 >*This change was contributed by [@gaearon](https://github.com/gaearon) in [#2120](https://github.com/facebookincubator/create-react-app/pull/2120), [#2125](https://github.com/facebookincubator/create-react-app/pull/2125), and [#2161](https://github.com/facebookincubator/create-react-app/pull/2161).*
 
@@ -91,13 +91,13 @@ For example, when you start the development server, we now display the LAN addre
 
 When lint errors are reported, we no longer show the warnings so that you can concentrate on more critical issues. Errors and warnings in the production build output are better formatted, and the build error overlay font size now matches the browser font size more closely.
 
-### But Wait... There's More!
+### But Wait... There's More! {#but-wait-theres-more}
 
 You can only fit so much in a blog post, but there are other long-requested features in this release, such as [environment-specific and local `.env` files](https://github.com/facebookincubator/create-react-app/pull/1344), [a lint rule against confusingly named globals](https://github.com/facebookincubator/create-react-app/pull/2130), [support for multiple proxies in development](https://github.com/facebookincubator/create-react-app/pull/1790), [a customizable browser launch script](https://github.com/facebookincubator/create-react-app/pull/1590), and many bugfixes.
 
 You can read the full changelog and the migration guide in the [v1.0.0 release notes](https://github.com/facebookincubator/create-react-app/releases/tag/v1.0.0).
 
-### Acknowledgements
+### Acknowledgements {#acknowledgements}
 
 This release is a result of months of work from many people in the React community. It is focused on improving both developer and end user experience, as we believe they are complementary and go hand in hand.
 
diff --git a/content/blog/2017-06-13-react-v15.6.0.md b/content/blog/2017-06-13-react-v15.6.0.md
index f2f697b95e..55aeccd514 100644
--- a/content/blog/2017-06-13-react-v15.6.0.md
+++ b/content/blog/2017-06-13-react-v15.6.0.md
@@ -5,7 +5,7 @@ author: [flarnie]
 
 Today we are releasing React 15.6.0. As we prepare for React 16.0, we have been fixing and cleaning up many things. This release continues to pave the way.
 
-## Improving Inputs
+## Improving Inputs {#improving-inputs}
 
 In React 15.6.0 the `onChange` event for inputs is a little bit more reliable and handles more edge cases, including the following:
 
@@ -18,7 +18,7 @@ In React 15.6.0 the `onChange` event for inputs is a little bit more reliable an
 
 Thanks to [Jason Quense](https://github.com/jquense) and everyone who helped out on those issues and PRs.
 
-## Less Noisy Deprecation Warnings
+## Less Noisy Deprecation Warnings {#less-noisy-deprecation-warnings}
 
 We are also including a couple of new warnings for upcoming deprecations. These should not affect most users, and for more details see the changelog below.
 
@@ -26,7 +26,7 @@ After the last release, we got valuable community feedback that deprecation warn
 
 ---
 
-## Installation
+## Installation {#installation}
 
 We recommend using [Yarn](https://yarnpkg.com/) or [npm](https://www.npmjs.com/) for managing front-end dependencies. If you're new to package managers, the [Yarn documentation](https://yarnpkg.com/en/docs/getting-started) is a good place to get started.
 
@@ -65,18 +65,18 @@ We've also published version `15.6.0` of `react` and `react-dom` on npm, and the
 
 ---
 
-## Changelog
+## Changelog {#changelog}
 
-## 15.6.0 (June 13, 2017)
+## 15.6.0 (June 13, 2017) {#1560-june-13-2017}
 
-### React
+### React {#react}
 
 * Downgrade deprecation warnings to use `console.warn` instead of `console.error`. ([@flarnie](https://github.com/flarnie) in [#9753](https://github.com/facebook/react/pull/9753))
 * Add a deprecation warning for `React.createClass`. Points users to `create-react-class` instead. ([@flarnie](https://github.com/flarnie) in [#9771](https://github.com/facebook/react/pull/9771))
 * Add deprecation warnings and separate module for `React.DOM` factory helpers. ([@nhunzaker](https://github.com/nhunzaker) in [#8356](https://github.com/facebook/react/pull/8356))
 * Warn for deprecation of `React.createMixin` helper, which was never used. ([@aweary](https://github.com/aweary) in [#8853](https://github.com/facebook/react/pull/8853))
 
-### React DOM
+### React DOM {#react-dom}
 
 * Add support for CSS variables in `style` attribute. ([@aweary](https://github.com/aweary) in [#9302](https://github.com/facebook/react/pull/9302))
 * Add support for CSS Grid style properties. ([@ericsakmar](https://github.com/ericsakmar) in [#9185](https://github.com/facebook/react/pull/9185))
@@ -85,7 +85,7 @@ We've also published version `15.6.0` of `react` and `react-dom` on npm, and the
 * Fix bug where controlled number input mistakenly allowed period. ([@nhunzaker](https://github.com/nhunzaker) in [#9584](https://github.com/facebook/react/pull/9584))
 * Fix bug where performance entries were being cleared. ([@chrisui](https://github.com/chrisui) in [#9451](https://github.com/facebook/react/pull/9451))
 
-### React Addons
+### React Addons {#react-addons}
 
 * Fix AMD support for addons depending on `react`. ([@flarnie](https://github.com/flarnie) in [#9919](https://github.com/facebook/react/issues/9919))
 * Fix `isMounted()` to return `true` in `componentWillUnmount`. ([@mridgway](https://github.com/mridgway) in [#9638](https://github.com/facebook/react/issues/9638))
diff --git a/content/blog/2017-07-26-error-handling-in-react-16.md b/content/blog/2017-07-26-error-handling-in-react-16.md
index 0fd496ee44..7625de7b4a 100644
--- a/content/blog/2017-07-26-error-handling-in-react-16.md
+++ b/content/blog/2017-07-26-error-handling-in-react-16.md
@@ -7,11 +7,11 @@ As React 16 release is getting closer, we would like to announce a few changes t
 
 **By the way, [we just released the first beta of React 16 for you to try!](https://github.com/facebook/react/issues/10294)**
 
-## Behavior in React 15 and Earlier
+## Behavior in React 15 and Earlier {#behavior-in-react-15-and-earlier}
 
 In the past, JavaScript errors inside components used to corrupt React’s internal state and cause it to [emit](https://github.com/facebook/react/issues/4026) [cryptic](https://github.com/facebook/react/issues/6895) [errors](https://github.com/facebook/react/issues/8579) on next renders. These errors were always caused by an earlier error in the application code, but React did not provide a way to handle them gracefully in components, and could not recover from them.
 
-## Introducing Error Boundaries
+## Introducing Error Boundaries {#introducing-error-boundaries}
 
 A JavaScript error in a part of the UI shouldn’t break the whole app. To solve this problem for React users, React 16 introduces a new concept of an “error boundary”.
 
@@ -55,15 +55,15 @@ The `componentDidCatch()` method works like a JavaScript `catch {}` block, but f
 
 Note that **error boundaries only catch errors in the components below them in the tree**. An error boundary can’t catch an error within itself. If an error boundary fails trying to render the error message, the error will propagate to the closest error boundary above it. This, too, is similar to how `catch {}` block works in JavaScript.
 
-## Live Demo
+## Live Demo {#live-demo}
 
 Check out [this example of declaring and using an error boundary](https://codepen.io/gaearon/pen/wqvxGa?editors=0010) with [React 16 beta](https://github.com/facebook/react/issues/10294).
 
-## Where to Place Error Boundaries
+## Where to Place Error Boundaries {#where-to-place-error-boundaries}
 
 The granularity of error boundaries is up to you. You may wrap top-level route components to display a “Something went wrong” message to the user, just like server-side frameworks often handle crashes. You may also wrap individual widgets in an error boundary to protect them from crashing the rest of the application.
 
-## New Behavior for Uncaught Errors
+## New Behavior for Uncaught Errors {#new-behavior-for-uncaught-errors}
 
 This change has an important implication. **As of React 16, errors that were not caught by any error boundary will result in unmounting of the whole React component tree.**
 
@@ -75,7 +75,7 @@ For example, Facebook Messenger wraps content of the sidebar, the info panel, th
 
 We also encourage you to use JS error reporting services (or build your own) so that you can learn about unhandled exceptions as they happen in production, and fix them.
 
-## Component Stack Traces
+## Component Stack Traces {#component-stack-traces}
 
 React 16 prints all errors that occurred during rendering to the console in development, even if the application accidentally swallows them. In addition to the error message and the JavaScript stack, it also provides component stack traces. Now you can see where exactly in the component tree the failure has happened:
 
@@ -87,7 +87,7 @@ You can also see the filenames and line numbers in the component stack trace. Th
 
 If you don’t use Create React App, you can add [this plugin](https://www.npmjs.com/package/babel-plugin-transform-react-jsx-source) manually to your Babel configuration. Note that it’s intended only for development and **must be disabled in production**.
 
-## Why Not Use `try` / `catch`?
+## Why Not Use `try` / `catch`? {#why-not-use-try--catch}
 
 `try` / `catch` is great but it only works for imperative code:
 
@@ -107,7 +107,7 @@ However, React components are declarative and specify *what* should be rendered:
 
 Error boundaries preserve the declarative nature of React, and behave as you would expect. For example, even if an error occurs in a `componentDidUpdate` method caused by a `setState` somewhere deep in the tree, it will still correctly propagate to the closest error boundary.
 
-## Naming Changes from React 15
+## Naming Changes from React 15 {#naming-changes-from-react-15}
 
 React 15 included a very limited support for error boundaries under a different method name: `unstable_handleError`. This method no longer works, and you will need to change it to `componentDidCatch` in your code starting from the first 16 beta release.
 
diff --git a/content/blog/2017-09-08-dom-attributes-in-react-16.md b/content/blog/2017-09-08-dom-attributes-in-react-16.md
index b8953997cf..31c66e53e6 100644
--- a/content/blog/2017-09-08-dom-attributes-in-react-16.md
+++ b/content/blog/2017-09-08-dom-attributes-in-react-16.md
@@ -24,7 +24,7 @@ In React 16, we are making a change. Now, any unknown attributes will end up in
 <div mycustomattribute="something" />
 ```
 
-## Why Are We Changing This?
+## Why Are We Changing This? {#why-are-we-changing-this}
 
 React has always provided a JavaScript-centric API to the DOM. Since React components often take both custom and DOM-related props, it makes sense for React to use the `camelCase` convention just like the DOM APIs:
 
@@ -63,13 +63,13 @@ With the new approach, both of these problems are solved. With React 16, you can
 
 In other words, the way you use DOM components in React hasn't changed, but now you have some new capabilities.
 
-## Should I Keep Data in Custom Attributes?
+## Should I Keep Data in Custom Attributes? {#should-i-keep-data-in-custom-attributes}
 
 No. We don't encourage you to keep data in DOM attributes. Even if you have to, `data-` attributes are probably a better approach, but in most cases data should be kept in React component state or external stores.
 
 However, the new feature is handy if you need to use a non-standard or a new DOM attribute, or if you need to integrate with a third-party library that relies on such attributes.
 
-## Data and ARIA Attributes
+## Data and ARIA Attributes {#data-and-aria-attributes}
 
 Just like before, React lets you pass `data-` and `aria-` attributes freely:
 
@@ -82,7 +82,7 @@ This has not changed.
 
 [Accessibility](/docs/accessibility.html) is very important, so even though React 16 passes any attributes through, it still validates that `aria-` props have correct names in development mode, just like React 15 did.
 
-## Migration Path
+## Migration Path {#migration-path}
 
 We have included [a warning about unknown attributes](/warnings/unknown-prop.html) since [React 15.2.0](https://github.com/facebook/react/releases/tag/v15.2.0) which came out more than a year ago. The vast majority of third-party libraries have already updated their code. If your app doesn't produce warnings with React 15.2.0 or higher, this change should not require modifications in your application code.
 
@@ -96,7 +96,7 @@ This is somewhat safe (the browser will just ignore them) but we recommend to fi
 
 To avoid these problems, we suggest to fix the warnings you see in React 15 before upgrading to React 16.
 
-## Changes in Detail
+## Changes in Detail {#changes-in-detail}
 
 We've made a few other changes to make the behavior more predictable and help ensure you're not making mistakes. We don't anticipate that these changes are likely to break real-world applications.
 
@@ -167,12 +167,12 @@ Below is a detailed list of them.
 
 While testing this release, we have also [created an automatically generated table](https://github.com/facebook/react/blob/master/fixtures/attribute-behavior/AttributeTableSnapshot.md) for all known attributes to track potential regressions.
 
-## Try It!
+## Try It! {#try-it}
 
 You can try the change in [this CodePen](https://codepen.io/gaearon/pen/gxNVdP?editors=0010).  
 It uses React 16 RC, and you can [help us by testing the RC in your project!](https://github.com/facebook/react/issues/10294)
 
-## Thanks
+## Thanks {#thanks}
 
 This effort was largely driven by [Nathan Hunzaker](https://github.com/nhunzaker) who has been a [prolific outside contributor to React](https://github.com/facebook/react/pulls?q=is:pr+author:nhunzaker+is:closed).
 
@@ -182,6 +182,6 @@ Major changes in a popular project can take a lot of time and research. Nathan d
 
 We would also like to thank [Brandon Dail](https://github.com/aweary) and [Jason Quense](https://github.com/jquense) for their invaluable help maintaining React this year.
 
-## Future Work
+## Future Work {#future-work}
 
 We are not changing how [custom elements](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Custom_Elements) work in React 16, but there are [existing discussions](https://github.com/facebook/react/issues/7249) about setting properties instead of attributes, and we might revisit this in React 17. Feel free to chime in if you'd like to help!
diff --git a/content/blog/2017-09-25-react-v15.6.2.md b/content/blog/2017-09-25-react-v15.6.2.md
index d9b3e974c3..71ddd7346b 100644
--- a/content/blog/2017-09-25-react-v15.6.2.md
+++ b/content/blog/2017-09-25-react-v15.6.2.md
@@ -7,7 +7,7 @@ Today we're sending out React 15.6.2. In 15.6.1, we shipped a few fixes for chan
 
 Additionally, 15.6.2 adds support for the [`controlList`](https://developers.google.com/web/updates/2017/03/chrome-58-media-updates#controlslist) attribute, and CSS columns are no longer appended with a `px` suffix.
 
-## Installation
+## Installation {#installation}
 
 We recommend using [Yarn](https://yarnpkg.com/) or [npm](https://www.npmjs.com/) for managing front-end dependencies. If you're new to package managers, the [Yarn documentation](https://yarnpkg.com/en/docs/getting-started) is a good place to get started.
 
@@ -46,14 +46,14 @@ We've also published version `15.6.2` of `react` and `react-dom` on npm, and the
 
 ---
 
-## Changelog
+## Changelog {#changelog}
 
-## 15.6.2 (September 25, 2017)
+## 15.6.2 (September 25, 2017) {#1562-september-25-2017}
 
-### All Packages
+### All Packages {#all-packages}
 * Switch from BSD + Patents to MIT license
 
-### React DOM
+### React DOM {#react-dom}
 
 * Fix a bug where modifying `document.documentMode` would trigger IE detection in other browsers, breaking change events. ([@aweary](https://github.com/aweary) in [#10032](https://github.com/facebook/react/pull/10032))
 * CSS Columns are treated as unitless numbers. ([@aweary](https://github.com/aweary) in [#10115](https://github.com/facebook/react/pull/10115))
diff --git a/content/blog/2017-09-26-react-v16.0.md b/content/blog/2017-09-26-react-v16.0.md
index 1e3a41942a..b9f3778514 100644
--- a/content/blog/2017-09-26-react-v16.0.md
+++ b/content/blog/2017-09-26-react-v16.0.md
@@ -5,7 +5,7 @@ author: [acdlite]
 
 We're excited to announce the release of React v16.0! Among the changes are some long-standing feature requests, including [**fragments**](#new-render-return-types-fragments-and-strings), [**error boundaries**](#better-error-handling), [**portals**](#portals), support for [**custom DOM attributes**](#support-for-custom-dom-attributes), improved [**server-side rendering**](#better-server-side-rendering), and [**reduced file size**](#reduced-file-size).
 
-### New render return types: fragments and strings
+### New render return types: fragments and strings {#new-render-return-types-fragments-and-strings}
 
 You can now return an array of elements from a component's `render` method. Like with other arrays, you'll need to add a key to each element to avoid the key warning:
 
@@ -33,7 +33,7 @@ render() {
 
 [See the full list of supported return types](/docs/react-component.html#render).
 
-### Better error handling
+### Better error handling {#better-error-handling}
 
 Previously, runtime errors during rendering could put React in a broken state, producing cryptic error messages and requiring a page refresh to recover. To address this problem, React 16 uses a more resilient error-handling strategy. By default, if an error is thrown inside a component's render or lifecycle methods, the whole component tree is unmounted from the root. This prevents the display of corrupted data. However, it's probably not the ideal user experience.
 
@@ -42,7 +42,7 @@ Instead of unmounting the whole app every time there's an error, you can use err
 For more details, check out our [previous post on error handling in React 16](/blog/2017/07/26/error-handling-in-react-16.html).
 
 
-### Portals
+### Portals {#portals}
 
 Portals provide a first-class way to render children into a DOM node that exists outside the DOM hierarchy of the parent component.
 
@@ -59,7 +59,7 @@ render() {
 
 See a full example in the [documentation for portals](/docs/portals.html).
 
-### Better server-side rendering
+### Better server-side rendering {#better-server-side-rendering}
 
 React 16 includes a completely rewritten server renderer. It's really fast. It supports **streaming**, so you can start sending bytes to the client faster. And thanks to a [new packaging strategy](#reduced-file-size) that compiles away `process.env` checks (Believe it or not, reading `process.env` in Node is really slow!), you no longer need to bundle React to get good server-rendering performance.
 
@@ -69,11 +69,11 @@ In addition, React 16 is better at hydrating server-rendered HTML once it reache
 
 See the [documentation for `ReactDOMServer`](/docs/react-dom-server.html) for more details.
 
-### Support for custom DOM attributes
+### Support for custom DOM attributes {#support-for-custom-dom-attributes}
 
 Instead of ignoring unrecognized HTML and SVG attributes, React will now [pass them through to the DOM](/blog/2017/09/08/dom-attributes-in-react-16.html). This has the added benefit of allowing us to get rid of most of React's attribute whitelist, resulting in reduced file sizes.
 
-### Reduced file size
+### Reduced file size {#reduced-file-size}
 
 Despite all these additions, React 16 is actually **smaller** compared to 15.6.1!
 
@@ -85,11 +85,11 @@ That amounts to a combined **32% size decrease compared to the previous version
 
 The size difference is partly attributable to a change in packaging. React now uses [Rollup](https://rollupjs.org/) to create flat bundles for each of its different target formats, resulting in both size and runtime performance wins. The flat bundle format also means that React's impact on bundle size is roughly consistent regardless of how you ship your app, whether it's with Webpack, Browserify, the pre-built UMD bundles, or any other system.
 
-### MIT licensed
+### MIT licensed {#mit-licensed}
 
 [In case you missed it](https://code.facebook.com/posts/300798627056246/relicensing-react-jest-flow-and-immutable-js/), React 16 is available under the MIT license. We've also published React 15.6.2 under MIT, for those who are unable to upgrade immediately.
 
-### New core architecture
+### New core architecture {#new-core-architecture}
 
 React 16 is the first version of React built on top of a new core architecture, codenamed "Fiber." You can read all about this project over on [Facebook's engineering blog](https://code.facebook.com/posts/1716776591680069/react-16-a-look-inside-an-api-compatible-rewrite-of-our-frontend-ui-library/). (Spoiler: we rewrote React!)
 
@@ -105,7 +105,7 @@ This demo provides an early peek at the types of problems async rendering can so
 
 We think async rendering is a big deal, and represents the future of React. To make migration to v16.0 as smooth as possible, we're not enabling any async features yet, but we're excited to start rolling them out in the coming months. Stay tuned!
 
-## Installation
+## Installation {#installation}
 
 React v16.0.0 is available on the npm registry.
 
@@ -130,18 +130,18 @@ We also provide UMD builds of React via a CDN:
 
 Refer to the documentation for [detailed installation instructions](/docs/installation.html).
 
-## Upgrading
+## Upgrading {#upgrading}
 
 Although React 16 includes significant internal changes, in terms of upgrading, you can think of this like any other major React release. We've been serving React 16 to Facebook and Messenger.com users since earlier this year, and we released several beta and release candidate versions to flush out additional issues. With minor exceptions, **if your app runs in 15.6 without any warnings, it should work in 16.**
 
 For deprecations listed in [packaging](#packaging) below, codemods are provided to automatically transform your deprecated code.
 See the [15.5.0](/blog/2017/04/07/react-v15.5.0.html) blog post for more information, or browse the codemods in the [react-codemod](https://github.com/reactjs/react-codemod) project.
 
-### New deprecations
+### New deprecations {#new-deprecations}
 
 Hydrating a server-rendered container now has an explicit API. If you're reviving server-rendered HTML, use [`ReactDOM.hydrate`](/docs/react-dom.html#hydrate) instead of `ReactDOM.render`. Keep using `ReactDOM.render` if you're just doing client-side rendering.
 
-### React Addons
+### React Addons {#react-addons}
 
 As previously announced, we've [discontinued support for React Addons](/blog/2017/04/07/react-v15.5.0.html#discontinuing-support-for-react-addons). We expect the latest version of each addon (except `react-addons-perf`; see below) to work for the foreseeable future, but we won't publish additional updates.
 
@@ -149,7 +149,7 @@ Refer to the previous announcement for [suggestions on how to migrate](/blog/201
 
 `react-addons-perf` no longer works at all in React 16. It's likely that we'll release a new version of this tool in the future. In the meantime, you can [use your browser's performance tools to profile React components](/docs/optimizing-performance.html#profiling-components-with-the-chrome-performance-tab).
 
-### Breaking changes
+### Breaking changes {#breaking-changes}
 
 React 16 includes a number of small breaking changes. These only affect uncommon use cases and we don't expect them to break most apps.
 
@@ -167,7 +167,7 @@ React 16 includes a number of small breaking changes. These only affect uncommon
 * Shallow renderer does not implement `unstable_batchedUpdates` anymore.
 * `ReactDOM.unstable_batchedUpdates` now only takes one extra argument after the callback.
 
-### Packaging
+### Packaging {#packaging}
 
 * There is no `react/lib/*` and `react-dom/lib/*` anymore. Even in CommonJS environments, React and ReactDOM are precompiled to single files (“flat bundles”). If you previously relied on undocumented React internals, and they don’t work anymore, let us know about your specific case in a new issue, and we’ll try to figure out a migration strategy for you.
 * There is no `react-with-addons.js` build anymore. All compatible addons are published separately on npm, and have single-file browser versions if you need them.
@@ -178,7 +178,7 @@ React 16 includes a number of small breaking changes. These only affect uncommon
     * `react-dom/dist/react-dom.js` → `react-dom/umd/react-dom.development.js`
     * `react-dom/dist/react-dom.min`.js → `react-dom/umd/react-dom.production.min.js`
 
-## JavaScript Environment Requirements
+## JavaScript Environment Requirements {#javascript-environment-requirements}
 
 React 16 depends on the collection types [Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) and [Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set). If you support older browsers and devices which may not yet provide these natively (e.g. IE < 11), consider including a global polyfill in your bundled application, such as [core-js](https://github.com/zloirock/core-js) or [babel-polyfill](https://babeljs.io/docs/usage/polyfill/).
 
@@ -204,7 +204,7 @@ You can use the [raf](https://www.npmjs.com/package/raf) package to shim `reques
 import 'raf/polyfill';
 ```
 
-## Acknowledgments
+## Acknowledgments {#acknowledgments}
 
 As always, this release would not have been possible without our open source contributors. Thanks to everyone who filed bugs, opened PRs, responded to issues, wrote documentation, and more!
 
diff --git a/content/blog/2017-11-28-react-v16.2.0-fragment-support.md b/content/blog/2017-11-28-react-v16.2.0-fragment-support.md
index 3d612d67aa..a8db2b0bd7 100644
--- a/content/blog/2017-11-28-react-v16.2.0-fragment-support.md
+++ b/content/blog/2017-11-28-react-v16.2.0-fragment-support.md
@@ -21,7 +21,7 @@ render() {
 
 This exciting new feature is made possible by additions to both React and JSX.
 
-## What Are Fragments?
+## What Are Fragments? {#what-are-fragments}
 
 A common pattern is for a component to return a list of children. Take this example HTML:
 
@@ -107,7 +107,7 @@ const Fragment = React.Fragment;
 </React.Fragment>
 ```
 
-## JSX Fragment Syntax
+## JSX Fragment Syntax {#jsx-fragment-syntax}
 
 Fragments are a common pattern in our codebases at Facebook. We anticipate they'll be widely adopted by other teams, too. To make the authoring experience as convenient as possible, we're adding syntactical support for fragments to JSX:
 
@@ -129,7 +129,7 @@ In React, this desugars to a `<React.Fragment/>` element, as in the example from
 
 Fragment syntax in JSX was inspired by prior art such as the `XMLList() <></>` constructor in [E4X](https://developer.mozilla.org/en-US/docs/Archive/Web/E4X/E4X_for_templating). Using a pair of empty tags is meant to represent the idea it won't add an actual element to the DOM.
 
-### Keyed Fragments
+### Keyed Fragments {#keyed-fragments}
 
 Note that the `<></>` syntax does not accept attributes, including keys.
 
@@ -153,19 +153,19 @@ function Glossary(props) {
 
 `key` is the only attribute that can be passed to `Fragment`. In the future, we may add support for additional attributes, such as event handlers.
 
-### Live Demo
+### Live Demo {#live-demo}
 
 You can experiment with JSX fragment syntax with this [CodePen](https://codepen.io/reactjs/pen/VrEbjE?editors=1000).
 
-## Support for Fragment Syntax
+## Support for Fragment Syntax {#support-for-fragment-syntax}
 
 Support for fragment syntax in JSX will vary depending on the tools you use to build your app. Please be patient as the JSX community works to adopt the new syntax. We've been working closely with maintainers of the most popular projects:
 
-### Create React App
+### Create React App {#create-react-app}
 
 Experimental support for fragment syntax will be added to Create React App within the next few days. A stable release may take a bit longer as we await adoption by upstream projects.
 
-### Babel
+### Babel {#babel}
 
 Support for JSX fragments is available in [Babel v7.0.0-beta.31](https://github.com/babel/babel/releases/tag/v7.0.0-beta.31) and above! If you are already on Babel 7, simply update to the latest Babel and plugin transform:
 
@@ -189,15 +189,15 @@ Note that Babel 7 is technically still in beta, but a [stable release is coming
 
 Unfortunately, support for Babel 6.x is not available, and there are currently no plans to backport.
 
-#### Babel with Webpack (babel-loader)
+#### Babel with Webpack (babel-loader) {#babel-with-webpack-babel-loader}
 
 If you are using Babel with [Webpack](https://webpack.js.org/), no additional steps are needed because [babel-loader](https://github.com/babel/babel-loader) will use your peer-installed version of Babel.
 
-#### Babel with Other Frameworks
+#### Babel with Other Frameworks {#babel-with-other-frameworks}
 
 If you use JSX with a non-React framework like Inferno or Preact, there is a [pragma option available in babel-plugin-transform-react-jsx](https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-react-jsx#pragmafrag) that configures the Babel compiler to de-sugar the `<></>` syntax to a custom identifier.
 
-### TypeScript
+### TypeScript {#typescript}
 
 TypeScript has full support for fragment syntax! Please upgrade to [version 2.6.2](https://github.com/Microsoft/TypeScript/releases/tag/v2.6.2). (Note that this is important even if you are already on version 2.6.1, since support was added as patch release in 2.6.2.)
 
@@ -210,7 +210,7 @@ yarn upgrade typescript
 npm update typescript
 ```
 
-### Flow
+### Flow {#flow}
 
 [Flow](https://flow.org/) support for JSX fragments is available starting in [version 0.59](https://github.com/facebook/flow/releases/tag/v0.59.0)! Simply run
 
@@ -223,11 +223,11 @@ npm update flow-bin
 
 to update Flow to the latest version.
 
-### Prettier
+### Prettier {#prettier}
 
 [Prettier](https://github.com/prettier/prettier) added support for fragments in their [1.9 release](https://prettier.io/blog/2017/12/05/1.9.0.html#jsx-fragment-syntax-3237-https-githubcom-prettier-prettier-pull-3237-by-duailibe-https-githubcom-duailibe).
 
-### ESLint
+### ESLint {#eslint}
 
 JSX Fragments are supported by [ESLint](https://eslint.org/) 3.x when it is used together with [babel-eslint](https://github.com/babel/babel-eslint):
 
@@ -257,19 +257,19 @@ That's it!
 
 Note that `babel-eslint` is not officially supported by ESLint. We'll be looking into adding support for fragments to ESLint 4.x itself in the coming weeks (see [issue #9662](https://github.com/eslint/eslint/issues/9662)).
 
-### Editor Support
+### Editor Support {#editor-support}
 
 It may take a while for fragment syntax to be supported in your text editor. Please be patient as the community works to adopt the latest changes. In the meantime, you may see errors or inconsistent highlighting if your editor does not yet support fragment syntax. Generally, these errors can be safely ignored.
 
-#### TypeScript Editor Support
+#### TypeScript Editor Support {#typescript-editor-support}
 
 If you're a TypeScript user -- great news! Editor support for JSX fragments is already available in [Visual Studio 2015](https://www.microsoft.com/en-us/download/details.aspx?id=48593), [Visual Studio 2017](https://www.microsoft.com/en-us/download/details.aspx?id=55258), [Visual Studio Code](https://code.visualstudio.com/updates/v1_19#_jsx-fragment-syntax) and [Sublime Text via Package Control](https://packagecontrol.io/packages/TypeScript).
 
-### Other Tools
+### Other Tools {#other-tools}
 
 For other tools, please check with the corresponding documentation to check if there is support available. However, if you're blocked by your tooling, you can always start with using the `<Fragment>` component and perform a codemod later to replace it with the shorthand syntax when the appropriate support is available.
 
-## Installation
+## Installation {#installation}
 
 React v16.2.0 is available on the npm registry.
 
@@ -294,31 +294,31 @@ We also provide UMD builds of React via a CDN:
 
 Refer to the documentation for [detailed installation instructions](/docs/installation.html).
 
-## Changelog
+## Changelog {#changelog}
 
-### React
+### React {#react}
 
 * Add `Fragment` as named export to React. ([@clemmy](https://github.com/clemmy) in [#10783](https://github.com/facebook/react/pull/10783))
 * Support experimental Call/Return types in `React.Children` utilities. ([@MatteoVH](https://github.com/MatteoVH) in [#11422](https://github.com/facebook/react/pull/11422))
 
-### React DOM
+### React DOM {#react-dom}
 
 * Fix radio buttons not getting checked when using multiple lists of radios. ([@landvibe](https://github.com/landvibe) in [#11227](https://github.com/facebook/react/pull/11227))
 * Fix radio buttons not receiving the `onChange` event in some cases. ([@jquense](https://github.com/jquense) in [#11028](https://github.com/facebook/react/pull/11028))
 
-### React Test Renderer
+### React Test Renderer {#react-test-renderer}
 
 * Fix `setState()` callback firing too early when called from `componentWillMount`. ([@accordeiro](https://github.com/accordeiro) in [#11507](https://github.com/facebook/react/pull/11507))
 
-### React Reconciler
+### React Reconciler {#react-reconciler}
 
 * Expose `react-reconciler/reflection` with utilities useful to custom renderers. ([@rivenhk](https://github.com/rivenhk) in [#11683](https://github.com/facebook/react/pull/11683))
 
-### Internal Changes
+### Internal Changes {#internal-changes}
 
 * Many tests were rewritten against the public API. Big thanks to [everyone who contributed](https://github.com/facebook/react/issues/11299)!
 
-## Acknowledgments
+## Acknowledgments {#acknowledgments}
 
 This release was made possible by our open source contributors. A big thanks to everyone who filed issues, contributed to syntax discussions, reviewed pull requests, added support for JSX fragments in third party libraries, and more!
 
diff --git a/content/blog/2017-12-07-introducing-the-react-rfc-process.md b/content/blog/2017-12-07-introducing-the-react-rfc-process.md
index 595b7f37c9..349b0e5d67 100644
--- a/content/blog/2017-12-07-introducing-the-react-rfc-process.md
+++ b/content/blog/2017-12-07-introducing-the-react-rfc-process.md
@@ -15,13 +15,13 @@ Inspired by [Yarn](https://github.com/yarnpkg/rfcs), [Ember](https://github.com/
 
 RFCs are accepted when they are approved for implementation in React. A more thorough description of the process is available in the repository's [README](https://github.com/reactjs/rfcs/blob/master/README.md). The exact details may be refined in the future.
 
-## Who Can Submit RFCs?
+## Who Can Submit RFCs? {#who-can-submit-rfcs}
 
 Anyone! No knowledge of React's internals is required, nor are you expected to implement the proposal yourself.
 
 As with our other repositories, we do ask that you complete a [Contributor License Agreement](https://github.com/reactjs/rfcs#contributor-license-agreement-cla) before we can accept your PR.
 
-## What Types of Changes Should Be Submitted As RFCs?
+## What Types of Changes Should Be Submitted As RFCs? {#what-types-of-changes-should-be-submitted-as-rfcs}
 
 Generally, any idea that would benefit from additional review or design before being implemented is a good candidate for an RFC. As a rule of thumb, this means any proposal that adds, changes, or removes a React API.
 
@@ -33,7 +33,7 @@ We now have several repositories where you can submit contributions to React:
 - **Website and documentation**: [reactjs/reactjs.org](https://github.com/reactjs/reactjs.org)
 - **Ideas for changes that need additional review before being implemented**: [reactjs/rfcs](https://github.com/reactjs/rfcs)
 
-## RFC for A New Context API
+## RFC for A New Context API {#rfc-for-a-new-context-api}
 
 Coinciding with the launch of our RFC process, we've submitted a [proposal for a new version of context](https://github.com/reactjs/rfcs/pull/2). The proposal has already received many valuable comments from the community that we will incorporate into the design of the new API.
 
diff --git a/content/blog/2017-12-15-improving-the-repository-infrastructure.md b/content/blog/2017-12-15-improving-the-repository-infrastructure.md
index 938a530570..ae3cad65ce 100644
--- a/content/blog/2017-12-15-improving-the-repository-infrastructure.md
+++ b/content/blog/2017-12-15-improving-the-repository-infrastructure.md
@@ -7,7 +7,7 @@ As we worked on [React 16](/blog/2017/09/26/react-v16.0.html), we revamped the f
 
 While these changes helped us make React better, they don't affect most React users directly. However, we hope that blogging about them might help other library authors solve similar problems. Our contributors might also find these notes helpful!
 
-## Formatting Code with Prettier
+## Formatting Code with Prettier {#formatting-code-with-prettier}
 
 React was one of the first large repositories to [fully embrace](https://github.com/facebook/react/pull/9101) opinionated automatic code formatting with [Prettier](https://prettier.io/). Our current Prettier setup consists of:
 
@@ -16,11 +16,11 @@ React was one of the first large repositories to [fully embrace](https://github.
 
 Some team members have also set up the [editor integrations](https://prettier.io/docs/en/editors.html). Our experience with Prettier has been fantastic, and we recommend it to any team that writes JavaScript.
 
-## Restructuring the Monorepo
+## Restructuring the Monorepo {#restructuring-the-monorepo}
 
 Ever since React was split into packages, it has been a [monorepo](https://danluu.com/monorepo/): a set of packages under the umbrella of a single repository. This made it easier to coordinate changes and share the tooling, but our folder structure was deeply nested and difficult to understand. It was not clear which files belonged to which package. After releasing React 16, we've decided to completely reorganize the repository structure. Here is how we did it.
 
-### Migrating to Yarn Workspaces
+### Migrating to Yarn Workspaces {#migrating-to-yarn-workspaces}
 
 The Yarn package manager [introduced a feature called Workspaces](https://yarnpkg.com/blog/2017/08/02/introducing-workspaces/) a few months ago. This feature lets you tell Yarn where your monorepo's packages are located in the source tree. Every time you run `yarn`, in addition to installing your dependencies it also sets up the symlinks that point from your project's `node_modules` to the source folders of your packages.
 
@@ -32,7 +32,7 @@ Each package is structured in a similar way. For every public API entry point su
 
 Not all packages have to be published on npm. For example, we keep some utilities that are tiny enough and can be safely duplicated in a [pseudo-package called `shared`](https://github.com/facebook/react/tree/cc52e06b490e0dc2482b345aa5d0d65fae931095/packages/shared). Our bundler is configured to [only treat `dependencies` declared from `package.json` as externals](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/rollup/build.js#L326-L329) so it happily bundles the `shared` code into `react` and `react-dom` without leaving any references to `shared/` in the build artifacts. So you can use Yarn Workspaces even if you don't plan to publish actual npm packages!
 
-### Removing the Custom Module System
+### Removing the Custom Module System {#removing-the-custom-module-system}
 
 In the past, we used a non-standard module system called "Haste" that lets you import any file from any other file by its unique `@providesModule` directive no matter where it is in the tree. It neatly avoids the problem of deep relative imports with paths like `../../../../` and is great for the product code. However, this makes it hard to understand the dependencies between packages. We also had to resort to hacks to make it work with different tools.
 
@@ -55,7 +55,7 @@ This way, the relative paths can only contain one `./` or `../` followed by the
 
 In practice, we still have [some cross-package "internal" imports](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/packages/react-dom/src/client/ReactDOMFiberComponent.js#L10-L11) that violate this principle, but they're explicit, and we plan to gradually get rid of them.
 
-## Compiling Flat Bundles
+## Compiling Flat Bundles {#compiling-flat-bundles}
 
 Historically, React was distributed in two different formats: as a single-file build that you can add as a `<script>` tag in the browser, and as a collection of CommonJS modules that you can bundle with a tool like webpack or Browserify. 
 
@@ -89,7 +89,7 @@ For example, [`react.development.js`](https://unpkg.com/react@16/cjs/react.devel
 
 Note how this is essentially the same strategy that we've been using for the single-file browser builds (which now reside in the [`umd` directory](https://unpkg.com/react@16/umd/), short for [Universal Module Definition](https://www.davidbcalhoun.com/2014/what-is-amd-commonjs-and-umd/)). Now we just apply the same strategy to the CommonJS builds as well.
 
-### Migrating to Rollup
+### Migrating to Rollup {#migrating-to-rollup}
 
 Just compiling CommonJS modules into single-file bundles doesn't solve all of the above problems. The really significant wins came from [migrating our build system](https://github.com/facebook/react/pull/9327) from Browserify to [Rollup](https://rollupjs.org/).
 
@@ -99,7 +99,7 @@ Rollup currently doesn't support some features that are important to application
 
 You can find our Rollup build configuration [here](https://github.com/facebook/react/blob/8ec146c38ee4f4c84b6ecf59f52de3371224e8bd/scripts/rollup/build.js#L336-L362), with a [list of plugins we currently use](https://github.com/facebook/react/blob/8ec146c38ee4f4c84b6ecf59f52de3371224e8bd/scripts/rollup/build.js#L196-L273).
 
-### Migrating to Google Closure Compiler
+### Migrating to Google Closure Compiler {#migrating-to-google-closure-compiler}
 
 After migrating to flat bundles, we [started](https://github.com/facebook/react/pull/10236) using [the JavaScript version of the Google Closure Compiler](https://github.com/google/closure-compiler-js) in its "simple" mode. In our experience, even with the advanced optimizations disabled, it still provided a significant advantage over Uglify, as it was able to better eliminate dead code and automatically inline small functions when appropriate.
 
@@ -107,7 +107,7 @@ At first, we could only use Google Closure Compiler for the React bundles we shi
 
 Currently, all production React bundles [run through Google Closure Compiler in simple mode](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/rollup/build.js#L235-L248), and we may look into enabling advanced optimizations in the future.
 
-### Protecting Against Weak Dead Code Elimination
+### Protecting Against Weak Dead Code Elimination {#protecting-against-weak-dead-code-elimination}
 
 While we use an efficient [dead code elimination](https://en.wikipedia.org/wiki/Dead_code_elimination) solution in React itself, we can't make a lot of assumptions about the tools used by the React consumers.
 
@@ -129,7 +129,7 @@ if ("production" !== "production") {
 
 However, if the bundler is misconfigured, you can accidentally ship development code into production. We can't completely prevent this, but we took a few steps to mitigate the common cases when it happens.
 
-#### Protecting Against Late Envification
+#### Protecting Against Late Envification {#protecting-against-late-envification}
 
 As mentioned above, our entry points now look like this:
 
@@ -161,7 +161,7 @@ This way, even if the application bundle includes both the development and the p
 
 The additional [IIFE](https://en.wikipedia.org/wiki/Immediately-invoked_function_expression) wrapper is necessary because some declarations (e.g. functions) can't be placed inside an `if` statement in JavaScript.
 
-#### Detecting Misconfigured Dead Code Elimination
+#### Detecting Misconfigured Dead Code Elimination {#detecting-misconfigured-dead-code-elimination}
 
 Even though [the situation is changing](https://twitter.com/iamakulov/status/941336777188696066), many popular bundlers don't yet force the users to specify the development or production mode. In this case `process.env.NODE_ENV` is typically provided by a runtime polyfill, but the dead code elimination doesn't work.
 
@@ -179,11 +179,11 @@ We can write a function that contains a [development-only branch](https://github
 
 We recognize this approach is somewhat fragile. The `toString()` method is not reliable and may change its behavior in future browser versions. This is why we put that logic into React DevTools itself rather than into React. This allows us to remove it later if it becomes problematic. We also warn only if we *found* the special string literal rather than if we *didn't* find it. This way, if the `toString()` output becomes opaque, or is overridden, the warning just won't fire.
 
-## Catching Mistakes Early
+## Catching Mistakes Early {#catching-mistakes-early}
 
 We want to catch bugs as early as possible. However, even with our extensive test coverage, occasionally we make a blunder. We made several changes to our build and test infrastructure this year to make it harder to mess up.
 
-### Migrating to ES Modules
+### Migrating to ES Modules {#migrating-to-es-modules}
 
 With the CommonJS `require()` and `module.exports`, it is easy to import a function that doesn't really exist, and not realize that until you call it. However, tools like Rollup that natively support [`import`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import) and [`export`](https://developer.mozilla.org/en-US/docs/web/javascript/reference/statements/export) syntax fail the build if you mistype a named import. After releasing React 16, [we have converted the entire React source code](https://github.com/facebook/react/pull/11389) to the ES Modules syntax.
 
@@ -191,13 +191,13 @@ Not only did this provide some extra protection, but it also helped improve the
 
 For now, have decided to only convert the source code to ES Modules, but not the tests. We use powerful utilities like `jest.resetModules()` and want to retain tighter control over when the modules get initialized in tests. In order to consume ES Modules from our tests, we enabled the [Babel CommonJS transform](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/jest/preprocessor.js#L28-L29), but only for the test environment.
 
-### Running Tests in Production Mode
+### Running Tests in Production Mode {#running-tests-in-production-mode}
 
 Historically, we've been running all tests in a development environment. This let us assert on the warning messages produced by React, and seemed to make general sense. However, even though we try to keep the differences between the development and production code paths minimal, occasionally we would make a mistake in production-only code branches that weren't covered by tests, and cause an issue at Facebook.
 
 To solve this problem, we have added a new [`yarn test-prod`](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/package.json#L110) command that runs on CI for every pull request, and [executes all React test cases in the production mode](https://github.com/facebook/react/pull/11616). We wrapped any assertions about warning messages into development-only conditional blocks in all tests so that they can still check the rest of the expected behavior in both environments. Since we have a custom Babel transform that replaces production error messages with the [error codes](/blog/2016/07/11/introducing-reacts-error-code-system.html), we also added a [reverse transformation](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/jest/setupTests.js#L91-L126) as part of the production test run.
 
-### Using Public API in Tests
+### Using Public API in Tests {#using-public-api-in-tests}
 
 When we were [rewriting the React reconciler](https://code.facebook.com/posts/1716776591680069/react-16-a-look-inside-an-api-compatible-rewrite-of-our-frontend-ui-library/), we recognized the importance of writing tests against the public API instead of internal modules. If the test is written against the public API, it is clear what is being tested from the user's perspective, and you can run it even if you rewrite the implementation from scratch.
 
@@ -205,7 +205,7 @@ We reached out to the wonderful React community [asking for help](https://github
 
 We would like to give our deepest thanks to [everyone who contributed to this effort](https://github.com/facebook/react/issues?q=is%3Apr+11299+is%3Aclosed).
 
-### Running Tests on Compiled Bundles
+### Running Tests on Compiled Bundles {#running-tests-on-compiled-bundles}
 
 There is also one more benefit to writing tests against the public API: now we can [run them against the compiled bundles](https://github.com/facebook/react/pull/11633).
 
@@ -221,17 +221,17 @@ There are still some test files that we intentionally don't run against the bund
 
 Currently, over 93% out of 2,650 React tests run against the compiled bundles.
 
-### Linting Compiled Bundles
+### Linting Compiled Bundles {#linting-compiled-bundles}
 
 In addition to linting our source code, we run a much more limited set of lint rules (really, [just two of them](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/rollup/validate/eslintrc.cjs.js#L26-L27)) on the compiled bundles. This gives us an extra layer of protection against regressions in the underlying tools and [ensures](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/rollup/validate/eslintrc.cjs.js#L22) that the bundles don't use any language features that aren't supported by older browsers.
 
-### Simulating Package Publishing
+### Simulating Package Publishing {#simulating-package-publishing}
 
 Even running the tests on the built packages is not enough to avoid shipping a broken update. For example, we use the `files` field in our `package.json` files to specify a whitelist of folders and files that should be published on npm. However, it is easy to add a new entry point to a package but forget to add it to the whitelist. Even the bundle tests would pass, but after publishing the new entry point would be missing.
 
 To avoid situations like this, we are now simulating the npm publish by [running `npm pack` and then immediately unpacking the archive](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/rollup/packaging.js#L129-L134) after the build. Just like `npm publish`, this command filters out anything that isn't in the `files` whitelist. With this approach, if we were to forget adding an entry point to the list, it would be missing in the build folder, and the bundle tests relying on it would fail.
 
-### Creating Manual Test Fixtures
+### Creating Manual Test Fixtures {#creating-manual-test-fixtures}
 
 Our unit tests run only in the Node environment, but not in the browsers. This was an intentional decision because browser-based testing tools were flaky in our experience, and didn't catch many issues anyway.
 
@@ -255,7 +255,7 @@ In some cases, a change proved to be so complex that it necessitated a standalon
 
 Going through the fixtures is still a lot of work, and we are considering automating some of it. Still, the fixture app is invaluable even as documentation for the existing behavior and all the edge cases and browser bugs that React currently handles. Having it gives us confidence in making significant changes to the logic without breaking important use cases. Another improvement we're considering is to have a GitHub bot build and deploy the fixtures automatically for every pull request that touches the relevant files so anyone can help with browser testing.
 
-### Preventing Infinite Loops
+### Preventing Infinite Loops {#preventing-infinite-loops}
 
 The React 16 codebase contains many `while` loops. They let us avoid the dreaded deep stack traces that occurred with earlier versions of React, but can make development of React really difficult. Every time there is a mistake in an exit condition our tests would just hang, and it took a while to figure out which of the loops is causing the issue.
 
@@ -263,11 +263,11 @@ Inspired by the [strategy adopted by Repl.it](https://repl.it/site/blog/infinite
 
 This approach has a pitfall. If an error thrown from the Babel plugin gets caught and ignored up the call stack, the test will pass even though it has an infinite loop. This is really, really bad. To solve this problem, we [set a global field](https://github.com/facebook/react/blob/d906de7f602df810c38aa622c83023228b047db6/scripts/babel/transform-prevent-infinite-loops.js#L26-L30) before throwing the error. Then, after every test run, we [rethrow that error if the global field has been set](https://github.com/facebook/react/blob/d906de7f602df810c38aa622c83023228b047db6/scripts/jest/setupTests.js#L42-L56). This way any infinite loop will cause a test failure, no matter whether the error from the Babel plugin was caught or not.
 
-## Customizing the Build
+## Customizing the Build {#customizing-the-build}
 
 There were a few things that we had to fine-tune after introducing our new build process. It took us a while to figure them out, but we're moderately happy with the solutions that we arrived at.
 
-### Dead Code Elimination
+### Dead Code Elimination {#dead-code-elimination}
 
 The combination of Rollup and Google Closure Compiler already gets us pretty far in terms of stripping development-only code in production bundles. We [replace](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/rollup/build.js#L223-L226) the `__DEV__` literal with a boolean constant during the build, and both Rollup together and Google Closure Compiler can strip out the `if (false) {}` code branches and even some more sophisticated patterns. However, there is one particularly nasty case:
 
@@ -285,7 +285,7 @@ To solve this problem, we use the [`treeshake.pureExternalModules` Rollup option
 
 When we optimize something, we need to ensure it doesn't regress in the future. What if somebody introduces a new development-only import of an external module, and not realize they also need to add it to `pureExternalModules`? Rollup prints a warning in such cases but we've [decided to fail the build completely](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/rollup/build.js#L395-L412) instead. This forces the person adding a new external development-only import to [explicitly specify whether it has side effects or not](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/scripts/rollup/modules.js#L10-L22) every time.
 
-### Forking Modules
+### Forking Modules {#forking-modules}
 
 In some cases, different bundles need to contain slightly different code. For example, React Native bundles have a different error handling mechanism that shows a redbox instead of printing a message to the console. However, it can be very inconvenient to thread these differences all the way through the calling modules.
 
@@ -330,7 +330,7 @@ This works by essentially forcing Flow to verify that two types are assignable t
 
 To conclude this section, it is important to note that you can't specify your own module forks if you consume React from npm. This is intentional because none of these files are public API, and they are not covered by the [semver](https://semver.org/) guarantees. However, you are always welcome to build React from master or even fork it if you don't mind the instability and the risk of divergence. We hope that this writeup was still helpful in documenting one possible approach to targeting different environments from a single JavaScript library.
 
-### Tracking Bundle Size
+### Tracking Bundle Size {#tracking-bundle-size}
 
 As a final build step, we now [record build sizes for all bundles](https://github.com/facebook/react/blob/d906de7f602df810c38aa622c83023228b047db6/scripts/rollup/build.js#L264-L272) and write them to a file that [looks like this](https://github.com/facebook/react/blob/d906de7f602df810c38aa622c83023228b047db6/scripts/rollup/results.json). When you run `yarn build`, it prints a table with the results:
 
@@ -344,17 +344,17 @@ Keeping the file sizes committed for everyone to see was helpful for tracking si
 
 We haven't been entirely happy with this strategy because the JSON file often causes merge conflicts on larger branches. Updating it is also not currently enforced so it gets out of date. In the future, we're considering integrating a bot that would comment on pull requests with the size changes.
 
-## Simplifying the Release Process
+## Simplifying the Release Process {#simplifying-the-release-process}
 
 We like to release updates to the open source community often. Unfortunately, the old process of creating a release was slow and would typically take an entire day. After some changes to this process, we're now able to do a full release in less than an hour. Here's what we changed.
 
-### Branching Strategy
+### Branching Strategy {#branching-strategy}
 
 Most of the time spent in the old release process was due to our branching strategy. The `master` branch was assumed to be unstable and would often contain breaking changes. Releases were done from a `stable` branch, and changes were manually cherry-picked into this branch prior to a release. We had [tooling to help automate](https://github.com/facebook/react/pull/7330) some of this process, but it was still [pretty complicated to use](https://github.com/facebook/react/blob/b5a2a1349d6e804d534f673612357c0be7e1d701/scripts/release-manager/Readme.md).
 
 As of version 16, we now release from the `master` branch. Experimental features and breaking changes are allowed, but must be hidden behind [feature flags](https://github.com/facebook/react/blob/cc52e06b490e0dc2482b345aa5d0d65fae931095/packages/shared/ReactFeatureFlags.js) so they can be removed during the build process. The new flat bundles and dead code elimination make it possible for us to do this without fear of leaking unwanted code into open source builds.
 
-### Automated Scripts
+### Automated Scripts {#automated-scripts}
 
 After changing to a stable `master`, we created a new [release process checklist](https://github.com/facebook/react/issues/10620). Although much simpler than the previous process, this still involved dozens of steps and forgetting one could result in a broken release.
 
@@ -372,13 +372,13 @@ All that's left is to tag and publish the release to NPM using the _publish_ scr
 
 (You may have noticed a `--dry` flag in the screenshots above. This flag allows us to run a release, end-to-end, without actually publishing to NPM. This is useful when working on the release script itself.)
 
-## In Conclusion
+## In Conclusion {#in-conclusion}
 
 Did this post inspire you to try some of these ideas in your own projects? We certainly hope so! If you have other ideas about how React build, test, or contribution workflow could be improved, please let us know on [our issue tracker](https://github.com/facebook/react/issues).
 
 You can find the related issues by the [build infrastructure label](https://github.com/facebook/react/labels/Component%3A%20Build%20Infrastructure). These are often great first contribution opportunities!
 
-## Acknowledgements
+## Acknowledgements {#acknowledgements}
 
 We would like to thank:
 
diff --git a/content/blog/2018-03-01-sneak-peek-beyond-react-16.md b/content/blog/2018-03-01-sneak-peek-beyond-react-16.md
index 1ab9f4db7f..cc853aec60 100644
--- a/content/blog/2018-03-01-sneak-peek-beyond-react-16.md
+++ b/content/blog/2018-03-01-sneak-peek-beyond-react-16.md
@@ -13,7 +13,7 @@ Here's the video courtesy of JSConf Iceland:
 
 I think you'll enjoy the talk more if you stop reading here and just watch the video. If you don't have time to watch, a (very) brief summary follows.
 
-## About the Two Demos
+## About the Two Demos {#about-the-two-demos}
 
 On the first demo, Dan says: "We've built a generic way to ensure that high-priority updates don't get blocked by a low-priority update, called **time slicing**. If my device is fast enough, it feels almost like it's synchronous; if my device is slow, the app still feels responsive. It adapts to the device thanks to the [requestIdleCallback](https://developers.google.com/web/updates/2015/08/using-requestidlecallback) API. Notice that only the final state was displayed; the rendered screen is always consistent and we don't see visual artifacts of slow rendering causing a janky user experience."
 
diff --git a/content/blog/2018-03-27-update-on-async-rendering.md b/content/blog/2018-03-27-update-on-async-rendering.md
index f557e89c06..de19850eea 100644
--- a/content/blog/2018-03-27-update-on-async-rendering.md
+++ b/content/blog/2018-03-27-update-on-async-rendering.md
@@ -13,7 +13,7 @@ One of the biggest lessons we've learned is that some of our legacy component li
 
 These lifecycle methods have often been misunderstood and subtly misused; furthermore, we anticipate that their potential misuse may be more problematic with async rendering. Because of this, we will be adding an "UNSAFE_" prefix to these lifecycles in an upcoming release. (Here, "unsafe" refers not to security but instead conveys that code using these lifecycles will be more likely to have bugs in future versions of React, especially once async rendering is enabled.)
 
-## Gradual Migration Path
+## Gradual Migration Path {#gradual-migration-path}
 
 [React follows semantic versioning](/blog/2016/02/19/new-versioning-scheme.html), so this change will be gradual. Our current plan is:
 
@@ -27,7 +27,7 @@ We maintain over 50,000 React components at Facebook, and we don't plan to rewri
 
 ---
 
-## Migrating from Legacy Lifecycles
+## Migrating from Legacy Lifecycles {#migrating-from-legacy-lifecycles}
 
 If you'd like to start using the new component APIs introduced in React 16.3 (or if you're a maintainer looking to update your library in advance) here are a few examples that we hope will help you to start thinking about components a bit differently. Over time, we plan to add additional "recipes" to our documentation that show how to perform common tasks in a way that avoids the problematic lifecycles.
 
@@ -35,7 +35,7 @@ Before we begin, here's a quick overview of the lifecycle changes planned for ve
 * We are **adding the following lifecycle aliases**: `UNSAFE_componentWillMount`, `UNSAFE_componentWillReceiveProps`, and `UNSAFE_componentWillUpdate`. (Both the old lifecycle names and the new aliases will be supported.)
 * We are **introducing two new lifecycles**, static `getDerivedStateFromProps` and `getSnapshotBeforeUpdate`.
 
-### New lifecycle: `getDerivedStateFromProps`
+### New lifecycle: `getDerivedStateFromProps` {#new-lifecycle-getderivedstatefromprops}
 
 `embed:update-on-async-rendering/definition-getderivedstatefromprops.js`
 
@@ -47,7 +47,7 @@ Together with `componentDidUpdate`, this new lifecycle should cover all use case
 >
 >Both the older `componentWillReceiveProps` and the new `getDerivedStateFromProps` methods add significant complexity to components. This often leads to [bugs](/blog/2018/06/07/you-probably-dont-need-derived-state.html#common-bugs-when-using-derived-state). Consider **[simpler alternatives to derived state](/blog/2018/06/07/you-probably-dont-need-derived-state.html)** to make components predictable and maintainable.
 
-### New lifecycle: `getSnapshotBeforeUpdate`
+### New lifecycle: `getSnapshotBeforeUpdate` {#new-lifecycle-getsnapshotbeforeupdate}
 
 `embed:update-on-async-rendering/definition-getsnapshotbeforeupdate.js`
 
@@ -59,7 +59,7 @@ You can find their type signatures [in this gist](https://gist.github.com/gaearo
 
 We'll look at examples of how both of these lifecycles can be used below.
 
-## Examples
+## Examples {#examples}
 - [Initializing state](#initializing-state)
 - [Fetching external data](#fetching-external-data)
 - [Adding event listeners (or subscriptions)](#adding-event-listeners-or-subscriptions)
@@ -73,7 +73,7 @@ We'll look at examples of how both of these lifecycles can be used below.
 >
 > For brevity, the examples below are written using the experimental class properties transform, but the same migration strategies apply without it.
 
-### Initializing state
+### Initializing state {#initializing-state}
 
 This example shows a component with `setState` calls inside of `componentWillMount`:
 `embed:update-on-async-rendering/initializing-state-before.js`
@@ -81,7 +81,7 @@ This example shows a component with `setState` calls inside of `componentWillMou
 The simplest refactor for this type of component is to move state initialization to the constructor or to a property initializer, like so:
 `embed:update-on-async-rendering/initializing-state-after.js`
 
-### Fetching external data
+### Fetching external data {#fetching-external-data}
 
 Here is an example of a component that uses `componentWillMount` to fetch external data:
 `embed:update-on-async-rendering/fetching-external-data-before.js`
@@ -101,7 +101,7 @@ There is a common misconception that fetching in `componentWillMount` lets you a
 >
 > When supporting server rendering, it's currently necessary to provide the data synchronously – `componentWillMount` was often used for this purpose but the constructor can be used as a replacement. The upcoming suspense APIs will make async data fetching cleanly possible for both client and server rendering.
 
-### Adding event listeners (or subscriptions)
+### Adding event listeners (or subscriptions) {#adding-event-listeners-or-subscriptions}
 
 Here is an example of a component that subscribes to an external event dispatcher when mounting:
 `embed:update-on-async-rendering/adding-event-listeners-before.js`
@@ -123,7 +123,7 @@ Rather than passing a subscribable `dataSource` prop as we did in the example ab
 > 
 > Libraries like Relay/Apollo should manage subscriptions manually with the same techniques as `create-subscription` uses under the hood (as referenced [here](https://gist.github.com/bvaughn/d569177d70b50b58bff69c3c4a5353f3)) in a way that is most optimized for their library usage.
 
-### Updating `state` based on `props`
+### Updating `state` based on `props` {#updating-state-based-on-props}
 
 >Note:
 >
@@ -147,7 +147,7 @@ You may wonder why we don't just pass previous props as a parameter to `getDeriv
 >
 > If you're writing a shared component, the [`react-lifecycles-compat`](https://github.com/reactjs/react-lifecycles-compat) polyfill enables the new `getDerivedStateFromProps` lifecycle to be used with older versions of React as well. [Learn more about how to use it below.](#open-source-project-maintainers)
 
-### Invoking external callbacks
+### Invoking external callbacks {#invoking-external-callbacks}
 
 Here is an example of a component that calls an external function when its internal state changes:
 `embed:update-on-async-rendering/invoking-external-callbacks-before.js`
@@ -157,7 +157,7 @@ Sometimes people use `componentWillUpdate` out of a misplaced fear that by the t
 Either way, it is unsafe to use `componentWillUpdate` for this purpose in async mode, because the external callback might get called multiple times for a single update. Instead, the `componentDidUpdate` lifecycle should be used since it is guaranteed to be invoked only once per update:
 `embed:update-on-async-rendering/invoking-external-callbacks-after.js`
 
-### Side effects on props change
+### Side effects on props change {#side-effects-on-props-change}
 
 Similar to the [example above](#invoking-external-callbacks), sometimes components have side effects when `props` change.
 
@@ -167,7 +167,7 @@ Like `componentWillUpdate`, `componentWillReceiveProps` might get called multipl
 
 `embed:update-on-async-rendering/side-effects-when-props-change-after.js`
 
-### Fetching external data when `props` change
+### Fetching external data when `props` change {#fetching-external-data-when-props-change}
 
 Here is an example of a component that fetches external data based on `props` values:
 `embed:update-on-async-rendering/updating-external-data-when-props-change-before.js`
@@ -179,7 +179,7 @@ The recommended upgrade path for this component is to move data updates into `co
 >
 > If you're using an HTTP library that supports cancellation, like [axios](https://www.npmjs.com/package/axios), then it's simple to cancel an in-progress request when unmounting. For native Promises, you can use an approach like [the one shown here](https://gist.github.com/bvaughn/982ab689a41097237f6e9860db7ca8d6).
 
-### Reading DOM properties before an update
+### Reading DOM properties before an update {#reading-dom-properties-before-an-update}
 
 Here is an example of a component that reads a property from the DOM before an update in order to maintain scroll position within a list:
 `embed:update-on-async-rendering/react-dom-properties-before-update-before.js`
@@ -196,11 +196,11 @@ The two lifecycles can be used together like this:
 >
 > If you're writing a shared component, the [`react-lifecycles-compat`](https://github.com/reactjs/react-lifecycles-compat) polyfill enables the new `getSnapshotBeforeUpdate` lifecycle to be used with older versions of React as well. [Learn more about how to use it below.](#open-source-project-maintainers)
 
-## Other scenarios
+## Other scenarios {#other-scenarios}
 
 While we tried to cover the most common use cases in this post, we recognize that we might have missed some of them. If you are using `componentWillMount`, `componentWillUpdate`, or `componentWillReceiveProps` in ways that aren't covered by this blog post, and aren't sure how to migrate off these legacy lifecycles, please [file a new issue against our documentation](https://github.com/reactjs/reactjs.org/issues/new) with your code examples and as much background information as you can provide. We will update this document with new alternative patterns as they come up.
 
-## Open source project maintainers
+## Open source project maintainers {#open-source-project-maintainers}
 
 Open source maintainers might be wondering what these changes mean for shared components. If you implement the above suggestions, what happens with components that depend on the new static `getDerivedStateFromProps` lifecycle? Do you also have to release a new major version and drop compatibility for React 16.2 and older?
 
diff --git a/content/blog/2018-03-29-react-v-16-3.md b/content/blog/2018-03-29-react-v-16-3.md
index 23ea0f54a5..9d43b68f6b 100644
--- a/content/blog/2018-03-29-react-v-16-3.md
+++ b/content/blog/2018-03-29-react-v-16-3.md
@@ -7,7 +7,7 @@ A few days ago, we [wrote a post about upcoming changes to our legacy lifecycle
 
 Read on to learn more about the release.
 
-## Official Context API
+## Official Context API {#official-context-api}
 
 For many years, React has offered an experimental API for context. Although it was a powerful tool, its use was discouraged because of inherent problems in the API, and because we always intended to replace the experimental API with a better one.
 
@@ -22,7 +22,7 @@ Here is an example illustrating how you might inject a "theme" using the new con
 
 [Learn more about the new context API here.](/docs/context.html)
 
-## `createRef` API
+## `createRef` API {#createref-api}
 
 Previously, React provided two ways of managing refs: the legacy string ref API and the callback API. Although the string ref API was the more convenient of the two, it had [several downsides](https://github.com/facebook/react/issues/1373) and so our official recommendation was to use the callback form instead.
 
@@ -37,7 +37,7 @@ Version 16.3 adds a new option for managing refs that offers the convenience of
 
 [Learn more about the new `createRef` API here.](/docs/refs-and-the-dom.html)
 
-## `forwardRef` API
+## `forwardRef` API {#forwardref-api}
 
 Generally, React components are declarative, but sometimes imperative access to the component instances and the underlying DOM nodes is necessary. This is common for use cases like managing focus, selection, or animations. React provides [refs](/docs/refs-and-the-dom.html) as a way to solve this problem. However, component encapsulation poses some challenges with refs.
 
@@ -53,7 +53,7 @@ Ref forwarding is not limited to "leaf" components that render DOM nodes. If you
 
 [Learn more about the forwardRef API here.](/docs/forwarding-refs.html)
 
-## Component Lifecycle Changes
+## Component Lifecycle Changes {#component-lifecycle-changes}
 
 React's class component API has been around for years with little change. However, as we add support for more advanced features (such as [error boundaries](/docs/react-component.html#componentdidcatch) and the upcoming [async rendering mode](/blog/2018/03/01/sneak-peek-beyond-react-16.html)) we stretch this model in ways that it was not originally intended.
 
@@ -75,7 +75,7 @@ In addition to deprecating unsafe lifecycles, we are also adding a couple of new
 
 [Learn more about these lifecycle changes here.](/blog/2018/03/27/update-on-async-rendering.html)
 
-## `StrictMode` Component
+## `StrictMode` Component {#strictmode-component}
 
 `StrictMode` is a tool for highlighting potential problems in an application. Like `Fragment`, `StrictMode` does not render any visible UI. It activates additional checks and warnings for its descendants.
 
diff --git a/content/blog/2018-05-23-react-v-16-4.md b/content/blog/2018-05-23-react-v-16-4.md
index b6bb523871..dd1edf4caf 100644
--- a/content/blog/2018-05-23-react-v-16-4.md
+++ b/content/blog/2018-05-23-react-v-16-4.md
@@ -7,7 +7,7 @@ The latest minor release adds support for an oft-requested feature: pointer even
 
 It also includes a bugfix for `getDerivedStateFromProps`. Check out the full [changelog](#changelog) below.
 
-## Pointer Events
+## Pointer Events {#pointer-events}
 
 The following event types are now available in React DOM:
 
@@ -28,19 +28,19 @@ Please note that these events will only work in browsers that support the [Point
 
 Huge thanks to [Philipp Spiess](https://github.com/philipp-spiess) for contributing this change!
 
-## Bugfix for `getDerivedStateFromProps`
+## Bugfix for `getDerivedStateFromProps` {#bugfix-for-getderivedstatefromprops}
 
 `getDerivedStateFromProps` is now called every time a component is rendered, regardless of the cause of the update. Previously, it was only called if the component was re-rendered by its parent, and would not fire as the result of a local `setState`. This was an oversight in the initial implementation that has now been corrected. The previous behavior was more similar to `componentWillReceiveProps`, but the improved behavior ensures compatibility with React's upcoming asynchronous rendering mode.
 
 **This bug fix will not affect most apps**, but it may cause issues with a small fraction of components. The rare cases where it does matter fall into one of two categories:
 
-### 1. Avoid Side Effects in `getDerivedStateFromProps`
+### 1. Avoid Side Effects in `getDerivedStateFromProps` {#1-avoid-side-effects-in-getderivedstatefromprops}
 
 Like the render method, `getDerivedStateFromProps` should be a pure function of props and state. Side effects in `getDerivedStateFromProps` were never supported, but since it now fires more often than it used to, the recent change may expose previously undiscovered bugs.
 
 Side effectful code should be moved to other methods: for example, Flux dispatches typically belong inside the originating event handler, and manual DOM mutations belong inside componentDidMount or componentDidUpdate. You can read more about this in our recent post about [preparing for asynchronous rendering](/blog/2018/03/27/update-on-async-rendering.html).
 
-### 2. Compare Incoming Props to Previous Props When Computing Controlled Values
+### 2. Compare Incoming Props to Previous Props When Computing Controlled Values {#2-compare-incoming-props-to-previous-props-when-computing-controlled-values}
 
 The following code assumes `getDerivedStateFromProps` only fires on prop changes:
 
@@ -78,7 +78,7 @@ static getDerivedStateFromProps(props, state) {
 
 However, **code that "mirrors" props in state usually contains bugs**, whether you use the newer `getDerivedStateFromProps` or the legacy `componentWillReceiveProps`. We published a follow-up blog post that explains these problems in more detail, and suggests [simpler solutions that don't involve `getDerivedStateFromProps()`](/blog/2018/06/07/you-probably-dont-need-derived-state.html).
 
-## Installation
+## Installation {#installation}
 
 React v16.4.0 is available on the npm registry.
 
@@ -103,13 +103,13 @@ We also provide UMD builds of React via a CDN:
 
 Refer to the documentation for [detailed installation instructions](/docs/installation.html).
 
-## Changelog
+## Changelog {#changelog}
 
-### React
+### React {#react}
 
 * Add a new [experimental](https://github.com/reactjs/rfcs/pull/51) `React.unstable_Profiler` component for measuring performance. ([@bvaughn](https://github.com/bvaughn) in [#12745](https://github.com/facebook/react/pull/12745))
 
-### React DOM
+### React DOM {#react-dom}
 
 * Add support for the Pointer Events specification. ([@philipp-spiess](https://github.com/philipp-spiess) in [#12507](https://github.com/facebook/react/pull/12507))
 * Properly call `getDerivedStateFromProps()` regardless of the reason for re-rendering. ([@acdlite](https://github.com/acdlite) in [#12600](https://github.com/facebook/react/pull/12600) and [#12802](https://github.com/facebook/react/pull/12802))
@@ -123,21 +123,21 @@ Refer to the documentation for [detailed installation instructions](/docs/instal
 * Improve how `forwardRef()` and context consumers are displayed in the component stack. ([@sophiebits](https://github.com/sophiebits) in [#12777](https://github.com/facebook/react/pull/12777))
 * Change internal event names. This can break third-party packages that rely on React internals in unsupported ways. ([@philipp-spiess](https://github.com/philipp-spiess) in [#12629](https://github.com/facebook/react/pull/12629))
 
-### React Test Renderer
+### React Test Renderer {#react-test-renderer}
 
 * Fix the `getDerivedStateFromProps()` support to match the new React DOM behavior. ([@koba04](https://github.com/koba04) in [#12676](https://github.com/facebook/react/pull/12676))
 * Fix a `testInstance.parent` crash when the parent is a fragment or another special node. ([@gaearon](https://github.com/gaearon) in [#12813](https://github.com/facebook/react/pull/12813))
 * `forwardRef()` components are now discoverable by the test renderer traversal methods. ([@gaearon](https://github.com/gaearon) in [#12725](https://github.com/facebook/react/pull/12725))
 * Shallow renderer now ignores `setState()` updaters that return `null` or `undefined`. ([@koba04](https://github.com/koba04) in [#12756](https://github.com/facebook/react/pull/12756))
 
-### React ART
+### React ART {#react-art}
 
 * Fix reading context provided from the tree managed by React DOM. ([@acdlite](https://github.com/acdlite) in [#12779](https://github.com/facebook/react/pull/12779))
 
-### React Call Return (Experimental)
+### React Call Return (Experimental) {#react-call-return-experimental}
 
 * This experiment was deleted because it was affecting the bundle size and the API wasn't good enough. It's likely to come back in the future in some other form. ([@gaearon](https://github.com/gaearon) in [#12820](https://github.com/facebook/react/pull/12820))
 
-### React Reconciler (Experimental)
+### React Reconciler (Experimental) {#react-reconciler-experimental}
 
 * The [new host config shape](https://github.com/facebook/react/blob/c601f7a64640290af85c9f0e33c78480656b46bc/packages/react-noop-renderer/src/createReactNoop.js#L82-L285) is flat and doesn't use nested objects. ([@gaearon](https://github.com/gaearon) in [#12792](https://github.com/facebook/react/pull/12792))
diff --git a/content/blog/2018-06-07-you-probably-dont-need-derived-state.md b/content/blog/2018-06-07-you-probably-dont-need-derived-state.md
index 6e71ef8384..7709054b8a 100644
--- a/content/blog/2018-06-07-you-probably-dont-need-derived-state.md
+++ b/content/blog/2018-06-07-you-probably-dont-need-derived-state.md
@@ -19,7 +19,7 @@ For a long time, the lifecycle `componentWillReceiveProps` was the only way to u
 * [Preferred solutions](#preferred-solutions)
 * [What about memoization?](#what-about-memoization)
 
-## When to Use Derived State
+## When to Use Derived State {#when-to-use-derived-state}
 
 `getDerivedStateFromProps` exists for only one purpose. It enables a component to update its internal state as the result of **changes in props**. Our previous blog post provided some examples, like [recording the current scroll direction based on a changing offset prop](/blog/2018/03/27/update-on-async-rendering.html#updating-state-based-on-props) or [loading external data specified by a source prop](/blog/2018/03/27/update-on-async-rendering.html#fetching-external-data-when-props-change).
 
@@ -28,7 +28,7 @@ We did not provide many examples, because as a general rule, **derived state sho
 * If you're using derived state to memoize some computation based only on the current props, you don't need derived state. See [What about memoization?](#what-about-memoization) below.
 * If you're updating derived state unconditionally or updating it whenever props and state don't match, your component likely resets its state too frequently. Read on for more details.
 
-## Common Bugs When Using Derived State
+## Common Bugs When Using Derived State {#common-bugs-when-using-derived-state}
 
 The terms ["controlled"](/docs/forms.html#controlled-components) and ["uncontrolled"](/docs/uncontrolled-components.html) usually refer to form inputs, but they can also describe where any component's data lives. Data passed in as props can be thought of as **controlled** (because the parent component _controls_ that data). Data that exists only in internal state can be thought of as **uncontrolled** (because the parent can't directly change it).
 
@@ -36,7 +36,7 @@ The most common mistake with derived state is mixing these two; when a derived s
 
 Problems arise when any of these constraints are changed. This typically comes in two forms. Let's take a look at both.
 
-### Anti-pattern: Unconditionally copying props to state
+### Anti-pattern: Unconditionally copying props to state {#anti-pattern-unconditionally-copying-props-to-state}
 
 A common misconception is that `getDerivedStateFromProps` and `componentWillReceiveProps` are only called when props "change". These lifecycles are called any time a parent component rerenders, regardless of whether the props are "different" from before. Because of this, it has always been unsafe to _unconditionally_ override state using either of these lifecycles. **Doing so will cause state updates to be lost.**
 
@@ -67,7 +67,7 @@ In this simple example, adding `shouldComponentUpdate` to rerender only when the
 
 Hopefully it's clear by now why **it is a bad idea to unconditionally copy props to state**. Before reviewing possible solutions, let's look at a related problematic pattern: what if we were to only update the state when the email prop changes?
 
-### Anti-pattern: Erasing state when props change
+### Anti-pattern: Erasing state when props change {#anti-pattern-erasing-state-when-props-change}
 
 Continuing the example above, we could avoid accidentally erasing state by only updating it when `props.email` changes:
 
@@ -100,9 +100,9 @@ There is still a subtle problem. Imagine a password manager app using the above
 
 This design is fundamentally flawed, but it's also an easy mistake to make. ([I've made it myself!](https://twitter.com/brian_d_vaughn/status/959600888242307072)) Fortunately there are two alternatives that work better. The key to both is that **for any piece of data, you need to pick a single component that owns it as the source of truth, and avoid duplicating it in other components.** Let's take a look at each of the alternatives.
 
-## Preferred Solutions
+## Preferred Solutions {#preferred-solutions}
 
-### Recommendation: Fully controlled component
+### Recommendation: Fully controlled component {#recommendation-fully-controlled-component}
 
 One way to avoid the problems mentioned above is to remove state from our component entirely. If the email address only exists as a prop, then we don't have to worry about conflicts with state. We could even convert `EmailInput` to a lighter-weight function component:
 ```js
@@ -113,7 +113,7 @@ function EmailInput(props) {
 
 This approach simplifies the implementation of our component, but if we still want to store a draft value, the parent form component will now need to do that manually. ([Click here to see a demo of this pattern.](https://codesandbox.io/s/7154w1l551))
 
-### Recommendation: Fully uncontrolled component with a `key`
+### Recommendation: Fully uncontrolled component with a `key` {#recommendation-fully-uncontrolled-component-with-a-key}
 
 Another alternative would be for our component to fully own the "draft" email state. In that case, our component could still accept a prop for the _initial_ value, but it would ignore subsequent changes to that prop:
 
@@ -148,7 +148,7 @@ In most cases, this is the best way to handle state that needs to be reset.
 >
 > While this may sound slow, the performance difference is usually insignificant. Using a key can even be faster if the components have heavy logic that runs on updates since diffing gets bypassed for that subtree.
 
-#### Alternative 1: Reset uncontrolled component with an ID prop
+#### Alternative 1: Reset uncontrolled component with an ID prop {#alternative-1-reset-uncontrolled-component-with-an-id-prop}
 
 If `key` doesn't work for some reason (perhaps the component is very expensive to initialize), a workable but cumbersome solution would be to watch for changes to "userID" in `getDerivedStateFromProps`:
 
@@ -182,7 +182,7 @@ This also provides the flexibility to only reset parts of our component's intern
 >
 > Even though the example above shows `getDerivedStateFromProps`, the same technique can be used with `componentWillReceiveProps`.
 
-#### Alternative 2: Reset uncontrolled component with an instance method
+#### Alternative 2: Reset uncontrolled component with an instance method {#alternative-2-reset-uncontrolled-component-with-an-instance-method}
 
 More rarely, you may need to reset state even if there's no appropriate ID to use as `key`. One solution is to reset the key to a random value or autoincrementing number each time you want to reset. One other viable alternative is to expose an instance method to imperatively reset the internal state:
 
@@ -206,7 +206,7 @@ Refs can be useful in certain cases like this one, but generally we recommend yo
 
 -----
 
-### Recap
+### Recap {#recap}
 
 To recap, when designing a component, it is important to decide whether its data will be controlled or uncontrolled.
 
@@ -217,7 +217,7 @@ For **uncontrolled** components, if you're trying to reset state when a particul
 * Alternative 1: To reset _only certain state fields_, watch for changes in a special property (e.g. `props.userID`).
 * Alternative 2: You can also consider fall back to an imperative instance method using refs.
 
-## What about memoization?
+## What about memoization? {#what-about-memoization}
 
 We've also seen derived state used to ensure an expensive value used in `render` is recomputed only when the inputs change. This technique is known as [memoization](https://en.wikipedia.org/wiki/Memoization).
 
@@ -340,7 +340,7 @@ When using memoization, remember a couple of constraints:
 1. Typically you'll want to use a memoization helper with a **limited cache size** in order to prevent memory leaks over time. (In the example above, we used `memoize-one` because it only caches the most recent arguments and result.)
 1. None of the implementations shown in this section will work if `props.list` is recreated each time the parent component renders. But in most cases, this setup is appropriate.
 
-## In closing
+## In closing {#in-closing}
 
 In real world applications, components often contain a mix of controlled and uncontrolled behaviors. This is okay! If each value has a clear source of truth, you can avoid the anti-patterns mentioned above.
 
diff --git a/content/blog/2018-08-01-react-v-16-4-2.md b/content/blog/2018-08-01-react-v-16-4-2.md
index 2ae8baf5eb..9514b2700d 100644
--- a/content/blog/2018-08-01-react-v-16-4-2.md
+++ b/content/blog/2018-08-01-react-v-16-4-2.md
@@ -5,7 +5,7 @@ author: [gaearon]
 
 We discovered a minor vulnerability that might affect some apps using ReactDOMServer. We are releasing a patch version for every affected React minor release so that you can upgrade with no friction. Read on for more details.
 
-## Short Description
+## Short Description {#short-description}
 
 Today, we are releasing a fix for a vulnerability we discovered in the `react-dom/server` implementation. It was introduced with the version 16.0.0 and has existed in all subsequent releases until today.
 
@@ -13,11 +13,11 @@ This vulnerability **can only affect some server-rendered React apps.** Purely c
 
 While we were investigating this vulnerability, we found similar vulnerabilities in a few other popular front-end libraries. We have coordinated this release together with [Vue](https://github.com/vuejs/vue/releases/tag/v2.5.17) and [Preact](https://github.com/developit/preact-render-to-string/releases/tag/3.7.1) releases fixing the same issue. The tracking number for this vulnerability is `CVE-2018-6341`.
 
-## Mitigation
+## Mitigation {#mitigation}
 
 **We have prepared a patch release with a fix for every affected minor version.**
 
-### 16.0.x
+### 16.0.x {#160x}
 
 If you're using `react-dom/server` with this version:
 
@@ -27,7 +27,7 @@ Update to this version instead:
 
 - `react-dom@16.0.1` **(contains the mitigation)**
 
-### 16.1.x
+### 16.1.x {#161x}
 
 If you're using `react-dom/server` with one of these versions:
 
@@ -38,7 +38,7 @@ Update to this version instead:
 
 - `react-dom@16.1.2` **(contains the mitigation)**
 
-### 16.2.x
+### 16.2.x {#162x}
 
 If you're using `react-dom/server` with this version:
 
@@ -48,7 +48,7 @@ Update to this version instead:
 
 - `react-dom@16.2.1` **(contains the mitigation)**
 
-### 16.3.x
+### 16.3.x {#163x}
 
 If you're using `react-dom/server` with one of these versions:
 
@@ -60,7 +60,7 @@ Update to this version instead:
 
 - `react-dom@16.3.3` **(contains the mitigation)**
 
-### 16.4.x
+### 16.4.x {#164x}
 
 If you're using `react-dom/server` with one of these versions:
 
@@ -75,7 +75,7 @@ If you're using a newer version of `react-dom`, no action is required.
 
 Note that only the `react-dom` package needs to be updated.
 
-## Detailed Description
+## Detailed Description {#detailed-description}
 
 Your app might be affected by this vulnerability only if both of these two conditions are true:
 
@@ -113,7 +113,7 @@ You would also see a warning about an invalid attribute name.
 
 Note that **we expect attribute names based on user input to be very rare in practice.** It doesn't serve any common practical use case, and has other potential security implications that React can't guard against.
 
-## Installation
+## Installation {#installation}
 
 React v16.4.2 is available on the npm registry.
 
@@ -138,9 +138,9 @@ We also provide UMD builds of React via a CDN:
 
 Refer to the documentation for [detailed installation instructions](/docs/installation.html).
 
-## Changelog
+## Changelog {#changelog}
 
-### React DOM Server
+### React DOM Server {#react-dom-server}
 
 * Fix a potential XSS vulnerability when the attacker controls an attribute name (`CVE-2018-6341`). This fix is available in the latest `react-dom@16.4.2`, as well as in previous affected minor versions: `react-dom@16.0.1`, `react-dom@16.1.2`, `react-dom@16.2.1`, and `react-dom@16.3.3`. ([@gaearon](https://github.com/gaearon) in [#13302](https://github.com/facebook/react/pull/13302))
 
diff --git a/content/blog/2018-09-10-introducing-the-react-profiler.md b/content/blog/2018-09-10-introducing-the-react-profiler.md
index d73131fcb0..725a22076b 100644
--- a/content/blog/2018-09-10-introducing-the-react-profiler.md
+++ b/content/blog/2018-09-10-introducing-the-react-profiler.md
@@ -20,7 +20,7 @@ This blog post covers the following topics:
   * [No timing data to display for the selected commit](#no-timing-data-to-display-for-the-selected-commit)
 * [Deep dive video](#deep-dive-video)
 
-## Profiling an application
+## Profiling an application {#profiling-an-application}
 
 DevTools will show a "Profiler" tab for applications that support the new profiling API:
 
@@ -45,9 +45,9 @@ When you are finished profiling, click the "Stop" button.
 Assuming your application rendered at least once while profiling, DevTools will show several ways to view the performance data.
 We'll [take a look at each of these below](#reading-performance-data).
 
-## Reading performance data
+## Reading performance data {#reading-performance-data}
 
-### Browsing commits
+### Browsing commits {#browsing-commits}
 Conceptually, React does work in two phases:
 
 * The **render** phase determines what changes need to be made to e.g. the DOM. During this phase, React calls `render` and then compares the result to the previous render.
@@ -64,7 +64,7 @@ You can click on a bar (or the left/right arrow buttons) to select a different
 The color and height of each bar corresponds to how long that commit took to render.
 (Taller, yellow bars took longer than shorter, blue bars.)
 
-### Filtering commits
+### Filtering commits {#filtering-commits}
 
 The longer you profile, the more times your application will render.
 In some cases you may end up with _too many commits_ to easily process.
@@ -73,7 +73,7 @@ Use it to specify a threshold and the profiler will hide all commits that were _
 
 ![Filtering commits by time](../images/blog/introducing-the-react-profiler/filtering-commits.gif)
 
-### Flame chart
+### Flame chart {#flame-chart}
 
 The flame chart view represents the state of your application for a particular commit.
 Each bar in the chart represents a React component (e.g. `App`, `Nav`).
@@ -111,7 +111,7 @@ In some cases, selecting a component and stepping between commits may also provi
 The above image shows that `state.scrollOffset` changed between commits.
 This is likely what caused the `List` component to re-render.
 
-### Ranked chart
+### Ranked chart {#ranked-chart}
 
 The ranked chart view represents a single commit.
 Each bar in the chart represents a React component (e.g. `App`, `Nav`).
@@ -126,7 +126,7 @@ The chart is ordered so that the components which took the longest to render are
 
 As with the flame chart, you can zoom in or out on a ranked chart by clicking on components.
 
-### Component chart
+### Component chart {#component-chart}
 
 Sometimes it's useful to see how many times a particular component rendered while you were profiling.
 The component chart provides this information in the form of a bar chart.
@@ -148,7 +148,7 @@ If the selected component did not render at all during the profiling session, th
 
 ![No render times for the selected component](../images/blog/introducing-the-react-profiler/no-render-times-for-selected-component.png)
 
-### Interactions
+### Interactions {#interactions}
 
 React recently added another [experimental API](https://fb.me/react-interaction-tracing) for tracing the _cause_ of an update.
 "Interactions" traced with this API will also be shown in the profiler:
@@ -169,9 +169,9 @@ You can navigate between interactions and commits by clicking on them:
 
 The tracing API is still new and we will cover it in more detail in a future blog post.
 
-## Troubleshooting
+## Troubleshooting {#troubleshooting}
 
-### No profiling data has been recorded for the selected root
+### No profiling data has been recorded for the selected root {#no-profiling-data-has-been-recorded-for-the-selected-root}
 
 If your application has multiple "roots", you may see the following message after profiling:
 ![No profiling data has been recorded for the selected root](../images/blog/introducing-the-react-profiler/no-profiler-data-multi-root.png)
@@ -181,14 +181,14 @@ In this case, try selecting a different root in that panel to view profiling inf
 
 ![Select a root in the "Elements" panel to view its performance data](../images/blog/introducing-the-react-profiler/select-a-root-to-view-profiling-data.gif)
 
-### No timing data to display for the selected commit
+### No timing data to display for the selected commit {#no-timing-data-to-display-for-the-selected-commit}
 
 Sometimes a commit may be so fast that `performance.now()` doesn't give DevTools any meaningful timing information.
 In this case, the following message will be shown:
 
 ![No timing data to display for the selected commit](../images/blog/introducing-the-react-profiler/no-timing-data-for-commit.png)
 
-## Deep dive video
+## Deep dive video {#deep-dive-video}
 
 The following video demonstrates how the React profiler can be used to detect and improve performance bottlenecks in an actual React application.
 
diff --git a/content/blog/2018-10-01-create-react-app-v2.md b/content/blog/2018-10-01-create-react-app-v2.md
index 164f76d7b8..31a7e16b90 100644
--- a/content/blog/2018-10-01-create-react-app-v2.md
+++ b/content/blog/2018-10-01-create-react-app-v2.md
@@ -15,7 +15,7 @@ Now that Create React App 2.0 is out of beta, let's see what's new and how you c
 >
 >Don't feel pressured to upgrade anything. If you're satisfied with the current feature set, its performance, and reliability, you can keep using the version you're currently at! It might also be a good idea to let the 2.0 release stabilize a little bit before switching to it in production.
 
-## What's New
+## What's New {#whats-new}
 
 Here's a short summary of what's new in this release:
 
@@ -34,13 +34,13 @@ Here's a short summary of what's new in this release:
 
 **All of these features work out of the box** -- to enable them, follow the below instructions.
 
-## Starting a Project with Create React App 2.0
+## Starting a Project with Create React App 2.0 {#starting-a-project-with-create-react-app-20}
 
 You don't need to update anything special. Starting from today, when you run `create-react-app` it will use the 2.0 version of the template by default. Have fun!
 
 If you want to **use the old 1.x template** for some reason, you can do that by passing `--scripts-version=react-scripts@1.x` as an argument to `create-react-app`.
 
-## Updating a Project to Create React App 2.0
+## Updating a Project to Create React App 2.0 {#updating-a-project-to-create-react-app-20}
 
 Upgrading a non-ejected project to Create React App 2.0 should usually be straightforward. Open `package.json` in the root of your project and find `react-scripts` there.
 
@@ -67,7 +67,7 @@ Here are a few more tips to get you started.
 >
 >Due to a possible bug in npm, you might see warnings about unsatisfied peer dependencies. You should be able to ignore them. As far as we're aware, this issue isn't present with Yarn.
 
-## Breaking Changes
+## Breaking Changes {#breaking-changes}
 
 Here's a short list of breaking changes in this release:
 
@@ -81,7 +81,7 @@ Here's a short list of breaking changes in this release:
 
 If either of these points affects you, [2.0.3 release notes](https://github.com/facebook/create-react-app/releases/tag/v2.0.3) contain more detailed instructions.
 
-## Learn More
+## Learn More {#learn-more}
 
 You can find the full changelog in the [release notes](https://github.com/facebook/create-react-app/releases/tag/v2.0.3). This was a large release, and we may have missed something. Please report any problems to our [issue tracker](https://github.com/facebook/create-react-app/issues/new) and we'll try to help.
 
@@ -89,6 +89,6 @@ You can find the full changelog in the [release notes](https://github.com/facebo
 >
 >If you've been using 2.x alpha versions, we provide [separate migration instructions](https://gist.github.com/gaearon/8650d1c70e436e5eff01f396dffc4114) for them.
 
-## Thanks
+## Thanks {#thanks}
 
 This release wouldn't be possible without our wonderful community of contributors. We'd like to thank [Andreas Cederström](https://github.com/andriijas), [Clement Hoang](https://github.com/clemmy), [Brian Ng](https://github.com/existentialism), [Kent C. Dodds](https://github.com/kentcdodds), [Ade Viankakrisna Fadlil](https://github.com/viankakrisna), [Andrey Sitnik](https://github.com/ai), [Ro Savage](https://github.com/ro-savage), [Fabiano Brito](https://github.com/Fabianopb), [Ian Sutherland](https://github.com/iansu), [Pete Nykänen](https://github.com/petetnt), [Jeffrey Posnick](https://github.com/jeffposnick), [Jack Zhao](https://github.com/bugzpodder), [Tobias Koppers](https://github.com/sokra), [Henry Zhu](https://github.com/hzoo), [Maël Nison](https://github.com/arcanis), [XiaoYan Li](https://github.com/lixiaoyan), [Marko Trebizan](https://github.com/themre), [Marek Suscak](https://github.com/mareksuscak), [Mikhail Osher](https://github.com/miraage), and many others who provided feedback and testing for this release.
diff --git a/content/blog/2018-10-23-react-v-16-6.md b/content/blog/2018-10-23-react-v-16-6.md
index d66d44cbd3..4491d773ab 100644
--- a/content/blog/2018-10-23-react-v-16-6.md
+++ b/content/blog/2018-10-23-react-v-16-6.md
@@ -7,7 +7,7 @@ Today we're releasing React 16.6 with a few new convenient features. A form of P
 
 Check out the full [changelog](#changelog) below.
 
-## [`React.memo`](/docs/react-api.html#reactmemo)
+## [`React.memo`](/docs/react-api.html#reactmemo) {#reactmemo}
 
 Class components can bail out from rendering when their input props are the same using [`PureComponent`](/docs/react-api.html#reactpurecomponent) or [`shouldComponentUpdate`](/docs/react-component.html#shouldcomponentupdate). Now you can do the same with function components by wrapping them in [`React.memo`](/docs/react-api.html#reactmemo).
 
@@ -17,7 +17,7 @@ const MyComponent = React.memo(function MyComponent(props) {
 });
 ```
 
-## [`React.lazy`](/docs/code-splitting.html#reactlazy): Code-Splitting with `Suspense`
+## [`React.lazy`](/docs/code-splitting.html#reactlazy): Code-Splitting with `Suspense` {#reactlazy-code-splitting-with-suspense}
 
 You may have seen [Dan's talk about React Suspense at JSConf Iceland](/blog/2018/03/01/sneak-peek-beyond-react-16.html). Now you can use the Suspense component to do [code-splitting](/docs/code-splitting.html#reactlazy) by wrapping a dynamic import in a call to `React.lazy()`.
 
@@ -38,7 +38,7 @@ The Suspense component will also allow library authors to start building data fe
 
 > Note: This feature is not yet available for server-side rendering. Suspense support will be added in a later release.
 
-## [`static contextType`](/docs/context.html#classcontexttype)
+## [`static contextType`](/docs/context.html#classcontexttype) {#static-contexttype}
 
 In [React 16.3](/blog/2018/03/29/react-v-16-3.html) we introduced the official Context API as a replacement to the previous [Legacy Context](/docs/legacy-context.html) API.
 
@@ -70,7 +70,7 @@ class MyClass extends React.Component {
 }
 ```
 
-## [`static getDerivedStateFromError()`](/docs/react-component.html#static-getderivedstatefromerror)
+## [`static getDerivedStateFromError()`](/docs/react-component.html#static-getderivedstatefromerror) {#static-getderivedstatefromerror}
 
 React 16 introduced [Error Boundaries](/blog/2017/07/26/error-handling-in-react-16.html) for handling errors thrown in React renders. We already had the `componentDidCatch` lifecycle method which gets fired after an error has already happened. It's great for logging errors to the server. It also lets you show a different UI to the user by calling `setState`.
 
@@ -80,7 +80,7 @@ We're adding another error method that lets you render the fallback UI before th
 
 > Note: `getDerivedStateFromError()` is not yet available for server-side rendering. It is designed to work with server-side rendering in a future release. We're releasing it early so that you can start preparing to use it.
 
-## Deprecations in StrictMode
+## Deprecations in StrictMode {#deprecations-in-strictmode}
 
 In [16.3](/blog/2018/03/29/react-v-16-3.html#strictmode-component) we introduced the [`StrictMode`](/docs/strict-mode.html) component. It lets you opt-in to early warnings for patterns that might cause problems in the future.
 
@@ -91,7 +91,7 @@ We've added two more APIs to the list of deprecated APIs in `StrictMode`. If you
 
 If you're having trouble upgrading, we'd like to hear your feedback.
 
-## Installation
+## Installation {#installation}
 
 React v16.6.0 is available on the npm registry.
 
@@ -116,9 +116,9 @@ We also provide UMD builds of React via a CDN:
 
 Refer to the documentation for [detailed installation instructions](/docs/installation.html).
 
-## Changelog
+## Changelog {#changelog}
 
-### React
+### React {#react}
 
 * Add `React.memo()` as an alternative to `PureComponent` for functions. ([@acdlite](https://github.com/acdlite) in [#13748](https://github.com/facebook/react/pull/13748))
 * Add `React.lazy()` for code splitting components. ([@acdlite](https://github.com/acdlite) in [#13885](https://github.com/facebook/react/pull/13885))
@@ -127,7 +127,7 @@ Refer to the documentation for [detailed installation instructions](/docs/instal
 * Rename `unstable_AsyncMode` to `unstable_ConcurrentMode`. ([@trueadm](https://github.com/trueadm) in [#13732](https://github.com/facebook/react/pull/13732))
 * Rename `unstable_Placeholder` to `Suspense`, and `delayMs` to `maxDuration`. ([@gaearon](https://github.com/gaearon) in [#13799](https://github.com/facebook/react/pull/13799) and [@sebmarkbage](https://github.com/sebmarkbage) in [#13922](https://github.com/facebook/react/pull/13922))
 
-### React DOM
+### React DOM {#react-dom}
 
 * Add `contextType` as a more ergonomic way to subscribe to context from a class. ([@bvaughn](https://github.com/bvaughn) in [#13728](https://github.com/facebook/react/pull/13728))
 * Add `getDerivedStateFromError` lifecycle method for catching errors in a future asynchronous server-side renderer. ([@bvaughn](https://github.com/bvaughn) in [#13746](https://github.com/facebook/react/pull/13746))
@@ -135,12 +135,12 @@ Refer to the documentation for [detailed installation instructions](/docs/instal
 * Fix gray overlay on iOS Safari. ([@philipp-spiess](https://github.com/philipp-spiess) in [#13778](https://github.com/facebook/react/pull/13778))
 * Fix a bug caused by overwriting `window.event` in development. ([@sergei-startsev](https://github.com/sergei-startsev) in [#13697](https://github.com/facebook/react/pull/13697))
 
-### React DOM Server
+### React DOM Server {#react-dom-server}
 
 * Add support for `React.memo()`. ([@alexmckenley](https://github.com/alexmckenley) in [#13855](https://github.com/facebook/react/pull/13855))
 * Add support for `contextType`. ([@alexmckenley](https://github.com/alexmckenley) and [@sebmarkbage](https://github.com/sebmarkbage) in [#13889](https://github.com/facebook/react/pull/13889))
 
-### Scheduler (Experimental)
+### Scheduler (Experimental) {#scheduler-experimental}
 
 * Rename the package to `scheduler`. ([@gaearon](https://github.com/gaearon) in [#13683](https://github.com/facebook/react/pull/13683))
 * Support priority levels, continuations, and wrapped callbacks. ([@acdlite](https://github.com/acdlite) in [#13720](https://github.com/facebook/react/pull/13720) and [#13842](https://github.com/facebook/react/pull/13842))
diff --git a/content/blog/2018-11-27-react-16-roadmap.md b/content/blog/2018-11-27-react-16-roadmap.md
index f7c4088f1a..d8a2f39827 100644
--- a/content/blog/2018-11-27-react-16-roadmap.md
+++ b/content/blog/2018-11-27-react-16-roadmap.md
@@ -5,7 +5,7 @@ author: [gaearon]
 
 You might have heard about features like "Hooks", "Suspense", and "Concurrent Rendering" in the previous blog posts and talks. In this post, we'll look at how they fit together and the expected timeline for their availability in a stable release of React.
  
-## tl;dr
+## tl;dr {#tldr}
 
 We plan to split the rollout of new React features into the following milestones:
 
@@ -28,13 +28,13 @@ We expect to get more clarity on their timeline in the coming months.
 >
 >This post is just a roadmap -- there is nothing in it that requires your immediate attention. When each of these features are released, we'll publish a full blog post announcing them.
 
-## Release Timeline
+## Release Timeline {#release-timeline}
 
 We have a single vision for how all of these features fit together, but we're releasing each part as soon as it is ready so that you can test and start using them sooner. The API design doesn't always make sense when looking at one piece in isolation; this post lays out the major parts of our plan to help you see the whole picture. (See our [versioning policy](/docs/faq-versioning.html) to learn more about our commitment to stability.)
 
 The gradual release strategy helps us refine the APIs, but the transitional period when some things aren't ready can be confusing. Let's look at what these different features mean for your app, how they relate to each other, and when you can expect to start learning and using them.
 
-### [React 16.6](/blog/2018/10/23/react-v-16-6.html) (shipped): The One with Suspense for Code Splitting
+### [React 16.6](/blog/2018/10/23/react-v-16-6.html) (shipped): The One with Suspense for Code Splitting {#react-166-shipped-the-one-with-suspense-for-code-splitting}
 
 *Suspense* refers to React's new ability to "suspend" rendering while components are waiting for something, and display a loading indicator. In React 16.6, Suspense supports only one use case: lazy loading components with `React.lazy()` and `<React.Suspense>`.
 
@@ -67,7 +67,7 @@ Code splitting is just the first step for Suspense. Our longer term vision for S
 
 **Recommendation:** If you only do client rendering, we recommend widely adopting `React.lazy()` and `<React.Suspense>` for code splitting React components. If you do server rendering, you'll have to wait with adoption until the new server renderer is ready.
 
-### React 16.x (~Q1 2019): The One with Hooks
+### React 16.x (~Q1 2019): The One with Hooks {#react-16x-q1-2019-the-one-with-hooks}
 
 *Hooks* let you use features like state and lifecycle from function components. They also let you reuse stateful logic between components without introducing extra nesting in your tree.
 
@@ -101,7 +101,7 @@ Hooks represent our vision for the future of React. They solve both problems tha
 
 **Recommendation:** When you’re ready, we encourage you to start trying Hooks in new components you write. Make sure everyone on your team is on board with using them and familiar with this documentation. We don’t recommend rewriting your existing classes to Hooks unless you planned to rewrite them anyway (e.g. to fix bugs). Read more about the adoption strategy [here](/docs/hooks-faq.html#adoption-strategy).
 
-### React 16.x (~Q2 2019): The One with Concurrent Mode
+### React 16.x (~Q2 2019): The One with Concurrent Mode {#react-16x-q2-2019-the-one-with-concurrent-mode}
 
 *Concurrent Mode* lets React apps be more responsive by rendering component trees without blocking the main thread. It is opt-in and allows React to interrupt a long-running render (for example, rendering a new feed story) to handle a high-priority event (for example, text input or hover). Concurrent Mode also improves the user experience of Suspense by skipping unnecessary loading states on fast connections.
 
@@ -135,7 +135,7 @@ Concurrent Mode is a big part of our vision for React. For CPU-bound work, it al
 
 **Recommendation:** If you wish to adopt Concurrent Mode in the future, wrapping some component subtrees in [`<React.StrictMode>`](https://reactjs.org/docs/strict-mode.html) and fixing the resulting warnings is a good first step. In general it's not expected that legacy code would immediately be compatible. For example, at Facebook we mostly intend to use the Concurrent Mode in the more recently developed codebases, and keep the legacy ones running in the synchronous mode for the near future.
 
-### React 16.x (~mid 2019): The One with Suspense for Data Fetching
+### React 16.x (~mid 2019): The One with Suspense for Data Fetching {#react-16x-mid-2019-the-one-with-suspense-for-data-fetching}
 
 As mentioned earlier, *Suspense* refers to React's ability to "suspend" rendering while components are waiting for something, and display a loading indicator. In the already shipped React 16.6, the only supported use case for Suspense is code splitting. In this future minor release, we'd like to provide officially supported ways to use it for data fetching too. We'll provide a reference implementation of a basic "React Cache" that's compatible with Suspense, but you can also write your own. Data fetching libraries like Apollo and Relay will be able to integrate with Suspense by following a simple specification that we'll document.
 
@@ -182,13 +182,13 @@ Eventually we'd like most data fetching to happen through Suspense but it will t
 
 **Recommendation:** Wait for this minor React release in order to use Suspense for data fetching. Don’t try to use Suspense features in 16.6 for it; it’s not supported. However, your existing `<Suspense>` components for code splitting will be able to show loading states for data too when Suspense for Data Fetching becomes officially supported.
 
-## Other Projects
+## Other Projects {#other-projects}
 
-### Modernizing React DOM
+### Modernizing React DOM {#modernizing-react-dom}
 
 We started an investigation into [simplifying and modernizing](https://github.com/facebook/react/issues/13525) ReactDOM, with a goal of reduced bundle size and aligning closer with the browser behavior. It is still early to say which specific bullet points will "make it" because the project is in an exploratory phase. We will communicate our progress on that issue.
 
-### Suspense for Server Rendering
+### Suspense for Server Rendering {#suspense-for-server-rendering}
 
 We started designing a new server renderer that supports Suspense (including waiting for asynchronous data on the server without double rendering) and progressively loading and hydrating page content in chunks for best user experience. You can watch an overview of its early prototype in [this talk](https://www.youtube.com/watch?v=z-6JC0_cOns). The new server renderer is going to be our major focus in 2019, but it's too early to say anything about its release schedule. Its development, as always, [will happen on GitHub](https://github.com/facebook/react/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aopen+fizz).
 
diff --git a/content/blog/2018-12-19-react-v-16-7.md b/content/blog/2018-12-19-react-v-16-7.md
index 2f66cb743e..e6e4f8a344 100644
--- a/content/blog/2018-12-19-react-v-16-7.md
+++ b/content/blog/2018-12-19-react-v-16-7.md
@@ -5,13 +5,13 @@ author: [acdlite]
 
 Our latest release includes an important performance bugfix for `React.lazy`. Although there are no API changes, we're releasing it as a minor instead of a patch.
 
-## Why Is This Bugfix a Minor Instead of a Patch?
+## Why Is This Bugfix a Minor Instead of a Patch? {#why-is-this-bugfix-a-minor-instead-of-a-patch}
 
 React follows [semantic versioning](/docs/faq-versioning.html). Typically, this means that we use patch versions for bugfixes, and minors for new (non-breaking) features. However, we reserve the option to release minor versions even if they do not include new features. The motivation is to reserve patches for changes that have a very low chance of breaking. Patches are the most important type of release because they sometimes contain critical bugfixes. That means patch releases have a higher bar for reliability. It's unacceptable for a patch to introduce additional bugs, because if people come to distrust patches, it compromises our ability to fix critical bugs when they arise — for example, to fix a security vulnerability.
 
 We never intend to ship bugs. React has a hard-earned reputation for stability, and we intend to keep it that way. We thoroughly test every version of React before releasing. This includes unit tests, generative (fuzzy) tests, integration tests, and internal dogfooding across tens of thousands of components. However, sometimes we make mistakes. That's why, going forward, our policy will be that if a release contains non-trivial changes, we will bump the minor version, even if the external behavior is the same. We'll also bump the minor when changing `unstable_`-prefixed APIs.
 
-## Can I Use Hooks Yet?
+## Can I Use Hooks Yet? {#can-i-use-hooks-yet}
 
 Not yet, but soon!
 
@@ -28,7 +28,7 @@ We've heard from many people who want to start using Hooks in their apps. We als
 Learn more about [our roadmap](/blog/2018/11/27/react-16-roadmap.html) in our previous post.
 
 
-## Installation
+## Installation {#installation}
 
 React v16.7.0 is available on the npm registry.
 
@@ -53,16 +53,16 @@ We also provide UMD builds of React via a CDN:
 
 Refer to the documentation for [detailed installation instructions](/docs/installation.html).
 
-## Changelog
+## Changelog {#changelog}
 
-### React DOM
+### React DOM {#react-dom}
 
 * Fix performance of `React.lazy` for large numbers of lazily-loaded components. ([@acdlite](http://github.com/acdlite) in [#14429](https://github.com/facebook/react/pull/14429))
 * Clear fields on unmount to avoid memory leaks. ([@trueadm](http://github.com/trueadm) in [#14276](https://github.com/facebook/react/pull/14276))
 * Fix bug with SSR and context when mixing `react-dom/server@16.6` and `react@<16.6`. ([@gaearon](http://github.com/gaearon) in [#14291](https://github.com/facebook/react/pull/14291))
 * Fix a performance regression in profiling mode. ([@bvaughn](http://github.com/bvaughn) in [#14383](https://github.com/facebook/react/pull/14383))
 
-### Scheduler (Experimental)
+### Scheduler (Experimental) {#scheduler-experimental}
 
 * Post to MessageChannel instead of window. ([@acdlite](http://github.com/acdlite) in [#14234](https://github.com/facebook/react/pull/14234))
 * Reduce serialization overhead. ([@developit](http://github.com/developit) in [#14249](https://github.com/facebook/react/pull/14249))
diff --git a/content/blog/2019-02-06-react-v16.8.0.md b/content/blog/2019-02-06-react-v16.8.0.md
index 9fe33e8f43..3af12da7d4 100644
--- a/content/blog/2019-02-06-react-v16.8.0.md
+++ b/content/blog/2019-02-06-react-v16.8.0.md
@@ -5,7 +5,7 @@ author: [gaearon]
 
 With React 16.8, [React Hooks](/docs/hooks-intro.html) are available in a stable release!
 
-## What Are Hooks?
+## What Are Hooks? {#what-are-hooks}
 
 Hooks let you use state and other React features without writing a class. You can also **build your own Hooks** to share reusable stateful logic between components.
 
@@ -19,11 +19,11 @@ If you've never heard of Hooks before, you might find these resources interestin
 
 **You don't have to learn Hooks right now.** Hooks have no breaking changes, and we have no plans to remove classes from React. The [Hooks FAQ](/docs/hooks-faq.html) describes the gradual adoption strategy.
 
-## No Big Rewrites
+## No Big Rewrites {#no-big-rewrites}
 
 We don't recommend rewriting your existing applications to use Hooks overnight. Instead, try using Hooks in some of the new components, and let us know what you think. Code using Hooks will work [side by side](/docs/hooks-intro.html#gradual-adoption-strategy) with existing code using classes.
 
-## Can I Use Hooks Today?
+## Can I Use Hooks Today? {#can-i-use-hooks-today}
 
 Yes! Starting with 16.8.0, React includes a stable implementation of React Hooks for:
 
@@ -36,11 +36,11 @@ Note that **to enable Hooks, all React packages need to be 16.8.0 or higher**. H
 
 **React Native will support Hooks in the [0.59 release](https://github.com/react-native-community/react-native-releases/issues/79#issuecomment-457735214).**
 
-## Tooling Support
+## Tooling Support {#tooling-support}
 
 React Hooks are now supported by React DevTools. They are also supported in the latest Flow and TypeScript definitions for React. We strongly recommend enabling a new [lint rule called `eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks) to enforce best practices with Hooks. It will soon be included into Create React App by default.
 
-## What's Next
+## What's Next {#whats-next}
 
 We described our plan for the next months in the recently published [React Roadmap](/blog/2018/11/27/react-16-roadmap.html).
 
@@ -48,7 +48,7 @@ Note that React Hooks don't cover *all* use cases for classes yet but they're [v
 
 Even while Hooks were in alpha, the React community created many interesting [examples](https://codesandbox.io/react-hooks) and [recipes](https://usehooks.com) using Hooks for animations, forms, subscriptions, integrating with other libraries, and so on. We're excited about Hooks because they make code reuse easier, helping you write your components in a simpler way and make great user experiences. We can't wait to see what you'll create next!
 
-## Testing Hooks
+## Testing Hooks {#testing-hooks}
 
 We have added a new API called `ReactTestUtils.act()` in this release. It ensures that the behavior in your tests matches what happens in the browser more closely. We recommend to wrap any code rendering and triggering updates to your components into `act()` calls. Testing libraries can also wrap their APIs with it (for example, [`react-testing-library`](https://github.com/kentcdodds/react-testing-library)'s `render` and `fireEvent` utilities do this).
 
@@ -97,13 +97,13 @@ If you need to test a custom Hook, you can do so by creating a component in your
 
 To reduce the boilerplate, we recommend using [`react-testing-library`](https://git.io/react-testing-library) which is designed to encourage writing tests that use your components as the end users do.
 
-## Thanks
+## Thanks {#thanks}
 
 We'd like to thank everybody who commented on the [Hooks RFC](https://github.com/reactjs/rfcs/pull/68) for sharing their feedback. We've read all of your comments and made some adjustments to the final API based on them.
 
-## Installation
+## Installation {#installation}
 
-### React
+### React {#react}
 
 React v16.8.0 is available on the npm registry.
 
@@ -128,7 +128,7 @@ We also provide UMD builds of React via a CDN:
 
 Refer to the documentation for [detailed installation instructions](/docs/installation.html).
 
-### ESLint Plugin for React Hooks
+### ESLint Plugin for React Hooks {#eslint-plugin-for-react-hooks}
 
 >Note
 >
@@ -161,14 +161,14 @@ Then add it to your ESLint configuration:
 }
 ```
 
-## Changelog
+## Changelog {#changelog}
 
-### React
+### React {#react-1}
 
 * Add [Hooks](https://reactjs.org/docs/hooks-intro.html) — a way to use state and other React features without writing a class. ([@acdlite](https://github.com/acdlite) et al. in [#13968](https://github.com/facebook/react/pull/13968))
 * Improve the `useReducer` Hook lazy initialization API. ([@acdlite](https://github.com/acdlite) in [#14723](https://github.com/facebook/react/pull/14723))
 
-### React DOM
+### React DOM {#react-dom}
 
 * Bail out of rendering on identical values for `useState` and `useReducer` Hooks. ([@acdlite](https://github.com/acdlite) in [#14569](https://github.com/facebook/react/pull/14569))
 * Don’t compare the first argument passed to `useEffect`/`useMemo`/`useCallback` Hooks. ([@acdlite](https://github.com/acdlite) in [#14594](https://github.com/facebook/react/pull/14594))
@@ -178,19 +178,19 @@ Then add it to your ESLint configuration:
 * Warn about mismatching Hook order in development. ([@threepointone](https://github.com/threepointone) in [#14585](https://github.com/facebook/react/pull/14585) and [@acdlite](https://github.com/acdlite) in [#14591](https://github.com/facebook/react/pull/14591))
 * Effect clean-up functions must return either `undefined` or a function. All other values, including `null`, are not allowed. [@acdlite](https://github.com/acdlite) in [#14119](https://github.com/facebook/react/pull/14119)
 
-### React Test Renderer
+### React Test Renderer {#react-test-renderer}
 
 * Support Hooks in the shallow renderer. ([@trueadm](https://github.com/trueadm) in [#14567](https://github.com/facebook/react/pull/14567))
 * Fix wrong state in `shouldComponentUpdate` in the presence of `getDerivedStateFromProps` for Shallow Renderer. ([@chenesan](https://github.com/chenesan) in [#14613](https://github.com/facebook/react/pull/14613))
 * Add `ReactTestRenderer.act()` and `ReactTestUtils.act()` for batching updates so that tests more closely match real behavior. ([@threepointone](https://github.com/threepointone) in [#14744](https://github.com/facebook/react/pull/14744))
 
-### ESLint Plugin: React Hooks
+### ESLint Plugin: React Hooks {#eslint-plugin-react-hooks}
 
 * Initial [release](https://www.npmjs.com/package/eslint-plugin-react-hooks). ([@calebmer](https://github.com/calebmer) in [#13968](https://github.com/facebook/react/pull/13968))
 * Fix reporting after encountering a loop. ([@calebmer](https://github.com/calebmer) and [@Yurickh](https://github.com/Yurickh) in [#14661](https://github.com/facebook/react/pull/14661))
 * Don't consider throwing to be a rule violation. ([@sophiebits](https://github.com/sophiebits) in [#14040](https://github.com/facebook/react/pull/14040))
 
-## Hooks Changelog Since Alpha Versions
+## Hooks Changelog Since Alpha Versions {#hooks-changelog-since-alpha-versions}
 
 The above changelog contains all notable changes since our last **stable** release (16.7.0). [As with all our minor releases](/docs/faq-versioning.html), none of the changes break backwards compatibility.
 
diff --git a/content/community/conferences.it-IT.md b/content/community/conferences.it-IT.md
index 8cd3facb16..f45c9e3d7b 100644
--- a/content/community/conferences.it-IT.md
+++ b/content/community/conferences.it-IT.md
@@ -6,14 +6,14 @@ prev: thinking-in-react-it-IT.html
 next: videos-it-IT.html
 ---
 
-### React.js Conf 2015
+### React.js Conf 2015 {#reactjs-conf-2015}
 28 e 29 Gennaio
 
 [Sito web](http://conf.reactjs.com/) - [Agenda](http://conf.reactjs.com/schedule.html) - [Video](https://www.youtube-nocookie.com/playlist?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr)
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
 
-### ReactEurope 2015
+### ReactEurope 2015 {#reacteurope-2015}
 2 e 3 Luglio
 
 [Sito web](http://www.react-europe.org/) - [Agenda](http://www.react-europe.org/#schedule)
diff --git a/content/community/conferences.ko-KR.md b/content/community/conferences.ko-KR.md
index 210ab3b525..e1c13171b5 100644
--- a/content/community/conferences.ko-KR.md
+++ b/content/community/conferences.ko-KR.md
@@ -6,14 +6,14 @@ prev: thinking-in-react-ko-KR.html
 next: videos-ko-KR.html
 ---
 
-### React.js Conf 2015
+### React.js Conf 2015 {#reactjs-conf-2015}
 1월 28일 & 29일
 
 [웹사이트](http://conf.reactjs.com/) - [스케줄](http://conf.reactjs.com/schedule.html) - [비디오들](https://www.youtube-nocookie.com/playlist?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr)
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
 
-### ReactEurope 2015
+### ReactEurope 2015 {#reacteurope-2015}
 7월 2일 & 3일
 
 [웹사이트](http://www.react-europe.org/) - [스케줄](http://www.react-europe.org/#schedule)
diff --git a/content/community/conferences.md b/content/community/conferences.md
index 415b66d4fb..78f868d7fd 100644
--- a/content/community/conferences.md
+++ b/content/community/conferences.md
@@ -10,316 +10,316 @@ redirect_from:
 
 Do you know of a local React.js conference? Add it here! (Please keep the list chronological)
 
-## Upcoming Conferences
+## Upcoming Conferences {#upcoming-conferences}
 
-### React Iran 2019
+### React Iran 2019 {#react-iran-2019}
 January 31, 2019 in Tehran, Iran
 [Website](http://reactiran.com) - [Instagram](https://www.instagram.com/reactiran/)
 
-### App.js Conf 2019
+### App.js Conf 2019 {#appjs-conf-2019}
 April 4-5, 2019 in Kraków, Poland
 
 [Website](https://appjs.co) - [Twitter](https://twitter.com/appjsconf)
 
-### React Amsterdam 2019
+### React Amsterdam 2019 {#react-amsterdam-2019}
 April 12, 2019 in Amsterdam, The Netherlands
 
 [Website](https://react.amsterdam) - [Twitter](https://twitter.com/reactamsterdam) - [Facebook](https://www.facebook.com/reactamsterdam)
 
-### ReactEurope 2019
+### ReactEurope 2019 {#reacteurope-2019}
 May 23-24, 2019 in Paris, France
 
 [Website](https://www.react-europe.org) - [Twitter](https://twitter.com/ReactEurope) - [Facebook](https://www.facebook.com/ReactEurope) - [Videos](https://www.youtube.com/c/ReacteuropeOrgConf)
 
-### React Norway 2019
+### React Norway 2019 {#react-norway-2019}
 June 12, 2019. Larvik, Norway
 
 [Website](https://reactnorway.com) - [Twitter](https://twitter.com/ReactNorway)
 
-### ComponentsConf 2019
+### ComponentsConf 2019 {#componentsconf-2019}
 September 6, 2019 in Melbourne, Australia
 [Website](https://www.componentsconf.com.au/) - [Twitter](https://twitter.com/componentsconf)
 
-### React Native EU 2019
+### React Native EU 2019 {#react-native-eu-2019}
 September 5-6 in Wrocław, Poland
 
 [Website](https://react-native.eu) - [Twitter](https://twitter.com/react_native_eu) - [Facebook](https://www.facebook.com/reactnativeeu)
 
-### React New York 2019
+### React New York 2019 {#react-new-york-2019}
 September 13th, 2019. New York, USA
 
 [Website](https://reactnewyork.com/) - [Twitter](https://twitter.com/reactnewyork)
 
-### React India 2019
+### React India 2019 {#react-india-2019}
 September 26-28, 2019 in Goa, India
 
 [Website](https://www.reactindia.io/) - [Twitter](https://twitter.com/react_india) - [Facebook](https://www.facebook.com/ReactJSIndia)
 
-## Past Conferences
+## Past Conferences {#past-conferences}
 
-### React.js Conf 2015
+### React.js Conf 2015 {#reactjs-conf-2015}
 January 28 & 29 in Facebook HQ, CA
 
 [Website](http://conf2015.reactjs.org/) - [Schedule](http://conf2015.reactjs.org/schedule.html) - [Videos](https://www.youtube.com/playlist?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr)
 
 <iframe title="React.js Conf 2015 Keynote" width="650" height="315" src="//www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
 
-### ReactEurope 2015
+### ReactEurope 2015 {#reacteurope-2015}
 July 2 & 3 in Paris, France
 
 [Website](http://www.react-europe.org/) - [Schedule](http://www.react-europe.org/#schedule) - [Videos](https://www.youtube.com/channel/UCorlLn2oZfgOJ-FUcF2eZ1A/playlists)
 
-### Reactive 2015
+### Reactive 2015 {#reactive-2015}
 November 2-4 in Bratislava, Slovakia
 
 [Website](https://reactive2015.com/) - [Schedule](https://reactive2015.com/schedule_speakers.html#schedule)
 
-### React.js Conf 2016
+### React.js Conf 2016 {#reactjs-conf-2016}
 February 22 & 23 in San Francisco, CA
 
 [Website](http://conf.reactjs.com/) - [Schedule](http://conf.reactjs.com/schedule.html) - [Videos](https://www.youtube.com/playlist?list=PLb0IAmt7-GS0M8Q95RIc2lOM6nc77q1IY)
 
-### React Amsterdam 2016
+### React Amsterdam 2016 {#react-amsterdam-2016}
 April 16 in Amsterdam, The Netherlands
 
 [Website](https://react.amsterdam/2016) - [Videos](https://youtu.be/sXDZBxbRRag?list=PLNBNS7NRGKMG3uLrm5fgY02hJ87Wzb4IU)
 
-### ReactEurope 2016
+### ReactEurope 2016 {#reacteurope-2016}
 June 2 & 3 in Paris, France
 
 [Website](http://www.react-europe.org/) - [Schedule](http://www.react-europe.org/#schedule) - [Videos](https://www.youtube.com/channel/UCorlLn2oZfgOJ-FUcF2eZ1A/playlists)
 
-### ReactRally 2016
+### ReactRally 2016 {#reactrally-2016}
 August 25-26 in Salt Lake City, UT
 
 [Website](http://www.reactrally.com/) - [Schedule](http://www.reactrally.com/#/schedule) - [Videos](https://www.youtube.com/playlist?list=PLUD4kD-wL_zYSfU3tIYsb4WqfFQzO_EjQ)
 
-### ReactNext 2016
+### ReactNext 2016 {#reactnext-2016}
 September 15 in Tel Aviv, Israel
 
 [Website](http://react-next.com/) - [Schedule](http://react-next.com/#schedule) - [Videos](https://www.youtube.com/channel/UC3BT8hh3yTTYxbLQy_wbk2w)
 
-### ReactNL 2016
+### ReactNL 2016 {#reactnl-2016}
 October 13 in Amsterdam, The Netherlands - [Schedule](http://reactnl.org/#program)
 
 [Website](http://reactnl.org/)
 
-### Reactive 2016
+### Reactive 2016 {#reactive-2016}
 October 26-28 in Bratislava, Slovakia
 
 [Website](https://reactiveconf.com/)
 
-### React Remote Conf 2016
+### React Remote Conf 2016 {#react-remote-conf-2016}
 October 26-28 online
 
 [Website](https://allremoteconfs.com/react-2016) - [Schedule](https://allremoteconfs.com/react-2016#schedule)
 
-### Agent Conference 2017
+### Agent Conference 2017 {#agent-conference-2017}
 January 20-21 in Dornbirn, Austria
 
 [Website](http://agent.sh/)
 
-### React Conf 2017
+### React Conf 2017 {#react-conf-2017}
 March 13-14 in Santa Clara, CA
 
 [Website](http://conf.reactjs.org/) - [Videos](https://www.youtube.com/watch?v=7HSd1sk07uU&list=PLb0IAmt7-GS3fZ46IGFirdqKTIxlws7e0)
 
-### React London 2017
+### React London 2017 {#react-london-2017}
 March 28th at the [QEII Centre, London](http://qeiicentre.london/)
 
 [Website](http://react.london/) - [Videos](https://www.youtube.com/watch?v=2j9rSur_mnk&list=PLW6ORi0XZU0CFjdoYeC0f5QReBG-NeNKJ)
 
-### React Amsterdam 2017
+### React Amsterdam 2017 {#react-amsterdam-2017}
 April 21st in Amsterdam, The Netherlands
 
 [Website](https://react.amsterdam) - [Twitter](https://twitter.com/reactamsterdam) - [Videos](https://www.youtube.com/watch?v=NQyL-Dm7Kig&list=PLNBNS7NRGKMHxfm0CcYNuINLdRw7r4a9M)
 
-### ReactEurope 2017
+### ReactEurope 2017 {#reacteurope-2017}
 May 18th & 19th in Paris, France
 
 [Website](http://www.react-europe.org/) - [Schedule](http://www.react-europe.org/#schedule) - [Videos](https://www.youtube.com/channel/UCorlLn2oZfgOJ-FUcF2eZ1A/playlists)
 
-### Chain React 2017
+### Chain React 2017 {#chain-react-2017}
 July 10-11 in Portland, Oregon USA
 
 [Website](https://infinite.red/ChainReactConf) - [Twitter](https://twitter.com/chainreactconf) - [Videos](https://www.youtube.com/watch?v=cz5BzwgATpc&list=PLFHvL21g9bk3RxJ1Ut5nR_uTZFVOxu522)
 
-### React Rally 2017
+### React Rally 2017 {#react-rally-2017}
 August 24-25 in Salt Lake City, Utah USA
 
 [Website](http://www.reactrally.com) - [Twitter](https://twitter.com/reactrally) - [Videos](https://www.youtube.com/watch?v=f4KnHNCZcH4&list=PLUD4kD-wL_zZUhvAIHJjueJDPr6qHvkni)
 
-### React Native EU 2017
+### React Native EU 2017 {#react-native-eu-2017}
 September 6-7 in Wroclaw, Poland
 
 [Website](http://react-native.eu/) - [Videos](https://www.youtube.com/watch?v=453oKJAqfy0&list=PLzUKC1ci01h_hkn7_KoFA-Au0DXLAQZR7)
 
-### ReactNext 2017
+### ReactNext 2017 {#reactnext-2017}
 September 8-10 in Tel Aviv, Israel
 
 [Website](http://react-next.com/) - [Twitter](https://twitter.com/ReactNext) - [Videos (Hall A)](https://www.youtube.com/watch?v=eKXQw5kR86c&list=PLMYVq3z1QxSqq6D7jxVdqttOX7H_Brq8Z), [Videos (Hall B)](https://www.youtube.com/watch?v=1InokWxYGnE&list=PLMYVq3z1QxSqCZmaqgTXLsrcJ8mZmBF7T)
 
-### ReactFoo 2017
+### ReactFoo 2017 {#reactfoo-2017}
 September 14 in Bangalore, India
 
 [Website](https://reactfoo.in/2017/) - [Videos](https://www.youtube.com/watch?v=3G6tMg29Wnw&list=PL279M8GbNsespKKm1L0NAzYLO6gU5LvfH)
 
-### React Boston 2017
+### React Boston 2017 {#react-boston-2017}
 September 23-24 in Boston, Massachusetts USA
 
 [Website](http://www.reactboston.com/) - [Twitter](https://twitter.com/ReactBoston) - [Videos](https://www.youtube.com/watch?v=2iPE5l3cl_s&list=PL-fCkV3wv4ub8zJMIhmrrLcQqSR5XPlIT)
 
-### React Alicante 2017
+### React Alicante 2017 {#react-alicante-2017}
 September 28-30 in Alicante, Spain
 
 [Website](http://reactalicante.es) - [Twitter](https://twitter.com/ReactAlicante) - [Videos](https://www.youtube.com/watch?v=UMZvRCWo6Dw&list=PLd7nkr8mN0sWvBH_s0foCE6eZTX8BmLUM)
 
-### ReactJS Day 2017
+### ReactJS Day 2017 {#reactjs-day-2017}
 October 6 in Verona, Italy
 
 [Website](http://2017.reactjsday.it) - [Twitter](https://twitter.com/reactjsday) - [Videos](https://www.youtube.com/watch?v=bUqqJPIgjNU&list=PLWK9j6ps_unl293VhhN4RYMCISxye3xH9)
 
-### React Conf Brasil 2017
+### React Conf Brasil 2017 {#react-conf-brasil-2017}
 October 7 in Sao Paulo, Brazil
 
 [Website](http://reactconfbr.com.br) - [Twitter](https://twitter.com/reactconfbr) - [Facebook](https://www.facebook.com/reactconf/)
 
-### State.js Conference 2017
+### State.js Conference 2017 {#statejs-conference-2017}
 October 13 in Stockholm, Sweden
 
 [Website](https://statejs.com/)
 
-### React Summit 2017
+### React Summit 2017 {#react-summit-2017}
 October 21 in Lagos, Nigeria
 
 [Website](https://reactsummit2017.splashthat.com/) - [Twitter](https://twitter.com/DevCircleLagos/) - [Facebook](https://www.facebook.com/groups/DevCLagos/)
 
-### ReactiveConf 2017
+### ReactiveConf 2017 {#reactiveconf-2017}
 October 25–27, Bratislava, Slovakia
 
 [Website](https://reactiveconf.com) - [Videos](https://www.youtube.com/watch?v=BOKxSFB2hOE&list=PLa2ZZ09WYepMB-I7AiDjDYR8TjO8uoNjs)
 
-### React Seoul 2017
+### React Seoul 2017 {#react-seoul-2017}
 November 4 in Seoul, South Korea
 
 [Website](http://seoul.reactjs.kr/en)
 
-### React Day Berlin 2017
+### React Day Berlin 2017 {#react-day-berlin-2017}
 December 2, Berlin, Germany
 
 [Website](https://reactday.berlin) - [Twitter](https://twitter.com/reactdayberlin) - [Facebook](https://www.facebook.com/reactdayberlin/) - [Videos](https://www.youtube.com/watch?v=UnNLJvHKfSY&list=PL-3BrJ5CiIx5GoXci54-VsrO6GwLhSHEK)
 
-### ReactFoo Pune
+### ReactFoo Pune {#reactfoo-pune}
 January 19-20, Pune, India
 
 [Website](https://reactfoo.in/2018-pune/) - [Twitter](https://twitter.com/ReactFoo)
 
-### AgentConf 2018
+### AgentConf 2018 {#agentconf-2018}
 January 25-28 in Dornbirn, Austria
 
 [Website](http://agent.sh/)
 
-### ReactFest 2018
+### ReactFest 2018 {#reactfest-2018}
 March 8-9 in London, UK
 
 [Website](https://reactfest.uk/) - [Twitter](https://twitter.com/ReactFest) - [Videos](https://www.youtube.com/watch?v=YOCrJ5vRCnw&list=PLRgweB8YtNRt-Sf-A0y446wTJNUaAAmle)
 
-### Reactathon 2018
+### Reactathon 2018 {#reactathon-2018}
 March 20-22 in San Francisco, USA
 
 [Website](https://www.reactathon.com/) - [Twitter](https://twitter.com/reactathon) - [Videos (fundamentals)](https://www.youtube.com/watch?v=knn364bssQU&list=PLRvKvw42Rc7OWK5s-YGGFSmByDzzgC0HP), [Videos (advanced day1)](https://www.youtube.com/watch?v=57hmk4GvJpk&list=PLRvKvw42Rc7N0QpX2Rc5CdrqGuxzwD_0H), [Videos (advanced day2)](https://www.youtube.com/watch?v=1hvQ8p8q0a0&list=PLRvKvw42Rc7Ne46QAjWNWFo1Jf0mQdnIW)
 
-### React Native Camp UA 2018
+### React Native Camp UA 2018 {#react-native-camp-ua-2018}
 March 31 in Kiev, Ukraine
 
 [Website](http://reactnative.com.ua/) - [Twitter](https://twitter.com/reactnativecamp) - [Facebook](https://www.facebook.com/reactnativecamp/)
 
-### React Amsterdam 2018
+### React Amsterdam 2018 {#react-amsterdam-2018}
 April 13 in Amsterdam, The Netherlands
 
 [Website](https://react.amsterdam) - [Twitter](https://twitter.com/reactamsterdam) - [Facebook](https://www.facebook.com/reactamsterdam)
 
-### React Finland 2018
+### React Finland 2018 {#react-finland-2018}
 April 24-26 in Helsinki, Finland
 
 [Website](https://react-finland.fi/) - [Twitter](https://twitter.com/ReactFinland)
 
-### <React.NotAConf /> 2018
+### <React.NotAConf /> 2018 {#reactnotaconf--2018}
 April 28 in Sofia, Bulgaria
 
 [Website](http://react-not-a-conf.com/) - [Twitter](https://twitter.com/reactnotaconf) - [Facebook](https://www.facebook.com/groups/1614950305478021/)
 
-### ReactEurope 2018
+### ReactEurope 2018 {#reacteurope-2018}
 May 17-18 in Paris, France
 
 [Website](https://www.react-europe.org) - [Twitter](https://twitter.com/ReactEurope) - [Facebook](https://www.facebook.com/ReactEurope)
 
-### ReactFoo Mumbai
+### ReactFoo Mumbai {#reactfoo-mumbai}
 May 26 in Mumbai, India
 
 [Website](https://reactfoo.in/2018-mumbai/) - [Twitter](https://twitter.com/reactfoo) - [Past talks](https://hasgeek.tv)
 
-### Chain React 2018
+### Chain React 2018 {#chain-react-2018}
 July 11-13 in Portland, Oregon USA
 
 [Website](https://infinite.red/ChainReactConf) - [Twitter](https://twitter.com/chainreactconf)
 
-### React Rally
+### React Rally {#react-rally}
 August 16-17 in Salt Lake City, Utah USA
 
 [Website](http://www.reactrally.com) - [Twitter](https://twitter.com/reactrally)
 
-### React DEV Conf China
+### React DEV Conf China {#react-dev-conf-china}
 August 18 in Guangzhou, China
 
 [Website](https://react.w3ctech.com)
 
-### ReactFoo Delhi 
+### ReactFoo Delhi {#reactfoo-delhi}
 August 18 in Delhi, India
 
 [Website](https://reactfoo.in/2018-delhi/) - [Twitter](https://twitter.com/reactfoo) - [Past talks](https://hasgeek.tv)
 
-### Byteconf React 2018
+### Byteconf React 2018 {#byteconf-react-2018}
 August 31 streamed online, via Twitch
 
 [Website](https://byteconf.com) - [Twitch](https://twitch.tv/byteconf) - [Twitter](https://twitter.com/byteconf)
 
-### React Native EU 2018
+### React Native EU 2018 {#react-native-eu-2018}
 September 5-6 in Wrocław, Poland
 
 [Website](https://react-native.eu) - [Twitter](https://twitter.com/react_native_eu) - [Facebook](https://www.facebook.com/reactnativeeu)
 
-### React Alicante 2018
+### React Alicante 2018 {#react-alicante-2018}
 September 13-15 in Alicante, Spain
 
 [Website](http://reactalicante.es) - [Twitter](https://twitter.com/ReactAlicante)
 
-### React Boston 2018
+### React Boston 2018 {#react-boston-2018}
 September 29-30 in Boston, Massachusetts USA
 
 [Website](http://www.reactboston.com/) - [Twitter](https://twitter.com/ReactBoston)
 
-### ReactJS Day 2018
+### ReactJS Day 2018 {#reactjs-day-2018}
 October 5 in Verona, Italy
 
 [Website](http://2018.reactjsday.it) - [Twitter](https://twitter.com/reactjsday)
 
-### React Conf Brasil 2018
+### React Conf Brasil 2018 {#react-conf-brasil-2018}
 October 20 in Sao Paulo, Brazil
 
 [Website](http://reactconfbr.com.br) - [Twitter](https://twitter.com/reactconfbr) - [Facebook](https://www.facebook.com/reactconf)
 
-### React Conf 2018
+### React Conf 2018 {#react-conf-2018}
 October 25-26 in Henderson, Nevada USA
 
 [Website](https://conf.reactjs.org/)
 
-### ReactNext 2018
+### ReactNext 2018 {#reactnext-2018}
 November 4 in Tel Aviv, Israel
 
 [Website](https://react-next.com) - [Twitter](https://twitter.com/ReactNext) - [Facebook](https://facebook.com/ReactNext2016)
 
-### React Day Berlin 2018
+### React Day Berlin 2018 {#react-day-berlin-2018}
 November 30, Berlin, Germany
 
 [Website](https://reactday.berlin) - [Twitter](https://twitter.com/reactdayberlin) - [Facebook](https://www.facebook.com/reactdayberlin/) - [Videos](https://www.youtube.com/channel/UC1EYHmQYBUJjkmL6OtK4rlw)
diff --git a/content/community/conferences.zh-CN.md b/content/community/conferences.zh-CN.md
index 5d58aaed6b..e256941392 100644
--- a/content/community/conferences.zh-CN.md
+++ b/content/community/conferences.zh-CN.md
@@ -6,24 +6,24 @@ prev: thinking-in-react-zh-CN.html
 next: videos-zh-CN.html
 ---
 
-### React.js Conf 2015
+### React.js Conf 2015 {#reactjs-conf-2015}
 一月 28 & 29
 
 [Website](http://conf.reactjs.com/) - [Schedule](http://conf.reactjs.com/schedule.html) - [Videos](https://www.youtube-nocookie.com/playlist?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr)
 
 <iframe width="650" height="315" src="//www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
 
-### ReactEurope 2015
+### ReactEurope 2015 {#reacteurope-2015}
 七月 2 & 3
 
 [Website](http://www.react-europe.org/) - [Schedule](http://www.react-europe.org/#schedule)
 
-### Reactive 2015
+### Reactive 2015 {#reactive-2015}
 十一月 2-4
 
 [Website](https://reactive2015.com/) - [Schedule](https://reactive2015.com/schedule_speakers.html#schedule)
 
-### ReactEurope 2016
+### ReactEurope 2016 {#reacteurope-2016}
 六月 2 & 3
 
 [Website](http://www.react-europe.org/) - [Schedule](http://www.react-europe.org/#schedule)
diff --git a/content/community/courses.md b/content/community/courses.md
index 5da83fe511..cd05adea04 100644
--- a/content/community/courses.md
+++ b/content/community/courses.md
@@ -6,7 +6,7 @@ sectionid: community
 permalink: community/courses.html
 ---
 
-## Free Courses
+## Free Courses {#free-courses}
 
 - [Codecademy: React 101](https://www.codecademy.com/learn/react-101) - Codecademy's introductory course for React.
 
@@ -22,7 +22,7 @@ permalink: community/courses.html
 
 - [Free React Bootcamp](https://tylermcginnis.com/free-react-bootcamp/) - Recordings from three days of a free online React bootcamp.
 
-## Paid Courses
+## Paid Courses {#paid-courses}
 
 - [Egghead.io](https://egghead.io/browse/frameworks/react) - Short instructional videos on React and many other topics.
 
diff --git a/content/community/meetups.md b/content/community/meetups.md
index 149f3411d3..d397a4535e 100644
--- a/content/community/meetups.md
+++ b/content/community/meetups.md
@@ -8,50 +8,50 @@ permalink: community/meetups.html
 
 Do you have a local React.js meetup? Add it here! (Please keep the list alphabetical)
 
-## Australia
+## Australia {#australia}
 * [Brisbane](https://www.meetup.com/reactbris/)
 * [Melbourne](https://www.meetup.com/React-Melbourne/)
 * [Sydney](https://www.meetup.com/React-Sydney/)
 
-## Austria
+## Austria {#austria}
 * [Vienna](https://www.meetup.com/Vienna-ReactJS-Meetup/)
 
-## Belgium
+## Belgium {#belgium}
 * [Belgium](https://www.meetup.com/ReactJS-Belgium/)
 
-## Brazil
+## Brazil {#brazil}
 * [Belo Horizonte](https://www.meetup.com/reactbh/)
 * [Curitiba](https://www.meetup.com/pt-br/ReactJS-CWB/)
 * [Rio de Janeiro](https://www.meetup.com/pt-BR/React-Rio-de-Janeiro/)
 * [São Paulo](https://www.meetup.com/pt-BR/ReactJS-SP/)
 
-## Bolivia
+## Bolivia {#bolivia}
 * [Bolivia](https://www.meetup.com/ReactBolivia/)
 
-## Canada
+## Canada {#canada}
 * [Montreal, QC - ReactJS](https://www.meetup.com/fr-FR/ReactMontreal/)
 * [Montreal, QC - React Native](https://www.meetup.com/fr-FR/React-Native-MTL/)
 * [Vancouver, BC](https://www.meetup.com/ReactJS-Vancouver-Meetup/)
 * [Ottawa, ON](https://www.meetup.com/Ottawa-ReactJS-Meetup/)
 
-## China
+## China {#china}
 * [Beijing](https://www.meetup.com/Beijing-ReactJS-Meetup/)
 
-## Colombia
+## Colombia {#colombia}
 * [Medellin](https://www.meetup.com/React-Medellin/)
 
-## Denmark
+## Denmark {#denmark}
 * [Aalborg](https://www.meetup.com/Aalborg-React-React-Native-Meetup/)
 * [Aarhus](https://www.meetup.com/Aarhus-ReactJS-Meetup/)
 
-## England (UK)
+## England (UK) {#england-uk}
 * [Manchester](https://www.meetup.com/Manchester-React-User-Group/)
 * [React.JS Girls London](https://www.meetup.com/ReactJS-Girls-London/)
 
-## France
+## France {#france}
 * [Paris](https://www.meetup.com/ReactJS-Paris/)
 
-## Germany
+## Germany {#germany}
 * [Düsseldorf](https://www.meetup.com/de-DE/ReactJS-Meetup-Dusseldorf/)
 * [Hamburg](https://www.meetup.com/Hamburg-React-js-Meetup/)
 * [Karlsruhe](https://www.meetup.com/react_ka/)
@@ -59,61 +59,61 @@ Do you have a local React.js meetup? Add it here! (Please keep the list alphabet
 * [React Berlin](https://www.meetup.com/React-Berlin/)
 * [React.JS Girls Berlin](https://www.meetup.com/ReactJS-Girls-Berlin/)
 
-## Greece
+## Greece {#greece}
 * [Thessaloniki](https://www.meetup.com/Thessaloniki-ReactJS-Meetup/)
 
-## Hungary
+## Hungary {#hungary}
 * [Budapest](https://www.meetup.com/React-Budapest/)
 
-## India
+## India {#india}
 * [Bangalore](https://www.meetup.com/ReactJS-Bangalore/)
 * [Chennai](https://www.meetup.com/React-Chennai/)
 * [Delhi NCR](https://www.meetup.com/React-Delhi-NCR/)
 
-## Ireland
+## Ireland {#ireland}
 * [Dublin](https://www.meetup.com/ReactJS-Dublin/)
 
-## Israel
+## Israel {#israel}
 * [Tel Aviv](https://www.meetup.com/ReactJS-Israel/)
 
-## Netherlands
+## Netherlands {#netherlands}
 * [Amsterdam](https://www.meetup.com/React-Amsterdam/)
 
-## New Zealand
+## New Zealand {#new-zealand}
 * [Wellington](https://www.meetup.com/React-Wellington/)
 
-## Norway
+## Norway {#norway}
 * [Norway](https://reactjs-norway.webflow.io/)
 * [Oslo](https://www.meetup.com/ReactJS-Oslo-Meetup/)
 
-## Pakistan
+## Pakistan {#pakistan}
 * [Karachi](https://www.facebook.com/groups/902678696597634/)
 
-## Peru
+## Peru {#peru}
 * [Lima](https://www.meetup.com/ReactJS-Peru/)
 
-## Philippines
+## Philippines {#philippines}
 * [Manila](https://www.meetup.com/reactjs-developers-manila/)
 
-## Poland
+## Poland {#poland}
 * [Warsaw](https://www.meetup.com/React-js-Warsaw/)
 
-## Portugal
+## Portugal {#portugal}
 * [Lisbon](https://www.meetup.com/JavaScript-Lisbon/)
 
-## Scotland (UK)
+## Scotland (UK) {#scotland-uk}
 * [Edinburgh](https://www.meetup.com/React-Scotland/)
 
-## Spain
+## Spain {#spain}
 * [Barcelona](https://www.meetup.com/ReactJS-Barcelona/)
 
-## Sweden
+## Sweden {#sweden}
 * [Goteborg](https://www.meetup.com/ReactJS-Goteborg/)
 
-## Ukraine
+## Ukraine {#ukraine}
 * [Kyiv](https://www.meetup.com/Kyiv-ReactJS-Meetup)
 
-## US
+## US {#us}
 * [Atlanta, GA - ReactJS](https://www.meetup.com/React-ATL/)
 * [Austin, TX - ReactJS](https://www.meetup.com/ReactJS-Austin-Meetup/)
 * [Boston, MA - ReactJS](https://www.meetup.com/ReactJS-Boston/)
diff --git a/content/community/podcasts.md b/content/community/podcasts.md
index 60923965f2..233c7df124 100644
--- a/content/community/podcasts.md
+++ b/content/community/podcasts.md
@@ -8,7 +8,7 @@ permalink: community/podcasts.html
 
 Podcasts dedicated to React and individual podcast episodes with React discussions.
 
-## Podcasts
+## Podcasts {#podcasts}
 
 - [The React Podcast](https://reactpodcast.simplecast.fm/) - The podcast about everything React.js, hosted by [React Training](https://reacttraining.com)
 
@@ -18,7 +18,7 @@ Podcasts dedicated to React and individual podcast episodes with React discussio
 
 - [React Native Radio](https://devchat.tv/react-native-radio)
 
-## Episodes
+## Episodes {#episodes}
 
 - [CodeWinds Episode 4](https://codewinds.com/podcast/004.html) - Pete Hunt talks with Jeff Barczewski about React.
 
diff --git a/content/community/support.md b/content/community/support.md
index 3887e2090a..65ce8b3b0a 100644
--- a/content/community/support.md
+++ b/content/community/support.md
@@ -12,11 +12,11 @@ React has a community of millions of developers.
 
 On this page we've listed some React-related communities that you can be a part of; see the other pages in this section for additional online and in-person learning materials.
 
-## Stack Overflow
+## Stack Overflow {#stack-overflow}
 
 Stack Overflow is a popular forum to ask code-level questions or if you're stuck with a specific error. Read through the [existing questions](https://stackoverflow.com/questions/tagged/reactjs) tagged with **reactjs** or [ask your own](https://stackoverflow.com/questions/ask?tags=reactjs)!
 
-## Popular Discussion Forums
+## Popular Discussion Forums {#popular-discussion-forums}
 
 There are many online forums which are a great place for discussion about best practices and application architecture as well as the future of React. If you have an answerable code-level question, Stack Overflow is usually a better fit.
 
@@ -28,6 +28,6 @@ Each community consists of many thousands of React users.
 * [Reddit's React community](https://www.reddit.com/r/reactjs/)
 * [Spectrum's React community](https://spectrum.chat/react)
 
-## News
+## News {#news}
 
 For the latest news about React, [follow **@reactjs** on Twitter](https://twitter.com/reactjs) and the [official React blog](/blog/) on this website.
diff --git a/content/community/tools-jsx.md b/content/community/tools-jsx.md
index 7b7951dc5e..7c2bfc4758 100644
--- a/content/community/tools-jsx.md
+++ b/content/community/tools-jsx.md
@@ -5,7 +5,7 @@ layout: community
 permalink: community/jsx-integrations.html
 ---
 
-## Editor Integrations
+## Editor Integrations {#editor-integrations}
 * **[Sublime Text: babel-sublime](https://github.com/babel/babel-sublime):** Snippets, syntax highlighting and optimized color schemes for Sublime Text
 * **[Atom: language-babel](https://atom.io/packages/language-babel)** Support for es2016, JSX and Flow.
 * **[Visual Studio Code](https://code.visualstudio.com/updates/vFebruary#_languages-javascript)** Visual Studio Code supports JSX directly.
@@ -15,7 +15,7 @@ permalink: community/jsx-integrations.html
 * **[web-mode.el](http://web-mode.org):** An autonomous emacs major mode that indents and highlights JSX.  No support for Automatic Semicolon Insertion.
 * **[vim-jsx](https://github.com/mxw/vim-jsx):** Syntax highlighting and indenting for JSX
 
-## Build Tools
+## Build Tools {#build-tools}
 
 * **[Create React App](https://github.com/facebookincubator/create-react-app):** An **officially supported** way to create React apps with no configuration.
 * **[nwb](https://github.com/insin/nwb)**: A toolkit for React, Preact & Inferno apps, React libraries and other npm modules for the web, with no configuration (until you need it)
diff --git a/content/community/tools-starter-kits.md b/content/community/tools-starter-kits.md
index c15fcf04bc..a4e6b8150a 100644
--- a/content/community/tools-starter-kits.md
+++ b/content/community/tools-starter-kits.md
@@ -5,7 +5,7 @@ layout: community
 permalink: community/starter-kits.html
 ---
 
-## Recommended by the React Team
+## Recommended by the React Team {#recommended-by-the-react-team}
 
 * **[Create React App](https://github.com/facebook/create-react-app)** - An officially supported way to start a client-side React project with no configuration
 * **[Next.js](https://nextjs.org/)** - Framework for server-rendered or statically-exported React apps
@@ -15,7 +15,7 @@ permalink: community/starter-kits.html
 * **[Neutrino](https://neutrino.js.org/)** - Create and build modern JavaScript applications with zero initial configuration
 * **[Parcel](https://parceljs.org)** - Fast, zero configuration web application bundler
 
-## Other Starter Kits
+## Other Starter Kits {#other-starter-kits}
 
 * **[kyt](https://github.com/nytimes/kyt)** - The framework that the New York Times uses to develop and build their web properties. It's somewhat opinionated but configurable, and includes starter kits with options to build full-stack or static/client-side apps with the following tools: Express, React, static assets, latest ES, CSS/Sass Modules, Jest, code-splitting, ESLint/Prettier, StyleLint, PostCSS, and inline SVGs.
 * **[React Redux Boilerplate](https://github.com/iroy2000/react-redux-boilerplate):** React Redux Boilerplate is a workflow boilerplate providing a virtual development environment and production ready build workflow out of the box. (React, Redux, Reselect, Redux Actions, ES6, ESLint, Webpack with integrated environment config support)
diff --git a/content/community/tools-ui-components.md b/content/community/tools-ui-components.md
index 196bbc7220..4179597e16 100644
--- a/content/community/tools-ui-components.md
+++ b/content/community/tools-ui-components.md
@@ -5,7 +5,7 @@ layout: community
 permalink: community/ui-components.html
 ---
 
-## Free Components
+## Free Components {#free-components}
 * **[Amaze UI React](https://github.com/amazeui/amazeui-react) (in Chinese):** [Amaze UI](https://github.com/allmobilize/amazeui) components built with React.
 * **[Ant Design of React](https://github.com/ant-design/ant-design)** An enterprise-class UI design language and React-based implementation.
 * **[Belle](https://github.com/nikgraf/belle/):** Configurable React Components with great UX.
@@ -69,7 +69,7 @@ permalink: community/ui-components.html
 * **[video-react](https://github.com/video-react/video-react)**: A web video player built for the HTML5 world using React library.
 * **[Winterfell](https://github.com/andrewhathaway/Winterfell):** Generate complex, validated and extendable JSON-based forms in React
 
-## Fee Based Components
+## Fee Based Components {#fee-based-components}
 
 * **[ag-Grid](https://www.ag-grid.com)** Advanced data grid / data table for React.
 * **[ExtReact components](https://www.sencha.com/products/extreact//)**: 115+ Ready-to-Use UI Components.
diff --git a/content/community/videos.it-IT.md b/content/community/videos.it-IT.md
index 4e32b370f5..44548b3a09 100644
--- a/content/community/videos.it-IT.md
+++ b/content/community/videos.it-IT.md
@@ -6,7 +6,7 @@ prev: conferences-it-IT.html
 next: complementary-tools-it-IT.html
 ---
 
-### Riconsiderare le best practice - JSConf.eu
+### Riconsiderare le best practice - JSConf.eu {#riconsiderare-le-best-practice---jsconfeu}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/x7cQ3mrcKaY" frameborder="0" allowfullscreen></iframe>
 
@@ -14,14 +14,14 @@ next: complementary-tools-it-IT.html
 
 * * *
 
-### Pensare in react - tagtree.tv
+### Pensare in react - tagtree.tv {#pensare-in-react---tagtreetv}
 
 Un video di [tagtree.tv](http://tagtree.tv/) che espone i principi di [Pensare in React](/docs/thinking-in-react.html) mentre costruisci una semplice applicazione
 <figure><a href="http://tagtree.tv/thinking-in-react"><img src="../images/docs/thinking-in-react-tagtree.png"></a></figure>
 
 * * *
 
-### I Segreti del DOM Virtuale - MtnWest JS
+### I Segreti del DOM Virtuale - MtnWest JS {#i-segreti-del-dom-virtuale---mtnwest-js}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/h3KksH8gfcQ" frameborder="0" allowfullscreen></iframe>
 
@@ -29,14 +29,14 @@ Un video di [tagtree.tv](http://tagtree.tv/) che espone i principi di [Pensare i
 
 * * *
 
-### Pensare in grande con React
+### Pensare in grande con React {#pensare-in-grande-con-react}
 
 "Sulla carta, tutti questi framework JS sembrano promettenti: implementazioni pulite, design veloce del codice, esecuzione perfetta. Ma che succede quando metti JavaScript sotto stress? Che succede se gli dài in pasto 6 megabyte di codice? In questo talk investigheremo come si comporta React in situazioni di stress elevato, e come ha aiutato il nostro team a costruire codice sicuro ad una scala enorme."
 <figure><a href="https://skillsmatter.com/skillscasts/5429-going-big-with-react#video"><img src="https://i.vimeocdn.com/video/481670116_650.jpg"></a></figure>
 
 * * *
 
-### CodeWinds
+### CodeWinds {#codewinds}
 
 [Pete Hunt](http://www.petehunt.net/) ha parlato con [Jeff Barczewski](http://jeff.barczewski.com/) a proposito di React nell'Episodio 4 di CodeWinds.
 <figure><a href="http://codewinds.com/4"><img src="../images/docs/codewinds-004.png"></a></figure>
@@ -69,7 +69,7 @@ Un video di [tagtree.tv](http://tagtree.tv/) che espone i principi di [Pensare i
 
 * * *
 
-### JavaScript Jabber
+### JavaScript Jabber {#javascript-jabber}
 
 [Pete Hunt](http://www.petehunt.net/) e [Jordan Walke](https://github.com/jordwalke) hanno parlato di React in JavaScript Jabber 73.
 <figure><a href="http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/#content"><img src="../images/docs/javascript-jabber.png"></a></figure>
@@ -97,7 +97,7 @@ Un video di [tagtree.tv](http://tagtree.tv/) che espone i principi di [Pensare i
 
 * * *
 
-### Introduzione a React.js - Facebook Seattle
+### Introduzione a React.js - Facebook Seattle {#introduzione-a-reactjs---facebook-seattle}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/XxVg_s8xAms" frameborder="0" allowfullscreen></iframe>
 
@@ -105,14 +105,14 @@ Di [Tom Occhino](http://tomocchino.com/) e [Jordan Walke](https://github.com/jor
 
 * * *
 
-### Backbone + React + Middleman Screencast
+### Backbone + React + Middleman Screencast {#backbone--react--middleman-screencast}
 <iframe width="650" height="488" src="https://www.youtube-nocookie.com/embed/iul1fWHVU6A" frameborder="0" allowfullscreen></iframe>
 
 Backbone è una grande maniera di interfacciare una API REST con React. Questo screencast mostra come integrare i due usando [Backbone-React-Component](https://github.com/magalhas/backbone-react-component). Middleman è il framework utilizzato in questo esempio, ma può essere facilmente sostituito con altri framework. Si può trovare un template supportato per questo esempio [qui](https://github.com/jbhatab/middleman-backbone-react-template). -- [Open Minded Innovations](http://www.openmindedinnovations.com/)
 
 * * *
 
-### Sviluppare Interfacce Utente Con React - Super VanJS
+### Sviluppare Interfacce Utente Con React - Super VanJS {#sviluppare-interfacce-utente-con-react---super-vanjs}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/1OeXsL5mr4g" frameborder="0" allowfullscreen></iframe>
 
@@ -120,7 +120,7 @@ Di [Steven Luscher](https://github.com/steveluscher)
 
 * * *
 
-### Introduzione a React - LAWebSpeed meetup
+### Introduzione a React - LAWebSpeed meetup {#introduzione-a-react---lawebspeed-meetup}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/SMMRJif5QW0" frameborder="0" allowfullscreen></iframe>
 
@@ -128,7 +128,7 @@ Di [Stoyan Stefanov](http://www.phpied.com/)
 
 * * *
 
-### React, o come rendere la vita più semplice - FrontEnd Dev Conf '14
+### React, o come rendere la vita più semplice - FrontEnd Dev Conf '14 {#react-o-come-rendere-la-vita-più-semplice---frontend-dev-conf-14}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/YJNUK0EA_Jo" frameborder="0" allowfullscreen></iframe>
 
@@ -136,19 +136,19 @@ Di [Stoyan Stefanov](http://www.phpied.com/)
 
 * * *
 
-### "Programmazione funzionale del DOM" - Meteor DevShop 11
+### "Programmazione funzionale del DOM" - Meteor DevShop 11 {#programmazione-funzionale-del-dom---meteor-devshop-11}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/qqVbr_LaCIo" frameborder="0" allowfullscreen></iframe>
 
 * * *
 
-### "Ripensare lo Sviluppo di Applicazioni Web a Facebook" - Facebook F8 Conference 2014
+### "Ripensare lo Sviluppo di Applicazioni Web a Facebook" - Facebook F8 Conference 2014 {#ripensare-lo-sviluppo-di-applicazioni-web-a-facebook---facebook-f8-conference-2014}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/nYkdrAPrdcw" frameborder="0" allowfullscreen></iframe>
 
 * * *
 
-### React e Flux: Costruire Applicazioni con un Flusso Dati Unidirezionale - Forward JS 2014
+### React e Flux: Costruire Applicazioni con un Flusso Dati Unidirezionale - Forward JS 2014 {#react-e-flux-costruire-applicazioni-con-un-flusso-dati-unidirezionale---forward-js-2014}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/i__969noyAM" frameborder="0" allowfullscreen></iframe>
 
@@ -156,7 +156,7 @@ Gli ingegneri di Facebook [Bill Fisher](https://twitter.com/fisherwebdev) e [Jin
 
 * * *
 
-### Rendering Lato Server di Applicazioni Isomorfiche a SoundCloud
+### Rendering Lato Server di Applicazioni Isomorfiche a SoundCloud {#rendering-lato-server-di-applicazioni-isomorfiche-a-soundcloud}
 
 <iframe src="https://player.vimeo.com/video/108488724" width="100%" height="365" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
 
@@ -166,7 +166,7 @@ Gli ingegneri di Facebook [Bill Fisher](https://twitter.com/fisherwebdev) e [Jin
 
 * * *
 
-### Introduzione a React Native (+Playlist) - React.js Conf 2015
+### Introduzione a React Native (+Playlist) - React.js Conf 2015 {#introduzione-a-react-native-playlist---reactjs-conf-2015}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
 
diff --git a/content/community/videos.ko-KR.md b/content/community/videos.ko-KR.md
index 171c4c5c10..4e9d0058f3 100644
--- a/content/community/videos.ko-KR.md
+++ b/content/community/videos.ko-KR.md
@@ -6,7 +6,7 @@ prev: conferences-ko-KR.html
 next: complementary-tools-ko-KR.html
 ---
 
-### Rethinking best practices - JSConf.eu
+### Rethinking best practices - JSConf.eu {#rethinking-best-practices---jsconfeu}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/x7cQ3mrcKaY" frameborder="0" allowfullscreen></iframe>
 
@@ -14,14 +14,14 @@ next: complementary-tools-ko-KR.html
 
 * * *
 
-### Thinking in react - tagtree.tv
+### Thinking in react - tagtree.tv {#thinking-in-react---tagtreetv}
 
 [tagtree.tv](http://tagtree.tv/)의 비디오는 간단한 어플리케이션을 구성하면서 [Thinking in React](/docs/thinking-in-react-ko-KR.html)의 원리들을 전달합니다.
 <figure><a href="http://tagtree.tv/thinking-in-react"><img src="../images/docs/thinking-in-react-tagtree.png"></a></figure>
 
 * * *
 
-### Secrets of the Virtual DOM - MtnWest JS
+### Secrets of the Virtual DOM - MtnWest JS {#secrets-of-the-virtual-dom---mtnwest-js}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/h3KksH8gfcQ" frameborder="0" allowfullscreen></iframe>
 
@@ -29,14 +29,14 @@ next: complementary-tools-ko-KR.html
 
 * * *
 
-### Going big with React
+### Going big with React {#going-big-with-react}
 
 "이 발표에서, 이 모든 JS 프레임워크가 다음을 약속하는것처럼 보입니다: 깨끗한 구현들, 빠른 코드 디자인, 완전한 수행. 그런데 당신이 JavaScript 스트레스 테스트를 할때, 어떤 일이 발생합니까? 혹은 6MB의 코드를 던지면 무슨일이 발생합니까? 이번에는 높은 스트레스 환경에서 React가 어떻게 작동하는지, 그리고 이것이 우리 팀이 방대한 크기의 코드를 안전하게 구성하는데 어떻게 도움이 되어줄지를 조사해 볼겁니다."
 [![](https://i.vimeocdn.com/video/481670116_650.jpg)](https://skillsmatter.com/skillscasts/5429-going-big-with-react#video)
 
 * * *
 
-### CodeWinds
+### CodeWinds {#codewinds}
 
 CodeWinds Episode 4 에서 [Pete Hunt](http://www.petehunt.net/)와 [Jeff Barczewski](http://jeff.barczewski.com/)가 React에 대해서 이야기 합니다.
 
@@ -70,7 +70,7 @@ CodeWinds Episode 4 에서 [Pete Hunt](http://www.petehunt.net/)와 [Jeff Barcze
 
 * * *
 
-### JavaScript Jabber
+### JavaScript Jabber {#javascript-jabber}
 
 JavaScript Jabber 73에서 [Pete Hunt](http://www.petehunt.net/)와 [Jordan Walke](https://github.com/jordwalke)가 React에 대해서 이야기했습니다.
 
@@ -99,7 +99,7 @@ JavaScript Jabber 73에서 [Pete Hunt](http://www.petehunt.net/)와 [Jordan Walk
 
 * * *
 
-### Introduction to React.js - Facebook Seattle
+### Introduction to React.js - Facebook Seattle {#introduction-to-reactjs---facebook-seattle}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/XxVg_s8xAms" frameborder="0" allowfullscreen></iframe>
 
@@ -107,14 +107,14 @@ By [Tom Occhino](http://tomocchino.com/), [Jordan Walke](https://github.com/jord
 
 * * *
 
-### Backbone + React + Middleman Screencast
+### Backbone + React + Middleman Screencast {#backbone--react--middleman-screencast}
 <iframe width="650" height="488" src="https://www.youtube-nocookie.com/embed/iul1fWHVU6A" frameborder="0" allowfullscreen></iframe>
 
 Backbone은 React로 REST API를 제공하기 위한 아주 좋은 방법입니다. 이 화면중개는 [Backbone-React-Component](https://github.com/magalhas/backbone-react-component)을 이용해서 어떻게 이 두가지를 연동하는지 보여줍니다. Middleman은 이 예제에서 사용되는 프레임워크이지만, 쉽게 다른 프레임워크로 대체하실 수 있습니다. 지원되는 템플릿은 [이곳](https://github.com/jbhatab/middleman-backbone-react-template)에서 찾으실 수 있습니다. -- [열린 마음의 혁명들](http://www.openmindedinnovations.com/)
 
 * * *
 
-### Developing User Interfaces With React - Super VanJS
+### Developing User Interfaces With React - Super VanJS {#developing-user-interfaces-with-react---super-vanjs}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/1OeXsL5mr4g" frameborder="0" allowfullscreen></iframe>
 
@@ -122,7 +122,7 @@ By [Steven Luscher](https://github.com/steveluscher)
 
 * * *
 
-### Introduction to React - LAWebSpeed meetup
+### Introduction to React - LAWebSpeed meetup {#introduction-to-react---lawebspeed-meetup}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/SMMRJif5QW0" frameborder="0" allowfullscreen></iframe>
 
@@ -130,7 +130,7 @@ by [Stoyan Stefanov](http://www.phpied.com/)
 
 * * *
 
-### React, or how to make life simpler - FrontEnd Dev Conf '14
+### React, or how to make life simpler - FrontEnd Dev Conf '14 {#react-or-how-to-make-life-simpler---frontend-dev-conf-14}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/YJNUK0EA_Jo" frameborder="0" allowfullscreen></iframe>
 
@@ -138,19 +138,19 @@ by [Stoyan Stefanov](http://www.phpied.com/)
 
 * * *
 
-### "Functional DOM programming" - Meteor DevShop 11
+### "Functional DOM programming" - Meteor DevShop 11 {#functional-dom-programming---meteor-devshop-11}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/qqVbr_LaCIo" frameborder="0" allowfullscreen></iframe>
 
 * * *
 
-### "Rethinking Web App Development at Facebook" - Facebook F8 Conference 2014
+### "Rethinking Web App Development at Facebook" - Facebook F8 Conference 2014 {#rethinking-web-app-development-at-facebook---facebook-f8-conference-2014}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/nYkdrAPrdcw" frameborder="0" allowfullscreen></iframe>
 
 * * *
 
-### React and Flux: Building Applications with a Unidirectional Data Flow - Forward JS 2014
+### React and Flux: Building Applications with a Unidirectional Data Flow - Forward JS 2014 {#react-and-flux-building-applications-with-a-unidirectional-data-flow---forward-js-2014}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/i__969noyAM" frameborder="0" allowfullscreen></iframe>
 
@@ -158,7 +158,7 @@ Facebook 개발자 [Bill Fisher](https://twitter.com/fisherwebdev)와 [Jing Chen
 
 * * *
 
-### Server-Side Rendering of Isomorphic Apps at SoundCloud
+### Server-Side Rendering of Isomorphic Apps at SoundCloud {#server-side-rendering-of-isomorphic-apps-at-soundcloud}
 
 <iframe src="https://player.vimeo.com/video/108488724" width="100%" height="365" frameborder="0" allowfullscreen></iframe>
 
@@ -167,7 +167,7 @@ Server-side rendering을 위해 [SoundCloud](https://developers.soundcloud.com/b
 
 * * *
 
-### Introducing React Native (+Playlist) - React.js Conf 2015
+### Introducing React Native (+Playlist) - React.js Conf 2015 {#introducing-react-native-playlist---reactjs-conf-2015}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/v/KVZ-P-ZI6W4&index=1&list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
 
diff --git a/content/community/videos.md b/content/community/videos.md
index 55585db32b..d50312231e 100644
--- a/content/community/videos.md
+++ b/content/community/videos.md
@@ -10,67 +10,67 @@ redirect_from:
 
 Videos dedicated to the discussion of React and the React ecosystem.
 
-### React.js Conf 2017
+### React.js Conf 2017 {#reactjs-conf-2017}
 
 A playlist of videos from React.js Conf 2017.
 <iframe title="React.js Conf 2017" width="650" height="366" src="https://www.youtube-nocookie.com/embed/playlist?list=PLb0IAmt7-GS3fZ46IGFirdqKTIxlws7e0" frameborder="0" allowfullscreen></iframe>
 
-### React.js Conf 2016
+### React.js Conf 2016 {#reactjs-conf-2016}
 
 A playlist of videos from React.js Conf 2016.
 <iframe title="React.js Conf 2016" width="650" height="366" src="https://www.youtube-nocookie.com/embed/playlist?list=PLb0IAmt7-GS0M8Q95RIc2lOM6nc77q1IY" frameborder="0" allowfullscreen></iframe>
 
-### React.js Conf 2015
+### React.js Conf 2015 {#reactjs-conf-2015}
 
 A playlist of videos from React.js Conf 2015.
 <iframe title="React.js Conf 2015" width="650" height="366" src="https://www.youtube-nocookie.com/embed/playlist?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
 
-### Secrets of the Virtual DOM
+### Secrets of the Virtual DOM {#secrets-of-the-virtual-dom}
 
 Pete Hunt at Mountain West JavaScript 2014 discusses why a virtual DOM was built for React, how it compares to other systems, and its relevance to the future of browser technologies - (2014 - 0h44m).
 <iframe title="Mountain West JavaScript 2014 - Be Predictable, Not Correct. by Pete Hunt" width="650" height="366" src="https://www.youtube-nocookie.com/embed/h3KksH8gfcQ" frameborder="0" allowfullscreen></iframe>
 
-### Flux and Server-side Rendering
+### Flux and Server-side Rendering {#flux-and-server-side-rendering}
 
 Pete Hunt discusses flux and server-side rendering in React - (2014 - 0h55m).
 <iframe title="YUI Open Roundtable with Pete Hunt" width="650" height="366" src="https://www.youtube-nocookie.com/embed/ZLfe0i2RDtY" frameborder="0" allowfullscreen></iframe>
 
-### Rethinking Web App Development at Facebook
+### Rethinking Web App Development at Facebook {#rethinking-web-app-development-at-facebook}
 
 Facebook F8 2014 talk to learn how we abandoned the traditional MVC paradigm in favor of a more functional application architecture - (2014 - 0h44m).
 <iframe title="Hacker Way: Rethinking Web App Development at Facebook" width="650" height="366" src="https://www.youtube-nocookie.com/embed/nYkdrAPrdcw" frameborder="0" allowfullscreen></iframe>
 
-### Introduction to React
+### Introduction to React {#introduction-to-react}
 
 Stoyan Stefanov gives an introduction to React at LAWebSpeed meetup - (2014 - 0h51m).
 <iframe title="Joe Dev on Tech - Stoyan Stefanov - Introduction to React" width="650" height="366" src="https://www.youtube-nocookie.com/embed/SMMRJif5QW0" frameborder="0" allowfullscreen></iframe>
 
-### React and Flux: Building Applications with a Unidirectional Data Flow
+### React and Flux: Building Applications with a Unidirectional Data Flow {#react-and-flux-building-applications-with-a-unidirectional-data-flow}
 
 Facebook engineers Bill Fisher and Jing Chen talk about Flux and React at Forward JS 2014, and how using an application architecture with a unidirectional data flow cleans up a lot of their code.
 <iframe title="React and Flux: Building Applications with a Unidirectional Data Flow" width="650" height="366" src="https://www.youtube-nocookie.com/embed/i__969noyAM" frameborder="0" allowfullscreen></iframe>
 
-### Going Big with React
+### Going Big with React {#going-big-with-react}
 
 Areeb Malik investigates how React performs in a high stress situation, and how it helped his team build safe code on a massive scale - (2014 - 0h31m).
 [![going big with React](https://i.vimeocdn.com/video/481670116_650.jpg)]
 
 
-### Rethinking Best Practices
+### Rethinking Best Practices {#rethinking-best-practices}
 
 Pete Hunt's talk at JSConf EU 2013 covers three topics: throwing out the notion of templates and building views with JavaScript, “re-rendering” your entire application when your data changes, and a lightweight implementation of the DOM and events - (2013 - 0h30m).
 <iframe title="Pete Hunt: React: Rethinking Best Practices - JSConf EU 2013" width="650" height="366" src="https://www.youtube-nocookie.com/embed/x7cQ3mrcKaY" frameborder="0" allowfullscreen></iframe>
 
-### High Performance Functional DOM Programming
+### High Performance Functional DOM Programming {#high-performance-functional-dom-programming}
 Pete Hunt discusses high performance functional programming with React at Meteor DevShop 11 - (2013 - 0h31m).
 <iframe title="Pete Hunt: High performance functional programming with React and Meteor" width="650" height="366" src="https://www.youtube-nocookie.com/embed/qqVbr_LaCIo" frameborder="0" allowfullscreen></iframe>
 
-### Developing User Interfaces With React
+### Developing User Interfaces With React {#developing-user-interfaces-with-react}
 
 Steven Luscher discusses developing user interfaces at Super VanJS 2013 - (2013 - 0h29m).
 <iframe title="SuperVanJS 2013: Steven Luscher - Developing User Interfaces with Facebook's React" width="650" height="366" src="https://www.youtube-nocookie.com/embed/1OeXsL5mr4g" frameborder="0" allowfullscreen></iframe>
 
-### Introduction to React
+### Introduction to React {#introduction-to-react-1}
 
 Tom Occhino and Jordan Walke introduce React at Facebook Seattle - (2013 - 1h20m).
 <iframe title="Tom Occhino and Jordan Walke introduce React at Facebook Seattle" width="650" height="366" src="https://www.youtube-nocookie.com/embed/XxVg_s8xAms" frameborder="0" allowfullscreen></iframe>
diff --git a/content/community/videos.zh-CN.md b/content/community/videos.zh-CN.md
index 173b4e5bd8..f5a360e1f2 100644
--- a/content/community/videos.zh-CN.md
+++ b/content/community/videos.zh-CN.md
@@ -6,7 +6,7 @@ prev: conferences-zh-CN.html
 next: complementary-tools-zh-CN.html
 ---
 
-### Rethinking best practices - JSConf.eu
+### Rethinking best practices - JSConf.eu {#rethinking-best-practices---jsconfeu}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/x7cQ3mrcKaY" frameborder="0" allowfullscreen></iframe>
 
@@ -14,14 +14,14 @@ next: complementary-tools-zh-CN.html
 
 * * *
 
-### Thinking in react - tagtree.tv
+### Thinking in react - tagtree.tv {#thinking-in-react---tagtreetv}
 
 一个 [tagtree.tv](http://tagtree.tv/) 传达 [Thinking in React](/docs/thinking-in-react.html) 原则的视频  在构建一个简单app时。
 <figure><a href="http://tagtree.tv/thinking-in-react"><img src="../images/docs/thinking-in-react-tagtree.png"></a></figure>
 
 * * *
 
-### Secrets of the Virtual DOM - MtnWest JS
+### Secrets of the Virtual DOM - MtnWest JS {#secrets-of-the-virtual-dom---mtnwest-js}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/h3KksH8gfcQ" frameborder="0" allowfullscreen></iframe>
 
@@ -29,14 +29,14 @@ next: complementary-tools-zh-CN.html
 
 * * *
 
-### Going big with React
+### Going big with React {#going-big-with-react}
 
 "理论上,所有的JS框架都大有可为:干净的实现,快速的代码设计,完美的执行。但是当你压力测试时Javascript会怎样?当你丢进6MB的代码时会怎样?在这次演讲中,我们会探究React在高压环境下如何表现,以及它如何帮助我们的团队在大规模时构建安全代码。 "
 <figure><a href="https://skillsmatter.com/skillscasts/5429-going-big-with-react#video"><img src="https://i.vimeocdn.com/video/481670116_650.jpg"></a></figure>
 
 * * *
 
-### CodeWinds
+### CodeWinds {#codewinds}
 
 [Pete Hunt](http://www.petehunt.net/) 与 [Jeff Barczewski](http://jeff.barczewski.com/) 在 CodeWinds Episode 4 上关于 React 的谈话.
 <figure><a href="http://codewinds.com/4"><img src="../images/docs/codewinds-004.png"></a></figure>
@@ -69,7 +69,7 @@ next: complementary-tools-zh-CN.html
 
 * * *
 
-### JavaScript Jabber
+### JavaScript Jabber {#javascript-jabber}
 
 [Pete Hunt](http://www.petehunt.net/) 和 [Jordan Walke](https://github.com/jordwalke) 在 JavaScript Jabber 73 上关于React的谈话.
 <figure><a href="http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/#content"><img src="../images/docs/javascript-jabber.png"></a></figure>
@@ -97,7 +97,7 @@ next: complementary-tools-zh-CN.html
 
 * * *
 
-### Introduction to React.js - Facebook Seattle
+### Introduction to React.js - Facebook Seattle {#introduction-to-reactjs---facebook-seattle}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/XxVg_s8xAms" frameborder="0" allowfullscreen></iframe>
 
@@ -105,14 +105,14 @@ next: complementary-tools-zh-CN.html
 
 * * *
 
-### Backbone + React + Middleman Screencast
+### Backbone + React + Middleman Screencast {#backbone--react--middleman-screencast}
 <iframe width="650" height="488" src="https://www.youtube-nocookie.com/embed/iul1fWHVU6A" frameborder="0" allowfullscreen></iframe>
 
 Backbone 是一个在用React实现 REST API 接口的极好方法。这个屏博展示了用 [Backbone-React-Component](https://github.com/magalhas/backbone-react-component)如何整合两者. Middleman 是在本例中使用的框架但很容易被替换成其他框架。对此可支持的template可以在[这里](https://github.com/jbhatab/middleman-backbone-react-template) 找到. -- [Open Minded Innovations](http://www.openmindedinnovations.com/)
 
 * * *
 
-### Developing User Interfaces With React - Super VanJS
+### Developing User Interfaces With React - Super VanJS {#developing-user-interfaces-with-react---super-vanjs}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/1OeXsL5mr4g" frameborder="0" allowfullscreen></iframe>
 
@@ -120,7 +120,7 @@ Backbone 是一个在用React实现 REST API 接口的极好方法。这个屏
 
 * * *
 
-### Introduction to React - LAWebSpeed meetup
+### Introduction to React - LAWebSpeed meetup {#introduction-to-react---lawebspeed-meetup}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/SMMRJif5QW0" frameborder="0" allowfullscreen></iframe>
 
@@ -128,7 +128,7 @@ Backbone 是一个在用React实现 REST API 接口的极好方法。这个屏
 
 * * *
 
-### React, or how to make life simpler - FrontEnd Dev Conf '14
+### React, or how to make life simpler - FrontEnd Dev Conf '14 {#react-or-how-to-make-life-simpler---frontend-dev-conf-14}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/YJNUK0EA_Jo" frameborder="0" allowfullscreen></iframe>
 
@@ -136,19 +136,19 @@ Backbone 是一个在用React实现 REST API 接口的极好方法。这个屏
 
 * * *
 
-### "Functional DOM programming" - Meteor DevShop 11
+### "Functional DOM programming" - Meteor DevShop 11 {#functional-dom-programming---meteor-devshop-11}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/qqVbr_LaCIo" frameborder="0" allowfullscreen></iframe>
 
 * * *
 
-### "Rethinking Web App Development at Facebook" - Facebook F8 Conference 2014
+### "Rethinking Web App Development at Facebook" - Facebook F8 Conference 2014 {#rethinking-web-app-development-at-facebook---facebook-f8-conference-2014}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/nYkdrAPrdcw" frameborder="0" allowfullscreen></iframe>
 
 * * *
 
-### React and Flux: Building Applications with a Unidirectional Data Flow - Forward JS 2014
+### React and Flux: Building Applications with a Unidirectional Data Flow - Forward JS 2014 {#react-and-flux-building-applications-with-a-unidirectional-data-flow---forward-js-2014}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/i__969noyAM" frameborder="0" allowfullscreen></iframe>
 
@@ -156,7 +156,7 @@ Facebook 工程师 [Bill Fisher](https://twitter.com/fisherwebdev) 和 [Jing Che
 
 * * *
 
-### Server-Side Rendering of Isomorphic Apps at SoundCloud
+### Server-Side Rendering of Isomorphic Apps at SoundCloud {#server-side-rendering-of-isomorphic-apps-at-soundcloud}
 
 <iframe src="https://player.vimeo.com/video/108488724" width="100%" height="365" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
 
@@ -166,7 +166,7 @@ Facebook 工程师 [Bill Fisher](https://twitter.com/fisherwebdev) 和 [Jing Che
 
 * * *
 
-### Introducing React Native (+Playlist) - React.js Conf 2015
+### Introducing React Native (+Playlist) - React.js Conf 2015 {#introducing-react-native-playlist---reactjs-conf-2015}
 
 <iframe width="650" height="366" src="https://www.youtube-nocookie.com/embed/KVZ-P-ZI6W4?list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr" frameborder="0" allowfullscreen></iframe>
 
diff --git a/content/docs/accessibility.md b/content/docs/accessibility.md
index d387921cac..663251a03b 100644
--- a/content/docs/accessibility.md
+++ b/content/docs/accessibility.md
@@ -4,15 +4,15 @@ title: Accessibility
 permalink: docs/accessibility.html
 ---
 
-## Why Accessibility?
+## Why Accessibility? {#why-accessibility}
 
 Web accessibility (also referred to as [**a11y**](https://en.wiktionary.org/wiki/a11y)) is the design and creation of websites that can be used by everyone. Accessibility support is necessary to allow assistive technology to interpret web pages.
 
 React fully supports building accessible websites, often by using standard HTML techniques.
 
-## Standards and Guidelines
+## Standards and Guidelines {#standards-and-guidelines}
 
-### WCAG
+### WCAG {#wcag}
 
 The [Web Content Accessibility Guidelines](https://www.w3.org/WAI/intro/wcag) provides guidelines for creating accessible web sites.
 
@@ -22,7 +22,7 @@ The following WCAG checklists provide an overview:
 - [WCAG checklist from WebAIM](http://webaim.org/standards/wcag/checklist)
 - [Checklist from The A11Y Project](http://a11yproject.com/checklist.html)
 
-### WAI-ARIA
+### WAI-ARIA {#wai-aria}
 
 The [Web Accessibility Initiative - Accessible Rich Internet Applications](https://www.w3.org/WAI/intro/aria) document contains techniques for building fully accessible JavaScript widgets.
 
@@ -39,7 +39,7 @@ Note that all `aria-*` HTML attributes are fully supported in JSX. Whereas most
 />
 ```
 
-## Semantic HTML
+## Semantic HTML {#semantic-html}
 Semantic HTML is the foundation of accessibility in a web application. Using the various HTML elements to reinforce the meaning of information
 in our websites will often give us accessibility for free.
 
@@ -106,9 +106,9 @@ function ListItem({ item }) {
 
 For more info, see [the Fragments documentation](/docs/fragments.html).
 
-## Accessible Forms
+## Accessible Forms {#accessible-forms}
 
-### Labeling
+### Labeling {#labeling}
 Every HTML form control, such as `<input>` and `<textarea>`, needs to be labeled accessibly. We need to provide descriptive labels that are also exposed to screen readers.
 
 The following resources show us how to do this:
@@ -124,20 +124,20 @@ Although these standard HTML practices can be directly used in React, note that
 <input id="namedInput" type="text" name="name"/>
 ```
 
-### Notifying the user of errors
+### Notifying the user of errors {#notifying-the-user-of-errors}
 
 Error situations need to be understood by all users. The following link shows us how to expose error texts to screen readers as well:
 
 - [The W3C demonstrates user notifications](https://www.w3.org/WAI/tutorials/forms/notifications/)
 - [WebAIM looks at form validation](http://webaim.org/techniques/formvalidation/)
 
-## Focus Control
+## Focus Control {#focus-control}
 
 Ensure that your web application can be fully operated with the keyboard only:
 
 - [WebAIM talks about keyboard accessibility](http://webaim.org/techniques/keyboard/)
 
-### Keyboard focus and focus outline
+### Keyboard focus and focus outline {#keyboard-focus-and-focus-outline}
 
 Keyboard focus refers to the current element in the DOM that is selected to accept input from the keyboard. We see it everywhere as a focus outline similar to that shown in the following image:
 
@@ -145,7 +145,7 @@ Keyboard focus refers to the current element in the DOM that is selected to acce
 
 Only ever use CSS that removes this outline, for example by setting `outline: 0`, if you are replacing it with another focus outline implementation.
 
-### Mechanisms to skip to desired content
+### Mechanisms to skip to desired content {#mechanisms-to-skip-to-desired-content}
 
 Provide a mechanism to allow users to skip past navigation sections in your application as this assists and speeds up keyboard navigation.
 
@@ -160,7 +160,7 @@ Read more about the use of these elements to enhance accessibility here:
 
 - [Accessible Landmarks](http://www.scottohara.me/blog/2018/03/03/landmarks.html)
 
-### Programmatically managing focus
+### Programmatically managing focus {#programmatically-managing-focus}
 
 Our React applications continuously modify the HTML DOM during runtime, sometimes leading to keyboard focus being lost or set to an unexpected element. In order to repair this,
 we need to programmatically nudge the keyboard focus in the right direction. For example, by resetting keyboard focus to a button that opened a modal window after that modal window is closed.
@@ -241,7 +241,7 @@ initially triggered the modal.
 >While this is a very important accessibility feature, it is also a technique that should be used judiciously. Use it to repair the keyboard focus flow when it is disturbed, not to try and anticipate how
 >users want to use applications.
 
-## Mouse and pointer events
+## Mouse and pointer events {#mouse-and-pointer-events}
 
 Ensure that all functionality exposed through a mouse or pointer event can also be accessed using the keyboard alone. Depending only on the pointer device will lead to many cases where
 keyboard users cannot use your application.
@@ -376,7 +376,7 @@ the keyboard events to enable `arrow key` interaction of the popover options hav
 This is one example of many cases where depending on only pointer and mouse events will break functionality for keyboard users. Always testing with the keyboard will immediately
 highlight the problem areas which can then be fixed by using keyboard aware event handlers.
 
-## More Complex Widgets
+## More Complex Widgets {#more-complex-widgets}
 
 A more complex user experience should not mean a less accessible one. Whereas accessibility is most easily achieved by coding as close to HTML as possible,
 even the most complex widget can be coded accessibly.
@@ -390,15 +390,15 @@ Each type of widget has a specific design pattern and is expected to function in
 - [Heydon Pickering - ARIA Examples](http://heydonworks.com/practical_aria_examples/)
 - [Inclusive Components](https://inclusive-components.design/)
 
-## Other Points for Consideration
+## Other Points for Consideration {#other-points-for-consideration}
 
-### Setting the language
+### Setting the language {#setting-the-language}
 
 Indicate the human language of page texts as screen reader software uses this to select the correct voice settings:
 
 - [WebAIM - Document Language](http://webaim.org/techniques/screenreader/#language)
 
-### Setting the document title
+### Setting the document title {#setting-the-document-title}
 
 Set the document `<title>` to correctly describe the current page content as this ensures that the user remains aware of the current page context:
 
@@ -406,7 +406,7 @@ Set the document `<title>` to correctly describe the current page content as thi
 
 We can set this in React using the [React Document Title Component](https://github.com/gaearon/react-document-title).
 
-### Color contrast
+### Color contrast {#color-contrast}
 
 Ensure that all readable text on your website has sufficient color contrast to remain maximally readable by users with low vision:
 
@@ -423,11 +423,11 @@ If you want to extend your contrast testing abilities you can use these tools:
 - [WebAIM - Color Contrast Checker](http://webaim.org/resources/contrastchecker/)
 - [The Paciello Group - Color Contrast Analyzer](https://www.paciellogroup.com/resources/contrastanalyser/)
 
-## Development and Testing Tools
+## Development and Testing Tools {#development-and-testing-tools}
 
 There are a number of tools we can use to assist in the creation of accessible web applications.
 
-### The keyboard
+### The keyboard {#the-keyboard}
 
 By far the easiest and also one of the most important checks is to test if your entire website can be reached and used with the keyboard alone. Do this by:
 
@@ -436,12 +436,12 @@ By far the easiest and also one of the most important checks is to test if your
 1. Using `Enter` to activate elements.
 1. Where required, using your keyboard arrow keys to interact with some elements, such as menus and dropdowns.
 
-### Development assistance
+### Development assistance {#development-assistance}
 
 We can check some accessibility features directly in our JSX code. Often intellisense checks are already provided in JSX aware IDE's for the ARIA roles, states and properties. We also
 have access to the following tool:
 
-#### eslint-plugin-jsx-a11y
+#### eslint-plugin-jsx-a11y {#eslint-plugin-jsx-a11y}
 
 The [eslint-plugin-jsx-a11y](https://github.com/evcohen/eslint-plugin-jsx-a11y) plugin for ESLint provides AST linting feedback regarding accessibility issues in your JSX. Many
 IDE's allow you to integrate these findings directly into code analysis and source code windows.
@@ -456,12 +456,12 @@ you can create an `.eslintrc` file in the root of your project with this content
   }
   ```
 
-### Testing accessibility in the browser
+### Testing accessibility in the browser {#testing-accessibility-in-the-browser}
 
 A number of tools exist that can run accessibility audits on web pages in your browser. Please use them in combination with other accessibility checks mentioned here as they can only
 test the technical accessibility of your HTML.
 
-#### aXe, aXe-core and react-axe
+#### aXe, aXe-core and react-axe {#axe-axe-core-and-react-axe}
 
 Deque Systems offers [aXe-core](https://github.com/dequelabs/axe-core) for automated and end-to-end accessibility tests of your applications. This module includes integrations for Selenium.
 
@@ -469,11 +469,11 @@ Deque Systems offers [aXe-core](https://github.com/dequelabs/axe-core) for autom
 
 You can also use the [react-axe](https://github.com/dylanb/react-axe) module to report these accessibility findings directly to the console while developing and debugging.
 
-#### WebAIM WAVE
+#### WebAIM WAVE {#webaim-wave}
 
 The [Web Accessibility Evaluation Tool](http://wave.webaim.org/extension/) is another accessibility browser extension.
 
-#### Accessibility inspectors and the Accessibility Tree
+#### Accessibility inspectors and the Accessibility Tree {#accessibility-inspectors-and-the-accessibility-tree}
 
 [The Accessibility Tree](https://www.paciellogroup.com/blog/2015/01/the-browser-accessibility-tree/) is a subset of the DOM tree that contains accessible objects for every DOM element that should be exposed
 to assistive technology, such as screen readers.
@@ -484,15 +484,15 @@ In some browsers we can easily view the accessibility information for each eleme
 - [Activate the Accessibility Inspector in Chrome](https://gist.github.com/marcysutton/0a42f815878c159517a55e6652e3b23a)
 - [Using the Accessibility Inspector in OS X Safari](https://developer.apple.com/library/content/documentation/Accessibility/Conceptual/AccessibilityMacOSX/OSXAXTestingApps.html)
 
-### Screen readers
+### Screen readers {#screen-readers}
 
 Testing with a screen reader should form part of your accessibility tests.
 
 Please note that browser / screen reader combinations matter. It is recommended that you test your application in the browser best suited to your screen reader of choice.
 
-### Commonly Used Screen Readers
+### Commonly Used Screen Readers {#commonly-used-screen-readers}
 
-#### NVDA in Firefox
+#### NVDA in Firefox {#nvda-in-firefox}
 
 [NonVisual Desktop Access](https://www.nvaccess.org/) or NVDA is an open source Windows screen reader that is widely used.
 
@@ -501,7 +501,7 @@ Refer to the following guides on how to best use NVDA:
 - [WebAIM - Using NVDA to Evaluate Web Accessibility](http://webaim.org/articles/nvda/)
 - [Deque - NVDA Keyboard Shortcuts](https://dequeuniversity.com/screenreaders/nvda-keyboard-shortcuts)
 
-#### VoiceOver in Safari
+#### VoiceOver in Safari {#voiceover-in-safari}
 
 VoiceOver is an integrated screen reader on Apple devices.
 
@@ -511,7 +511,7 @@ Refer to the following guides on how activate and use VoiceOver:
 - [Deque - VoiceOver for OS X Keyboard Shortcuts](https://dequeuniversity.com/screenreaders/voiceover-keyboard-shortcuts)
 - [Deque - VoiceOver for iOS Shortcuts](https://dequeuniversity.com/screenreaders/voiceover-ios-shortcuts)
 
-#### JAWS in Internet Explorer
+#### JAWS in Internet Explorer {#jaws-in-internet-explorer}
 
 [Job Access With Speech](http://www.freedomscientific.com/Products/Blindness/JAWS) or JAWS, is a prolifically used screen reader on Windows.
 
@@ -520,9 +520,9 @@ Refer to the following guides on how to best use JAWS:
 - [WebAIM - Using JAWS to Evaluate Web Accessibility](http://webaim.org/articles/jaws/)
 - [Deque - JAWS Keyboard Shortcuts](https://dequeuniversity.com/screenreaders/jaws-keyboard-shortcuts)
 
-### Other Screen Readers
+### Other Screen Readers {#other-screen-readers}
 
-#### ChromeVox in Google Chrome
+#### ChromeVox in Google Chrome {#chromevox-in-google-chrome}
 
 [ChromeVox](http://www.chromevox.com/) is an integrated screen reader on Chromebooks and is available [as an extension](https://chrome.google.com/webstore/detail/chromevox/kgejglhpjiefppelpmljglcjbhoiplfn?hl=en) for Google Chrome.
 
diff --git a/content/docs/add-react-to-a-website.md b/content/docs/add-react-to-a-website.md
index 886c776015..11b99d37aa 100644
--- a/content/docs/add-react-to-a-website.md
+++ b/content/docs/add-react-to-a-website.md
@@ -19,7 +19,7 @@ The majority of websites aren't, and don't need to be, single-page apps. With **
 - [Add React in One Minute](#add-react-in-one-minute)
 - [Optional: Try React with JSX](#optional-try-react-with-jsx) (no bundler necessary!)
 
-## Add React in One Minute
+## Add React in One Minute {#add-react-in-one-minute}
 
 In this section, we will show how to add a React component to an existing HTML page. You can follow along with your own website, or create an empty HTML file to practice.
 
@@ -27,7 +27,7 @@ There will be no complicated tools or install requirements -- **to complete this
 
 Optional: [Download the full example (2KB zipped)](https://gist.github.com/gaearon/6668a1f6986742109c00a581ce704605/archive/f6c882b6ae18bde42dcf6fdb751aae93495a2275.zip)
 
-### Step 1: Add a DOM Container to the HTML
+### Step 1: Add a DOM Container to the HTML {#step-1-add-a-dom-container-to-the-html}
 
 First, open the HTML page you want to edit. Add an empty `<div>` tag to mark the spot where you want to display something with React. For example:
 
@@ -45,7 +45,7 @@ We gave this `<div>` a unique `id` HTML attribute. This will allow us to find it
 >
 >You can place a "container" `<div>` like this **anywhere** inside the `<body>` tag. You may have as many independent DOM containers on one page as you need. They are usually empty -- React will replace any existing content inside DOM containers.
 
-### Step 2: Add the Script Tags
+### Step 2: Add the Script Tags {#step-2-add-the-script-tags}
 
 Next, add three `<script>` tags to the HTML page right before the closing `</body>` tag:
 
@@ -65,7 +65,7 @@ Next, add three `<script>` tags to the HTML page right before the closing `</bod
 
 The first two tags load React. The third one will load your component code.
 
-### Step 3: Create a React Component
+### Step 3: Create a React Component {#step-3-create-a-react-component}
 
 Create a file called `like_button.js` next to your HTML page.
 
@@ -86,7 +86,7 @@ ReactDOM.render(e(LikeButton), domContainer);
 
 These two lines of code find the `<div>` we added to our HTML in the first step, and then display our "Like" button React component inside of it. 
 
-### That's It!
+### That's It! {#thats-it}
 
 There is no step four. **You have just added the first React component to your website.**
 
@@ -96,7 +96,7 @@ Check out the next sections for more tips on integrating React.
 
 **[Download the full example (2KB zipped)](https://gist.github.com/gaearon/6668a1f6986742109c00a581ce704605/archive/f6c882b6ae18bde42dcf6fdb751aae93495a2275.zip)**
 
-### Tip: Reuse a Component
+### Tip: Reuse a Component {#tip-reuse-a-component}
 
 Commonly, you might want to display React components in multiple places on the HTML page. Here is an example that displays the "Like" button three times and passes some data to it:
 
@@ -108,7 +108,7 @@ Commonly, you might want to display React components in multiple places on the H
 >
 >This strategy is mostly useful while React-powered parts of the page are isolated from each other. Inside React code, it's easier to use [component composition](/docs/components-and-props.html#composing-components) instead.
 
-### Tip: Minify JavaScript for Production
+### Tip: Minify JavaScript for Production {#tip-minify-javascript-for-production}
 
 Before deploying your website to production, be mindful that unminifed JavaScript can significantly slow down the page for your users.
 
@@ -121,7 +121,7 @@ If you already minify the application scripts, **your site will be production-re
 
 If you don't have a minification step for your scripts, [here's one way to set it up](https://gist.github.com/gaearon/42a2ffa41b8319948f9be4076286e1f3).
 
-## Optional: Try React with JSX
+## Optional: Try React with JSX {#optional-try-react-with-jsx}
 
 In the examples above, we only relied on features that are natively supported by the browsers. This is why we used a JavaScript function call to tell React what to display:
 
@@ -151,7 +151,7 @@ These two code snippets are equivalent. While **JSX is [completely optional](/do
 
 You can play with JSX using [this online converter](http://babeljs.io/repl#?babili=false&browsers=&build=&builtIns=false&spec=false&loose=false&code_lz=Q&debug=false&forceAllTransforms=false&shippedProposals=false&circleciRepo=&evaluate=false&fileSize=false&sourceType=module&lineWrap=true&presets=es2015%2Creact%2Cstage-2%2Cstage-3&prettier=true&targets=Node-6.12&version=6.26.0&envVersion=).
 
-### Quickly Try JSX
+### Quickly Try JSX {#quickly-try-jsx}
 
 The quickest way to try JSX in your project is to add this `<script>` tag to your page:
 
@@ -163,7 +163,7 @@ Now you can use JSX in any `<script>` tag by adding `type="text/babel"` attribut
 
 This approach is fine for learning and creating simple demos. However, it makes your website slow and **isn't suitable for production**. When you're ready to move forward, remove this new `<script>` tag and the `type="text/babel"` attributes you've added. Instead, in the next section you will set up a JSX preprocessor to convert all your `<script>` tags automatically.
 
-### Add JSX to a Project
+### Add JSX to a Project {#add-jsx-to-a-project}
 
 Adding JSX to a project doesn't require complicated tools like a bundler or a development server. Essentially, adding JSX **is a lot like adding a CSS preprocessor.** The only requirement is to have [Node.js](https://nodejs.org/) installed on your computer.
 
@@ -179,7 +179,7 @@ Go to your project folder in the terminal, and paste these two commands:
 Congratulations! You just added a **production-ready JSX setup** to your project.
 
 
-### Run JSX Preprocessor
+### Run JSX Preprocessor {#run-jsx-preprocessor}
 
 Create a folder called `src` and run this terminal command:
 
diff --git a/content/docs/addons-animation.md b/content/docs/addons-animation.md
index 8f5b64038a..a619af76e8 100644
--- a/content/docs/addons-animation.md
+++ b/content/docs/addons-animation.md
@@ -16,7 +16,7 @@ redirect_from:
 
 The [`ReactTransitionGroup`](#low-level-api-reacttransitiongroup) add-on component is a low-level API for animation, and [`ReactCSSTransitionGroup`](#high-level-api-reactcsstransitiongroup) is an add-on component for easily implementing basic CSS animations and transitions.
 
-## High-level API: ReactCSSTransitionGroup
+## High-level API: ReactCSSTransitionGroup {#high-level-api-reactcsstransitiongroup}
 
 `ReactCSSTransitionGroup` is a high-level API based on [`ReactTransitionGroup`](#low-level-api-reacttransitiongroup) and is an easy way to perform CSS transitions and animations when a React component enters or leaves the DOM. It's inspired by the excellent [ng-animate](https://docs.angularjs.org/api/ngAnimate) library.
 
@@ -100,7 +100,7 @@ You can use these classes to trigger a CSS animation or transition. For example,
 
 You'll notice that animation durations need to be specified in both the CSS and the render method; this tells React when to remove the animation classes from the element and -- if it's leaving -- when to remove the element from the DOM.
 
-### Animate Initial Mounting
+### Animate Initial Mounting {#animate-initial-mounting}
 
 `ReactCSSTransitionGroup` provides the optional prop `transitionAppear`, to add an extra transition phase at the initial mount of the component. There is generally no transition phase at the initial mount as the default value of `transitionAppear` is `false`. The following is an example which passes the prop `transitionAppear` with the value `true`.
 
@@ -140,7 +140,7 @@ At the initial mount, all children of the `ReactCSSTransitionGroup` will `appear
 >
 > However, the default values of `transitionEnter` and `transitionLeave` are `true` so you must specify `transitionEnterTimeout` and `transitionLeaveTimeout` by default. If you don't need either enter or leave animations, pass `transitionEnter={false}` or `transitionLeave={false}`.
 
-### Custom Classes
+### Custom Classes {#custom-classes}
 
 It is also possible to use custom class names for each of the steps in your transitions. Instead of passing a string into transitionName you can pass an object containing either the `enter` and `leave` class names, or an object containing the `enter`, `enter-active`, `leave-active`, and `leave` class names. If only the enter and leave classes are provided, the enter-active and leave-active classes will be determined by appending '-active' to the end of the class name. Here are two examples using custom classes:
 
@@ -169,7 +169,7 @@ It is also possible to use custom class names for each of the steps in your tran
 // ...
 ```
 
-### Animation Group Must Be Mounted To Work
+### Animation Group Must Be Mounted To Work {#animation-group-must-be-mounted-to-work}
 
 In order for it to apply transitions to its children, the `ReactCSSTransitionGroup` must already be mounted in the DOM or the prop `transitionAppear` must be set to `true`.
 
@@ -194,7 +194,7 @@ render() {
 }
 ```
 
-### Animating One or Zero Items
+### Animating One or Zero Items {#animating-one-or-zero-items}
 
 In the example above, we rendered a list of items into `ReactCSSTransitionGroup`. However, the children of `ReactCSSTransitionGroup` can also be one or zero items. This makes it possible to animate a single element entering or leaving. Similarly, you can animate a new element replacing the current element. For example, we can implement a simple image carousel like this:
 
@@ -215,7 +215,7 @@ function ImageCarousel(props) {
 }
 ```
 
-### Disabling Animations
+### Disabling Animations {#disabling-animations}
 
 You can disable animating `enter` or `leave` animations if you want. For example, sometimes you may want an `enter` animation and no `leave` animation, but `ReactCSSTransitionGroup` waits for an animation to complete before removing your DOM node. You can add `transitionEnter={false}` or `transitionLeave={false}` props to `ReactCSSTransitionGroup` to disable these animations.
 
@@ -225,7 +225,7 @@ You can disable animating `enter` or `leave` animations if you want. For example
 
 * * *
 
-## Low-level API: ReactTransitionGroup
+## Low-level API: ReactTransitionGroup {#low-level-api-reacttransitiongroup}
 
 **Importing**
 
@@ -243,7 +243,7 @@ var ReactTransitionGroup = require('react-addons-transition-group') // ES5 with
  - [`componentWillLeave()`](#componentwillleave)
  - [`componentDidLeave()`](#componentdidleave)
 
-#### Rendering a Different Component
+#### Rendering a Different Component {#rendering-a-different-component}
 
 `ReactTransitionGroup` renders as a `span` by default. You can change this behavior by providing a `component` prop. For example, here's how you would render a `<ul>`:
 
@@ -263,7 +263,7 @@ Any additional, user-defined, properties will become properties of the rendered
 
 Every DOM component that React can render is available for use. However, `component` does not need to be a DOM component. It can be any React component you want; even ones you've written yourself! Just write `component={List}` and your component will receive `this.props.children`.
 
-#### Rendering a Single Child
+#### Rendering a Single Child {#rendering-a-single-child}
 
 People often use `ReactTransitionGroup` to animate mounting and unmounting of a single child such as a collapsible panel. Normally `ReactTransitionGroup` wraps all its children in a `span` (or a custom `component` as described above). This is because any React component has to return a single root element, and `ReactTransitionGroup` is no exception to this rule.
 
@@ -288,9 +288,9 @@ This only works when you are animating a single child in and out, such as a coll
 
 * * *
 
-## Reference
+## Reference {#reference}
 
-### `componentWillAppear()`
+### `componentWillAppear()` {#componentwillappear}
 
 ```javascript
 componentWillAppear(callback)
@@ -300,7 +300,7 @@ This is called at the same time as `componentDidMount()` for components that are
 
 * * *
 
-### `componentDidAppear()`
+### `componentDidAppear()` {#componentdidappear}
 
 ```javascript
 componentDidAppear()
@@ -310,7 +310,7 @@ This is called after the `callback` function that was passed to `componentWillAp
 
 * * *
 
-### `componentWillEnter()`
+### `componentWillEnter()` {#componentwillenter}
 
 ```javascript
 componentWillEnter(callback)
@@ -320,7 +320,7 @@ This is called at the same time as `componentDidMount()` for components added to
 
 * * *
 
-### `componentDidEnter()`
+### `componentDidEnter()` {#componentdidenter}
 
 ```javascript
 componentDidEnter()
@@ -330,7 +330,7 @@ This is called after the `callback` function that was passed to [`componentWillE
 
 * * *
 
-### `componentWillLeave()`
+### `componentWillLeave()` {#componentwillleave}
 
 ```javascript
 componentWillLeave(callback)
@@ -340,7 +340,7 @@ This is called when the child has been removed from the `ReactTransitionGroup`.
 
 * * *
 
-### `componentDidLeave()`
+### `componentDidLeave()` {#componentdidleave}
 
 ```javascript
 componentDidLeave()
diff --git a/content/docs/addons-create-fragment.md b/content/docs/addons-create-fragment.md
index e69a8921d7..7c5fc9fda2 100644
--- a/content/docs/addons-create-fragment.md
+++ b/content/docs/addons-create-fragment.md
@@ -10,14 +10,14 @@ category: Add-Ons
 >
 > `React.addons` entry point is deprecated as of React v15.5. We now have first class support for fragments which you can read about [here](/docs/fragments.html).
 
-## Importing
+## Importing {#importing}
 
 ```javascript
 import createFragment from 'react-addons-create-fragment'; // ES6
 var createFragment = require('react-addons-create-fragment'); // ES5 with npm
 ```
 
-## Overview
+## Overview {#overview}
 
 In most cases, you can use the `key` prop to specify keys on the elements you're returning from `render`. However, this breaks down in one situation: if you have two sets of children that you need to reorder, there's no way to put a key on each set without adding a wrapper element.
 
@@ -39,7 +39,7 @@ The children will unmount and remount as you change the `swapped` prop because t
 
 To solve this problem, you can use the `createFragment` add-on to give keys to the sets of children.
 
-#### `Array<ReactNode> createFragment(object children)`
+#### `Array<ReactNode> createFragment(object children)` {#arrayreactnode-createfragmentobject-children}
 
 Instead of creating arrays, we write:
 
diff --git a/content/docs/addons-perf.md b/content/docs/addons-perf.md
index 5b47c4ccb2..f50dee96f1 100644
--- a/content/docs/addons-perf.md
+++ b/content/docs/addons-perf.md
@@ -18,7 +18,7 @@ var Perf = require('react-addons-perf'); // ES5 with npm
 ```
 
 
-## Overview
+## Overview {#overview}
 
 React is usually quite fast out of the box. However, in situations where you need to squeeze every ounce of performance out of your app, it provides a [shouldComponentUpdate()](/docs/react-component.html#shouldcomponentupdate) method where you can add optimization hints to React's diff algorithm.
 
@@ -30,23 +30,23 @@ See these articles for an introduction to React performance tooling:
  - ["Performance Engineering with React"](http://benchling.engineering/performance-engineering-with-react/)
  - ["A Deep Dive into React Perf Debugging"](http://benchling.engineering/deep-dive-react-perf-debugging/) 
 
-### Development vs. Production Builds
+### Development vs. Production Builds {#development-vs-production-builds}
 
 If you're benchmarking or seeing performance problems in your React apps, make sure you're testing with the [minified production build](/downloads.html). The development build includes extra warnings that are helpful when building your apps, but it is slower due to the extra bookkeeping it does.
 
 However, the perf tools described on this page only work when using the development build of React. Therefore, the profiler only serves to indicate the _relatively_ expensive parts of your app.
 
-### Using Perf
+### Using Perf {#using-perf}
 
 The `Perf` object can be used with React in development mode only. You should not include this bundle when building your app for production.
 
-#### Getting Measurements
+#### Getting Measurements {#getting-measurements}
 
  - [`start()`](#start)
  - [`stop()`](#stop)
  - [`getLastMeasurements()`](#getlastmeasurements)
 
-#### Printing Results
+#### Printing Results {#printing-results}
 
 The following methods use the measurements returned by [`Perf.getLastMeasurements()`](#getlastmeasurements) to pretty-print the result.
 
@@ -58,10 +58,10 @@ The following methods use the measurements returned by [`Perf.getLastMeasurement
 
 * * *
 
-## Reference
+## Reference {#reference}
 
-### `start()`
-### `stop()`
+### `start()` {#start}
+### `stop()` {#stop}
 
 ```javascript
 Perf.start()
@@ -75,7 +75,7 @@ After stopping, you will need [`Perf.getLastMeasurements()`](#getlastmeasurement
 
 * * *
 
-### `getLastMeasurements()`
+### `getLastMeasurements()` {#getlastmeasurements}
 
 ```javascript
 Perf.getLastMeasurements()
@@ -89,7 +89,7 @@ Get the opaque data structure describing measurements from the last start-stop s
 
 * * *
 
-### `printInclusive()`
+### `printInclusive()` {#printinclusive}
 
 ```javascript
 Perf.printInclusive(measurements)
@@ -101,7 +101,7 @@ Prints the overall time taken. When no arguments are passed, `printInclusive` de
 
 * * *
 
-### `printExclusive()`
+### `printExclusive()` {#printexclusive}
 
 ```javascript
 Perf.printExclusive(measurements)
@@ -113,7 +113,7 @@ Perf.printExclusive(measurements)
 
 * * *
 
-### `printWasted()`
+### `printWasted()` {#printwasted}
 
 ```javascript
 Perf.printWasted(measurements)
@@ -127,7 +127,7 @@ Perf.printWasted(measurements)
 
 * * *
 
-### `printOperations()`
+### `printOperations()` {#printoperations}
 
 ```javascript
 Perf.printOperations(measurements)
@@ -139,7 +139,7 @@ Prints the underlying DOM manipulations, e.g. "set innerHTML" and "remove".
 
 * * *
 
-### `printDOM()`
+### `printDOM()` {#printdom}
 
 ```javascript
 Perf.printDOM(measurements)
diff --git a/content/docs/addons-pure-render-mixin.md b/content/docs/addons-pure-render-mixin.md
index c62305866a..8724453097 100644
--- a/content/docs/addons-pure-render-mixin.md
+++ b/content/docs/addons-pure-render-mixin.md
@@ -17,7 +17,7 @@ import PureRenderMixin from 'react-addons-pure-render-mixin'; // ES6
 var PureRenderMixin = require('react-addons-pure-render-mixin'); // ES5 with npm
 ```
 
-## Overview
+## Overview {#overview}
 
 If your React component's render function renders the same result given the same props and state, you can use this mixin for a performance boost in some cases.
 
diff --git a/content/docs/addons-shallow-compare.md b/content/docs/addons-shallow-compare.md
index 90f0c1d173..99af2495c4 100644
--- a/content/docs/addons-shallow-compare.md
+++ b/content/docs/addons-shallow-compare.md
@@ -17,7 +17,7 @@ import shallowCompare from 'react-addons-shallow-compare'; // ES6
 var shallowCompare = require('react-addons-shallow-compare'); // ES5 with npm
 ```
 
-## Overview
+## Overview {#overview}
 
 Before [`React.PureComponent`](/docs/react-api.html#reactpurecomponent) was introduced, `shallowCompare` was commonly used to achieve the same functionality as [`PureRenderMixin`](pure-render-mixin.html) while using ES6 classes with React.
 
diff --git a/content/docs/addons-shallow-renderer.md b/content/docs/addons-shallow-renderer.md
index 6d3e5dfa07..3fcbbb25bf 100644
--- a/content/docs/addons-shallow-renderer.md
+++ b/content/docs/addons-shallow-renderer.md
@@ -13,7 +13,7 @@ import ShallowRenderer from 'react-test-renderer/shallow'; // ES6
 var ShallowRenderer = require('react-test-renderer/shallow'); // ES5 with npm
 ```
 
-## Overview
+## Overview {#overview}
 
 When writing unit tests for React, shallow rendering can be helpful. Shallow rendering lets you render a component "one level deep" and assert facts about what its render method returns, without worrying about the behavior of child components, which are not instantiated or rendered. This does not require a DOM.
 
@@ -53,15 +53,15 @@ Shallow testing currently has some limitations, namely not supporting refs.
 >
 > We also recommend checking out Enzyme's [Shallow Rendering API](http://airbnb.io/enzyme/docs/api/shallow.html). It provides a nicer higher-level API over the same functionality.
 
-## Reference
+## Reference {#reference}
 
-### `shallowRenderer.render()`
+### `shallowRenderer.render()` {#shallowrendererrender}
 
 You can think of the shallowRenderer as a "place" to render the component you're testing, and from which you can extract the component's output.
 
 `shallowRenderer.render()` is similar to [`ReactDOM.render()`](/docs/react-dom.html#render) but it doesn't require DOM and only renders a single level deep. This means you can test components isolated from how their children are implemented.
 
-### `shallowRenderer.getRenderOutput()`
+### `shallowRenderer.getRenderOutput()` {#shallowrenderergetrenderoutput}
 
 After `shallowRenderer.render()` has been called, you can use `shallowRenderer.getRenderOutput()` to get the shallowly rendered output.
 
diff --git a/content/docs/addons-test-utils.md b/content/docs/addons-test-utils.md
index 12606b5a7e..bbbf5755c5 100644
--- a/content/docs/addons-test-utils.md
+++ b/content/docs/addons-test-utils.md
@@ -13,7 +13,7 @@ import ReactTestUtils from 'react-dom/test-utils'; // ES6
 var ReactTestUtils = require('react-dom/test-utils'); // ES5 with npm
 ```
 
-## Overview
+## Overview {#overview}
 
 `ReactTestUtils` makes it easy to test React components in the testing framework of your choice. At Facebook we use [Jest](https://facebook.github.io/jest/) for painless JavaScript testing. Learn how to get started with Jest through the Jest website's [React Tutorial](http://facebook.github.io/jest/docs/en/tutorial-react.html#content).
 
@@ -40,9 +40,9 @@ var ReactTestUtils = require('react-dom/test-utils'); // ES5 with npm
  - [`renderIntoDocument()`](#renderintodocument)
  - [`Simulate`](#simulate)
 
-## Reference
+## Reference {#reference}
 
-### `act()`
+### `act()` {#act}
 
 To prepare a component for assertions, wrap the code rendering it and performing updates inside an `act()` call. This makes your test run closer to how React works in the browser.
 
@@ -126,7 +126,7 @@ Don't forget that dispatching DOM events only works when the DOM container is ad
 
 * * *
 
-### `mockComponent()`
+### `mockComponent()` {#mockcomponent}
 
 ```javascript
 mockComponent(
@@ -143,7 +143,7 @@ Pass a mocked component module to this method to augment it with useful methods
 
 * * *
 
-### `isElement()`
+### `isElement()` {#iselement}
 
 ```javascript
 isElement(element)
@@ -153,7 +153,7 @@ Returns `true` if `element` is any React element.
 
 * * *
 
-### `isElementOfType()`
+### `isElementOfType()` {#iselementoftype}
 
 ```javascript
 isElementOfType(
@@ -166,7 +166,7 @@ Returns `true` if `element` is a React element whose type is of a React `compone
 
 * * *
 
-### `isDOMComponent()`
+### `isDOMComponent()` {#isdomcomponent}
 
 ```javascript
 isDOMComponent(instance)
@@ -176,7 +176,7 @@ Returns `true` if `instance` is a DOM component (such as a `<div>` or `<span>`).
 
 * * *
 
-### `isCompositeComponent()`
+### `isCompositeComponent()` {#iscompositecomponent}
 
 ```javascript
 isCompositeComponent(instance)
@@ -186,7 +186,7 @@ Returns `true` if `instance` is a user-defined component, such as a class or a f
 
 * * *
 
-### `isCompositeComponentWithType()`
+### `isCompositeComponentWithType()` {#iscompositecomponentwithtype}
 
 ```javascript
 isCompositeComponentWithType(
@@ -199,7 +199,7 @@ Returns `true` if `instance` is a component whose type is of a React `componentC
 
 * * *
 
-### `findAllInRenderedTree()`
+### `findAllInRenderedTree()` {#findallinrenderedtree}
 
 ```javascript
 findAllInRenderedTree(
@@ -212,7 +212,7 @@ Traverse all components in `tree` and accumulate all components where `test(comp
 
 * * *
 
-### `scryRenderedDOMComponentsWithClass()`
+### `scryRenderedDOMComponentsWithClass()` {#scryrendereddomcomponentswithclass}
 
 ```javascript
 scryRenderedDOMComponentsWithClass(
@@ -225,7 +225,7 @@ Finds all DOM elements of components in the rendered tree that are DOM component
 
 * * *
 
-### `findRenderedDOMComponentWithClass()`
+### `findRenderedDOMComponentWithClass()` {#findrendereddomcomponentwithclass}
 
 ```javascript
 findRenderedDOMComponentWithClass(
@@ -238,7 +238,7 @@ Like [`scryRenderedDOMComponentsWithClass()`](#scryrendereddomcomponentswithclas
 
 * * *
 
-### `scryRenderedDOMComponentsWithTag()`
+### `scryRenderedDOMComponentsWithTag()` {#scryrendereddomcomponentswithtag}
 
 ```javascript
 scryRenderedDOMComponentsWithTag(
@@ -251,7 +251,7 @@ Finds all DOM elements of components in the rendered tree that are DOM component
 
 * * *
 
-### `findRenderedDOMComponentWithTag()`
+### `findRenderedDOMComponentWithTag()` {#findrendereddomcomponentwithtag}
 
 ```javascript
 findRenderedDOMComponentWithTag(
@@ -264,7 +264,7 @@ Like [`scryRenderedDOMComponentsWithTag()`](#scryrendereddomcomponentswithtag) b
 
 * * *
 
-### `scryRenderedComponentsWithType()`
+### `scryRenderedComponentsWithType()` {#scryrenderedcomponentswithtype}
 
 ```javascript
 scryRenderedComponentsWithType(
@@ -277,7 +277,7 @@ Finds all instances of components with type equal to `componentClass`.
 
 * * *
 
-### `findRenderedComponentWithType()`
+### `findRenderedComponentWithType()` {#findrenderedcomponentwithtype}
 
 ```javascript
 findRenderedComponentWithType(
@@ -290,7 +290,7 @@ Same as [`scryRenderedComponentsWithType()`](#scryrenderedcomponentswithtype) bu
 
 ***
 
-### `renderIntoDocument()`
+### `renderIntoDocument()` {#renderintodocument}
 
 ```javascript
 renderIntoDocument(element)
@@ -309,9 +309,9 @@ ReactDOM.render(element, domContainer);
 
 * * *
 
-## Other Utilities
+## Other Utilities {#other-utilities}
 
-### `Simulate`
+### `Simulate` {#simulate}
 
 ```javascript
 Simulate.{eventName}(
diff --git a/content/docs/addons-two-way-binding-helpers.md b/content/docs/addons-two-way-binding-helpers.md
index e7d6b9126d..37c00679a9 100644
--- a/content/docs/addons-two-way-binding-helpers.md
+++ b/content/docs/addons-two-way-binding-helpers.md
@@ -17,7 +17,7 @@ import LinkedStateMixin from 'react-addons-linked-state-mixin'; // ES6
 var LinkedStateMixin = require('react-addons-linked-state-mixin'); // ES5 with npm
 ```
 
-## Overview
+## Overview {#overview}
 
 `LinkedStateMixin` is an easy way to express two-way binding with React.
 
@@ -33,7 +33,7 @@ Two-way binding -- implicitly enforcing that some value in the DOM is always con
 >
 > `LinkedStateMixin` is just a thin wrapper and convention around the `onChange`/`setState()` pattern. It doesn't fundamentally change how data flows in your React application.
 
-## LinkedStateMixin: Before and After
+## LinkedStateMixin: Before and After {#linkedstatemixin-before-and-after}
 
 Here's a simple form example without using `LinkedStateMixin`:
 
@@ -79,11 +79,11 @@ Note that checkboxes have a special behavior regarding their `value` attribute,
 <input type="checkbox" checkedLink={this.linkState('booleanValue')} />
 ```
 
-## Under the Hood
+## Under the Hood {#under-the-hood}
 
 There are two sides to `LinkedStateMixin`: the place where you create the `valueLink` instance and the place where you use it. To prove how simple `LinkedStateMixin` is, let's rewrite each side separately to be more explicit.
 
-### valueLink Without LinkedStateMixin
+### valueLink Without LinkedStateMixin {#valuelink-without-linkedstatemixin}
 
 ```javascript{7-9,11-14}
 var createReactClass = require('create-react-class');
@@ -107,7 +107,7 @@ var WithoutMixin = createReactClass({
 
 As you can see, `valueLink` objects are very simple objects that just have a `value` and `requestChange` prop. And `LinkedStateMixin` is similarly simple: it just populates those fields with a value from `this.state` and a callback that calls `this.setState()`.
 
-### LinkedStateMixin Without valueLink
+### LinkedStateMixin Without valueLink {#linkedstatemixin-without-valuelink}
 
 ```javascript
 var LinkedStateMixin = require('react-addons-linked-state-mixin');
diff --git a/content/docs/addons-update.md b/content/docs/addons-update.md
index 316dfb2e48..0aa20a482b 100644
--- a/content/docs/addons-update.md
+++ b/content/docs/addons-update.md
@@ -17,13 +17,13 @@ import update from 'react-addons-update'; // ES6
 var update = require('react-addons-update'); // ES5 with npm
 ```
 
-## Overview
+## Overview {#overview}
 
 React lets you use whatever style of data management you want, including mutation. However, if you can use immutable data in performance-critical parts of your application it's easy to implement a fast [`shouldComponentUpdate()`](/docs/react-component.html#shouldcomponentupdate) method to significantly speed up your app.
 
 Dealing with immutable data in JavaScript is more difficult than in languages designed for it, like [Clojure](http://clojure.org/). However, we've provided a simple immutability helper, `update()`, that makes dealing with this type of data much easier, *without* fundamentally changing how your data is represented. You can also take a look at Facebook's [Immutable-js](https://facebook.github.io/immutable-js/docs/) and the [Advanced Performance](/docs/advanced-performance.html) section for more detail on Immutable-js.
 
-### The Main Idea
+### The Main Idea {#the-main-idea}
 
 If you mutate data like this:
 
@@ -54,7 +54,7 @@ const newData = extend(myData, {
 
 While this is fairly performant (since it only makes a shallow copy of `log n` objects and reuses the rest), it's a big pain to write. Look at all the repetition! This is not only annoying, but also provides a large surface area for bugs.
 
-## `update()`
+## `update()` {#update}
 
 `update()` provides simple syntactic sugar around this pattern to make writing this code easier. This code becomes:
 
@@ -71,7 +71,7 @@ While the syntax takes a little getting used to (though it's inspired by [MongoD
 
 The `$`-prefixed keys are called *commands*. The data structure they are "mutating" is called the *target*.
 
-## Available Commands
+## Available Commands {#available-commands}
 
   * `{$push: array}` `push()` all the items in `array` on the target.
   * `{$unshift: array}` `unshift()` all the items in `array` on the target.
@@ -80,9 +80,9 @@ The `$`-prefixed keys are called *commands*. The data structure they are "mutati
   * `{$merge: object}` merge the keys of `object` with the target.
   * `{$apply: function}` passes in the current value to the function and updates it with the new returned value.
 
-## Examples
+## Examples {#examples}
 
-### Simple push
+### Simple push {#simple-push}
 
 ```js
 const initialArray = [1, 2, 3];
@@ -90,7 +90,7 @@ const newArray = update(initialArray, {$push: [4]}); // => [1, 2, 3, 4]
 ```
 `initialArray` is still `[1, 2, 3]`.
 
-### Nested collections
+### Nested collections {#nested-collections}
 
 ```js
 const collection = [1, 2, {a: [12, 17, 15]}];
@@ -99,7 +99,7 @@ const newCollection = update(collection, {2: {a: {$splice: [[1, 1, 13, 14]]}}});
 ```
 This accesses `collection`'s index `2`, key `a`, and does a splice of one item starting from index `1` (to remove `17`) while inserting `13` and `14`.
 
-### Updating a value based on its current one
+### Updating a value based on its current one {#updating-a-value-based-on-its-current-one}
 
 ```js
 const obj = {a: 5, b: 3};
@@ -109,7 +109,7 @@ const newObj = update(obj, {b: {$apply: function(x) {return x * 2;}}});
 const newObj2 = update(obj, {b: {$set: obj.b * 2}});
 ```
 
-### (Shallow) Merge
+### (Shallow) Merge {#shallow-merge}
 
 ```js
 const obj = {a: 5, b: 3};
diff --git a/content/docs/addons.md b/content/docs/addons.md
index e78bd003fc..a19f4ba79d 100644
--- a/content/docs/addons.md
+++ b/content/docs/addons.md
@@ -17,7 +17,7 @@ The add-ons below are in the development (unminified) version of React only:
 - [`Perf`](/docs/perf.html), a performance profiling tool for finding optimization opportunities.
 - [`ReactTestUtils`](/docs/test-utils.html), simple helpers for writing test cases.
 
-### Legacy Add-ons
+### Legacy Add-ons {#legacy-add-ons}
 
 The add-ons below are considered legacy and their use is discouraged. They will keep working in observable future, but there is no further development.
 
@@ -26,12 +26,12 @@ The add-ons below are considered legacy and their use is discouraged. They will
 - [`update`](/docs/update.html). Use [`kolodny/immutability-helper`](https://github.com/kolodny/immutability-helper) instead.
 - [`ReactDOMFactories`](https://www.npmjs.com/package/react-dom-factories), pre-configured DOM factories to make React easier to use without JSX.
 
-### Deprecated Add-ons
+### Deprecated Add-ons {#deprecated-add-ons}
 
 - [`LinkedStateMixin`](/docs/two-way-binding-helpers.html) has been deprecated.
 - [`TransitionGroup` and `CSSTransitionGroup`](/docs/animation.html) have been deprecated in favor of [their drop-in replacements](https://github.com/reactjs/react-transition-group/tree/v1-stable).
 
-## Using React with Add-ons
+## Using React with Add-ons {#using-react-with-add-ons}
 
 You can install the add-ons individually from npm (e.g. `npm install react-addons-create-fragment`) and import them:
 
diff --git a/content/docs/cdn-links.md b/content/docs/cdn-links.md
index 9f48a01f75..73e3e81717 100644
--- a/content/docs/cdn-links.md
+++ b/content/docs/cdn-links.md
@@ -22,7 +22,7 @@ The versions above are only meant for development, and are not suitable for prod
 
 To load a specific version of `react` and `react-dom`, replace `16` with the version number.
 
-### Why the `crossorigin` Attribute?
+### Why the `crossorigin` Attribute? {#why-the-crossorigin-attribute}
 
 If you serve React from a CDN, we recommend to keep the [`crossorigin`](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) attribute set:
 
diff --git a/content/docs/code-splitting.md b/content/docs/code-splitting.md
index d779273f53..5b8d400634 100644
--- a/content/docs/code-splitting.md
+++ b/content/docs/code-splitting.md
@@ -4,7 +4,7 @@ title: Code-Splitting
 permalink: docs/code-splitting.html
 ---
 
-## Bundling
+## Bundling {#bundling}
 
 Most React apps will have their files "bundled" using tools like
 [Webpack](https://webpack.js.org/) or [Browserify](http://browserify.org/).
@@ -12,7 +12,7 @@ Bundling is the process of following imported files and merging them into a
 single file: a "bundle". This bundle can then be included on a webpage to load
 an entire app at once.
 
-#### Example
+#### Example {#example}
 
 **App:**
 
@@ -52,7 +52,7 @@ If you aren't, you'll need to setup bundling yourself. For example, see the
 [Getting Started](https://webpack.js.org/guides/getting-started/) guides on the
 Webpack docs.
 
-## Code Splitting
+## Code Splitting {#code-splitting}
 
 Bundling is great, but as your app grows, your bundle will grow too. Especially
 if you are including large third-party libraries. You need to keep an eye on
@@ -72,7 +72,7 @@ your app. While you haven't reduced the overall amount of code in your app,
 you've avoided loading code that the user may never need, and reduced the amount
 of code needed during the initial load.
 
-## `import()`
+## `import()` {#import}
 
 The best way to introduce code-splitting into your app is through the dynamic
 `import()` syntax.
@@ -111,7 +111,7 @@ If you're setting up Webpack yourself, you'll probably want to read Webpack's
 When using [Babel](http://babeljs.io/), you'll need to make sure that Babel can
 parse the dynamic import syntax but is not transforming it. For that you will need [babel-plugin-syntax-dynamic-import](https://yarnpkg.com/en/package/babel-plugin-syntax-dynamic-import).
 
-## `React.lazy`
+## `React.lazy` {#reactlazy}
 
 > Note:
 >
@@ -151,7 +151,7 @@ This will automatically load the bundle containing the `OtherComponent` when thi
 
 `React.lazy` takes a function that must call a dynamic `import()`. This must return a `Promise` which resolves to a module with a `default` export containing a React component.
 
-### Suspense
+### Suspense {#suspense}
 
 If the module containing the `OtherComponent` is not yet loaded by the time `MyComponent` renders, we must show some fallback content while we're waiting for it to load - such as a loading indicator. This is done using the `Suspense` component.
 
@@ -189,7 +189,7 @@ function MyComponent() {
 }
 ```
 
-### Error boundaries
+### Error boundaries {#error-boundaries}
 
 If the other module fails to load (for example, due to network failure), it will trigger an error. You can handle these errors to show a nice user experience and manage recovery with [Error Boundaries](/docs/error-boundaries.html). Once you've created your Error Boundary, you can use it anywhere above your lazy components to display an error state when there's a network error.
 
@@ -212,7 +212,7 @@ const MyComponent = () => (
 );
 ```
 
-## Route-based code splitting
+## Route-based code splitting {#route-based-code-splitting}
 
 Deciding where in your app to introduce code splitting can be a bit tricky. You
 want to make sure you choose places that will split bundles evenly, but won't
@@ -245,7 +245,7 @@ const App = () => (
 );
 ```
 
-## Named Exports
+## Named Exports {#named-exports}
 
 `React.lazy` currently only supports default exports. If the module you want to import uses named exports, you can create an intermediate module that reexports it as the default. This ensures that treeshaking keeps working and that you don't pull in unused components.
 
diff --git a/content/docs/codebase-overview.md b/content/docs/codebase-overview.md
index 07b07aa788..257e54e024 100644
--- a/content/docs/codebase-overview.md
+++ b/content/docs/codebase-overview.md
@@ -15,13 +15,13 @@ If you want to [contribute to React](/docs/how-to-contribute.html) we hope that
 
 We don't necessarily recommend any of these conventions in React apps. Many of them exist for historical reasons and might change with time.
 
-### External Dependencies
+### External Dependencies {#external-dependencies}
 
 React has almost no external dependencies. Usually, a `require()` points to a file in React's own codebase. However, there are a few relatively rare exceptions.
 
 The [fbjs repository](https://github.com/facebook/fbjs) exists because React shares some small utilities with libraries like [Relay](https://github.com/facebook/relay), and we keep them in sync. We don't depend on equivalent small modules in the Node ecosystem because we want Facebook engineers to be able to make changes to them whenever necessary. None of the utilities inside fbjs are considered to be public API, and they are only intended for use by Facebook projects such as React.
 
-### Top-Level Folders
+### Top-Level Folders {#top-level-folders}
 
 After cloning the [React repository](https://github.com/facebook/react), you will see a few top-level folders in it:
 
@@ -33,13 +33,13 @@ The documentation is hosted [in a separate repository from React](https://github
 
 There are a few other top-level folders but they are mostly used for the tooling and you likely won't ever encounter them when contributing.
 
-### Colocated Tests
+### Colocated Tests {#colocated-tests}
 
 We don't have a top-level directory for unit tests. Instead, we put them into a directory called `__tests__` relative to the files that they test.
 
 For example, a test for [`setInnerHTML.js`](https://github.com/facebook/react/blob/87724bd87506325fcaf2648c70fc1f43411a87be/src/renderers/dom/client/utils/setInnerHTML.js) is located in [`__tests__/setInnerHTML-test.js`](https://github.com/facebook/react/blob/87724bd87506325fcaf2648c70fc1f43411a87be/src/renderers/dom/client/utils/__tests__/setInnerHTML-test.js) right next to it.
 
-### Warnings and Invariants
+### Warnings and Invariants {#warnings-and-invariants}
 
 The React codebase uses the `warning` module to display warnings:
 
@@ -88,7 +88,7 @@ invariant(
 
 It is important to keep development and production behavior similar, so `invariant` throws both in development and in production. The error messages are automatically replaced with error codes in production to avoid negatively affecting the byte size.
 
-### Development and Production
+### Development and Production {#development-and-production}
 
 You can use `__DEV__` pseudo-global variable in the codebase to guard development-only blocks of code.
 
@@ -102,7 +102,7 @@ if (__DEV__) {
 }
 ```
 
-### Flow
+### Flow {#flow}
 
 We recently started introducing [Flow](https://flow.org/) checks to the codebase. Files marked with the `@flow` annotation in the license header comment are being typechecked.
 
@@ -120,7 +120,7 @@ ReactRef.detachRefs = function(
 When possible, new code should use Flow annotations.
 You can run `yarn flow` locally to check your code with Flow.
 
-### Dynamic Injection
+### Dynamic Injection {#dynamic-injection}
 
 React uses dynamic injection in some modules. While it is always explicit, it is still unfortunate because it hinders understanding of the code. The main reason it exists is because React originally only supported DOM as a target. React Native started as a React fork. We had to add dynamic injection to let React Native override some behaviors.
 
@@ -153,11 +153,11 @@ The `injection` field is not handled specially in any way. But by convention, it
 
 There are multiple injection points in the codebase. In the future, we intend to get rid of the dynamic injection mechanism and wire up all the pieces statically during the build.
 
-### Multiple Packages
+### Multiple Packages {#multiple-packages}
 
 React is a [monorepo](http://danluu.com/monorepo/). Its repository contains multiple separate packages so that their changes can be coordinated together, and issues live in one place.
 
-### React Core
+### React Core {#react-core}
 
 The "core" of React includes all the [top-level `React` APIs](/docs/top-level-api.html#react), for example:
 
@@ -169,7 +169,7 @@ The "core" of React includes all the [top-level `React` APIs](/docs/top-level-ap
 
 The code for React core is located in [`packages/react`](https://github.com/facebook/react/tree/master/packages/react) in the source tree. It is available on npm as the [`react`](https://www.npmjs.com/package/react) package. The corresponding standalone browser build is called `react.js`, and it exports a global called `React`.
 
-### Renderers
+### Renderers {#renderers}
 
 React was originally created for the DOM but it was later adapted to also support native platforms with [React Native](http://facebook.github.io/react-native/). This introduced the concept of "renderers" to React internals.
 
@@ -187,7 +187,7 @@ The only other officially supported renderer is [`react-art`](https://github.com
 >
 >Technically the [`react-native-renderer`](https://github.com/facebook/react/tree/master/packages/react-native-renderer) is a very thin layer that teaches React to interact with React Native implementation. The real platform-specific code managing the native views lives in the [React Native repository](https://github.com/facebook/react-native) together with its components.
 
-### Reconcilers
+### Reconcilers {#reconcilers}
 
 Even vastly different renderers like React DOM and React Native need to share a lot of logic. In particular, the [reconciliation](/docs/reconciliation.html) algorithm should be as similar as possible so that declarative rendering, custom components, state, lifecycle methods, and refs work consistently across platforms.
 
@@ -195,11 +195,11 @@ To solve this, different renderers share some code between them. We call this pa
 
 Reconcilers are not packaged separately because they currently have no public API. Instead, they are exclusively used by renderers such as React DOM and React Native.
 
-### Stack Reconciler
+### Stack Reconciler {#stack-reconciler}
 
 The "stack" reconciler is the implementation powering React 15 and earlier. We have since stopped using it, but it is documented in detail in the [next section](/docs/implementation-notes.html).
 
-### Fiber Reconciler
+### Fiber Reconciler {#fiber-reconciler}
 
 The "fiber" reconciler is a new effort aiming to resolve the problems inherent in the stack reconciler and fix a few long-standing issues. It has been the default reconciler since React 16.
 
@@ -215,12 +215,12 @@ You can read more about React Fiber Architecture [here](https://github.com/acdli
 
 Its source code is located in [`packages/react-reconciler`](https://github.com/facebook/react/tree/master/packages/react-reconciler).
 
-### Event System
+### Event System {#event-system}
 
 React implements a synthetic event system which is agnostic of the renderers and works both with React DOM and React Native. Its source code is located in [`packages/events`](https://github.com/facebook/react/tree/master/packages/events).
 
 There is a [video with a deep code dive into it](https://www.youtube.com/watch?v=dRo_egw7tBc) (66 mins).
 
-### What Next?
+### What Next? {#what-next}
 
 Read the [next section](/docs/implementation-notes.html) to learn about the pre-React 16 implementation of reconciler in more detail. We haven't documented the internals of the new reconciler yet.
diff --git a/content/docs/components-and-props.md b/content/docs/components-and-props.md
index 06a25971d4..47daaedf98 100644
--- a/content/docs/components-and-props.md
+++ b/content/docs/components-and-props.md
@@ -20,7 +20,7 @@ Components let you split the UI into independent, reusable pieces, and think abo
 
 Conceptually, components are like JavaScript functions. They accept arbitrary inputs (called "props") and return React elements describing what should appear on the screen.
 
-## Function and Class Components
+## Function and Class Components {#function-and-class-components}
 
 The simplest way to define a component is to write a JavaScript function:
 
@@ -46,7 +46,7 @@ The above two components are equivalent from React's point of view.
 
 Classes have some additional features that we will discuss in the [next sections](/docs/state-and-lifecycle.html). Until then, we will use function components for their conciseness.
 
-## Rendering a Component
+## Rendering a Component {#rendering-a-component}
 
 Previously, we only encountered React elements that represent DOM tags:
 
@@ -91,7 +91,7 @@ Let's recap what happens in this example:
 >
 >You can read more about the reasoning behind this convention [here.](/docs/jsx-in-depth.html#user-defined-components-must-be-capitalized)
 
-## Composing Components
+## Composing Components {#composing-components}
 
 Components can refer to other components in their output. This lets us use the same component abstraction for any level of detail. A button, a form, a dialog, a screen: in React apps, all those are commonly expressed as components.
 
@@ -122,7 +122,7 @@ ReactDOM.render(
 
 Typically, new React apps have a single `App` component at the very top. However, if you integrate React into an existing app, you might start bottom-up with a small component like `Button` and gradually work your way to the top of the view hierarchy.
 
-## Extracting Components
+## Extracting Components {#extracting-components}
 
 Don't be afraid to split components into smaller components.
 
@@ -235,7 +235,7 @@ function Comment(props) {
 
 Extracting components might seem like grunt work at first, but having a palette of reusable components pays off in larger apps. A good rule of thumb is that if a part of your UI is used several times (`Button`, `Panel`, `Avatar`), or is complex enough on its own (`App`, `FeedStory`, `Comment`), it is a good candidate to be a reusable component.
 
-## Props are Read-Only
+## Props are Read-Only {#props-are-read-only}
 
 Whether you declare a component [as a function or a class](#function-and-class-components), it must never modify its own props. Consider this `sum` function:
 
diff --git a/content/docs/composition-vs-inheritance.md b/content/docs/composition-vs-inheritance.md
index 5f8175377b..c86735ef7d 100644
--- a/content/docs/composition-vs-inheritance.md
+++ b/content/docs/composition-vs-inheritance.md
@@ -12,7 +12,7 @@ React has a powerful composition model, and we recommend using composition inste
 
 In this section, we will consider a few problems where developers new to React often reach for inheritance, and show how we can solve them with composition.
 
-## Containment
+## Containment {#containment}
 
 Some components don't know their children ahead of time. This is especially common for components like `Sidebar` or `Dialog` that represent generic "boxes".
 
@@ -82,7 +82,7 @@ function App() {
 
 React elements like `<Contacts />` and `<Chat />` are just objects, so you can pass them as props like any other data. This approach may remind you of "slots" in other libraries but there are no limitations on what you can pass as props in React.
 
-## Specialization
+## Specialization {#specialization}
 
 Sometimes we think about components as being "special cases" of other components. For example, we might say that a `WelcomeDialog` is a special case of `Dialog`.
 
@@ -163,7 +163,7 @@ class SignUpDialog extends React.Component {
 
 [**Try it on CodePen**](https://codepen.io/gaearon/pen/gwZbYa?editors=0010)
 
-## So What About Inheritance?
+## So What About Inheritance? {#so-what-about-inheritance}
 
 At Facebook, we use React in thousands of components, and we haven't found any use cases where we would recommend creating component inheritance hierarchies.
 
diff --git a/content/docs/conditional-rendering.md b/content/docs/conditional-rendering.md
index 5d5c829f34..7df19bb98c 100644
--- a/content/docs/conditional-rendering.md
+++ b/content/docs/conditional-rendering.md
@@ -46,7 +46,7 @@ ReactDOM.render(
 
 This example renders a different greeting depending on the value of `isLoggedIn` prop.
 
-### Element Variables
+### Element Variables {#element-variables}
 
 You can use variables to store elements. This can help you conditionally render a part of the component while the rest of the output doesn't change.
 
@@ -120,7 +120,7 @@ ReactDOM.render(
 
 While declaring a variable and using an `if` statement is a fine way to conditionally render a component, sometimes you might want to use a shorter syntax. There are a few ways to inline conditions in JSX, explained below.
 
-### Inline If with Logical && Operator
+### Inline If with Logical && Operator {#inline-if-with-logical--operator}
 
 You may [embed any expressions in JSX](/docs/introducing-jsx.html#embedding-expressions-in-jsx) by wrapping them in curly braces. This includes the JavaScript logical `&&` operator. It can be handy for conditionally including an element:
 
@@ -152,7 +152,7 @@ It works because in JavaScript, `true && expression` always evaluates to `expres
 
 Therefore, if the condition is `true`, the element right after `&&` will appear in the output. If it is `false`, React will ignore and skip it.
 
-### Inline If-Else with Conditional Operator
+### Inline If-Else with Conditional Operator {#inline-if-else-with-conditional-operator}
 
 Another method for conditionally rendering elements inline is to use the JavaScript conditional operator [`condition ? true : false`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Conditional_Operator).
 
@@ -188,7 +188,7 @@ render() {
 
 Just like in JavaScript, it is up to you to choose an appropriate style based on what you and your team consider more readable. Also remember that whenever conditions become too complex, it might be a good time to [extract a component](/docs/components-and-props.html#extracting-components).
 
-### Preventing Component from Rendering
+### Preventing Component from Rendering {#preventing-component-from-rendering}
 
 In rare cases you might want a component to hide itself even though it was rendered by another component. To do this return `null` instead of its render output.
 
diff --git a/content/docs/context.md b/content/docs/context.md
index 35624cbc2c..8e41a465f9 100644
--- a/content/docs/context.md
+++ b/content/docs/context.md
@@ -22,7 +22,7 @@ In a typical React application, data is passed top-down (parent to child) via pr
 - [Caveats](#caveats)
 - [Legacy API](#legacy-api)
 
-## When to Use Context
+## When to Use Context {#when-to-use-context}
 
 Context is designed to share data that can be considered "global" for a tree of React components, such as the current authenticated user, theme, or preferred language. For example, in the code below we manually thread through a "theme" prop in order to style the Button component:
 
@@ -32,7 +32,7 @@ Using context, we can avoid passing props through intermediate elements:
 
 `embed:context/motivation-solution.js`
 
-## Before You Use Context
+## Before You Use Context {#before-you-use-context}
 
 Context is primarily used when some data needs to be accessible by *many* components at different nesting levels. Apply it sparingly because it makes component reuse more difficult.
 
@@ -107,9 +107,9 @@ This pattern is sufficient for many cases when you need to decouple a child from
 
 However, sometimes the same data needs to be accessible by many components in the tree, and at different nesting levels. Context lets you "broadcast" such data, and changes to it, to all components below. Common examples where using context might be simpler than the alternatives include managing the current locale, theme, or a data cache. 
 
-## API
+## API {#api}
 
-### `React.createContext`
+### `React.createContext` {#reactcreatecontext}
 
 ```js
 const MyContext = React.createContext(defaultValue);
@@ -119,7 +119,7 @@ Creates a Context object. When React renders a component that subscribes to this
 
 The `defaultValue` argument is **only** used when a component does not have a matching Provider above it in the tree. This can be helpful for testing components in isolation without wrapping them. Note: passing `undefined` as a Provider value does not cause consuming components to use `defaultValue`.
 
-### `Context.Provider`
+### `Context.Provider` {#contextprovider}
 
 ```js
 <MyContext.Provider value={/* some value */}>
@@ -137,7 +137,7 @@ Changes are determined by comparing the new and old values using the same algori
 > 
 > The way changes are determined can cause some issues when passing objects as `value`: see [Caveats](#caveats).
 
-### `Class.contextType`
+### `Class.contextType` {#classcontexttype}
 
 ```js
 class MyClass extends React.Component {
@@ -180,7 +180,7 @@ class MyClass extends React.Component {
 }
 ```
 
-### `Context.Consumer`
+### `Context.Consumer` {#contextconsumer}
 
 ```js
 <MyContext.Consumer>
@@ -196,9 +196,9 @@ Requires a [function as a child](/docs/render-props.html#using-props-other-than-
 > 
 > For more information about the 'function as a child' pattern, see [render props](/docs/render-props.html).
 
-## Examples
+## Examples {#examples}
 
-### Dynamic Context
+### Dynamic Context {#dynamic-context}
 
 A more complex example with dynamic values for the theme:
 
@@ -211,7 +211,7 @@ A more complex example with dynamic values for the theme:
 **app.js**
 `embed:context/theme-detailed-app.js`
 
-### Updating Context from a Nested Component
+### Updating Context from a Nested Component {#updating-context-from-a-nested-component}
 
 It is often necessary to update the context from a component that is nested somewhere deeply in the component tree. In this case you can pass a function down through the context to allow consumers to update the context:
 
@@ -224,7 +224,7 @@ It is often necessary to update the context from a component that is nested some
 **app.js**
 `embed:context/updating-nested-context-app.js`
 
-### Consuming Multiple Contexts
+### Consuming Multiple Contexts {#consuming-multiple-contexts}
 
 To keep context re-rendering fast, React needs to make each context consumer a separate node in the tree. 
 
@@ -232,7 +232,7 @@ To keep context re-rendering fast, React needs to make each context consumer a s
 
 If two or more context values are often used together, you might want to consider creating your own render prop component that provides both.
 
-## Caveats
+## Caveats {#caveats}
 
 Because context uses reference identity to determine when to re-render, there are some gotchas that could trigger unintentional renders in consumers when a provider's parent re-renders. For example, the code below will re-render all consumers every time the Provider re-renders because a new object is always created for `value`:
 
@@ -243,7 +243,7 @@ To get around this, lift the value into the parent's state:
 
 `embed:context/reference-caveats-solution.js`
 
-## Legacy API
+## Legacy API {#legacy-api}
 
 > Note
 > 
diff --git a/content/docs/create-a-new-react-app.md b/content/docs/create-a-new-react-app.md
index 4d692f76f8..d3e9357e5a 100644
--- a/content/docs/create-a-new-react-app.md
+++ b/content/docs/create-a-new-react-app.md
@@ -20,13 +20,13 @@ This page describes a few popular React toolchains which help with tasks like:
 
 The toolchains recommended on this page **don't require configuration to get started**.
 
-## You Might Not Need a Toolchain
+## You Might Not Need a Toolchain {#you-might-not-need-a-toolchain}
 
 If you don't experience the problems described above or don't feel comfortable using JavaScript tools yet, consider [adding React as a plain `<script>` tag on an HTML page](/docs/add-react-to-a-website.html), optionally [with JSX](/docs/add-react-to-a-website.html#optional-try-react-with-jsx).
 
 This is also **the easiest way to integrate React into an existing website.** You can always add a larger toolchain if you find it helpful!
 
-## Recommended Toolchains
+## Recommended Toolchains {#recommended-toolchains}
 
 The React team primarily recommends these solutions:
 
@@ -35,7 +35,7 @@ The React team primarily recommends these solutions:
 - If you're building a **static content-oriented website,** try [Gatsby](#gatsby).
 - If you're building a **component library** or **integrating with an existing codebase**, try [More Flexible Toolchains](#more-flexible-toolchains).
 
-### Create React App
+### Create React App {#create-react-app}
 
 [Create React App](http://github.com/facebookincubator/create-react-app) is a comfortable environment for **learning React**, and is the best way to start building **a new [single-page](/docs/glossary.html#single-page-application) application** in React.
 
@@ -55,19 +55,19 @@ Create React App doesn't handle backend logic or databases; it just creates a fr
 
 When you're ready to deploy to production, running `npm run build` will create an optimized build of your app in the `build` folder. You can learn more about Create React App [from its README](https://github.com/facebookincubator/create-react-app#create-react-app-) and the [User Guide](https://github.com/facebookincubator/create-react-app/blob/master/packages/react-scripts/template/README.md#table-of-contents).
 
-### Next.js
+### Next.js {#nextjs}
 
 [Next.js](https://nextjs.org/) is a popular and lightweight framework for **static and server‑rendered applications** built with React. It includes **styling and routing solutions** out of the box, and assumes that you're using [Node.js](https://nodejs.org/) as the server environment.
 
 Learn Next.js from [its official guide](https://nextjs.org/learn/).
 
-### Gatsby
+### Gatsby {#gatsby}
 
 [Gatsby](https://www.gatsbyjs.org/) is the best way to create **static websites** with React. It lets you use React components, but outputs pre-rendered HTML and CSS to guarantee the fastest load time.
 
 Learn Gatsby from [its official guide](https://www.gatsbyjs.org/docs/) and a [gallery of starter kits](https://www.gatsbyjs.org/docs/gatsby-starters/).
 
-### More Flexible Toolchains
+### More Flexible Toolchains {#more-flexible-toolchains}
 
 The following toolchains offer more flexiblity and choice. We recommend them to more experienced users:
 
@@ -79,7 +79,7 @@ The following toolchains offer more flexiblity and choice. We recommend them to
 
 - **[Razzle](https://github.com/jaredpalmer/razzle)** is a server-rendering framework that doesn't require any configuration, but offers more flexibility than Next.js.
 
-## Creating a Toolchain from Scratch
+## Creating a Toolchain from Scratch {#creating-a-toolchain-from-scratch}
 
 A JavaScript build toolchain typically consists of:
 
diff --git a/content/docs/cross-origin-errors.md b/content/docs/cross-origin-errors.md
index dface0092b..915ee0d636 100644
--- a/content/docs/cross-origin-errors.md
+++ b/content/docs/cross-origin-errors.md
@@ -14,7 +14,7 @@ If an error is thrown from a [different origin](https://developer.mozilla.org/en
 
 You can simplify the development/debugging process by ensuring that errors are thrown with a same-origin policy. Below are some common causes of cross-origin errors and ways to address them.
 
-### CDN
+### CDN {#cdn}
 
 When loading React (or other libraries that might throw errors) from a CDN, add the [`crossorigin`](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) attribute to your `<script>` tags:
 
@@ -26,15 +26,15 @@ Also ensure the CDN responds with the `Access-Control-Allow-Origin: *` HTTP head
 
 ![Access-Control-Allow-Origin: *](../images/docs/cdn-cors-header.png)
 
-### Webpack
+### Webpack {#webpack}
 
-#### Source maps
+#### Source maps {#source-maps}
 
 Some JavaScript bundlers may wrap the application code with `eval` statements in development. (For example Webpack will do this if [`devtool`](https://webpack.js.org/configuration/devtool/) is set to any value containing the word "eval".) This may cause errors to be treated as cross-origin.
 
 If you use Webpack, we recommend using the `cheap-module-source-map` setting in development to avoid this problem.
 
-#### Code splitting
+#### Code splitting {#code-splitting}
 
 If your application is split into multiple bundles, these bundles may be loaded using JSONP. This may cause errors thrown in the code of these bundles to be treated as cross-origin.
 
diff --git a/content/docs/design-principles.md b/content/docs/design-principles.md
index bad88b0017..555045f4aa 100644
--- a/content/docs/design-principles.md
+++ b/content/docs/design-principles.md
@@ -16,7 +16,7 @@ We wrote this document so that you have a better idea of how we decide what Reac
 >
 >For an introduction to React, check out [Thinking in React](/docs/thinking-in-react.html) instead.
 
-### Composition
+### Composition {#composition}
 
 The key feature of React is composition of components. Components written by different people should work well together. It is important to us that you can add functionality to a component without causing rippling changes throughout the codebase.
 
@@ -26,7 +26,7 @@ There is nothing "bad" about using state or lifecycle methods in components. Lik
 
 Components are often described as "just functions" but in our view they need to be more than that to be useful. In React, components describe any composable behavior, and this includes rendering, lifecycle, and state. Some external libraries like [Relay](http://facebook.github.io/relay/) augment components with other responsibilities such as describing data dependencies. It is possible that those ideas might make it back into React too in some form.
 
-### Common Abstraction
+### Common Abstraction {#common-abstraction}
 
 In general we [resist adding features](https://www.youtube.com/watch?v=4anAwXYqLG8) that can be implemented in userland. We don't want to bloat your apps with useless library code. However, there are exceptions to this.
 
@@ -36,13 +36,13 @@ This is why sometimes we add features to React itself. If we notice that many co
 
 We always discuss such improvement proposals with the community. You can find some of those discussions by the ["big picture"](https://github.com/facebook/react/issues?q=is:open+is:issue+label:"Type:+Big+Picture") label on the React issue tracker.
 
-### Escape Hatches
+### Escape Hatches {#escape-hatches}
 
 React is pragmatic. It is driven by the needs of the products written at Facebook. While it is influenced by some paradigms that are not yet fully mainstream such as functional programming, staying accessible to a wide range of developers with different skills and experience levels is an explicit goal of the project.
 
 If we want to deprecate a pattern that we don't like, it is our responsibility to consider all existing use cases for it and [educate the community about the alternatives](/blog/2016/07/13/mixins-considered-harmful.html) before we deprecate it. If some pattern that is useful for building apps is hard to express in a declarative way, we will [provide an imperative API](/docs/more-about-refs.html) for it. If we can't figure out a perfect API for something that we found necessary in many apps, we will [provide a temporary subpar working API](/docs/legacy-context.html) as long as it is possible to get rid of it later and it leaves the door open for future improvements.
 
-### Stability
+### Stability {#stability}
 
 We value API stability. At Facebook, we have more than 50 thousand components using React. Many other companies, including [Twitter](https://twitter.com/) and [Airbnb](https://www.airbnb.com/), are also heavy users of React. This is why we are usually reluctant to change public APIs or behavior.
 
@@ -62,13 +62,13 @@ When we add a deprecation warning, we keep it for the rest of the current major
 
 You can find the codemods that we released in the [react-codemod](https://github.com/reactjs/react-codemod) repository.
 
-### Interoperability
+### Interoperability {#interoperability}
 
 We place high value in interoperability with existing systems and gradual adoption. Facebook has a massive non-React codebase. Its website uses a mix of a server-side component system called XHP, internal UI libraries that came before React, and React itself. It is important to us that any product team can [start using React for a small feature](https://www.youtube.com/watch?v=BF58ZJ1ZQxY) rather than rewrite their code to bet on it.
 
 This is why React provides escape hatches to work with mutable models, and tries to work well together with other UI libraries. You can wrap an existing imperative UI into a declarative component, and vice versa. This is crucial for gradual adoption.
 
-### Scheduling
+### Scheduling {#scheduling}
 
 Even when your components are described as functions, when you use React you don't call them directly. Every component returns a [description of what needs to be rendered](/blog/2015/12/18/react-components-elements-and-instances.html#elements-describe-the-tree), and that description may include both user-written components like `<LikeButton>` and platform-specific components like `<div>`. It is up to React to "unroll" `<LikeButton>` at some point in the future and actually apply changes to the UI tree according to the render results of the components recursively.
 
@@ -88,7 +88,7 @@ It is a key goal for React that the amount of the user code that executes before
 
 There is an internal joke in the team that React should have been called "Schedule" because React does not want to be fully "reactive".
 
-### Developer Experience
+### Developer Experience {#developer-experience}
 
 Providing a good developer experience is important to us.
 
@@ -100,7 +100,7 @@ The usage patterns that we see internally at Facebook help us understand what th
 
 We are always looking out for ways to improve the developer experience. We love to hear your suggestions and accept your contributions to make it even better.
 
-### Debugging
+### Debugging {#debugging}
 
 When something goes wrong, it is important that you have breadcrumbs to trace the mistake to its source in the codebase. In React, props and state are those breadcrumbs.
 
@@ -114,7 +114,7 @@ This ability to trace any UI to the data that produced it in the form of current
 
 While the UI is dynamic, we believe that synchronous `render()` functions of props and state turn debugging from guesswork into a boring but finite procedure. We would like to preserve this constraint in React even though it makes some use cases, like complex animations, harder.
 
-### Configuration
+### Configuration {#configuration}
 
 We find global runtime configuration options to be problematic.
 
@@ -124,7 +124,7 @@ What if somebody calls such a function from a third-party component library? Wha
 
 We do, however, provide some global configuration on the build level. For example, we provide separate development and production builds. We may also [add a profiling build](https://github.com/facebook/react/issues/6627) in the future, and we are open to considering other build flags.
 
-### Beyond the DOM
+### Beyond the DOM {#beyond-the-dom}
 
 We see the value of React in the way it allows us to write components that have fewer bugs and compose together well. DOM is the original rendering target for React but [React Native](http://facebook.github.io/react-native/) is just as important both to Facebook and the community.
 
@@ -132,13 +132,13 @@ Being renderer-agnostic is an important design constraint of React. It adds some
 
 Having a single programming model lets us form engineering teams around products instead of platforms. So far the tradeoff has been worth it for us.
 
-### Implementation
+### Implementation {#implementation}
 
 We try to provide elegant APIs where possible. We are much less concerned with the implementation being elegant. The real world is far from perfect, and to a reasonable extent we prefer to put the ugly code into the library if it means the user does not have to write it. When we evaluate new code, we are looking for an implementation that is correct, performant and affords a good developer experience. Elegance is secondary.
 
 We prefer boring code to clever code. Code is disposable and often changes. So it is important that it [doesn't introduce new internal abstractions unless absolutely necessary](https://youtu.be/4anAwXYqLG8?t=13m9s). Verbose code that is easy to move around, change and remove is preferred to elegant code that is prematurely abstracted and hard to change.
 
-### Optimized for Tooling
+### Optimized for Tooling {#optimized-for-tooling}
 
 Some commonly used APIs have verbose names. For example, we use `componentDidMount()` instead of `didMount()` or `onMount()`. This is [intentional](https://github.com/reactjs/react-future/issues/40#issuecomment-142442124). The goal is to make the points of interaction with the library highly visible.
 
@@ -150,7 +150,7 @@ Optimizing for search is also important because of our reliance on [codemods](ht
 
 In our codebase, JSX provides an unambiguous hint to the tools that they are dealing with a React element tree. This makes it possible to add build-time optimizations such as [hoisting constant elements](http://babeljs.io/docs/plugins/transform-react-constant-elements/), safely lint and codemod internal component usage, and [include JSX source location](https://github.com/facebook/react/pull/6771) into the warnings.
 
-### Dogfooding
+### Dogfooding {#dogfooding}
 
 We try our best to address the problems raised by the community. However we are likely to prioritize the issues that people are *also* experiencing internally at Facebook. Perhaps counter-intuitively, we think this is the main reason why the community can bet on React.
 
diff --git a/content/docs/error-boundaries.md b/content/docs/error-boundaries.md
index 4ac546576b..1477329112 100644
--- a/content/docs/error-boundaries.md
+++ b/content/docs/error-boundaries.md
@@ -7,7 +7,7 @@ permalink: docs/error-boundaries.html
 In the past, JavaScript errors inside components used to corrupt React’s internal state and cause it to [emit](https://github.com/facebook/react/issues/4026) [cryptic](https://github.com/facebook/react/issues/6895) [errors](https://github.com/facebook/react/issues/8579) on next renders. These errors were always caused by an earlier error in the application code, but React did not provide a way to handle them gracefully in components, and could not recover from them.
 
 
-## Introducing Error Boundaries
+## Introducing Error Boundaries {#introducing-error-boundaries}
 
 A JavaScript error in a part of the UI shouldn’t break the whole app. To solve this problem for React users, React 16 introduces a new concept of an “error boundary”.
 
@@ -64,17 +64,17 @@ Error boundaries work like a JavaScript `catch {}` block, but for components. On
 
 Note that **error boundaries only catch errors in the components below them in the tree**. An error boundary can’t catch an error within itself. If an error boundary fails trying to render the error message, the error will propagate to the closest error boundary above it. This, too, is similar to how catch {} block works in JavaScript.
 
-## Live Demo
+## Live Demo {#live-demo}
 
 Check out [this example of declaring and using an error boundary](https://codepen.io/gaearon/pen/wqvxGa?editors=0010) with [React 16](/blog/2017/09/26/react-v16.0.html).
 
 
-## Where to Place Error Boundaries
+## Where to Place Error Boundaries {#where-to-place-error-boundaries}
 
 The granularity of error boundaries is up to you. You may wrap top-level route components to display a “Something went wrong” message to the user, just like server-side frameworks often handle crashes. You may also wrap individual widgets in an error boundary to protect them from crashing the rest of the application.
 
 
-## New Behavior for Uncaught Errors
+## New Behavior for Uncaught Errors {#new-behavior-for-uncaught-errors}
 
 This change has an important implication. **As of React 16, errors that were not caught by any error boundary will result in unmounting of the whole React component tree.**
 
@@ -87,7 +87,7 @@ For example, Facebook Messenger wraps content of the sidebar, the info panel, th
 We also encourage you to use JS error reporting services (or build your own) so that you can learn about unhandled exceptions as they happen in production, and fix them.
 
 
-## Component Stack Traces
+## Component Stack Traces {#component-stack-traces}
 
 React 16 prints all errors that occurred during rendering to the console in development, even if the application accidentally swallows them. In addition to the error message and the JavaScript stack, it also provides component stack traces. Now you can see where exactly in the component tree the failure has happened:
 
@@ -104,7 +104,7 @@ If you don’t use Create React App, you can add [this plugin](https://www.npmjs
 > Component names displayed in the stack traces depend on the [`Function.name`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name) property. If you support older browsers and devices which may not yet provide this natively (e.g. IE 11), consider including a `Function.name` polyfill in your bundled application, such as [`function.name-polyfill`](https://github.com/JamesMGreene/Function.name). Alternatively, you may explicitly set the [`displayName`](/docs/react-component.html#displayname) property on all your components.
 
 
-## How About try/catch?
+## How About try/catch? {#how-about-trycatch}
 
 `try` / `catch` is great but it only works for imperative code:
 
@@ -124,7 +124,7 @@ However, React components are declarative and specify *what* should be rendered:
 
 Error boundaries preserve the declarative nature of React, and behave as you would expect. For example, even if an error occurs in a `componentDidUpdate` method caused by a `setState` somewhere deep in the tree, it will still correctly propagate to the closest error boundary.
 
-## How About Event Handlers?
+## How About Event Handlers? {#how-about-event-handlers}
 
 Error boundaries **do not** catch errors inside event handlers.
 
@@ -159,7 +159,7 @@ class MyComponent extends React.Component {
 
 Note that the above example is demonstrating regular JavaScript behavior and doesn't use error boundaries.
 
-## Naming Changes from React 15
+## Naming Changes from React 15 {#naming-changes-from-react-15}
 
 React 15 included a very limited support for error boundaries under a different method name: `unstable_handleError`. This method no longer works, and you will need to change it to `componentDidCatch` in your code starting from the first 16 beta release.
 
diff --git a/content/docs/faq-ajax.md b/content/docs/faq-ajax.md
index 89c1e7dbd5..102e1c07e7 100644
--- a/content/docs/faq-ajax.md
+++ b/content/docs/faq-ajax.md
@@ -6,15 +6,15 @@ layout: docs
 category: FAQ
 ---
 
-### How can I make an AJAX call?
+### How can I make an AJAX call? {#how-can-i-make-an-ajax-call}
 
 You can use any AJAX library you like with React. Some popular ones are [Axios](https://github.com/axios/axios), [jQuery AJAX](https://api.jquery.com/jQuery.ajax/), and the browser built-in [window.fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API).
 
-### Where in the component lifecycle should I make an AJAX call?
+### Where in the component lifecycle should I make an AJAX call? {#where-in-the-component-lifecycle-should-i-make-an-ajax-call}
 
 You should populate data with AJAX calls in the [`componentDidMount`](/docs/react-component.html#mounting) lifecycle method. This is so you can use `setState` to update your component when the data is retrieved.
 
-### Example: Using AJAX results to set local state
+### Example: Using AJAX results to set local state {#example-using-ajax-results-to-set-local-state}
 
 The component below demonstrates how to make an AJAX call in `componentDidMount` to populate local component state. 
 
diff --git a/content/docs/faq-build.md b/content/docs/faq-build.md
index 79e8f5c2e7..b071cc1311 100644
--- a/content/docs/faq-build.md
+++ b/content/docs/faq-build.md
@@ -6,15 +6,15 @@ layout: docs
 category: FAQ
 ---
 
-### Do I need to use JSX with React?
+### Do I need to use JSX with React? {#do-i-need-to-use-jsx-with-react}
 
 No! Check out ["React Without JSX"](/docs/react-without-jsx.html) to learn more.
 
-### Do I need to use ES6 (+) with React?
+### Do I need to use ES6 (+) with React? {#do-i-need-to-use-es6--with-react}
 
 No! Check out ["React Without ES6"](/docs/react-without-es6.html) to learn more.
 
-### How can I write comments in JSX?
+### How can I write comments in JSX? {#how-can-i-write-comments-in-jsx}
 
 ```jsx
 <div>
diff --git a/content/docs/faq-functions.md b/content/docs/faq-functions.md
index 337bc1febc..62067d39cc 100644
--- a/content/docs/faq-functions.md
+++ b/content/docs/faq-functions.md
@@ -6,7 +6,7 @@ layout: docs
 category: FAQ
 ---
 
-### How do I pass an event handler (like onClick) to a component?
+### How do I pass an event handler (like onClick) to a component? {#how-do-i-pass-an-event-handler-like-onclick-to-a-component}
 
 Pass event handlers and other functions as props to child components:
 
@@ -16,11 +16,11 @@ Pass event handlers and other functions as props to child components:
 
 If you need to have access to the parent component in the handler, you also need to bind the function to the component instance (see below).
 
-### How do I bind a function to a component instance?
+### How do I bind a function to a component instance? {#how-do-i-bind-a-function-to-a-component-instance}
 
 There are several ways to make sure functions have access to component attributes like `this.props` and `this.state`, depending on which syntax and build steps you are using.
 
-#### Bind in Constructor (ES2015)
+#### Bind in Constructor (ES2015) {#bind-in-constructor-es2015}
 
 ```jsx
 class Foo extends Component {
@@ -37,7 +37,7 @@ class Foo extends Component {
 }
 ```
 
-#### Class Properties (Stage 3 Proposal)
+#### Class Properties (Stage 3 Proposal) {#class-properties-stage-3-proposal}
 
 ```jsx
 class Foo extends Component {
@@ -51,7 +51,7 @@ class Foo extends Component {
 }
 ```
 
-#### Bind in Render
+#### Bind in Render {#bind-in-render}
 
 ```jsx
 class Foo extends Component {
@@ -68,7 +68,7 @@ class Foo extends Component {
 >
 >Using `Function.prototype.bind` in render creates a new function each time the component renders, which may have performance implications (see below).
 
-#### Arrow Function in Render
+#### Arrow Function in Render {#arrow-function-in-render}
 
 ```jsx
 class Foo extends Component {
@@ -85,13 +85,13 @@ class Foo extends Component {
 >
 >Using an arrow function in render creates a new function each time the component renders, which may have performance implications (see below).
 
-### Is it OK to use arrow functions in render methods?
+### Is it OK to use arrow functions in render methods? {#is-it-ok-to-use-arrow-functions-in-render-methods}
 
 Generally speaking, yes, it is OK, and it is often the easiest way to pass parameters to callback functions.
 
 If you do have performance issues, by all means, optimize!
 
-### Why is binding necessary at all?
+### Why is binding necessary at all? {#why-is-binding-necessary-at-all}
 
 In JavaScript, these two code snippets are **not** equivalent:
 
@@ -110,7 +110,7 @@ With React, typically you only need to bind the methods you *pass* to other comp
 
 [This post by Yehuda Katz](http://yehudakatz.com/2011/08/11/understanding-javascript-function-invocation-and-this/) explains what binding is, and how functions work in JavaScript, in detail.
 
-### Why is my function being called every time the component renders?
+### Why is my function being called every time the component renders? {#why-is-my-function-being-called-every-time-the-component-renders}
 
 Make sure you aren't _calling the function_ when you pass it to the component:
 
@@ -130,7 +130,7 @@ render() {
 }
 ```
 
-### How do I pass a parameter to an event handler or callback?
+### How do I pass a parameter to an event handler or callback? {#how-do-i-pass-a-parameter-to-an-event-handler-or-callback}
 
 You can use an arrow function to wrap around an event handler and pass parameters:
 
@@ -144,7 +144,7 @@ This is equivalent to calling `.bind`:
 <button onClick={this.handleClick.bind(this, id)} />
 ```
 
-#### Example: Passing params using arrow functions
+#### Example: Passing params using arrow functions {#example-passing-params-using-arrow-functions}
 
 ```jsx
 const A = 65 // ASCII character code
@@ -178,7 +178,7 @@ class Alphabet extends React.Component {
 }
 ```
 
-#### Example: Passing params using data-attributes
+#### Example: Passing params using data-attributes {#example-passing-params-using-data-attributes}
 
 Alternately, you can use DOM APIs to store data needed for event handlers. Consider this approach if you need to optimize a large number of elements or have a render tree that relies on React.PureComponent equality checks.
 
@@ -218,7 +218,7 @@ class Alphabet extends React.Component {
 }
 ```
 
-### How can I prevent a function from being called too quickly or too many times in a row?
+### How can I prevent a function from being called too quickly or too many times in a row? {#how-can-i-prevent-a-function-from-being-called-too-quickly-or-too-many-times-in-a-row}
 
 If you have an event handler such as `onClick` or `onScroll` and want to prevent the callback from being fired too quickly, then you can limit the rate at which callback is executed. This can be done by using:
 
@@ -232,7 +232,7 @@ See [this visualization](http://demo.nimius.net/debounce_throttle/) for a compar
 >
 > `_.debounce`, `_.throttle` and `raf-schd` provide a `cancel` method to cancel delayed callbacks. You should either call this method from `componentWillUnmount` _or_ check to ensure that the component is still mounted within the delayed function.
 
-#### Throttle
+#### Throttle {#throttle}
 
 Throttling prevents a function from being called more than once in a given window of time. The example below throttles a "click" handler to prevent calling it more than once per second.
 
@@ -260,7 +260,7 @@ class LoadMoreButton extends React.Component {
 }
 ```
 
-#### Debounce
+#### Debounce {#debounce}
 
 Debouncing ensures that a function will not be executed until after a certain amount of time has passed since it was last called. This can be useful when you have to perform some expensive calculation in response to an event that might dispatch rapidly (eg scroll or keyboard events). The example below debounces text input with a 250ms delay.
 
@@ -302,7 +302,7 @@ class Searchbox extends React.Component {
 }
 ```
 
-#### `requestAnimationFrame` throttling
+#### `requestAnimationFrame` throttling {#requestanimationframe-throttling}
 
 [`requestAnimationFrame`](https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame) is a way of queuing a function to be executed in the browser at the optimal time for rendering performance. A function that is queued with `requestAnimationFrame` will fire in the next frame. The browser will work hard to ensure that there are 60 frames per second (60 fps). However, if the browser is unable to it will naturally *limit* the amount of frames in a second. For example, a device might only be able to handle 30 fps and so you will only get 30 frames in that second. Using `requestAnimationFrame` for throttling is a useful technique in that it prevents you from doing more than 60 updates in a second. If you are doing 100 updates in a second this creates additional work for the browser that the user will not see anyway.
 
@@ -349,6 +349,6 @@ class ScrollListener extends React.Component {
 }
 ```
 
-#### Testing your rate limiting
+#### Testing your rate limiting {#testing-your-rate-limiting}
 
 When testing your rate limiting code works correctly it is helpful to have the ability to fast forward time. If you are using [`jest`](https://facebook.github.io/jest/) then you can use [`mock timers`](https://facebook.github.io/jest/docs/en/timer-mocks.html) to fast forward time. If you are using `requestAnimationFrame` throttling then you may find [`raf-stub`](https://github.com/alexreardon/raf-stub) to be a useful tool to control the ticking of animation frames.
diff --git a/content/docs/faq-internals.md b/content/docs/faq-internals.md
index 0d7f3acc2a..da7f96be08 100644
--- a/content/docs/faq-internals.md
+++ b/content/docs/faq-internals.md
@@ -6,7 +6,7 @@ layout: docs
 category: FAQ
 ---
 
-### What is the Virtual DOM?
+### What is the Virtual DOM? {#what-is-the-virtual-dom}
 
 The virtual DOM (VDOM) is a programming concept where an ideal, or "virtual", representation of a UI is kept in memory and synced with the "real" DOM by a library such as ReactDOM. This process is called [reconciliation](/docs/reconciliation.html).
 
@@ -14,10 +14,10 @@ This approach enables the declarative API of React: You tell React what state yo
 
 Since "virtual DOM" is more of a pattern than a specific technology, people sometimes say it to mean different things. In React world, the term "virtual DOM" is usually associated with [React elements](/docs/rendering-elements.html) since they are the objects representing the user interface. React, however, also uses internal objects called "fibers" to hold additional information about the component tree. They may also be considered a part of "virtual DOM" implementation in React.
 
-### Is the Shadow DOM the same as the Virtual DOM?
+### Is the Shadow DOM the same as the Virtual DOM? {#is-the-shadow-dom-the-same-as-the-virtual-dom}
 
 No, they are different. The Shadow DOM is a browser technology designed primarily for scoping variables and CSS in web components. The virtual DOM is a concept implemented by libraries in JavaScript on top of browser APIs.
 
-### What is "React Fiber"?
+### What is "React Fiber"? {#what-is-react-fiber}
 
 Fiber is the new reconciliation engine in React 16. Its main goal is to enable incremental rendering of the virtual DOM. [Read more](https://github.com/acdlite/react-fiber-architecture).
diff --git a/content/docs/faq-state.md b/content/docs/faq-state.md
index 81b677a766..2765e3ae3a 100644
--- a/content/docs/faq-state.md
+++ b/content/docs/faq-state.md
@@ -6,11 +6,11 @@ layout: docs
 category: FAQ
 ---
 
-### What does `setState` do?
+### What does `setState` do? {#what-does-setstate-do}
 
 `setState()` schedules an update to a component's `state` object. When state changes, the component responds by re-rendering.
 
-### What is the difference between `state` and `props`?
+### What is the difference between `state` and `props`? {#what-is-the-difference-between-state-and-props}
 
 [`props`](/docs/components-and-props.html) (short for "properties") and [`state`](/docs/state-and-lifecycle.html) are both plain JavaScript objects. While both hold information that influences the output of render, they are different in one important way: `props` get passed *to* the component (similar to function parameters) whereas `state` is managed *within* the component (similar to variables declared within a function).
 
@@ -18,7 +18,7 @@ Here are some good resources for further reading on when to use `props` vs `stat
 * [Props vs State](https://github.com/uberVU/react-guide/blob/master/props-vs-state.md)
 * [ReactJS: Props vs. State](http://lucybain.com/blog/2016/react-state-vs-pros/)
 
-### Why is `setState` giving me the wrong value?
+### Why is `setState` giving me the wrong value? {#why-is-setstate-giving-me-the-wrong-value}
 
 In React, both `this.props` and `this.state` represent the *rendered* values, i.e. what's currently on the screen.
 
@@ -49,11 +49,11 @@ handleSomething() {
 
 See below for how to fix this problem.
 
-### How do I update state with values that depend on the current state? 
+### How do I update state with values that depend on the current state? {#how-do-i-update-state-with-values-that-depend-on-the-current-state}
 
 Pass a function instead of an object to `setState` to ensure the call always uses the most updated version of state (see below). 
 
-### What is the difference between passing an object or a function in `setState`?
+### What is the difference between passing an object or a function in `setState`? {#what-is-the-difference-between-passing-an-object-or-a-function-in-setstate}
 
 Passing an update function allows you to access the current state value inside the updater. Since `setState` calls are batched, this lets you chain updates and ensure they build on top of each other instead of conflicting:
 
@@ -78,7 +78,7 @@ handleSomething() {
 
 [Learn more about setState](/docs/react-component.html#setstate)
 
-### When is `setState` asynchronous?
+### When is `setState` asynchronous? {#when-is-setstate-asynchronous}
 
 Currently, `setState` is asynchronous inside event handlers.
 
@@ -86,7 +86,7 @@ This ensures, for example, that if both `Parent` and `Child` call `setState` dur
 
 This is an implementation detail so avoid relying on it directly. In the future versions, React will batch updates by default in more cases.
 
-### Why doesn't React update `this.state` synchronously?
+### Why doesn't React update `this.state` synchronously? {#why-doesnt-react-update-thisstate-synchronously}
 
 As explained in the previous section, React intentionally "waits" until all components call `setState()` in their event handlers before starting to re-render. This boosts performance by avoiding unnecessary re-renders.
 
@@ -99,7 +99,7 @@ There are two main reasons:
 
 This [GitHub comment](https://github.com/facebook/react/issues/11527#issuecomment-360199710) dives deep into the specific examples.
 
-### Should I use a state management library like Redux or MobX?
+### Should I use a state management library like Redux or MobX? {#should-i-use-a-state-management-library-like-redux-or-mobx}
 
 [Maybe.](https://redux.js.org/faq/general#when-should-i-use-redux)
 
diff --git a/content/docs/faq-structure.md b/content/docs/faq-structure.md
index 018845a18b..4241a04dd1 100644
--- a/content/docs/faq-structure.md
+++ b/content/docs/faq-structure.md
@@ -6,11 +6,11 @@ layout: docs
 category: FAQ
 ---
 
-### Is there a recommended way to structure React projects?
+### Is there a recommended way to structure React projects? {#is-there-a-recommended-way-to-structure-react-projects}
 
 React doesn't have opinions on how you put files into folders. That said there are a few common approaches popular in the ecosystem you may want to consider.
 
-#### Grouping by features or routes
+#### Grouping by features or routes {#grouping-by-features-or-routes}
 
 One common way to structure projects is locate CSS, JS, and tests together inside folders grouped by feature or route.
 
@@ -37,7 +37,7 @@ profile/
 
 The definition of a "feature" is not universal, and it is up to you to choose the granularity. If you can't come up with a list of top-level folders, you can ask the users of your product what major parts it consists of, and use their mental model as a blueprint.
 
-#### Grouping by file type
+#### Grouping by file type {#grouping-by-file-type}
 
 Another popular way to structure projects is to group similar files together, for example:
 
@@ -61,11 +61,11 @@ components/
 
 Some people also prefer to go further, and separate components into different folders depending on their role in the application. For example, [Atomic Design](http://bradfrost.com/blog/post/atomic-web-design/) is a design methodology built on this principle. Remember that it's often more productive to treat such methodologies as helpful examples rather than strict rules to follow.
 
-#### Avoid too much nesting
+#### Avoid too much nesting {#avoid-too-much-nesting}
 
 There are many pain points associated with deep directory nesting in JavaScript projects. It becomes harder to write relative imports between them, or to update those imports when the files are moved. Unless you have a very compelling reason to use a deep folder structure, consider limiting yourself to a maximum of three or four nested folders within a single project. Of course, this is only a recommendation, and it may not be relevant to your project.
 
-#### Don't overthink it
+#### Don't overthink it {#dont-overthink-it}
 
 If you're just starting a project, [don't spend more than five minutes](https://en.wikipedia.org/wiki/Analysis_paralysis) on choosing a file structure. Pick any of the above approaches (or come up with your own) and start writing code! You'll likely want to rethink it anyway after you've written some real code.
 
diff --git a/content/docs/faq-styling.md b/content/docs/faq-styling.md
index 3079b14ad9..ddc955e3dd 100644
--- a/content/docs/faq-styling.md
+++ b/content/docs/faq-styling.md
@@ -6,7 +6,7 @@ layout: docs
 category: FAQ
 ---
 
-### How do I add CSS classes to components?
+### How do I add CSS classes to components? {#how-do-i-add-css-classes-to-components}
 
 Pass a string as the `className` prop:
 
@@ -32,20 +32,20 @@ render() {
 >
 >If you often find yourself writing code like this, [classnames](https://www.npmjs.com/package/classnames#usage-with-reactjs) package can simplify it.
 
-### Can I use inline styles?
+### Can I use inline styles? {#can-i-use-inline-styles}
 
 Yes, see the docs on styling [here](/docs/dom-elements.html#style).
 
-### Are inline styles bad?
+### Are inline styles bad? {#are-inline-styles-bad}
 
 CSS classes are generally better for performance than inline styles.
 
-### What is CSS-in-JS?
+### What is CSS-in-JS? {#what-is-css-in-js}
 
 "CSS-in-JS" refers to a pattern where CSS is composed using JavaScript instead of defined in external files. Read a comparison of CSS-in-JS libraries [here](https://github.com/MicheleBertoli/css-in-js).
 
 _Note that this functionality is not a part of React, but provided by third-party libraries._ React does not have an opinion about how styles are defined; if in doubt, a good starting point is to define your styles in a separate `*.css` file as usual and refer to them using [`className`](/docs/dom-elements.html#classname).
 
-### Can I do animations in React?
+### Can I do animations in React? {#can-i-do-animations-in-react}
 
 React can be used to power animations. See [React Transition Group](https://reactcommunity.org/react-transition-group/) and [React Motion](https://github.com/chenglou/react-motion), for example.
diff --git a/content/docs/faq-versioning.md b/content/docs/faq-versioning.md
index c284892240..b51ea48952 100644
--- a/content/docs/faq-versioning.md
+++ b/content/docs/faq-versioning.md
@@ -16,25 +16,25 @@ That means that with a version number **x.y.z**:
 
 Major releases can also contain new features, and any release can include bug fixes.
 
-### Breaking Changes
+### Breaking Changes {#breaking-changes}
 
 Breaking changes are inconvenient for everyone, so we try to minimize the number of major releases – for example, React 15 was released in April 2016 and React 16 was released in September 2017; React 17 isn't expected until 2019.
 
 Instead, we release new features in minor versions. That means that minor releases are often more interesting and compelling than majors, despite their unassuming name.
 
-### Commitment to Stability
+### Commitment to Stability {#commitment-to-stability}
 
 As we change React over time, we try to minimize the effort required to take advantage of new features. When possible, we'll keep an older API working, even if that means putting it in a separate package. For example, [mixins have been discouraged for years](/blog/2016/07/13/mixins-considered-harmful.html) but they're supported to this day [via create-react-class](/docs/react-without-es6.html#mixins) and many codebases continue to use them in stable, legacy code.
 
 Over a million developers use React, collectively maintaining millions of components. The Facebook codebase alone has over 50,000 React components. That means we need to make it as easy as possible to upgrade to new versions of React; if we make large changes without a migration path, people will be stuck on old versions. We test these upgrade paths on Facebook itself – if our team of less than 10 people can update 50,000+ components alone, we hope the upgrade will be manageable for anyone using React. In many cases, we write [automated scripts](https://github.com/reactjs/react-codemod) to upgrade component syntax, which we then include in the open-source release for everyone to use.
 
-### Gradual Upgrades via Warnings
+### Gradual Upgrades via Warnings {#gradual-upgrades-via-warnings}
 
 Development builds of React include many helpful warnings. Whenever possible, we add warnings in preparation for future breaking changes. That way, if your app has no warnings on the latest release, it will be compatible with the next major release. This allows you to upgrade your apps one component at a time.
 
 Development warnings won't affect the runtime behavior of your app. That way, you can feel confident that your app will behave the same way between the development and production builds -- the only differences are that the production build won't log the warnings and that it is more efficient. (If you ever notice otherwise, please file an issue.)
 
-### What Counts as a Breaking Change?
+### What Counts as a Breaking Change? {#what-counts-as-a-breaking-change}
 
 In general, we *don't* bump the major version number for changes to:
 
diff --git a/content/docs/forms.md b/content/docs/forms.md
index fee7f2bc48..1a8b599d55 100644
--- a/content/docs/forms.md
+++ b/content/docs/forms.md
@@ -23,7 +23,7 @@ HTML form elements work a little bit differently from other DOM elements in Reac
 
 This form has the default HTML form behavior of browsing to a new page when the user submits the form. If you want this behavior in React, it just works. But in most cases, it's convenient to have a JavaScript function that handles the submission of the form and has access to the data that the user entered into the form. The standard way to achieve this is with a technique called "controlled components".
 
-## Controlled Components
+## Controlled Components {#controlled-components}
 
 In HTML, form elements such as `<input>`, `<textarea>`, and `<select>` typically maintain their own state and update it based on user input. In React, mutable state is typically kept in the state property of components, and only updated with [`setState()`](/docs/react-component.html#setstate).
 
@@ -76,7 +76,7 @@ handleChange(event) {
 }
 ```
 
-## The textarea Tag
+## The textarea Tag {#the-textarea-tag}
 
 In HTML, a `<textarea>` element defines its text by its children:
 
@@ -125,7 +125,7 @@ class EssayForm extends React.Component {
 
 Notice that `this.state.value` is initialized in the constructor, so that the text area starts off with some text in it.
 
-## The select Tag
+## The select Tag {#the-select-tag}
 
 In HTML, `<select>` creates a drop-down list. For example, this HTML creates a drop-down list of flavors:
 
@@ -190,7 +190,7 @@ Overall, this makes it so that `<input type="text">`, `<textarea>`, and `<select
 ><select multiple={true} value={['B', 'C']}>
 >```
 
-## The file input Tag
+## The file input Tag {#the-file-input-tag}
 
 In HTML, an `<input type="file">` lets the user choose one or more files from their device storage to be uploaded to a server or manipulated by JavaScript via the [File API](https://developer.mozilla.org/en-US/docs/Web/API/File/Using_files_from_web_applications).
 
@@ -200,7 +200,7 @@ In HTML, an `<input type="file">` lets the user choose one or more files from th
 
 Because its value is read-only, it is an **uncontrolled** component in React. It is discussed together with other uncontrolled components [later in the documentation](/docs/uncontrolled-components.html#the-file-input-tag).
 
-## Handling Multiple Inputs
+## Handling Multiple Inputs {#handling-multiple-inputs}
 
 When you need to handle multiple controlled `input` elements, you can add a `name` attribute to each element and let the handler function choose what to do based on the value of `event.target.name`.
 
@@ -274,7 +274,7 @@ this.setState(partialState);
 
 Also, since `setState()` automatically [merges a partial state into the current state](/docs/state-and-lifecycle.html#state-updates-are-merged), we only needed to call it with the changed parts.
 
-## Controlled Input Null Value
+## Controlled Input Null Value {#controlled-input-null-value}
 
 Specifying the value prop on a [controlled component](/docs/forms.html#controlled-components) prevents the user from changing the input unless you desire so. If you've specified a `value` but the input is still editable, you may have accidentally set `value` to `undefined` or `null`.
 
@@ -289,10 +289,10 @@ setTimeout(function() {
 
 ```
 
-## Alternatives to Controlled Components
+## Alternatives to Controlled Components {#alternatives-to-controlled-components}
 
 It can sometimes be tedious to use controlled components, because you need to write an event handler for every way your data can change and pipe all of the input state through a React component. This can become particularly annoying when you are converting a preexisting codebase to React, or integrating a React application with a non-React library. In these situations, you might want to check out [uncontrolled components](/docs/uncontrolled-components.html), an alternative technique for implementing input forms.
 
-## Fully-Fledged Solutions
+## Fully-Fledged Solutions {#fully-fledged-solutions}
 
 If you're looking for a complete solution including validation, keeping track of the visited fields, and handling form submission, [Formik](https://jaredpalmer.com/formik) is one of the popular choices. However, it is built on the same principles of controlled components and managing state — so don't neglect to learn them.
diff --git a/content/docs/forwarding-refs.md b/content/docs/forwarding-refs.md
index 46891e27bd..3318d8499c 100644
--- a/content/docs/forwarding-refs.md
+++ b/content/docs/forwarding-refs.md
@@ -6,7 +6,7 @@ permalink: docs/forwarding-refs.html
 
 Ref forwarding is a technique for automatically passing a [ref](/docs/refs-and-the-dom.html) through a component to one of its children. This is typically not necessary for most components in the application. However, it can be useful for some kinds of components, especially in reusable component libraries. The most common scenarios are described below.
 
-## Forwarding refs to DOM components
+## Forwarding refs to DOM components {#forwarding-refs-to-dom-components}
 
 Consider a `FancyButton` component that renders the native `button` DOM element:
 `embed:forwarding-refs/fancy-button-simple.js`
@@ -37,13 +37,13 @@ Here is a step-by-step explanation of what happens in the above example:
 >
 >Ref forwarding is not limited to DOM components. You can forward refs to class component instances, too.
 
-## Note for component library maintainers
+## Note for component library maintainers {#note-for-component-library-maintainers}
 
 **When you start using `forwardRef` in a component library, you should treat it as a breaking change and release a new major version of your library.** This is because your library likely has an observably different behavior (such as what refs get assigned to, and what types are exported), and this can break apps and other libraries that depend on the old behavior.
 
 Conditionally applying `React.forwardRef` when it exists is also not recommended for the same reasons: it changes how your library behaves and can break your users' apps when they upgrade React itself.
 
-## Forwarding refs in higher-order components
+## Forwarding refs in higher-order components {#forwarding-refs-in-higher-order-components}
 
 This technique can also be particularly useful with [higher-order components](/docs/higher-order-components.html) (also known as HOCs). Let's start with an example HOC that logs component props to the console:
 `embed:forwarding-refs/log-props-before.js`
@@ -59,7 +59,7 @@ This means that refs intended for our `FancyButton` component will actually be a
 Fortunately, we can explicitly forward refs to the inner `FancyButton` component using the `React.forwardRef` API. `React.forwardRef` accepts a render function that receives `props` and `ref` parameters and returns a React node. For example:
 `embed:forwarding-refs/log-props-after.js`
 
-## Displaying a custom name in DevTools
+## Displaying a custom name in DevTools {#displaying-a-custom-name-in-devtools}
 
 `React.forwardRef` accepts a render function. React DevTools uses this function to determine what to display for the ref forwarding component.
 
diff --git a/content/docs/fragments.md b/content/docs/fragments.md
index 7c6f4fd6cd..04de0463bc 100644
--- a/content/docs/fragments.md
+++ b/content/docs/fragments.md
@@ -20,7 +20,7 @@ render() {
 
 There is also a new [short syntax](#short-syntax) for declaring them, but it isn't supported by all popular tools yet.
 
-## Motivation
+## Motivation {#motivation}
 
 A common pattern is for a component to return a list of children. Take this example React snippet:
 
@@ -68,7 +68,7 @@ results in a `<Table />` output of:
 
 Fragments solve this problem.
 
-## Usage
+## Usage {#usage}
 
 ```jsx{4,7}
 class Columns extends React.Component {
@@ -94,7 +94,7 @@ which results in a correct `<Table />` output of:
 </table>
 ```
 
-### Short Syntax
+### Short Syntax {#short-syntax}
 
 There is a new, shorter syntax you can use for declaring fragments. It looks like empty tags:
 
@@ -115,7 +115,7 @@ You can use `<></>` the same way you'd use any other element except that it does
 
 Note that **[many tools don't support it yet](/blog/2017/11/28/react-v16.2.0-fragment-support.html#support-for-fragment-syntax)** so you might want to explicitly write `<React.Fragment>` until the tooling catches up.
 
-### Keyed Fragments
+### Keyed Fragments {#keyed-fragments}
 
 Fragments declared with the explicit `<React.Fragment>` syntax may have keys. A use case for this is mapping a collection to an array of fragments -- for example, to create a description list:
 
@@ -137,6 +137,6 @@ function Glossary(props) {
 
 `key` is the only attribute that can be passed to `Fragment`. In the future, we may add support for additional attributes, such as event handlers.
 
-### Live Demo
+### Live Demo {#live-demo}
 
 You can try out the new JSX fragment syntax with this [CodePen](https://codepen.io/reactjs/pen/VrEbjE?editors=1000).
diff --git a/content/docs/getting-started.md b/content/docs/getting-started.md
index 8ad77b1ac0..5625bb3cdd 100644
--- a/content/docs/getting-started.md
+++ b/content/docs/getting-started.md
@@ -30,27 +30,27 @@ This page is an overview of the React documentation and related resources.
 - [Versioned Documentation](#versioned-documentation)
 - [Something Missing?](#something-missing)
 
-## Try React
+## Try React {#try-react}
 
 React has been designed from the start for gradual adoption, and **you can use as little or as much React as you need.** Whether you want to get a taste of React, add some interactivity to a simple HTML page, or start a complex React-powered app, the links in this section will help you get started.
 
-### Online Playgrounds
+### Online Playgrounds {#online-playgrounds}
 
 If you're interested in playing around with React, you can use an online code playground. Try a Hello World template on [CodePen](codepen://hello-world) or [CodeSandbox](https://codesandbox.io/s/new).
 
 If you prefer to use your own text editor, you can also [download this HTML file](https://raw.githubusercontent.com/reactjs/reactjs.org/master/static/html/single-file-example.html), edit it, and open it from the local filesystem in your browser. It does a slow runtime code transformation, so we'd only recommend using this for simple demos.
 
-### Add React to a Website
+### Add React to a Website {#add-react-to-a-website}
 
 You can [add React to an HTML page in one minute](/docs/add-react-to-a-website.html). You can then either gradually expand its presence, or keep it contained to a few dynamic widgets.
 
-### Create a New React App
+### Create a New React App {#create-a-new-react-app}
 
 When starting a React project, [a simple HTML page with script tags](/docs/add-react-to-a-website.html) might still be the best option. It only takes a minute to set up!
 
 As your application grows, you might want to consider a more integrated setup. There are [several JavaScript toolchains](/docs/create-a-new-react-app.html) we recommend for larger applications. Each of them can work with little to no configuration and lets you take full advantage of the rich React ecosystem.
 
-## Learn React
+## Learn React {#learn-react}
 
 People come to React from different backgrounds and with different learning styles. Whether you prefer a more theoretical or a practical approach, we hope you'll find this section helpful.
 
@@ -59,19 +59,19 @@ People come to React from different backgrounds and with different learning styl
 
 Like any unfamiliar technology, React does have a learning curve. With practice and some patience, you *will* get the hang of it.
 
-### First Examples
+### First Examples {#first-examples}
 
 The [React homepage](/) contains a few small React examples with a live editor. Even if you don't know anything about React yet, try changing their code and see how it affects the result.
 
-### React for Beginners
+### React for Beginners {#react-for-beginners}
 
 If you feel that the React documentation goes at a faster pace than you're comfortable with, check out [this overview of React by Tania Rascia](https://www.taniarascia.com/getting-started-with-react/). It introduces the most important React concepts in a detailed, beginner-friendly way. Once you're done, give the documentation another try!
 
-### React for Designers
+### React for Designers {#react-for-designers}
 
 If you're coming from a design background, [these resources](http://reactfordesigners.com/) are a great place to get started.
 
-### JavaScript Resources
+### JavaScript Resources {#javascript-resources}
 
 The React documentation assumes some familiarity with programming in the JavaScript language. You don't have to be an expert, but it's harder to learn both React and JavaScript at the same time.
 
@@ -81,35 +81,35 @@ We recommend going through [this JavaScript overview](https://developer.mozilla.
 >
 >Whenever you get confused by something in JavaScript, [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript) and [javascript.info](http://javascript.info/) are great websites to check. There are also [community support forums](/community/support.html) where you can ask for help.
 
-### Practical Tutorial
+### Practical Tutorial {#practical-tutorial}
 
 If you prefer to **learn by doing,** check out our [practical tutorial](/tutorial/tutorial.html). In this tutorial, we build a tic-tac-toe game in React. You might be tempted to skip it because you're not building games -- but give it a chance. The techniques you'll learn in the tutorial are fundamental to building *any* React apps, and mastering it will give you a much deeper understanding.
 
-### Step-by-Step Guide
+### Step-by-Step Guide {#step-by-step-guide}
 
 If you prefer to **learn concepts step by step,** our [guide to main concepts](/docs/hello-world.html) is the best place to start. Every next chapter in it builds on the knowledge introduced in the previous chapters so you won't miss anything as you go along.
 
-### Thinking in React
+### Thinking in React {#thinking-in-react}
 
 Many React users credit reading [Thinking in React](/docs/thinking-in-react.html) as the moment React finally "clicked" for them. It's probably the oldest React walkthrough but it's still just as relevant.
 
-### Recommended Courses
+### Recommended Courses {#recommended-courses}
 
 Sometimes people find third-party books and video courses more helpful than the official documentation. We maintain [a list of commonly recommended resources](/community/courses.html), some of which are free.
 
-### Advanced Concepts
+### Advanced Concepts {#advanced-concepts}
 
 Once you're comfortable with the [main concepts](#main-concepts) and played with React a little bit, you might be interested in more advanced topics. This section will introduce you to the powerful, but less commonly used React features like [context](/docs/context.html) and [refs](/docs/refs-and-the-dom.html).
 
-### API Reference
+### API Reference {#api-reference}
 
 This documentation section is useful when you want to learn more details about a particular React API. For example, [`React.Component` API reference](/docs/react-component.html) can provide you with details on how `setState()` works, and what different lifecycle methods are useful for.
 
-### Glossary and FAQ
+### Glossary and FAQ {#glossary-and-faq}
 
 The [glossary](/docs/glossary.html) contains an overview of the most common terms you'll see in the React documentation. There is also a FAQ section dedicated to short questions and answers about common topics, including [making AJAX requests](/docs/faq-ajax.html), [component state](/docs/faq-state.html), and [file structure](/docs/faq-structure.html).
 
-## Staying Informed
+## Staying Informed {#staying-informed}
 
 The [React blog](/blog/) is the official source for the updates from the React team. Anything important, including release notes or deprecation notices, will be posted there first.
 
@@ -117,10 +117,10 @@ You can also follow the [@reactjs account](https://twitter.com/reactjs) on Twitt
 
 Not every React release deserves its own blog post, but you can find a detailed changelog for every release [in the `CHANGELOG.md` file in the React repository](https://github.com/facebook/react/blob/master/CHANGELOG.md), as well as on the [Releases](https://github.com/facebook/react) page.
 
-## Versioned Documentation
+## Versioned Documentation {#versioned-documentation}
 
 This documentation always reflects the latest stable version of React. Since React 16, you can find older versions of the documentation [on a separate page](/versions). Note that documentation for past versions is snapshotted at the time of the release, and isn't being continuously updated.
 
-## Something Missing?
+## Something Missing? {#something-missing}
 
 If something is missing in the documentation or if you found some part confusing, please [file an issue for the documentation repository](https://github.com/reactjs/reactjs.org/issues/new) with your suggestions for improvement, or tweet at the [@reactjs account](https://twitter.com/reactjs). We love hearing from you!
diff --git a/content/docs/handling-events.md b/content/docs/handling-events.md
index 1f93772cea..a8d3a1f517 100644
--- a/content/docs/handling-events.md
+++ b/content/docs/handling-events.md
@@ -140,7 +140,7 @@ class LoggingButton extends React.Component {
 
 The problem with this syntax is that a different callback is created each time the `LoggingButton` renders. In most cases, this is fine. However, if this callback is passed as a prop to lower components, those components might do an extra re-rendering. We generally recommend binding in the constructor or using the class fields syntax, to avoid this sort of performance problem.
 
-## Passing Arguments to Event Handlers
+## Passing Arguments to Event Handlers {#passing-arguments-to-event-handlers}
 
 Inside a loop it is common to want to pass an extra parameter to an event handler. For example, if `id` is the row ID, either of the following would work:
 
diff --git a/content/docs/hello-world.md b/content/docs/hello-world.md
index 25b644dbf3..2fff802540 100644
--- a/content/docs/hello-world.md
+++ b/content/docs/hello-world.md
@@ -22,7 +22,7 @@ It displays a heading saying "Hello, world!" on the page.
 Click the link above to open an online editor. Feel free to make some changes, and see how they affect the output. Most pages in this guide will have editable examples like this one.
 
 
-## How to Read This Guide
+## How to Read This Guide {#how-to-read-this-guide}
 
 In this guide, we will examine the building blocks of React apps: elements and components. Once you master them, you can create complex apps from small reusable pieces.
 
@@ -34,7 +34,7 @@ This is the first chapter in a step-by-step guide about main React concepts. You
 
 Every chapter in this guide builds on the knowledge introduced in earlier chapters. **You can learn most of React by reading the “Main Concepts” guide chapters in the order they appear in the sidebar.** For example, [“Introducing JSX”](/docs/introducing-jsx.html) is the next chapter after this one.
 
-## Knowledge Level Assumptions
+## Knowledge Level Assumptions {#knowledge-level-assumptions}
 
 React is a JavaScript library, and so we'll assume you have a basic understanding of the JavaScript language. **If you don't feel very confident, we recommend [going through a JavaScript tutorial](https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript) to check your knowledge level** and enable you to follow along this guide without getting lost. It might take you between 30 minutes and an hour, but as a result you won't have to feel like you're learning both React and JavaScript at the same time.
 
@@ -43,7 +43,7 @@ React is a JavaScript library, and so we'll assume you have a basic understandin
 >This guide occasionally uses some of the newer JavaScript syntax in the examples. If you haven't worked with JavaScript in the last few years, [these three points](https://gist.github.com/gaearon/683e676101005de0add59e8bb345340c) should get you most of the way.
 
 
-## Let's Get Started!
+## Let's Get Started! {#lets-get-started}
 
 Keep scrolling down, and you'll find the link to the [next chapter of this guide](/docs/introducing-jsx.html) right before the website footer.
 
diff --git a/content/docs/higher-order-components.md b/content/docs/higher-order-components.md
index 451e288506..63da3ef861 100644
--- a/content/docs/higher-order-components.md
+++ b/content/docs/higher-order-components.md
@@ -18,7 +18,7 @@ HOCs are common in third-party React libraries, such as Redux's [`connect`](http
 
 In this document, we'll discuss why higher-order components are useful, and how to write your own.
 
-## Use HOCs For Cross-Cutting Concerns
+## Use HOCs For Cross-Cutting Concerns {#use-hocs-for-cross-cutting-concerns}
 
 > **Note**
 >
@@ -171,7 +171,7 @@ Because `withSubscription` is a normal function, you can add as many or as few a
 
 Like components, the contract between `withSubscription` and the wrapped component is entirely props-based. This makes it easy to swap one HOC for a different one, as long as they provide the same props to the wrapped component. This may be useful if you change data-fetching libraries, for example.
 
-## Don't Mutate the Original Component. Use Composition.
+## Don't Mutate the Original Component. Use Composition. {#dont-mutate-the-original-component-use-composition}
 
 Resist the temptation to modify a component's prototype (or otherwise mutate it) inside a HOC.
 
@@ -215,7 +215,7 @@ This HOC has the same functionality as the mutating version while avoiding the p
 
 You may have noticed similarities between HOCs and a pattern called **container components**. Container components are part of a strategy of separating responsibility between high-level and low-level concerns. Containers manage things like subscriptions and state, and pass props to components that handle things like rendering UI. HOCs use containers as part of their implementation. You can think of HOCs as parameterized container component definitions.
 
-## Convention: Pass Unrelated Props Through to the Wrapped Component
+## Convention: Pass Unrelated Props Through to the Wrapped Component {#convention-pass-unrelated-props-through-to-the-wrapped-component}
 
 HOCs add features to a component. They shouldn't drastically alter its contract. It's expected that the component returned from a HOC has a similar interface to the wrapped component.
 
@@ -243,7 +243,7 @@ render() {
 
 This convention helps ensure that HOCs are as flexible and reusable as possible.
 
-## Convention: Maximizing Composability
+## Convention: Maximizing Composability {#convention-maximizing-composability}
 
 Not all HOCs look the same. Sometimes they accept only a single argument, the wrapped component:
 
@@ -295,7 +295,7 @@ const EnhancedComponent = enhance(WrappedComponent)
 
 The `compose` utility function is provided by many third-party libraries including lodash (as [`lodash.flowRight`](https://lodash.com/docs/#flowRight)), [Redux](http://redux.js.org/docs/api/compose.html), and [Ramda](http://ramdajs.com/docs/#compose).
 
-## Convention: Wrap the Display Name for Easy Debugging
+## Convention: Wrap the Display Name for Easy Debugging {#convention-wrap-the-display-name-for-easy-debugging}
 
 The container components created by HOCs show up in the [React Developer Tools](https://github.com/facebook/react-devtools) like any other component. To ease debugging, choose a display name that communicates that it's the result of a HOC.
 
@@ -314,11 +314,11 @@ function getDisplayName(WrappedComponent) {
 ```
 
 
-## Caveats
+## Caveats {#caveats}
 
 Higher-order components come with a few caveats that aren't immediately obvious if you're new to React.
 
-### Don't Use HOCs Inside the render Method
+### Don't Use HOCs Inside the render Method {#dont-use-hocs-inside-the-render-method}
 
 React's diffing algorithm (called reconciliation) uses component identity to determine whether it should update the existing subtree or throw it away and mount a new one. If the component returned from `render` is identical (`===`) to the component from the previous render, React recursively updates the subtree by diffing it with the new one. If they're not equal, the previous subtree is unmounted completely.
 
@@ -340,7 +340,7 @@ Instead, apply HOCs outside the component definition so that the resulting compo
 
 In those rare cases where you need to apply a HOC dynamically, you can also do it inside a component's lifecycle methods or its constructor.
 
-### Static Methods Must Be Copied Over
+### Static Methods Must Be Copied Over {#static-methods-must-be-copied-over}
 
 Sometimes it's useful to define a static method on a React component. For example, Relay containers expose a static method `getFragment` to facilitate the composition of GraphQL fragments.
 
@@ -392,7 +392,7 @@ export { someFunction };
 import MyComponent, { someFunction } from './MyComponent.js';
 ```
 
-### Refs Aren't Passed Through
+### Refs Aren't Passed Through {#refs-arent-passed-through}
 
 While the convention for higher-order components is to pass through all props to the wrapped component, this does not work for refs. That's because `ref` is not really a prop — like `key`, it's handled specially by React. If you add a ref to an element whose component is the result of a HOC, the ref refers to an instance of the outermost container component, not the wrapped component.
 
diff --git a/content/docs/hooks-custom.md b/content/docs/hooks-custom.md
index dbc0459e55..ac9dad6daa 100644
--- a/content/docs/hooks-custom.md
+++ b/content/docs/hooks-custom.md
@@ -67,7 +67,7 @@ Instead, we'd like to share this logic between `FriendStatus` and `FriendListIte
 
 Traditionally in React, we've had two popular ways to share stateful logic between components: [render props](/docs/render-props.html) and [higher-order components](/docs/higher-order-components.html). We will now look at how Hooks solve many of the same problems without forcing you to add more components to the tree.
 
-## Extracting a Custom Hook
+## Extracting a Custom Hook {#extracting-a-custom-hook}
 
 When we want to share logic between two JavaScript functions, we extract it to a third function. Both components and Hooks are functions, so this works for them too!
 
@@ -112,7 +112,7 @@ function useFriendStatus(friendID) {
 
 Now let's see how we can use our custom Hook.
 
-## Using a Custom Hook
+## Using a Custom Hook {#using-a-custom-hook}
 
 In the beginning, our stated goal was to remove the duplicated logic from the `FriendStatus` and `FriendListItem` components. Both of them want to know whether a friend is online.
 
@@ -149,7 +149,7 @@ function FriendListItem(props) {
 
 **How does a custom Hook get isolated state?** Each *call* to a Hook gets isolated state. Because we call `useFriendStatus` directly, from React's point of view our component just calls `useState` and `useEffect`. And as we [learned](/docs/hooks-state.html#tip-using-multiple-state-variables) [earlier](/docs/hooks-effect.html#tip-use-multiple-effects-to-separate-concerns), we can call `useState` and `useEffect` many times in one component, and they will be completely independent.
 
-### Tip: Pass Information Between Hooks
+### Tip: Pass Information Between Hooks {#tip-pass-information-between-hooks}
 
 Since Hooks are functions, we can pass information between them.
 
@@ -195,7 +195,7 @@ Because the `useState` Hook call gives us the latest value of the `recipientID`
 
 This lets us know whether the *currently selected* friend is online. If we pick a different friend and update the `recipientID` state variable, our `useFriendStatus` Hook will unsubscribe from the previously selected friend, and subscribe to the status of the newly selected one.
 
-## `useYourImagination()`
+## `useYourImagination()` {#useyourimagination}
 
 Custom Hooks offer the flexibility of sharing logic that wasn't possible in React components before. You can write custom Hooks that cover a wide range of use cases like form handling, animation, declarative subscriptions, timers, and probably many more we haven't considered. What's more, you can build Hooks that are just as easy to use as React's built-in features.
 
diff --git a/content/docs/hooks-effect.md b/content/docs/hooks-effect.md
index b40167ec06..64b32476ef 100644
--- a/content/docs/hooks-effect.md
+++ b/content/docs/hooks-effect.md
@@ -43,11 +43,11 @@ Data fetching, setting up a subscription, and manually changing the DOM in React
 
 There are two common kinds of side effects in React components: those that don't require cleanup, and those that do. Let's look at this distinction in more detail.
 
-## Effects Without Cleanup
+## Effects Without Cleanup {#effects-without-cleanup}
 
 Sometimes, we want to **run some additional code after React has updated the DOM.** Network requests, manual DOM mutations, and logging are common examples of effects that don't require a cleanup. We say that because we can run them and immediately forget about them. Let's compare how classes and Hooks let us express such side effects.
 
-### Example Using Classes
+### Example Using Classes {#example-using-classes}
 
 In React class components, the `render` method itself shouldn't cause side effects. It would be too early -- we typically want to perform our effects *after* React has updated the DOM.
 
@@ -89,7 +89,7 @@ This is because in many cases we want to perform the same side effect regardless
 
 Now let's see how we can do the same with the `useEffect` Hook.
 
-### Example Using Hooks
+### Example Using Hooks {#example-using-hooks}
 
 We've already seen this example at the top of this page, but let's take a closer look at it:
 
@@ -120,7 +120,7 @@ function Example() {
 
 **Does `useEffect` run after every render?** Yes! By default, it runs both after the first render *and* after every update. (We will later talk about [how to customize this](#tip-optimizing-performance-by-skipping-effects).) Instead of thinking in terms of "mounting" and "updating", you might find it easier to think that effects happen "after render". React guarantees the DOM has been updated by the time it runs the effects.
 
-### Detailed Explanation
+### Detailed Explanation {#detailed-explanation}
 
 Now that we know more about effects, these lines should make sense:
 
@@ -141,11 +141,11 @@ Experienced JavaScript developers might notice that the function passed to `useE
 >
 >Unlike `componentDidMount` or `componentDidUpdate`, effects scheduled with `useEffect` don't block the browser from updating the screen. This makes your app feel more responsive. The majority of effects don't need to happen synchronously. In the uncommon cases where they do (such as measuring the layout), there is a separate [`useLayoutEffect`](/docs/hooks-reference.html#uselayouteffect) Hook with an API identical to `useEffect`.
 
-## Effects with Cleanup
+## Effects with Cleanup {#effects-with-cleanup}
 
 Earlier, we looked at how to express side effects that don't require any cleanup. However, some effects do. For example, **we might want to set up a subscription** to some external data source. In that case, it is important to clean up so that we don't introduce a memory leak! Let's compare how we can do it with classes and with Hooks.
 
-### Example Using Classes
+### Example Using Classes {#example-using-classes-1}
 
 In a React class, you would typically set up a subscription in `componentDidMount`, and clean it up in `componentWillUnmount`. For example, let's say we have a `ChatAPI` module that lets us subscribe to a friend's online status. Here's how we might subscribe and display that status using a class:
 
@@ -192,7 +192,7 @@ Notice how `componentDidMount` and `componentWillUnmount` need to mirror each ot
 >
 >Eagle-eyed readers may notice that this example also needs a `componentDidUpdate` method to be fully correct. We'll ignore this for now but will come back to it in a [later section](#explanation-why-effects-run-on-each-update) of this page.
 
-### Example Using Hooks
+### Example Using Hooks {#example-using-hooks-1}
 
 Let's see how we could write this component with Hooks.
 
@@ -231,7 +231,7 @@ function FriendStatus(props) {
 >
 >We don't have to return a named function from the effect. We called it `cleanup` here to clarify its purpose, but you could return an arrow function or call it something different.
 
-## Recap
+## Recap {#recap}
 
 We've learned that `useEffect` lets us express different kinds of side effects after a component renders. Some effects might require cleanup so they return a function:
 
@@ -260,11 +260,11 @@ The Effect Hook unifies both use cases with a single API.
 
 -------------
 
-## Tips for Using Effects
+## Tips for Using Effects {#tips-for-using-effects}
 
 We'll continue this page with an in-depth look at some aspects of `useEffect` that experienced React users will likely be curious about. Don't feel obligated to dig into them now. You can always come back to this page to learn more details about the Effect Hook.
 
-### Tip: Use Multiple Effects to Separate Concerns
+### Tip: Use Multiple Effects to Separate Concerns {#tip-use-multiple-effects-to-separate-concerns}
 
 One of the problems we outlined in the [Motivation](/docs/hooks-intro.html#complex-components-become-hard-to-understand) for Hooks is that class lifecycle methods often contain unrelated logic, but related logic gets broken up into several methods. Here is a component that combines the counter and the friend status indicator logic from the previous examples:
 
@@ -331,7 +331,7 @@ function FriendStatusWithCounter(props) {
 
 **Hooks lets us split the code based on what it is doing** rather than a lifecycle method name. React will apply *every* effect used by the component, in the order they were specified.
 
-### Explanation: Why Effects Run on Each Update
+### Explanation: Why Effects Run on Each Update {#explanation-why-effects-run-on-each-update}
 
 If you're used to classes, you might be wondering why the effect cleanup phase happens after every re-render, and not just once during unmounting. Let's look at a practical example to see why this design helps us create components with fewer bugs.
 
@@ -423,7 +423,7 @@ ChatAPI.unsubscribeFromFriendStatus(300, handleStatusChange); // Clean up last e
 
 This behavior ensures consistency by default and prevents bugs that are common in class components due to missing update logic.
 
-### Tip: Optimizing Performance by Skipping Effects
+### Tip: Optimizing Performance by Skipping Effects {#tip-optimizing-performance-by-skipping-effects}
 
 In some cases, cleaning up or applying the effect after every render might create a performance problem. In class components, we can solve this by writing an extra comparison with `prevProps` or `prevState` inside `componentDidUpdate`:
 
@@ -466,7 +466,7 @@ In the future, the second argument might get added automatically by a build-time
 >
 >If you want to run an effect and clean it up only once (on mount and unmount), you can pass an empty array (`[]`) as a second argument. This tells React that your effect doesn't depend on *any* values from props or state, so it never needs to re-run. This isn't handled as a special case -- it follows directly from how the inputs array always works. While passing `[]` is closer to the familiar `componentDidMount` and `componentWillUnmount` mental model, we suggest not making it a habit because it often leads to bugs, [as discussed above](#explanation-why-effects-run-on-each-update). Don't forget that React defers running `useEffect` until after the browser has painted, so doing extra work is less of a problem.
 
-## Next Steps
+## Next Steps {#next-steps}
 
 Congratulations! This was a long page, but hopefully by the end most of your questions about effects were answered. You've learned both the State Hook and the Effect Hook, and there is a *lot* you can do with both of them combined. They cover most of the use cases for classes -- and where they don't, you might find the [additional Hooks](/docs/hooks-reference.html) helpful.
 
diff --git a/content/docs/hooks-faq.md b/content/docs/hooks-faq.md
index 30c5e681ca..d7e304d556 100644
--- a/content/docs/hooks-faq.md
+++ b/content/docs/hooks-faq.md
@@ -52,9 +52,9 @@ This page answers some of the frequently asked questions about [Hooks](/docs/hoo
   * [How does React associate Hook calls with components?](#how-does-react-associate-hook-calls-with-components)
   * [What is the prior art for Hooks?](#what-is-the-prior-art-for-hooks)
 
-## Adoption Strategy
+## Adoption Strategy {#adoption-strategy}
 
-### Which versions of React include Hooks?
+### Which versions of React include Hooks? {#which-versions-of-react-include-hooks}
 
 Starting with 16.8.0, React includes a stable implementation of React Hooks for:
 
@@ -67,49 +67,49 @@ Note that **to enable Hooks, all React packages need to be 16.8.0 or higher**. H
 
 React Native will fully support Hooks in its next stable release.
 
-### Do I need to rewrite all my class components?
+### Do I need to rewrite all my class components? {#do-i-need-to-rewrite-all-my-class-components}
 
 No. There are [no plans](/docs/hooks-intro.html#gradual-adoption-strategy) to remove classes from React -- we all need to keep shipping products and can't afford rewrites. We recommend trying Hooks in new code.
 
-### What can I do with Hooks that I couldn't with classes?
+### What can I do with Hooks that I couldn't with classes? {#what-can-i-do-with-hooks-that-i-couldnt-with-classes}
 
 Hooks offer a powerful and expressive new way to reuse functionality between components. ["Building Your Own Hooks"](/docs/hooks-custom.html) provides a glimpse of what's possible. [This article](https://medium.com/@dan_abramov/making-sense-of-react-hooks-fdbde8803889) by a React core team member dives deeper into the new capabilities unlocked by Hooks.
 
-### How much of my React knowledge stays relevant?
+### How much of my React knowledge stays relevant? {#how-much-of-my-react-knowledge-stays-relevant}
 
 Hooks are a more direct way to use the React features you already know -- such as state, lifecycle, context, and refs. They don't fundamentally change how React works, and your knowledge of components, props, and top-down data flow is just as relevant.
 
 Hooks do have a learning curve of their own. If there's something missing in this documentation, [raise an issue](https://github.com/reactjs/reactjs.org/issues/new) and we'll try to help.
 
-### Should I use Hooks, classes, or a mix of both?
+### Should I use Hooks, classes, or a mix of both? {#should-i-use-hooks-classes-or-a-mix-of-both}
 
 When you're ready, we'd encourage you to start trying Hooks in new components you write. Make sure everyone on your team is on board with using them and familiar with this documentation. We don't recommend rewriting your existing classes to Hooks unless you planned to rewrite them anyway (e.g. to fix bugs).
 
 You can't use Hooks *inside* of a class component, but you can definitely mix classes and function components with Hooks in a single tree. Whether a component is a class or a function that uses Hooks is an implementation detail of that component. In the longer term, we expect Hooks to be the primary way people write React components.
 
-### Do Hooks cover all use cases for classes?
+### Do Hooks cover all use cases for classes? {#do-hooks-cover-all-use-cases-for-classes}
 
 Our goal is for Hooks to cover all use cases for classes as soon as possible. There are no Hook equivalents to the uncommon `getSnapshotBeforeUpdate` and `componentDidCatch` lifecycles yet, but we plan to add them soon.
 
 It is an early time for Hooks, and some third-party libraries might not be compatible with Hooks at the moment.
 
-### Do Hooks replace render props and higher-order components?
+### Do Hooks replace render props and higher-order components? {#do-hooks-replace-render-props-and-higher-order-components}
 
 Often, render props and higher-order components render only a single child. We think Hooks are a simpler way to serve this use case. There is still a place for both patterns (for example, a virtual scroller component might have a `renderItem` prop, or a visual container component might have its own DOM structure). But in most cases, Hooks will be sufficient and can help reduce nesting in your tree.
 
-### What do Hooks mean for popular APIs like Redux `connect()` and React Router?
+### What do Hooks mean for popular APIs like Redux `connect()` and React Router? {#what-do-hooks-mean-for-popular-apis-like-redux-connect-and-react-router}
 
 You can continue to use the exact same APIs as you always have; they'll continue to work.
 
 In the future, new versions of these libraries might also export custom Hooks such as `useRedux()` or `useRouter()` that let you use the same features without needing wrapper components.
 
-### Do Hooks work with static typing?
+### Do Hooks work with static typing? {#do-hooks-work-with-static-typing}
 
 Hooks were designed with static typing in mind. Because they're functions, they are easier to type correctly than patterns like higher-order components. The latest Flow and TypeScript React definitions include support for React Hooks.
 
 Importantly, custom Hooks give you the power to constrain React API if you'd like to type them more strictly in some way. React gives you the primitives, but you can combine them in different ways than what we provide out of the box.
 
-### How to test components that use Hooks?
+### How to test components that use Hooks? {#how-to-test-components-that-use-hooks}
 
 From React's point of view, a component using Hooks is just a regular component. If your testing solution doesn't rely on React internals, testing components with Hooks shouldn't be different from how you normally test components.
 
@@ -177,7 +177,7 @@ If you need to test a custom Hook, you can do so by creating a component in your
 
 To reduce the boilerplate, we recommend using [`react-testing-library`](https://git.io/react-testing-library) which is designed to encourage writing tests that use your components as the end users do.
 
-### What exactly do the [lint rules](https://www.npmjs.com/package/eslint-plugin-react-hooks) enforce?
+### What exactly do the [lint rules](https://www.npmjs.com/package/eslint-plugin-react-hooks) enforce? {#what-exactly-do-the-lint-rules-enforce}
 
 We provide an [ESLint plugin](https://www.npmjs.com/package/eslint-plugin-react-hooks) that enforces [rules of Hooks](/docs/hooks-rules.html) to avoid bugs. It assumes that any function starting with "`use`" and a capital letter right after it is a Hook. We recognize this heuristic isn't perfect and there may be some false positives, but without an ecosystem-wide convention there is just no way to make Hooks work well -- and longer names will discourage people from either adopting Hooks or following the convention.
 
@@ -188,9 +188,9 @@ In particular, the rule enforces that:
 
 There are a few more heuristics, and they might change over time as we fine-tune the rule to balance finding bugs with avoiding false positives.
 
-## From Classes to Hooks
+## From Classes to Hooks {#from-classes-to-hooks}
 
-### How do lifecycle methods correspond to Hooks?
+### How do lifecycle methods correspond to Hooks? {#how-do-lifecycle-methods-correspond-to-hooks}
 
 * `constructor`: Function components don't need a constructor. You can initialize the state in the [`useState`](/docs/hooks-reference.html#usestate) call. If computing it is expensive, you can pass a function to `useState`.
 
@@ -204,7 +204,7 @@ There are a few more heuristics, and they might change over time as we fine-tune
 
 * `componentDidCatch` and `getDerivedStateFromError`: There are no Hook equivalents for these methods yet, but they will be added soon.
 
-### Is there something like instance variables?
+### Is there something like instance variables? {#is-there-something-like-instance-variables}
 
 Yes! The [`useRef()`](/docs/hooks-reference.html#useref) Hook isn't just for DOM refs. The "ref" object is a generic container whose `current` property is mutable and can hold any value, similar to an instance property on a class.
 
@@ -240,7 +240,7 @@ If we just wanted to set an interval, we wouldn't need the ref (`id` could be lo
 
 Conceptually, you can think of refs as similar to instance variables in a class. Unless you're doing [lazy initialization](#how-to-create-expensive-objects-lazily), avoid setting refs during rendering -- this can lead to surprising behavior. Instead, typically you want to modify refs in event handlers and effects.
 
-### Should I use one or many state variables?
+### Should I use one or many state variables? {#should-i-use-one-or-many-state-variables}
 
 If you're coming from classes, you might be tempted to always call `useState()` once and put all state into a single object. You can do it if you'd like. Here is an example of a component that follows the mouse movement. We keep its position and size in the local state:
 
@@ -307,11 +307,11 @@ Note how we were able to move the `useState` call for the `position` state varia
 
 Both putting all state in a single `useState` call, and having a `useState` call per each field can work. Components tend to be most readable when you find a balance between these two extremes, and group related state into a few independent state variables. If the state logic becomes complex, we recommend [managing it with a reducer](/docs/hooks-reference.html#usereducer) or a custom Hook.
 
-### Can I run an effect only on updates?
+### Can I run an effect only on updates? {#can-i-run-an-effect-only-on-updates}
 
 This is a rare use case. If you need it, you can [use a mutable ref](#is-there-something-like-instance-variables) to manually store a boolean value corresponding to whether you are on the first or a subsequent render, then check that flag in your effect. (If you find yourself doing this often, you could create a custom Hook for it.)
 
-### How to get the previous props or state?
+### How to get the previous props or state? {#how-to-get-the-previous-props-or-state}
 
 Currently, you can do it manually [with a ref](#is-there-something-like-instance-variables):
 
diff --git a/content/docs/hooks-intro.md b/content/docs/hooks-intro.md
index d0a4ef6acc..b4cefcfbeb 100644
--- a/content/docs/hooks-intro.md
+++ b/content/docs/hooks-intro.md
@@ -33,7 +33,7 @@ This new function `useState` is the first "Hook" we'll learn about, but this exa
 >
 >React 16.8.0 is the first release to support Hooks. When upgrading, don't forget to update all packages, including React DOM. React Native will support Hooks in the next stable release.
 
-## Video Introduction
+## Video Introduction {#video-introduction}
 
 At React Conf 2018, Sophie Alpert and Dan Abramov introduced Hooks, followed by Ryan Florence demonstrating how to refactor an application to use them. Watch the video here:
 
@@ -41,7 +41,7 @@ At React Conf 2018, Sophie Alpert and Dan Abramov introduced Hooks, followed by
 
 <iframe width="650" height="366" src="//www.youtube.com/embed/dpw9EHDh2bM" frameborder="0" allowfullscreen></iframe>
 
-## No Breaking Changes
+## No Breaking Changes {#no-breaking-changes}
 
 Before we continue, note that Hooks are:
 
@@ -55,11 +55,11 @@ Before we continue, note that Hooks are:
 
 **If you just want to start learning Hooks, feel free to [jump directly to the next page!](/docs/hooks-overview.html)** You can also keep reading this page to learn more about why we're adding Hooks, and how we're going to start using them without rewriting our applications.
 
-## Motivation
+## Motivation {#motivation}
 
 Hooks solve a wide variety of seemingly unconnected problems in React that we've encountered over five years of writing and maintaining tens of thousands of components. Whether you're learning React, use it daily, or even prefer a different library with a similar component model, you might recognize some of these problems.
 
-### It's hard to reuse stateful logic between components
+### It's hard to reuse stateful logic between components {#its-hard-to-reuse-stateful-logic-between-components}
 
 React doesn't offer a way to "attach" reusable behavior to a component (for example, connecting it to a store). If you've worked with React for a while, you may be familiar with patterns like [render props](/docs/render-props.html) and [higher-order components](/docs/higher-order-components.html) that try to solve this. But these patterns require you to restructure your components when you use them, which can be cumbersome and make code harder to follow. If you look at a typical React application in React DevTools, you will likely find a "wrapper hell" of components surrounded by layers of providers, consumers, higher-order components, render props, and other abstractions. While we could [filter them out in DevTools](https://github.com/facebook/react-devtools/pull/503), this points to a deeper underlying problem: React needs a better primitive for sharing stateful logic.
 
@@ -67,7 +67,7 @@ With Hooks, you can extract stateful logic from a component so it can be tested
 
 We'll discuss this more in [Building Your Own Hooks](/docs/hooks-custom.html).
 
-### Complex components become hard to understand
+### Complex components become hard to understand {#complex-components-become-hard-to-understand}
 
 We've often had to maintain components that started out simple but grew into an unmanageable mess of stateful logic and side effects. Each lifecycle method often contains a mix of unrelated logic. For example, components might perform some data fetching in `componentDidMount` and `componentDidUpdate`. However, the same `componentDidMount` method might also contain some unrelated logic that sets up event listeners, with cleanup performed in `componentWillUnmount`. Mutually related code that changes together gets split apart, but completely unrelated code ends up combined in a single method. This makes it too easy to introduce bugs and inconsistencies.
 
@@ -77,7 +77,7 @@ To solve this, **Hooks let you split one component into smaller functions based
 
 We'll discuss this more in [Using the Effect Hook](/docs/hooks-effect.html#tip-use-multiple-effects-to-separate-concerns).
 
-### Classes confuse both people and machines
+### Classes confuse both people and machines {#classes-confuse-both-people-and-machines}
 
 In addition to making code reuse and code organization more difficult, we've found that classes can be a large barrier to learning React. You have to understand how `this` works in JavaScript, which is very different from how it works in most languages. You have to remember to bind the event handlers. Without unstable [syntax proposals](https://babeljs.io/docs/en/babel-plugin-transform-class-properties/), the code is very verbose. People can understand props, state, and top-down data flow perfectly well but still struggle with classes. The distinction between function and class components in React and when to use each one leads to disagreements even between experienced React developers.
 
@@ -89,7 +89,7 @@ To solve these problems, **Hooks let you use more of React's features without cl
 >
 >[Hooks at a Glance](/docs/hooks-overview.html) is a good place to start learning Hooks.
 
-## Gradual Adoption Strategy
+## Gradual Adoption Strategy {#gradual-adoption-strategy}
 
 >**TLDR: There are no plans to remove classes from React.**
 
@@ -103,10 +103,10 @@ Finally, there is no rush to migrate to Hooks. We recommend avoiding any "big re
 
 We intend for Hooks to cover all existing use cases for classes, but **we will keep supporting class components for the foreseeable future.** At Facebook, we have tens of thousands of components written as classes, and we have absolutely no plans to rewrite them. Instead, we are starting to use Hooks in the new code side by side with classes.
 
-## Frequently Asked Questions
+## Frequently Asked Questions {#frequently-asked-questions}
 
 We've prepared a [Hooks FAQ page](/docs/hooks-faq.html) that answers the most common questions about Hooks.
 
-## Next Steps
+## Next Steps {#next-steps}
 
 By the end of this page, you should have a rough idea of what problems Hooks are solving, but many details are probably unclear. Don't worry! **Let's now go to [the next page](/docs/hooks-overview.html) where we start learning about Hooks by example.**
diff --git a/content/docs/hooks-overview.md b/content/docs/hooks-overview.md
index 013f792ca8..fef7de00b3 100644
--- a/content/docs/hooks-overview.md
+++ b/content/docs/hooks-overview.md
@@ -16,7 +16,7 @@ Hooks are [backwards-compatible](/docs/hooks-intro.html#no-breaking-changes). Th
 
 **↑↑↑ Each section ends with a yellow box like this.** They link to detailed explanations.
 
-## 📌 State Hook
+## 📌 State Hook {#-state-hook}
 
 This example renders a counter. When you click the button, it increments the value:
 
@@ -42,7 +42,7 @@ Here, `useState` is a *Hook* (we'll talk about what this means in a moment). We
 
 The only argument to `useState` is the initial state. In the example above, it is `0` because our counter starts from zero. Note that unlike `this.state`, the state here doesn't have to be an object -- although it can be if you want. The initial state argument is only used during the first render.
 
-#### Declaring multiple state variables
+#### Declaring multiple state variables {#declaring-multiple-state-variables}
 
 You can use the State Hook more than once in a single component:
 
@@ -58,7 +58,7 @@ function ExampleWithManyStates() {
 
 The [array destructuring](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Array_destructuring) syntax lets us give different names to the state variables we declared by calling `useState`. These names aren't a part of the `useState` API. Instead, React assumes that if you call `useState` many times, you do it in the same order during every render. We'll come back to why this works and when this is useful later.
 
-#### But what is a Hook?
+#### But what is a Hook? {#but-what-is-a-hook}
 
 Hooks are functions that let you “hook into” React state and lifecycle features from function components. Hooks don't work inside classes -- they let you use React without classes. (We [don't recommend](/docs/hooks-intro.html#gradual-adoption-strategy) rewriting your existing components overnight but you can start using Hooks in the new ones if you'd like.)
 
@@ -68,7 +68,7 @@ React provides a few built-in Hooks like `useState`. You can also create your ow
 >
 >You can learn more about the State Hook on a dedicated page: [Using the State Hook](/docs/hooks-state.html).
 
-## ⚡️ Effect Hook
+## ⚡️ Effect Hook {#️-effect-hook}
 
 You've likely performed data fetching, subscriptions, or manually changing the DOM from React components before. We call these operations "side effects" (or "effects" for short) because they can affect other components and can't be done during rendering.
 
@@ -159,7 +159,7 @@ Hooks let you organize side effects in a component by what pieces are related (s
 >
 >You can learn more about `useEffect` on a dedicated page: [Using the Effect Hook](/docs/hooks-effect.html).
 
-## ✌️ Rules of Hooks
+## ✌️ Rules of Hooks {#️-rules-of-hooks}
 
 Hooks are JavaScript functions, but they impose two additional rules:
 
@@ -172,7 +172,7 @@ We provide a [linter plugin](https://www.npmjs.com/package/eslint-plugin-react-h
 >
 >You can learn more about these rules on a dedicated page: [Rules of Hooks](/docs/hooks-rules.html).
 
-## 💡 Building Your Own Hooks
+## 💡 Building Your Own Hooks {#-building-your-own-hooks}
 
 Sometimes, we want to reuse some stateful logic between components. Traditionally, there were two popular solutions to this problem: [higher-order components](/docs/higher-order-components.html) and [render props](/docs/render-props.html). Custom Hooks let you do this, but without adding more components to your tree.
 
@@ -239,7 +239,7 @@ You can write custom Hooks that cover a wide range of use cases like form handli
 >
 >You can learn more about custom Hooks on a dedicated page: [Building Your Own Hooks](/docs/hooks-custom.html).
 
-## 🔌 Other Hooks
+## 🔌 Other Hooks {#-other-hooks}
 
 There are a few less commonly used built-in Hooks that you might find useful. For example, [`useContext`](/docs/hooks-reference.html#usecontext) lets you subscribe to React context without introducing nesting:
 
@@ -263,7 +263,7 @@ function Todos() {
 >
 >You can learn more about all the built-in Hooks on a dedicated page: [Hooks API Reference](/docs/hooks-reference.html).
 
-## Next Steps
+## Next Steps {#next-steps}
 
 Phew, that was fast! If some things didn't quite make sense or you'd like to learn more in detail, you can read the next pages, starting with the [State Hook](/docs/hooks-state.html) documentation.
 
diff --git a/content/docs/hooks-reference.md b/content/docs/hooks-reference.md
index 6a8d8a664f..90091d8d12 100644
--- a/content/docs/hooks-reference.md
+++ b/content/docs/hooks-reference.md
@@ -25,9 +25,9 @@ If you're new to Hooks, you might want to check out [the overview](/docs/hooks-o
   - [`useLayoutEffect`](#uselayouteffect)
   - [`useDebugValue`](#usedebugvalue)
 
-## Basic Hooks
+## Basic Hooks {#basic-hooks}
 
-### `useState`
+### `useState` {#usestate}
 
 ```js
 const [state, setState] = useState(initialState);
@@ -45,7 +45,7 @@ setState(newState);
 
 During subsequent re-renders, the first value returned by `useState` will always be the most recent state after applying updates.
 
-#### Functional updates
+#### Functional updates {#functional-updates}
 
 If the new state is computed using the previous state, you can pass a function to `setState`. The function will receive the previous value, and return an updated value. Here's an example of a counter component that uses both forms of `setState`:
 
@@ -78,7 +78,7 @@ The "+" and "-" buttons use the functional form, because the updated value is ba
 >
 > Another option is `useReducer`, which is more suited for managing state objects that contain multiple sub-values.
 
-#### Lazy initial state
+#### Lazy initial state {#lazy-initial-state}
 
 The `initialState` argument is the state used during the initial render. In subsequent renders, it is disregarded. If the initial state is the result of an expensive computation, you may provide a function instead, which will be executed only on the initial render:
 
@@ -89,11 +89,11 @@ const [state, setState] = useState(() => {
 });
 ```
 
-#### Bailing out of a state update
+#### Bailing out of a state update {#bailing-out-of-a-state-update}
 
 If you update a State Hook to the same value as the current state, React will bail out without rendering the children or firing effects. (React uses the [`Object.is` comparison algorithm](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#Description).)
 
-### `useEffect`
+### `useEffect` {#useeffect}
 
 ```js
 useEffect(didUpdate);
@@ -107,7 +107,7 @@ Instead, use `useEffect`. The function passed to `useEffect` will run after the
 
 By default, effects run after every completed render, but you can choose to fire it [only when certain values have changed](#conditionally-firing-an-effect).
 
-#### Cleaning up an effect
+#### Cleaning up an effect {#cleaning-up-an-effect}
 
 Often, effects create resources that need to be cleaned up before the component leaves the screen, such as a subscription or timer ID. To do this, the function passed to `useEffect` may return a clean-up function. For example, to create a subscription:
 
@@ -123,7 +123,7 @@ useEffect(() => {
 
 The clean-up function runs before the component is removed from the UI to prevent memory leaks. Additionally, if a component renders multiple times (as they typically do), the **previous effect is cleaned up before executing the next effect**. In our example, this means a new subscription is created on every update. To avoid firing an effect on every update, refer to the next section.
 
-#### Timing of effects
+#### Timing of effects {#timing-of-effects}
 
 Unlike `componentDidMount` and `componentDidUpdate`, the function passed to `useEffect` fires **after** layout and paint, during a deferred event. This makes it suitable for the many common side effects, like setting up subscriptions and event handlers, because most types of work shouldn't block the browser from updating the screen.
 
@@ -131,7 +131,7 @@ However, not all effects can be deferred. For example, a DOM mutation that is vi
 
 Although `useEffect` is deferred until after the browser has painted, it's guaranteed to fire before any new renders. React will always flush a previous render's effects before starting a new update.
 
-#### Conditionally firing an effect
+#### Conditionally firing an effect {#conditionally-firing-an-effect}
 
 The default behavior for effects is to fire the effect after every completed render. That way an effect is always recreated if one of its inputs changes.
 
@@ -159,7 +159,7 @@ Passing in an empty array `[]` of inputs tells React that your effect doesn't de
 >
 > The array of inputs is not passed as arguments to the effect function. Conceptually, though, that's what they represent: every value referenced inside the effect function should also appear in the inputs array. In the future, a sufficiently advanced compiler could create this array automatically.
 
-### `useContext`
+### `useContext` {#usecontext}
 
 ```js
 const context = useContext(Context);
@@ -169,11 +169,11 @@ Accepts a context object (the value returned from `React.createContext`) and ret
 
 When the provider updates, this Hook will trigger a rerender with the latest context value.
 
-## Additional Hooks
+## Additional Hooks {#additional-hooks}
 
 The following Hooks are either variants of the basic ones from the previous section, or only needed for specific edge cases. Don't stress about learning them up front.
 
-### `useReducer`
+### `useReducer` {#usereducer}
 
 ```js
 const [state, dispatch] = useReducer(reducer, initialArg, init);
@@ -211,7 +211,7 @@ function Counter({initialCount}) {
 }
 ```
 
-#### Specifying the initial state
+#### Specifying the initial state {#specifying-the-initial-state}
 
 There’s two different ways to initialize `useReducer` state. You may choose either one depending on the use case. The simplest way to pass the initial state as a second argument:
 
@@ -226,7 +226,7 @@ There’s two different ways to initialize `useReducer` state. You may choose ei
 >
 >React doesn’t use the `state = initialState` argument convention popularized by Redux. The initial value sometimes needs to depend on props and so is specified from the Hook call instead. If you feel strongly about this, you can call `useReducer(reducer, undefined, reducer)` to emulate the Redux behavior, but it's not encouraged.
 
-#### Lazy initialization
+#### Lazy initialization {#lazy-initialization}
 
 You can also create the initial state lazily. To do this, you can pass an `init` function as the third argument. The initial state will be set to `init(initialArg)`.
 
@@ -268,11 +268,11 @@ function Counter({initialCount}) {
 }
 ```
 
-#### Bailing out of a dispatch
+#### Bailing out of a dispatch {#bailing-out-of-a-dispatch}
 
 If you return the same value from a Reducer Hook as the current state, React will bail out without rendering the children or firing effects. (React uses the [`Object.is` comparison algorithm](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#Description).)
 
-### `useCallback`
+### `useCallback` {#usecallback}
 
 ```js
 const memoizedCallback = useCallback(
@@ -293,7 +293,7 @@ Pass an inline callback and an array of inputs. `useCallback` will return a memo
 >
 > The array of inputs is not passed as arguments to the callback. Conceptually, though, that's what they represent: every value referenced inside the callback should also appear in the inputs array. In the future, a sufficiently advanced compiler could create this array automatically.
 
-### `useMemo`
+### `useMemo` {#usememo}
 
 ```js
 const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);
@@ -313,7 +313,7 @@ If no array is provided, a new value will be computed whenever a new function in
 >
 > The array of inputs is not passed as arguments to the function. Conceptually, though, that's what they represent: every value referenced inside the function should also appear in the inputs array. In the future, a sufficiently advanced compiler could create this array automatically.
 
-### `useRef`
+### `useRef` {#useref}
 
 ```js
 const refContainer = useRef(initialValue);
@@ -341,7 +341,7 @@ function TextInputWithFocusButton() {
 
 Note that `useRef()` is useful for more than the `ref` attribute. It's [handy for keeping any mutable value around](/docs/hooks-faq.html#is-there-something-like-instance-variables) similar to how you'd use instance fields in classes.
 
-### `useImperativeHandle`
+### `useImperativeHandle` {#useimperativehandle}
 
 ```js
 useImperativeHandle(ref, createHandle, [inputs])
@@ -364,7 +364,7 @@ FancyInput = forwardRef(FancyInput);
 
 In this example, a parent component that renders `<FancyInput ref={fancyInputRef} />` would be able to call `fancyInputRef.current.focus()`.
 
-### `useLayoutEffect`
+### `useLayoutEffect` {#uselayouteffect}
 
 The signature is identical to `useEffect`, but it fires synchronously after all DOM mutations. Use this to read layout from the DOM and synchronously re-render. Updates scheduled inside `useLayoutEffect` will be flushed synchronously, before the browser has a chance to paint.
 
@@ -374,7 +374,7 @@ Prefer the standard `useEffect` when possible to avoid blocking visual updates.
 >
 > If you're migrating code from a class component, `useLayoutEffect` fires in the same phase as `componentDidMount` and `componentDidUpdate`, so if you're unsure of which effect Hook to use, it's probably the least risky.
 
-### `useDebugValue`
+### `useDebugValue` {#usedebugvalue}
 
 ```js
 useDebugValue(value)
@@ -402,7 +402,7 @@ function useFriendStatus(friendID) {
 >
 > We don't recommend adding debug values to every custom Hook. It's most valuable for custom Hooks that are part of shared libraries.
 
-#### Defer formatting debug values
+#### Defer formatting debug values {#defer-formatting-debug-values}
 
 In some cases formatting a value for display might be an expensive operation. It's also unnecessary unless a Hook is actually inspected.
 
diff --git a/content/docs/hooks-rules.md b/content/docs/hooks-rules.md
index 80a447992a..698d1c7417 100644
--- a/content/docs/hooks-rules.md
+++ b/content/docs/hooks-rules.md
@@ -10,11 +10,11 @@ prev: hooks-effect.html
 
 Hooks are JavaScript functions, but you need to follow two rules when using them. We provide a [linter plugin](https://www.npmjs.com/package/eslint-plugin-react-hooks) to enforce these rules automatically:
 
-### Only Call Hooks at the Top Level
+### Only Call Hooks at the Top Level {#only-call-hooks-at-the-top-level}
 
 **Don't call Hooks inside loops, conditions, or nested functions.** Instead, always use Hooks at the top level of your React function. By following this rule, you ensure that Hooks are called in the same order each time a component renders. That's what allows React to correctly preserve the state of Hooks between multiple `useState` and `useEffect` calls. (If you're curious, we'll explain this in depth [below](#explanation).)
 
-### Only Call Hooks from React Functions
+### Only Call Hooks from React Functions {#only-call-hooks-from-react-functions}
 
 **Don't call Hooks from regular JavaScript functions.** Instead, you can:
 
@@ -23,7 +23,7 @@ Hooks are JavaScript functions, but you need to follow two rules when using them
 
 By following this rule, you ensure that all stateful logic in a component is clearly visible from its source code.
 
-## ESLint Plugin
+## ESLint Plugin {#eslint-plugin}
 
 We released an ESLint plugin called [`eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks) that enforces these two rules. You can add this plugin to your project if you'd like to try it:
 
@@ -49,7 +49,7 @@ In the future, we intend to include this plugin by default into Create React App
 
 **You can skip to the next page explaining how to write [your own Hooks](/docs/hooks-custom.html) now.** On this page, we'll continue by explaining the reasoning behind these rules.
 
-## Explanation
+## Explanation {#explanation}
 
 As we [learned earlier](/docs/hooks-state.html#tip-using-multiple-state-variables), we can use multiple State or Effect Hooks in a single component:
 
@@ -132,6 +132,6 @@ React wouldn't know what to return for the second `useState` Hook call. React ex
 
 **Note that you don't need to worry about this problem if you use the [provided lint rule](https://www.npmjs.com/package/eslint-plugin-react-hooks).** But now you also know *why* Hooks work this way, and which issues the rule is preventing.
 
-## Next Steps
+## Next Steps {#next-steps}
 
 Finally, we're ready to learn about [writing your own Hooks](/docs/hooks-custom.html)! Custom Hooks let you combine Hooks provided by React into your own abstractions, and reuse common stateful logic between different components.
diff --git a/content/docs/hooks-state.md b/content/docs/hooks-state.md
index 2a234af82e..052aecb330 100644
--- a/content/docs/hooks-state.md
+++ b/content/docs/hooks-state.md
@@ -30,7 +30,7 @@ function Example() {
 
 We'll start learning about Hooks by comparing this code to an equivalent class example.
 
-## Equivalent Class Example
+## Equivalent Class Example {#equivalent-class-example}
 
 If you used classes in React before, this code should look familiar:
 
@@ -62,7 +62,7 @@ The state starts as `{ count: 0 }`, and we increment `state.count` when the user
 >
 >You might be wondering why we're using a counter here instead of a more realistic example. This is to help us focus on the API while we're still making our first steps with Hooks.
 
-## Hooks and Function Components
+## Hooks and Function Components {#hooks-and-function-components}
 
 As a reminder, function components in React look like this:
 
@@ -86,7 +86,7 @@ You might have previously known these as "stateless components". We're now intro
 
 Hooks **don't** work inside classes. But you can use them instead of writing classes.
 
-## What's a Hook?
+## What's a Hook? {#whats-a-hook}
 
 Our new example starts by importing the `useState` Hook from React:
 
@@ -106,7 +106,7 @@ function Example() {
 >
 >There are some special rules about where you can and can't use Hooks within a component. We'll learn them in [Rules of Hooks](/docs/hooks-rules.html).
 
-## Declaring a State Variable
+## Declaring a State Variable {#declaring-a-state-variable}
 
 In a class, we initialize the `count` state to `0` by setting `this.state` to `{ count: 0 }` in the constructor:
 
@@ -154,7 +154,7 @@ We declare a state variable called `count`, and set it to `0`. React will rememb
 >
 >"Create" wouldn't be quite accurate because the state is only created the first time our component renders. During the next renders, `useState` gives us the current state. Otherwise it wouldn't be "state" at all! There's also a reason why Hook names *always* start with `use`. We'll learn why later in the [Rules of Hooks](/docs/hooks-rules.html).
 
-## Reading State
+## Reading State {#reading-state}
 
 When we want to display the current count in a class, we read `this.state.count`:
 
@@ -169,7 +169,7 @@ In a function, we can use `count` directly:
   <p>You clicked {count} times</p>
 ```
 
-## Updating State
+## Updating State {#updating-state}
 
 In a class, we need to call `this.setState()` to update the `count` state:
 
@@ -187,7 +187,7 @@ In a function, we already have `setCount` and `count` as variables so we don't n
   </button>
 ```
 
-## Recap
+## Recap {#recap}
 
 Let's now **recap what we learned line by line** and check our understanding.
 
@@ -218,7 +218,7 @@ Let's now **recap what we learned line by line** and check our understanding.
 
 This might seem like a lot to take in at first. Don't rush it! If you're lost in the explanation, look at the code above again and try to read it from top to bottom. We promise that once you try to "forget" how state works in classes, and look at this code with fresh eyes, it will make sense.
 
-### Tip: What Do Square Brackets Mean?
+### Tip: What Do Square Brackets Mean? {#tip-what-do-square-brackets-mean}
 
 You might have noticed the square brackets when we declare a state variable:
 
@@ -246,7 +246,7 @@ When we declare a state variable with `useState`, it returns a pair — an array
 >
 >You might be curious how React knows which component `useState` corresponds to since we're not passing anything like `this` back to React. We'll answer [this question](/docs/hooks-faq.html#how-does-react-associate-hook-calls-with-components) and many others in the FAQ section.
 
-### Tip: Using Multiple State Variables
+### Tip: Using Multiple State Variables {#tip-using-multiple-state-variables}
 
 Declaring state variables as a pair of `[something, setSomething]` is also handy because it lets us give *different* names to different state variables if we want to use more than one:
 
@@ -271,7 +271,7 @@ You **don't have to** use many state variables. State variables can hold objects
 
 We provide more recommendations on splitting independent state variables [in the FAQ](/docs/hooks-faq.html#should-i-use-one-or-many-state-variables).
 
-## Next Steps
+## Next Steps {#next-steps}
 
 On this page we've learned about one of the Hooks provided by React, called `useState`. We're also sometimes going to refer to it as the "State Hook". It lets us add local state to React function components -- which we did for the first time ever!
 
diff --git a/content/docs/how-to-contribute.md b/content/docs/how-to-contribute.md
index ff5fd988da..b45a0b0508 100644
--- a/content/docs/how-to-contribute.md
+++ b/content/docs/how-to-contribute.md
@@ -11,21 +11,21 @@ redirect_from:
 
 React is one of Facebook's first open source projects that is both under very active development and is also being used to ship code to everybody on [facebook.com](https://www.facebook.com). We're still working out the kinks to make contributing to this project as easy and transparent as possible, but we're not quite there yet. Hopefully this document makes the process for contributing clear and answers some questions that you may have.
 
-### [Code of Conduct](https://code.facebook.com/codeofconduct)
+### [Code of Conduct](https://code.facebook.com/codeofconduct) {#code-of-conduct}
 
 Facebook has adopted a Code of Conduct that we expect project participants to adhere to. Please read [the full text](https://code.facebook.com/codeofconduct) so that you can understand what actions will and will not be tolerated.
 
-### Open Development
+### Open Development {#open-development}
 
 All work on React happens directly on [GitHub](https://github.com/facebook/react). Both core team members and external contributors send pull requests which go through the same review process.
 
-### Branch Organization
+### Branch Organization {#branch-organization}
 
 We will do our best to keep the [`master` branch](https://github.com/facebook/react/tree/master) in good shape, with tests passing at all times. But in order to move fast, we will make API changes that your application might not be compatible with. We recommend that you use [the latest stable version of React](/downloads.html).
 
 If you send a pull request, please do it against the `master` branch. We maintain stable branches for major versions separately but we don't accept pull requests to them directly. Instead, we cherry-pick non-breaking changes from master to the latest stable major version.
 
-### Semantic Versioning
+### Semantic Versioning {#semantic-versioning}
 
 React follows [semantic versioning](http://semver.org/). We release patch versions for bugfixes, minor versions for new features, and major versions for any breaking changes. When we make breaking changes, we also introduce deprecation warnings in a minor version so that our users learn about the upcoming changes and migrate their code in advance.
 
@@ -33,34 +33,34 @@ We tag every pull request with a label marking whether the change should go in t
 
 Every significant change is documented in the [changelog file](https://github.com/facebook/react/blob/master/CHANGELOG.md).
 
-### Bugs
+### Bugs {#bugs}
 
-#### Where to Find Known Issues
+#### Where to Find Known Issues {#where-to-find-known-issues}
 
 We are using [GitHub Issues](https://github.com/facebook/react/issues) for our public bugs. We keep a close eye on this and try to make it clear when we have an internal fix in progress. Before filing a new task, try to make sure your problem doesn't already exist.
 
-#### Reporting New Issues
+#### Reporting New Issues {#reporting-new-issues}
 
 The best way to get your bug fixed is to provide a reduced test case. This [JSFiddle template](https://jsfiddle.net/Luktwrdm/) is a great starting point.
 
-#### Security Bugs
+#### Security Bugs {#security-bugs}
 
 Facebook has a [bounty program](https://www.facebook.com/whitehat/) for the safe disclosure of security bugs. With that in mind, please do not file public issues; go through the process outlined on that page.
 
-### How to Get in Touch
+### How to Get in Touch {#how-to-get-in-touch}
 
 * IRC: [#reactjs on freenode](https://webchat.freenode.net/?channels=reactjs)
 * Discussion forum: [discuss.reactjs.org](https://discuss.reactjs.org/)
 
 There is also [an active community of React users on the Discord chat platform](http://www.reactiflux.com/) in case you need help with React.
 
-### Proposing a Change
+### Proposing a Change {#proposing-a-change}
 
 If you intend to change the public API, or make any non-trivial changes to the implementation, we recommend [filing an issue](https://github.com/facebook/react/issues/new). This lets us reach an agreement on your proposal before you put significant effort into it.
 
 If you're only fixing a bug, it's fine to submit a pull request right away but we still recommend to file an issue detailing what you're fixing. This is helpful in case we don't accept that specific fix but want to keep track of the issue.
 
-### Your First Pull Request
+### Your First Pull Request {#your-first-pull-request}
 
 Working on your first Pull Request? You can learn how from this free video series:
 
@@ -72,7 +72,7 @@ If you decide to fix an issue, please be sure to check the comment thread in cas
 
 If somebody claims an issue but doesn't follow up for more than two weeks, it's fine to take it over but you should still leave a comment.
 
-### Sending a Pull Request
+### Sending a Pull Request {#sending-a-pull-request}
 
 The core team is monitoring for pull requests. We will review your pull request and either merge it, request changes to it, or close it with an explanation. For API changes we may need to fix our internal uses at Facebook.com, which could cause some delay. We'll do our best to provide updates and feedback throughout the process.
 
@@ -89,19 +89,19 @@ The core team is monitoring for pull requests. We will review your pull request
 9. Run the [Flow](https://flowtype.org/) typechecks (`yarn flow`).
 10. If you haven't already, complete the CLA.
 
-### Contributor License Agreement (CLA)
+### Contributor License Agreement (CLA) {#contributor-license-agreement-cla}
 
 In order to accept your pull request, we need you to submit a CLA. You only need to do this once, so if you've done this for another Facebook open source project, you're good to go. If you are submitting a pull request for the first time, just let us know that you have completed the CLA and we can cross-check with your GitHub username.
 
 **[Complete your CLA here.](https://code.facebook.com/cla)**
 
-### Contribution Prerequisites
+### Contribution Prerequisites {#contribution-prerequisites}
 
 * You have [Node](https://nodejs.org) installed at v8.0.0+ and [Yarn](https://yarnpkg.com/en/) at v1.2.0+.
 * You have `gcc` installed or are comfortable installing a compiler if needed. Some of our dependencies may require a compilation step. On OS X, the Xcode Command Line Tools will cover this. On Ubuntu, `apt-get install build-essential` will install the required packages. Similar commands should work on other Linux distros. Windows will require some additional steps, see the [`node-gyp` installation instructions](https://github.com/nodejs/node-gyp#installation) for details.
 * You are familiar with Git.
 
-### Development Workflow
+### Development Workflow {#development-workflow}
 
 After cloning React, run `yarn` to fetch its dependencies.
 Then, you can run several commands:
@@ -138,7 +138,7 @@ Every time you run `yarn build` in the React folder, the updated versions will a
 
 We still require that your pull request contains unit tests for any new functionality. This way we can ensure that we don't break your code in the future.
 
-### Style Guide
+### Style Guide {#style-guide}
 
 We use an automatic code formatter called [Prettier](https://prettier.io/).
 Run `yarn prettier` after making any changes to the code.
@@ -148,11 +148,11 @@ You can check the status of your code styling by simply running `yarn linc`.
 
 However, there are still some styles that the linter cannot pick up. If you are unsure about something, looking at [Airbnb's Style Guide](https://github.com/airbnb/javascript) will guide you in the right direction.
 
-### Introductory Video
+### Introductory Video {#introductory-video}
 
 You may be interested in watching [this short video](https://www.youtube.com/watch?v=wUpPsEcGsg8) (26 mins) which gives an introduction on how to contribute to React.
 
-#### Video highlights:
+#### Video highlights: {#video-highlights}
 - [4:12](https://youtu.be/wUpPsEcGsg8?t=4m12s) - Building and testing React locally
 - [6:07](https://youtu.be/wUpPsEcGsg8?t=6m7s) - Creating and sending pull requests
 - [8:25](https://youtu.be/wUpPsEcGsg8?t=8m25s) - Organizing code
@@ -161,7 +161,7 @@ You may be interested in watching [this short video](https://www.youtube.com/wat
 
 For a realistic overview of what it _feels_ like to contribute to React for the first time, check out [this entertaining ReactNYC talk](https://www.youtube.com/watch?v=GWCcZ6fnpn4).
 
-### Request for Comments (RFC)
+### Request for Comments (RFC) {#request-for-comments-rfc}
 
 Many changes, including bug fixes and documentation improvements can be implemented and reviewed via the normal GitHub pull request workflow.
 
@@ -169,10 +169,10 @@ Some changes though are "substantial", and we ask that these be put through a bi
 
 The "RFC" (request for comments) process is intended to provide a consistent and controlled path for new features to enter the project. You can contribute by visiting the [rfcs repository](https://github.com/reactjs/rfcs).
 
-### License
+### License {#license}
 
 By contributing to React, you agree that your contributions will be licensed under its MIT license.
 
-### What Next?
+### What Next? {#what-next}
 
 Read the [next section](/docs/codebase-overview.html) to learn how the codebase is organized.
diff --git a/content/docs/implementation-notes.md b/content/docs/implementation-notes.md
index 509b4a2f2e..a035a5edfd 100644
--- a/content/docs/implementation-notes.md
+++ b/content/docs/implementation-notes.md
@@ -17,17 +17,17 @@ It also assumes an understanding of the [differences between React components, t
 
 The stack reconciler was used in React 15 and earlier. It is located at [src/renderers/shared/stack/reconciler](https://github.com/facebook/react/tree/15-stable/src/renderers/shared/stack/reconciler).
 
-### Video: Building React from Scratch
+### Video: Building React from Scratch {#video-building-react-from-scratch}
 
 [Paul O'Shannessy](https://twitter.com/zpao) gave a talk about [building React from scratch](https://www.youtube.com/watch?v=_MAD4Oly9yg) that largely inspired this document.
 
 Both this document and his talk are simplifications of the real codebase so you might get a better understanding by getting familiar with both of them.
 
-### Overview
+### Overview {#overview}
 
 The reconciler itself doesn't have a public API. [Renderers](/docs/codebase-overview.html#stack-renderers) like React DOM and React Native use it to efficiently update the user interface according to the React components written by the user.
 
-### Mounting as a Recursive Process
+### Mounting as a Recursive Process {#mounting-as-a-recursive-process}
 
 Let's consider the first time you mount a component:
 
@@ -113,7 +113,7 @@ Let's recap a few key ideas in the example above:
 * User-defined components (e.g. `App`) can be classes or functions but they all "render to" elements.
 * "Mounting" is a recursive process that creates a DOM or Native tree given the top-level React element (e.g. `<App />`).
 
-### Mounting Host Elements
+### Mounting Host Elements {#mounting-host-elements}
 
 This process would be useless if we didn't render something to the screen as a result.
 
@@ -231,7 +231,7 @@ rootEl.appendChild(node);
 
 This is working but still far from how the reconciler is really implemented. The key missing ingredient is support for updates.
 
-### Introducing Internal Instances
+### Introducing Internal Instances {#introducing-internal-instances}
 
 The key feature of React is that you can re-render everything, and it won't recreate the DOM or reset the state:
 
@@ -432,7 +432,7 @@ var rootEl = document.getElementById('root');
 mountTree(<App />, rootEl);
 ```
 
-### Unmounting
+### Unmounting {#unmounting}
 
 Now that we have internal instances that hold onto their children and the DOM nodes, we can implement unmounting. For a composite component, unmounting calls a lifecycle method and recurses.
 
@@ -516,7 +516,7 @@ function mountTree(element, containerNode) {
 
 Now, running `unmountTree()`, or running `mountTree()` repeatedly, removes the old tree and runs the `componentWillUnmount()` lifecycle method on components.
 
-### Updating
+### Updating {#updating}
 
 In the previous section, we implemented unmounting. However React wouldn't be very useful if each prop change unmounted and mounted the whole tree. The goal of the reconciler is to reuse existing instances where possible to preserve the DOM and the state:
 
@@ -552,7 +552,7 @@ Its job is to do whatever is necessary to bring the component (and any of its ch
 
 This is the part that is often described as "virtual DOM diffing" although what really happens is that we walk the internal tree recursively and let each internal instance receive an update.
 
-### Updating Composite Components
+### Updating Composite Components {#updating-composite-components}
 
 When a composite component receives a new element, we run the `componentWillUpdate()` lifecycle method.
 
@@ -666,7 +666,7 @@ class DOMComponent {
 }
 ```
 
-### Updating Host Components
+### Updating Host Components {#updating-host-components}
 
 Host component implementations, such as `DOMComponent`, update differently. When they receive an element, they need to update the underlying platform-specific view. In case of React DOM, this means updating the DOM attributes:
 
@@ -811,7 +811,7 @@ As the last step, we execute the DOM operations. Again, the real reconciler code
 
 And that is it for updating host components.
 
-### Top-Level Updates
+### Top-Level Updates {#top-level-updates}
 
 Now that both `CompositeComponent` and `DOMComponent` implement the `receive(nextElement)` method, we can change the top-level `mountTree()` function to use it when the element `type` is the same as it was the last time:
 
@@ -850,7 +850,7 @@ mountTree(<App />, rootEl);
 
 These are the basics of how React works internally.
 
-### What We Left Out
+### What We Left Out {#what-we-left-out}
 
 This document is simplified compared to the real codebase. There are a few important aspects we didn't address:
 
@@ -872,7 +872,7 @@ This document is simplified compared to the real codebase. There are a few impor
 
 * React puts information about the current update into an internal object called "transaction". Transactions are useful for keeping track of the queue of pending lifecycle methods, the current DOM nesting for the warnings, and anything else that is "global" to a specific update. Transactions also ensure React "cleans everything up" after updates. For example, the transaction class provided by React DOM restores the input selection after any update.
 
-### Jumping into the Code
+### Jumping into the Code {#jumping-into-the-code}
 
 * [`ReactMount`](https://github.com/facebook/react/blob/83381c1673d14cd16cf747e34c945291e5518a86/src/renderers/dom/client/ReactMount.js) is where the code like `mountTree()` and `unmountTree()` from this tutorial lives. It takes care of mounting and unmounting top-level components. [`ReactNativeMount`](https://github.com/facebook/react/blob/83381c1673d14cd16cf747e34c945291e5518a86/src/renderers/native/ReactNativeMount.js) is its React Native analog.
 * [`ReactDOMComponent`](https://github.com/facebook/react/blob/83381c1673d14cd16cf747e34c945291e5518a86/src/renderers/dom/shared/ReactDOMComponent.js) is the equivalent of `DOMComponent` in this tutorial. It implements the host component class for React DOM renderer. [`ReactNativeBaseComponent`](https://github.com/facebook/react/blob/83381c1673d14cd16cf747e34c945291e5518a86/src/renderers/native/ReactNativeBaseComponent.js) is its React Native analog.
@@ -889,10 +889,10 @@ This document is simplified compared to the real codebase. There are a few impor
 
 * Properties on the internal instances start with an underscore, e.g. `_currentElement`. They are considered to be read-only public fields throughout the codebase.
 
-### Future Directions
+### Future Directions {#future-directions}
 
 Stack reconciler has inherent limitations such as being synchronous and unable to interrupt the work or split it in chunks. There is a work in progress on the [new Fiber reconciler](/docs/codebase-overview.html#fiber-reconciler) with a [completely different architecture](https://github.com/acdlite/react-fiber-architecture). In the future, we intend to replace stack reconciler with it, but at the moment it is far from feature parity.
 
-### Next Steps
+### Next Steps {#next-steps}
 
 Read the [next section](/docs/design-principles.html) to learn about the guiding principles we use for React development.
diff --git a/content/docs/integrating-with-other-libraries.md b/content/docs/integrating-with-other-libraries.md
index 626a35afed..18a67c4578 100644
--- a/content/docs/integrating-with-other-libraries.md
+++ b/content/docs/integrating-with-other-libraries.md
@@ -6,7 +6,7 @@ permalink: docs/integrating-with-other-libraries.html
 
 React can be used in any web application. It can be embedded in other applications and, with a little care, other applications can be embedded in React. This guide will examine some of the more common use cases, focusing on integration with [jQuery](https://jquery.com/) and [Backbone](http://backbonejs.org/), but the same ideas can be applied to integrating components with any existing code.
 
-## Integrating with DOM Manipulation Plugins
+## Integrating with DOM Manipulation Plugins {#integrating-with-dom-manipulation-plugins}
 
 React is unaware of changes made to the DOM outside of React. It determines updates based on its own internal representation, and if the same DOM nodes are manipulated by another library, React gets confused and has no way to recover.
 
@@ -14,7 +14,7 @@ This does not mean it is impossible or even necessarily difficult to combine Rea
 
 The easiest way to avoid conflicts is to prevent the React component from updating. You can do this by rendering elements that React has no reason to update, like an empty `<div />`.
 
-### How to Approach the Problem
+### How to Approach the Problem {#how-to-approach-the-problem}
 
 To demonstrate this, let's sketch out a wrapper for a generic jQuery plugin.
 
@@ -41,7 +41,7 @@ class SomePlugin extends React.Component {
 
 Note that we defined both `componentDidMount` and `componentWillUnmount` [lifecycle methods](/docs/react-component.html#the-component-lifecycle). Many jQuery plugins attach event listeners to the DOM so it's important to detach them in `componentWillUnmount`. If the plugin does not provide a method for cleanup, you will probably have to provide your own, remembering to remove any event listeners the plugin registered to prevent memory leaks.
 
-### Integrating with jQuery Chosen Plugin
+### Integrating with jQuery Chosen Plugin {#integrating-with-jquery-chosen-plugin}
 
 For a more concrete example of these concepts, let's write a minimal wrapper for the plugin [Chosen](https://harvesthq.github.io/chosen/), which augments `<select>` inputs.
 
@@ -188,7 +188,7 @@ class Chosen extends React.Component {
 
 [**Try it on CodePen**](http://codepen.io/gaearon/pen/xdgKOz?editors=0010)
 
-## Integrating with Other View Libraries
+## Integrating with Other View Libraries {#integrating-with-other-view-libraries}
 
 React can be embedded into other applications thanks to the flexibility of [`ReactDOM.render()`](/docs/react-dom.html#render).
 
@@ -196,7 +196,7 @@ Although React is commonly used at startup to load a single root React component
 
 In fact, this is exactly how React is used at Facebook. This lets us write applications in React piece by piece, and combine them with our existing server-generated templates and other client-side code.
 
-### Replacing String-Based Rendering with React
+### Replacing String-Based Rendering with React {#replacing-string-based-rendering-with-react}
 
 A common pattern in older web applications is to describe chunks of the DOM as a string and insert it into the DOM like so: `$el.html(htmlString)`. These points in a codebase are perfect for introducing React. Just rewrite the string based rendering as a React component.
 
@@ -251,7 +251,7 @@ ReactDOM.render(
 
 You can have as many such isolated components as you like, and use `ReactDOM.render()` to render them to different DOM containers. Gradually, as you convert more of your app to React, you will be able to combine them into larger components, and move some of the `ReactDOM.render()` calls up the hierarchy.
 
-### Embedding React in a Backbone View
+### Embedding React in a Backbone View {#embedding-react-in-a-backbone-view}
 
 [Backbone](http://backbonejs.org/) views typically use HTML strings, or string-producing template functions, to create the content for their DOM elements. This process, too, can be replaced with rendering a React component.
 
@@ -281,11 +281,11 @@ It is important that we also call `ReactDOM.unmountComponentAtNode()` in the `re
 
 When a component is removed *from within* a React tree, the cleanup is performed automatically, but because we are removing the entire tree by hand, we must call this method.
 
-## Integrating with Model Layers
+## Integrating with Model Layers {#integrating-with-model-layers}
 
 While it is generally recommended to use unidirectional data flow such as [React state](/docs/lifting-state-up.html), [Flux](http://facebook.github.io/flux/), or [Redux](http://redux.js.org/), React components can use a model layer from other frameworks and libraries.
 
-### Using Backbone Models in React Components
+### Using Backbone Models in React Components {#using-backbone-models-in-react-components}
 
 The simplest way to consume [Backbone](http://backbonejs.org/) models and collections from a React component is to listen to the various change events and manually force an update.
 
@@ -349,7 +349,7 @@ class List extends React.Component {
 
 [**Try it on CodePen**](http://codepen.io/gaearon/pen/GmrREm?editors=0010)
 
-### Extracting Data from Backbone Models
+### Extracting Data from Backbone Models {#extracting-data-from-backbone-models}
 
 The approach above requires your React components to be aware of the Backbone models and collections. If you later plan to migrate to another data management solution, you might want to concentrate the knowledge about Backbone in as few parts of the code as possible.
 
diff --git a/content/docs/introducing-jsx.md b/content/docs/introducing-jsx.md
index edc5c868c4..d76c3ace6b 100644
--- a/content/docs/introducing-jsx.md
+++ b/content/docs/introducing-jsx.md
@@ -18,7 +18,7 @@ It is called JSX, and it is a syntax extension to JavaScript. We recommend using
 
 JSX produces React "elements". We will explore rendering them to the DOM in the [next section](/docs/rendering-elements.html). Below, you can find the basics of JSX necessary to get you started.
 
-### Why JSX?
+### Why JSX? {#why-jsx}
 
 React embraces the fact that rendering logic is inherently coupled with other UI logic: how events are handled, how the state changes over time, and how the data is prepared for display.
 
@@ -28,7 +28,7 @@ React [doesn't require](/docs/react-without-jsx.html) using JSX, but most people
 
 With that out of the way, let's get started!
 
-### Embedding Expressions in JSX
+### Embedding Expressions in JSX {#embedding-expressions-in-jsx}
 
 In the example below, we declare a variable called `name` and then use it inside JSX by wrapping it in curly braces:
 
@@ -72,7 +72,7 @@ ReactDOM.render(
 
 We split JSX over multiple lines for readability. While it isn't required, when doing this, we also recommend wrapping it in parentheses to avoid the pitfalls of [automatic semicolon insertion](http://stackoverflow.com/q/2846283).
 
-### JSX is an Expression Too
+### JSX is an Expression Too {#jsx-is-an-expression-too}
 
 After compilation, JSX expressions become regular JavaScript function calls and evaluate to JavaScript objects.
 
@@ -87,7 +87,7 @@ function getGreeting(user) {
 }
 ```
 
-### Specifying Attributes with JSX
+### Specifying Attributes with JSX {#specifying-attributes-with-jsx}
 
 You may use quotes to specify string literals as attributes:
 
@@ -109,7 +109,7 @@ Don't put quotes around curly braces when embedding a JavaScript expression in a
 >
 >For example, `class` becomes [`className`](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) in JSX, and `tabindex` becomes [`tabIndex`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/tabIndex).
 
-### Specifying Children with JSX
+### Specifying Children with JSX {#specifying-children-with-jsx}
 
 If a tag is empty, you may close it immediately with `/>`, like XML:
 
@@ -128,7 +128,7 @@ const element = (
 );
 ```
 
-### JSX Prevents Injection Attacks
+### JSX Prevents Injection Attacks {#jsx-prevents-injection-attacks}
 
 It is safe to embed user input in JSX:
 
@@ -140,7 +140,7 @@ const element = <h1>{title}</h1>;
 
 By default, React DOM [escapes](http://stackoverflow.com/questions/7381974/which-characters-need-to-be-escaped-on-html) any values embedded in JSX before rendering them. Thus it ensures that you can never inject anything that's not explicitly written in your application. Everything is converted to a string before being rendered. This helps prevent [XSS (cross-site-scripting)](https://en.wikipedia.org/wiki/Cross-site_scripting) attacks.
 
-### JSX Represents Objects
+### JSX Represents Objects {#jsx-represents-objects}
 
 Babel compiles JSX down to `React.createElement()` calls.
 
diff --git a/content/docs/jsx-in-depth.md b/content/docs/jsx-in-depth.md
index 68ba9e95c9..3dcf2ac269 100644
--- a/content/docs/jsx-in-depth.md
+++ b/content/docs/jsx-in-depth.md
@@ -49,13 +49,13 @@ React.createElement(
 
 If you want to test out how some specific JSX is converted into JavaScript, you can try out [the online Babel compiler](babel://jsx-simple-example).
 
-## Specifying The React Element Type
+## Specifying The React Element Type {#specifying-the-react-element-type}
 
 The first part of a JSX tag determines the type of the React element.
 
 Capitalized types indicate that the JSX tag is referring to a React component. These tags get compiled into a direct reference to the named variable, so if you use the JSX `<Foo />` expression, `Foo` must be in scope.
 
-### React Must Be in Scope
+### React Must Be in Scope {#react-must-be-in-scope}
 
 Since JSX compiles into calls to `React.createElement`, the `React` library must also always be in scope from your JSX code.
 
@@ -73,7 +73,7 @@ function WarningButton() {
 
 If you don't use a JavaScript bundler and loaded React from a `<script>` tag, it is already in scope as the `React` global.
 
-### Using Dot Notation for JSX Type
+### Using Dot Notation for JSX Type {#using-dot-notation-for-jsx-type}
 
 You can also refer to a React component using dot-notation from within JSX. This is convenient if you have a single module that exports many React components. For example, if `MyComponents.DatePicker` is a component, you can use it directly from JSX with:
 
@@ -91,7 +91,7 @@ function BlueDatePicker() {
 }
 ```
 
-### User-Defined Components Must Be Capitalized
+### User-Defined Components Must Be Capitalized {#user-defined-components-must-be-capitalized}
 
 When an element type starts with a lowercase letter, it refers to a built-in component like `<div>` or `<span>` and results in a string `'div'` or `'span'` passed to `React.createElement`. Types that start with a capital letter like `<Foo />` compile to `React.createElement(Foo)` and correspond to a component defined or imported in your JavaScript file.
 
@@ -131,7 +131,7 @@ function HelloWorld() {
 }
 ```
 
-### Choosing the Type at Runtime
+### Choosing the Type at Runtime {#choosing-the-type-at-runtime}
 
 You cannot use a general expression as the React element type. If you do want to use a general expression to indicate the type of the element, just assign it to a capitalized variable first. This often comes up when you want to render a different component based on a prop:
 
@@ -168,11 +168,11 @@ function Story(props) {
 }
 ```
 
-## Props in JSX
+## Props in JSX {#props-in-jsx}
 
 There are several different ways to specify props in JSX.
 
-### JavaScript Expressions as Props
+### JavaScript Expressions as Props {#javascript-expressions-as-props}
 
 You can pass any JavaScript expression as a prop, by surrounding it with `{}`. For example, in this JSX:
 
@@ -198,7 +198,7 @@ function NumberDescriber(props) {
 
 You can learn more about [conditional rendering](/docs/conditional-rendering.html) and [loops](/docs/lists-and-keys.html) in the corresponding sections.
 
-### String Literals
+### String Literals {#string-literals}
 
 You can pass a string literal as a prop. These two JSX expressions are equivalent:
 
@@ -218,7 +218,7 @@ When you pass a string literal, its value is HTML-unescaped. So these two JSX ex
 
 This behavior is usually not relevant. It's only mentioned here for completeness.
 
-### Props Default to "True"
+### Props Default to "True" {#props-default-to-true}
 
 If you pass no value for a prop, it defaults to `true`. These two JSX expressions are equivalent:
 
@@ -230,7 +230,7 @@ If you pass no value for a prop, it defaults to `true`. These two JSX expression
 
 In general, we don't recommend using this because it can be confused with the [ES6 object shorthand](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Object_initializer#New_notations_in_ECMAScript_2015) `{foo}` which is short for `{foo: foo}` rather than `{foo: true}`. This behavior is just there so that it matches the behavior of HTML.
 
-### Spread Attributes
+### Spread Attributes {#spread-attributes}
 
 If you already have `props` as an object, and you want to pass it in JSX, you can use `...` as a "spread" operator to pass the whole props object. These two components are equivalent:
 
@@ -270,11 +270,11 @@ All other props are passed via the `...other` object making this component reall
 
 Spread attributes can be useful but they also make it easy to pass unnecessary props to components that don't care about them or to pass invalid HTML attributes to the DOM. We recommend using this syntax sparingly.  
 
-## Children in JSX
+## Children in JSX {#children-in-jsx}
 
 In JSX expressions that contain both an opening tag and a closing tag, the content between those tags is passed as a special prop: `props.children`. There are several different ways to pass children:
 
-### String Literals
+### String Literals {#string-literals-1}
 
 You can put a string between the opening and closing tags and `props.children` will just be that string. This is useful for many of the built-in HTML elements. For example:
 
@@ -308,7 +308,7 @@ JSX removes whitespace at the beginning and ending of a line. It also removes bl
 </div>
 ```
 
-### JSX Children
+### JSX Children {#jsx-children}
 
 You can provide more JSX elements as the children. This is useful for displaying nested components:
 
@@ -345,7 +345,7 @@ render() {
 }
 ```
 
-### JavaScript Expressions as Children
+### JavaScript Expressions as Children {#javascript-expressions-as-children}
 
 You can pass any JavaScript expression as children, by enclosing it within `{}`. For example, these expressions are equivalent:
 
@@ -380,7 +380,7 @@ function Hello(props) {
 }
 ```
 
-### Functions as Children
+### Functions as Children {#functions-as-children}
 
 Normally, JavaScript expressions inserted in JSX will evaluate to a string, a React element, or a list of those things. However, `props.children` works just like any other prop in that it can pass any sort of data, not just the sorts that React knows how to render. For example, if you have a custom component, you could have it take a callback as `props.children`:
 
@@ -405,7 +405,7 @@ function ListOfTenThings() {
 
 Children passed to a custom component can be anything, as long as that component transforms them into something React can understand before rendering. This usage is not common, but it works if you want to stretch what JSX is capable of.
 
-### Booleans, Null, and Undefined Are Ignored
+### Booleans, Null, and Undefined Are Ignored {#booleans-null-and-undefined-are-ignored}
 
 `false`, `null`, `undefined`, and `true` are valid children. They simply don't render. These JSX expressions will all render to the same thing:
 
diff --git a/content/docs/legacy-context.md b/content/docs/legacy-context.md
index 44b403141a..1c62e66504 100644
--- a/content/docs/legacy-context.md
+++ b/content/docs/legacy-context.md
@@ -10,7 +10,7 @@ permalink: docs/legacy-context.html
 > Use the [new context API](/docs/context.html) introduced with version 16.3.
 > The legacy API will continue working for all 16.x releases.
 
-## How To Use Context
+## How To Use Context {#how-to-use-context}
 
 > This section documents a legacy API. See the [new API](/docs/context.html).
 
@@ -105,7 +105,7 @@ If `contextTypes` is not defined, then `context` will be an empty object.
 >
 > We provide [a codemod script](/blog/2017/04/07/react-v15.5.0.html#migrating-from-react.proptypes) to automate the conversion.
 
-### Parent-Child Coupling
+### Parent-Child Coupling {#parent-child-coupling}
 
 > This section documents a legacy API. See the [new API](/docs/context.html).
 
@@ -137,7 +137,7 @@ By passing down some information from the `Router` component, each `Link` and `R
 
 Before you build components with an API similar to this, consider if there are cleaner alternatives. For example, you can pass entire React components as props if you'd like to.
 
-### Referencing Context in Lifecycle Methods
+### Referencing Context in Lifecycle Methods {#referencing-context-in-lifecycle-methods}
 
 > This section documents a legacy API. See the [new API](/docs/context.html).
 
@@ -152,7 +152,7 @@ If `contextTypes` is defined within a component, the following [lifecycle method
 >
 > As of React 16, `componentDidUpdate` no longer receives `prevContext`.
 
-### Referencing Context in Stateless Function Components
+### Referencing Context in Stateless Function Components {#referencing-context-in-stateless-function-components}
 
 > This section documents a legacy API. See the [new API](/docs/context.html).
 
@@ -169,7 +169,7 @@ const Button = ({children}, context) =>
 Button.contextTypes = {color: PropTypes.string};
 ```
 
-### Updating Context
+### Updating Context {#updating-context}
 
 > This section documents a legacy API. See the [new API](/docs/context.html).
 
diff --git a/content/docs/lifting-state-up.md b/content/docs/lifting-state-up.md
index 8b30256d5e..449330cfdc 100644
--- a/content/docs/lifting-state-up.md
+++ b/content/docs/lifting-state-up.md
@@ -58,7 +58,7 @@ class Calculator extends React.Component {
 
 [**Try it on CodePen**](https://codepen.io/gaearon/pen/ZXeOBm?editors=0010)
 
-## Adding a Second Input
+## Adding a Second Input {#adding-a-second-input}
 
 Our new requirement is that, in addition to a Celsius input, we provide a Fahrenheit input, and they are kept in sync.
 
@@ -116,7 +116,7 @@ We have two inputs now, but when you enter the temperature in one of them, the o
 
 We also can't display the `BoilingVerdict` from `Calculator`. The `Calculator` doesn't know the current temperature because it is hidden inside the `TemperatureInput`.
 
-## Writing Conversion Functions
+## Writing Conversion Functions {#writing-conversion-functions}
 
 First, we will write two functions to convert from Celsius to Fahrenheit and back:
 
@@ -148,7 +148,7 @@ function tryConvert(temperature, convert) {
 
 For example, `tryConvert('abc', toCelsius)` returns an empty string, and `tryConvert('10.22', toFahrenheit)` returns `'50.396'`.
 
-## Lifting State Up
+## Lifting State Up {#lifting-state-up}
 
 Currently, both `TemperatureInput` components independently keep their values in the local state:
 
@@ -316,7 +316,7 @@ Let's recap what happens when you edit an input:
 
 Every update goes through the same steps so the inputs stay in sync.
 
-## Lessons Learned
+## Lessons Learned {#lessons-learned}
 
 There should be a single "source of truth" for any data that changes in a React application. Usually, the state is first added to the component that needs it for rendering. Then, if other components also need it, you can lift it up to their closest common ancestor. Instead of trying to sync the state between different components, you should rely on the [top-down data flow](/docs/state-and-lifecycle.html#the-data-flows-down).
 
diff --git a/content/docs/lists-and-keys.md b/content/docs/lists-and-keys.md
index bc3c6a4f1c..c82739a6ae 100644
--- a/content/docs/lists-and-keys.md
+++ b/content/docs/lists-and-keys.md
@@ -20,7 +20,7 @@ This code logs `[2, 4, 6, 8, 10]` to the console.
 
 In React, transforming arrays into lists of [elements](/docs/rendering-elements.html) is nearly identical.
 
-### Rendering Multiple Components
+### Rendering Multiple Components {#rendering-multiple-components}
 
 You can build collections of elements and [include them in JSX](/docs/introducing-jsx.html#embedding-expressions-in-jsx) using curly braces `{}`.
 
@@ -46,7 +46,7 @@ ReactDOM.render(
 
 This code displays a bullet list of numbers between 1 and 5.
 
-### Basic List Component
+### Basic List Component {#basic-list-component}
 
 Usually you would render lists inside a [component](/docs/components-and-props.html).
 
@@ -96,7 +96,7 @@ ReactDOM.render(
 
 [**Try it on CodePen**](https://codepen.io/gaearon/pen/jrXYRR?editors=0011)
 
-## Keys
+## Keys {#keys}
 
 Keys help React identify which items have changed, are added, or are removed. Keys should be given to the elements inside the array to give the elements a stable identity:
 
@@ -134,7 +134,7 @@ We don't recommend using indexes for keys if the order of items may change. This
 
 Here is an [in-depth explanation about why keys are necessary](/docs/reconciliation.html#recursing-on-children) if you're interested in learning more.
 
-### Extracting Components with Keys
+### Extracting Components with Keys {#extracting-components-with-keys}
 
 Keys only make sense in the context of the surrounding array.
 
@@ -206,7 +206,7 @@ ReactDOM.render(
 
 A good rule of thumb is that elements inside the `map()` call need keys.
 
-### Keys Must Only Be Unique Among Siblings
+### Keys Must Only Be Unique Among Siblings {#keys-must-only-be-unique-among-siblings}
 
 Keys used within arrays should be unique among their siblings. However they don't need to be globally unique. We can use the same keys when we produce two different arrays:
 
@@ -261,7 +261,7 @@ const content = posts.map((post) =>
 
 With the example above, the `Post` component can read `props.id`, but not `props.key`.
 
-### Embedding map() in JSX
+### Embedding map() in JSX {#embedding-map-in-jsx}
 
 In the examples above we declared a separate `listItems` variable and included it in JSX:
 
diff --git a/content/docs/optimizing-performance.md b/content/docs/optimizing-performance.md
index aaed723c45..e42bad7b76 100644
--- a/content/docs/optimizing-performance.md
+++ b/content/docs/optimizing-performance.md
@@ -8,7 +8,7 @@ redirect_from:
 
 Internally, React uses several clever techniques to minimize the number of costly DOM operations required to update the UI. For many applications, using React will lead to a fast user interface without doing much work to specifically optimize for performance. Nevertheless, there are several ways you can speed up your React application.
 
-## Use the Production Build
+## Use the Production Build {#use-the-production-build}
 
 If you're benchmarking or experiencing performance problems in your React apps, make sure you're testing with the minified production build.
 
@@ -26,7 +26,7 @@ It is expected that you use the development mode when working on your app, and t
 
 You can find instructions for building your app for production below.
 
-### Create React App
+### Create React App {#create-react-app}
 
 If your project is built with [Create React App](https://github.com/facebookincubator/create-react-app), run:
 
@@ -38,7 +38,7 @@ This will create a production build of your app in the `build/` folder of your p
 
 Remember that this is only necessary before deploying to production. For normal development, use `npm start`.
 
-### Single-File Builds
+### Single-File Builds {#single-file-builds}
 
 We offer production-ready versions of React and React DOM as single files:
 
@@ -49,7 +49,7 @@ We offer production-ready versions of React and React DOM as single files:
 
 Remember that only React files ending with `.production.min.js` are suitable for production.
 
-### Brunch
+### Brunch {#brunch}
 
 For the most efficient Brunch production build, install the [`uglify-js-brunch`](https://github.com/brunch/uglify-js-brunch) plugin:
 
@@ -69,7 +69,7 @@ brunch build -p
 
 Remember that you only need to do this for production builds. You shouldn't pass the `-p` flag or apply this plugin in development, because it will hide useful React warnings and make the builds much slower.
 
-### Browserify
+### Browserify {#browserify}
 
 For the most efficient Browserify production build, install a few plugins:
 
@@ -103,7 +103,7 @@ browserify ./index.js \
 
 Remember that you only need to do this for production builds. You shouldn't apply these plugins in development because they will hide useful React warnings, and make the builds much slower.
 
-### Rollup
+### Rollup {#rollup}
 
 For the most efficient Rollup production build, install a few plugins:
 
@@ -137,7 +137,7 @@ For a complete setup example [see this gist](https://gist.github.com/Rich-Harris
 
 Remember that you only need to do this for production builds. You shouldn't apply the `uglify` plugin or the `replace` plugin with `'production'` value in development because they will hide useful React warnings, and make the builds much slower.
 
-### webpack
+### webpack {#webpack}
 
 >**Note:**
 >
@@ -157,7 +157,7 @@ You can learn more about this in [webpack documentation](https://webpack.js.org/
 
 Remember that you only need to do this for production builds. You shouldn't apply `UglifyJsPlugin` or `DefinePlugin` with `'production'` value in development because they will hide useful React warnings, and make the builds much slower.
 
-## Profiling Components with the Chrome Performance Tab
+## Profiling Components with the Chrome Performance Tab {#profiling-components-with-the-chrome-performance-tab}
 
 In the **development** mode, you can visualize how components mount, update, and unmount, using the performance tools in supported browsers. For example:
 
@@ -183,7 +183,7 @@ Note that **the numbers are relative so components will render faster in product
 
 Currently Chrome, Edge, and IE are the only browsers supporting this feature, but we use the standard [User Timing API](https://developer.mozilla.org/en-US/docs/Web/API/User_Timing_API) so we expect more browsers to add support for it.
 
-## Profiling Components with the DevTools Profiler
+## Profiling Components with the DevTools Profiler {#profiling-components-with-the-devtools-profiler}
 
 `react-dom` 16.5+ and `react-native` 0.57+ provide enhanced profiling capabilities in DEV mode with the React DevTools Profiler.
 An overview of the Profiler can be found in the blog post ["Introducing the React Profiler"](/blog/2018/09/10/introducing-the-react-profiler.html).
@@ -200,13 +200,13 @@ If you haven't yet installed the React DevTools, you can find them here:
 > A production profiling bundle of `react-dom` is also available as `react-dom/profiling`.
 > Read more about how to use this bundle at [fb.me/react-profiling](https://fb.me/react-profiling)
 
-## Virtualize Long Lists
+## Virtualize Long Lists {#virtualize-long-lists}
 
 If your application renders long lists of data (hundreds or thousands of rows), we recommended using a technique known as "windowing". This technique only renders a small subset of your rows at any given time, and can dramatically reduce the time it takes to re-render the components as well as the number of DOM nodes created.
 
 [react-window](https://react-window.now.sh/) and [react-virtualized](https://bvaughn.github.io/react-virtualized/) are popular windowing libraries. They provide several reusable components for displaying lists, grids, and tabular data. You can also create your own windowing component, like [Twitter did](https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3), if you want something more tailored to your application's specific use case.
 
-## Avoid Reconciliation
+## Avoid Reconciliation {#avoid-reconciliation}
 
 React builds and maintains an internal representation of the rendered UI. It includes the React elements you return from your components. This representation lets React avoid creating DOM nodes and accessing existing ones beyond necessity, as that can be slower than operations on JavaScript objects. Sometimes it is referred to as a "virtual DOM", but it works the same way on React Native.
 
@@ -242,7 +242,7 @@ If you know that in some situations your component doesn't need to update, you c
 
 In most cases, instead of writing `shouldComponentUpdate()` by hand, you can inherit from [`React.PureComponent`](/docs/react-api.html#reactpurecomponent). It is equivalent to implementing `shouldComponentUpdate()` with a shallow comparison of current and previous props and state.
 
-## shouldComponentUpdate In Action
+## shouldComponentUpdate In Action {#shouldcomponentupdate-in-action}
 
 Here's a subtree of components. For each one, `SCU` indicates what `shouldComponentUpdate` returned, and `vDOMEq` indicates whether the rendered React elements were equivalent. Finally, the circle's color indicates whether the component had to be reconciled or not.
 
@@ -256,7 +256,7 @@ The last interesting case is C8. React had to render this component, but since t
 
 Note that React only had to do DOM mutations for C6, which was inevitable. For C8, it bailed out by comparing the rendered React elements, and for C2's subtree and C7, it didn't even have to compare the elements as we bailed out on `shouldComponentUpdate`, and `render` was not called.
 
-## Examples
+## Examples {#examples}
 
 If the only way your component ever changes is when the `props.color` or the `state.count` variable changes, you could have `shouldComponentUpdate` check that:
 
@@ -350,7 +350,7 @@ class WordAdder extends React.Component {
 
 The problem is that `PureComponent` will do a simple comparison between the old and new values of `this.props.words`. Since this code mutates the `words` array in the `handleClick` method of `WordAdder`, the old and new values of `this.props.words` will compare as equal, even though the actual words in the array have changed. The `ListOfWords` will thus not update even though it has new words that should be rendered.
 
-## The Power Of Not Mutating Data
+## The Power Of Not Mutating Data {#the-power-of-not-mutating-data}
 
 The simplest way to avoid this problem is to avoid mutating values that you are using as props or state. For example, the `handleClick` method above could be rewritten using `concat` as:
 
@@ -400,7 +400,7 @@ function updateColorMap(colormap) {
 
 If you're using Create React App, both `Object.assign` and the object spread syntax are available by default.
 
-## Using Immutable Data Structures
+## Using Immutable Data Structures {#using-immutable-data-structures}
 
 [Immutable.js](https://github.com/facebook/immutable-js) is another way to solve this problem. It provides immutable, persistent collections that work via structural sharing:
 
diff --git a/content/docs/portals.md b/content/docs/portals.md
index 47100769ee..6501213962 100644
--- a/content/docs/portals.md
+++ b/content/docs/portals.md
@@ -12,7 +12,7 @@ ReactDOM.createPortal(child, container)
 
 The first argument (`child`) is any [renderable React child](/docs/react-component.html#render), such as an element, string, or fragment. The second argument (`container`) is a DOM element.
 
-## Usage
+## Usage {#usage}
 
 Normally, when you return an element from a component's render method, it's mounted into the DOM as a child of the nearest parent node:
 
@@ -50,7 +50,7 @@ A typical use case for portals is when a parent component has an `overflow: hidd
 
 [**Try it on CodePen**](https://codepen.io/gaearon/pen/yzMaBd)
 
-## Event Bubbling Through Portals
+## Event Bubbling Through Portals {#event-bubbling-through-portals}
 
 Even though a portal can be anywhere in the DOM tree, it behaves like a normal React child in every other way. Features like context work exactly the same regardless of whether the child is a portal, as the portal still exists in the *React tree* regardless of position in the *DOM tree*.
 
diff --git a/content/docs/react-without-es6.md b/content/docs/react-without-es6.md
index 8cb01c6f3c..8b54d09812 100644
--- a/content/docs/react-without-es6.md
+++ b/content/docs/react-without-es6.md
@@ -28,7 +28,7 @@ var Greeting = createReactClass({
 
 The API of ES6 classes is similar to `createReactClass()` with a few exceptions.
 
-## Declaring Default Props
+## Declaring Default Props {#declaring-default-props}
 
 With functions and ES6 classes `defaultProps` is defined as a property on the component itself:
 
@@ -57,7 +57,7 @@ var Greeting = createReactClass({
 });
 ```
 
-## Setting the Initial State
+## Setting the Initial State {#setting-the-initial-state}
 
 In ES6 classes, you can define the initial state by assigning `this.state` in the constructor:
 
@@ -82,7 +82,7 @@ var Counter = createReactClass({
 });
 ```
 
-## Autobinding
+## Autobinding {#autobinding}
 
 In React components declared as ES6 classes, methods follow the same semantics as regular ES6 classes. This means that they don't automatically bind `this` to the instance. You'll have to explicitly use `.bind(this)` in the constructor:
 
@@ -167,7 +167,7 @@ If you'd rather play it safe, you have a few options:
 * Use arrow functions, e.g. `onClick={(e) => this.handleClick(e)}`.
 * Keep using `createReactClass`.
 
-## Mixins
+## Mixins {#mixins}
 
 >**Note:**
 >
diff --git a/content/docs/reconciliation.md b/content/docs/reconciliation.md
index 4a45aefcc6..c2147a4dcf 100644
--- a/content/docs/reconciliation.md
+++ b/content/docs/reconciliation.md
@@ -6,7 +6,7 @@ permalink: docs/reconciliation.html
 
 React provides a declarative API so that you don't have to worry about exactly what changes on every update. This makes writing applications a lot easier, but it might not be obvious how this is implemented within React. This article explains the choices we made in React's "diffing" algorithm so that component updates are predictable while being fast enough for high-performance apps.
 
-## Motivation
+## Motivation {#motivation}
 
 When you use React, at a single point in time you can think of the `render()` function as creating a tree of React elements. On the next state or props update, that `render()` function will return a different tree of React elements. React then needs to figure out how to efficiently update the UI to match the most recent tree.
 
@@ -19,11 +19,11 @@ If we used this in React, displaying 1000 elements would require in the order of
 
 In practice, these assumptions are valid for almost all practical use cases.
 
-## The Diffing Algorithm
+## The Diffing Algorithm {#the-diffing-algorithm}
 
 When diffing two trees, React first compares the two root elements. The behavior is different depending on the types of the root elements.
 
-### Elements Of Different Types
+### Elements Of Different Types {#elements-of-different-types}
 
 Whenever the root elements have different types, React will tear down the old tree and build the new tree from scratch. Going from `<a>` to `<img>`, or from `<Article>` to `<Comment>`, or from `<Button>` to `<div>` - any of those will lead to a full rebuild.
 
@@ -43,7 +43,7 @@ Any components below the root will also get unmounted and have their state destr
 
 This will destroy the old `Counter` and remount a new one.
 
-### DOM Elements Of The Same Type
+### DOM Elements Of The Same Type {#dom-elements-of-the-same-type}
 
 When comparing two React DOM elements of the same type, React looks at the attributes of both, keeps the same underlying DOM node, and only updates the changed attributes. For example:
 
@@ -67,13 +67,13 @@ When converting between these two elements, React knows to only modify the `colo
 
 After handling the DOM node, React then recurses on the children.
 
-### Component Elements Of The Same Type
+### Component Elements Of The Same Type {#component-elements-of-the-same-type}
 
 When a component updates, the instance stays the same, so that state is maintained across renders. React updates the props of the underlying component instance to match the new element, and calls `componentWillReceiveProps()` and `componentWillUpdate()` on the underlying instance.
 
 Next, the `render()` method is called and the diff algorithm recurses on the previous result and the new result.
 
-### Recursing On Children
+### Recursing On Children {#recursing-on-children}
 
 By default, when recursing on the children of a DOM node, React just iterates over both lists of children at the same time and generates a mutation whenever there's a difference.
 
@@ -111,7 +111,7 @@ If you implement it naively, inserting an element at the beginning has worse per
 
 React will mutate every child instead of realizing it can keep the `<li>Duke</li>` and `<li>Villanova</li>` subtrees intact. This inefficiency can be a problem.
 
-### Keys
+### Keys {#keys}
 
 In order to solve this issue, React supports a `key` attribute. When children have keys, React uses the key to match children in the original tree with children in the subsequent tree. For example, adding a `key` to our inefficient example above can make the tree conversion efficient:
 
@@ -144,7 +144,7 @@ Reorders can also cause issues with component state when indexes are used as key
 
 [Here](codepen://reconciliation/index-used-as-key) is an example of the issues that can be caused by using indexes as keys on CodePen, and [here](codepen://reconciliation/no-index-used-as-key) is an updated version of the same example showing how not using indexes as keys will fix these reordering, sorting, and prepending issues.
 
-## Tradeoffs
+## Tradeoffs {#tradeoffs}
 
 It is important to remember that the reconciliation algorithm is an implementation detail. React could rerender the whole app on every action; the end result would be the same. Just to be clear, rerender in this context means calling `render` for all components, it doesn't mean React will unmount and remount them. It will only apply the differences following the rules stated in the previous sections.
 
diff --git a/content/docs/reference-dom-elements.md b/content/docs/reference-dom-elements.md
index ef1b73555e..1668709681 100644
--- a/content/docs/reference-dom-elements.md
+++ b/content/docs/reference-dom-elements.md
@@ -18,21 +18,21 @@ React implements a browser-independent DOM system for performance and cross-brow
 
 In React, all DOM properties and attributes (including event handlers) should be camelCased. For example, the HTML attribute `tabindex` corresponds to the attribute `tabIndex` in React. The exception is `aria-*` and `data-*` attributes, which should be lowercased. For example, you can keep `aria-label` as `aria-label`.
 
-## Differences In Attributes
+## Differences In Attributes {#differences-in-attributes}
 
 There are a number of attributes that work differently between React and HTML:
 
-### checked
+### checked {#checked}
 
 The `checked` attribute is supported by `<input>` components of type `checkbox` or `radio`. You can use it to set whether the component is checked. This is useful for building controlled components. `defaultChecked` is the uncontrolled equivalent, which sets whether the component is checked when it is first mounted.
 
-### className
+### className {#classname}
 
 To specify a CSS class, use the `className` attribute. This applies to all regular DOM and SVG elements like `<div>`, `<a>`, and others.
 
 If you use React with Web Components (which is uncommon), use the `class` attribute instead.
 
-### dangerouslySetInnerHTML
+### dangerouslySetInnerHTML {#dangerouslysetinnerhtml}
 
 `dangerouslySetInnerHTML` is React's replacement for using `innerHTML` in the browser DOM. In general, setting HTML from code is risky because it's easy to inadvertently expose your users to a [cross-site scripting (XSS)](https://en.wikipedia.org/wiki/Cross-site_scripting) attack. So, you can set HTML directly from React, but you have to type out `dangerouslySetInnerHTML` and pass an object with a `__html` key, to remind yourself that it's dangerous. For example:
 
@@ -46,19 +46,19 @@ function MyComponent() {
 }
 ```
 
-### htmlFor
+### htmlFor {#htmlfor}
 
 Since `for` is a reserved word in JavaScript, React elements use `htmlFor` instead.
 
-### onChange
+### onChange {#onchange}
 
 The `onChange` event behaves as you would expect it to: whenever a form field is changed, this event is fired. We intentionally do not use the existing browser behavior because `onChange` is a misnomer for its behavior and React relies on this event to handle user input in real time.
 
-### selected
+### selected {#selected}
 
 The `selected` attribute is supported by `<option>` components. You can use it to set whether the component is selected. This is useful for building controlled components.
 
-### style
+### style {#style}
 
 >Note
 >
@@ -108,21 +108,21 @@ React will automatically append a "px" suffix to certain numeric inline style pr
 
 Not all style properties are converted to pixel strings though. Certain ones remain unitless (eg `zoom`, `order`, `flex`). A complete list of unitless properties can be seen [here](https://github.com/facebook/react/blob/4131af3e4bf52f3a003537ec95a1655147c81270/src/renderers/dom/shared/CSSProperty.js#L15-L59).
 
-### suppressContentEditableWarning
+### suppressContentEditableWarning {#suppresscontenteditablewarning}
 
 Normally, there is a warning when an element with children is also marked as `contentEditable`, because it won't work. This attribute suppresses that warning. Don't use this unless you are building a library like [Draft.js](https://facebook.github.io/draft-js/) that manages `contentEditable` manually.
 
-### suppressHydrationWarning
+### suppressHydrationWarning {#suppresshydrationwarning}
 
 If you use server-side React rendering, normally there is a warning when the server and the client render different content. However, in some rare cases, it is very hard or impossible to guarantee an exact match. For example, timestamps are expected to differ on the server and on the client.
 
 If you set `suppressHydrationWarning` to `true`, React will not warn you about mismatches in the attributes and the content of that element. It only works one level deep, and is intended to be used as an escape hatch. Don't overuse it. You can read more about hydration in the [`ReactDOM.hydrate()` documentation](/docs/react-dom.html#hydrate).
 
-### value
+### value {#value}
 
 The `value` attribute is supported by `<input>` and `<textarea>` components. You can use it to set the value of the component. This is useful for building controlled components. `defaultValue` is the uncontrolled equivalent, which sets the value of the component when it is first mounted.
 
-## All Supported HTML Attributes
+## All Supported HTML Attributes {#all-supported-html-attributes}
 
 As of React 16, any standard [or custom](/blog/2017/09/08/dom-attributes-in-react-16.html) DOM attributes are fully supported.
 
diff --git a/content/docs/reference-events.md b/content/docs/reference-events.md
index 701d6446ed..745c6a71e3 100644
--- a/content/docs/reference-events.md
+++ b/content/docs/reference-events.md
@@ -8,7 +8,7 @@ category: Reference
 
 This reference guide documents the `SyntheticEvent` wrapper that forms part of React's Event System. See the [Handling Events](/docs/handling-events.html) guide to learn more.
 
-## Overview
+## Overview {#overview}
 
 Your event handlers will be passed instances of `SyntheticEvent`, a cross-browser wrapper around the browser's native event. It has the same interface as the browser's native event, including `stopPropagation()` and `preventDefault()`, except the events work identically across all browsers.
 
@@ -35,7 +35,7 @@ string type
 >
 > As of v0.14, returning `false` from an event handler will no longer stop event propagation. Instead, `e.stopPropagation()` or `e.preventDefault()` should be triggered manually, as appropriate.
 
-### Event Pooling
+### Event Pooling {#event-pooling}
 
 The `SyntheticEvent` is pooled. This means that the `SyntheticEvent` object will be reused and all properties will be nullified after the event callback has been invoked.
 This is for performance reasons.
@@ -64,7 +64,7 @@ function onClick(event) {
 >
 > If you want to access the event properties in an asynchronous way, you should call `event.persist()` on the event, which will remove the synthetic event from the pool and allow references to the event to be retained by user code.
 
-## Supported Events
+## Supported Events {#supported-events}
 
 React normalizes events so that they have consistent properties across different browsers.
 
@@ -89,9 +89,9 @@ The event handlers below are triggered by an event in the bubbling phase. To reg
 
 * * *
 
-## Reference
+## Reference {#reference}
 
-### Clipboard Events
+### Clipboard Events {#clipboard-events}
 
 Event names:
 
@@ -107,7 +107,7 @@ DOMDataTransfer clipboardData
 
 * * *
 
-### Composition Events
+### Composition Events {#composition-events}
 
 Event names:
 
@@ -124,7 +124,7 @@ string data
 
 * * *
 
-### Keyboard Events
+### Keyboard Events {#keyboard-events}
 
 Event names:
 
@@ -153,7 +153,7 @@ The `key` property can take any of the values documented in the [DOM Level 3 Eve
 
 * * *
 
-### Focus Events
+### Focus Events {#focus-events}
 
 Event names:
 
@@ -171,7 +171,7 @@ DOMEventTarget relatedTarget
 
 * * *
 
-### Form Events
+### Form Events {#form-events}
 
 Event names:
 
@@ -183,7 +183,7 @@ For more information about the onChange event, see [Forms](/docs/forms.html).
 
 * * *
 
-### Mouse Events
+### Mouse Events {#mouse-events}
 
 Event names:
 
@@ -216,7 +216,7 @@ boolean shiftKey
 
 * * *
 
-### Pointer Events
+### Pointer Events {#pointer-events}
 
 Event names:
 
@@ -252,7 +252,7 @@ If your application requires pointer events, we recommend adding a third party p
 
 * * *
 
-### Selection Events
+### Selection Events {#selection-events}
 
 Event names:
 
@@ -262,7 +262,7 @@ onSelect
 
 * * *
 
-### Touch Events
+### Touch Events {#touch-events}
 
 Event names:
 
@@ -285,7 +285,7 @@ DOMTouchList touches
 
 * * *
 
-### UI Events
+### UI Events {#ui-events}
 
 Event names:
 
@@ -302,7 +302,7 @@ DOMAbstractView view
 
 * * *
 
-### Wheel Events
+### Wheel Events {#wheel-events}
 
 Event names:
 
@@ -321,7 +321,7 @@ number deltaZ
 
 * * *
 
-### Media Events
+### Media Events {#media-events}
 
 Event names:
 
@@ -334,7 +334,7 @@ onTimeUpdate onVolumeChange onWaiting
 
 * * *
 
-### Image Events
+### Image Events {#image-events}
 
 Event names:
 
@@ -344,7 +344,7 @@ onLoad onError
 
 * * *
 
-### Animation Events
+### Animation Events {#animation-events}
 
 Event names:
 
@@ -362,7 +362,7 @@ float elapsedTime
 
 * * *
 
-### Transition Events
+### Transition Events {#transition-events}
 
 Event names:
 
@@ -380,7 +380,7 @@ float elapsedTime
 
 * * *
 
-### Other Events
+### Other Events {#other-events}
 
 Event names:
 
diff --git a/content/docs/reference-glossary.md b/content/docs/reference-glossary.md
index f31a43c456..280869512a 100644
--- a/content/docs/reference-glossary.md
+++ b/content/docs/reference-glossary.md
@@ -7,33 +7,33 @@ permalink: docs/glossary.html
 
 ---
 
-## Single-page Application
+## Single-page Application {#single-page-application}
 
 A single-page application is an application that loads a single HTML page and all the necessary assets (such as JavaScript and CSS) required for the application to run. Any interactions with the page or subsequent pages do not require a round trip to the server which means the page is not reloaded.
 
 Though you may build a single-page application in React, it is not a requirement. React can also be used for enhancing small parts of existing websites with additional interactivity. Code written in React can coexist peacefully with markup rendered on the server by something like PHP, or with other client-side libraries. In fact, this is exactly how React is being used at Facebook.
 
-## ES6, ES2015, ES2016, etc
+## ES6, ES2015, ES2016, etc {#es6-es2015-es2016-etc}
 
 These acronyms all refer to the most recent versions of the ECMAScript Language Specification standard, which the JavaScript language is an implementation of. The ES6 version (also known as ES2015) includes many additions to the previous versions such as: arrow functions, classes, template literals, `let` and `const` statements. You can learn more about specific versions [here](https://en.wikipedia.org/wiki/ECMAScript#Versions).
 
-## Compilers
+## Compilers {#compilers}
 
 A JavaScript compiler takes JavaScript code, transforms it and returns JavaScript code in a different format. The most common use case is to take ES6 syntax and transform it into syntax that older browsers are capable of interpreting. [Babel](https://babeljs.io/) is the compiler most commonly used with React.
 
-## Bundlers
+## Bundlers {#bundlers}
 
 Bundlers take JavaScript and CSS code written as separate modules (often hundreds of them), and combine them together into a few files better optimized for the browsers. Some bundlers commonly used in React applications include [Webpack](https://webpack.js.org/) and [Browserify](http://browserify.org/).
 
-## Package Managers
+## Package Managers {#package-managers}
 
 Package managers are tools that allow you to manage dependencies in your project. [npm](https://www.npmjs.com/) and [Yarn](http://yarnpkg.com/) are two package managers commonly used in React applications. Both of them are clients for the same npm package registry.
 
-## CDN
+## CDN {#cdn}
 
 CDN stands for Content Delivery Network. CDNs deliver cached, static content from a network of servers across the globe. 
 
-## JSX
+## JSX {#jsx}
 
 JSX is a syntax extension to JavaScript. It is similar to a template language, but it has full power of JavaScript. JSX gets compiled to `React.createElement()` calls which return plain JavaScript objects called "React elements". To get a basic introduction to JSX [see the docs here](/docs/introducing-jsx.html) and find a more in-depth tutorial on JSX [here](/docs/jsx-in-depth.html).
 
@@ -47,7 +47,7 @@ ReactDOM.render(
 );
 ```  
 
-## [Elements](/docs/rendering-elements.html)
+## [Elements](/docs/rendering-elements.html) {#elements}
 
 React elements are the building blocks of React applications. One might confuse elements with a more widely known concept of "components". An element describes what you want to see on the screen. React elements are immutable.
 
@@ -57,7 +57,7 @@ const element = <h1>Hello, world</h1>;
 
 Typically, elements are not used directly, but get returned from components.
 
-## [Components](/docs/components-and-props.html)
+## [Components](/docs/components-and-props.html) {#components}
 
 React components are small, reusable pieces of code that return a React element to be rendered to the page. The simplest version of React component is a plain JavaScript function that returns a React element:
 
@@ -79,7 +79,7 @@ class Welcome extends React.Component {
 
 Components can be broken down into distinct pieces of functionality and used within other components. Components can return other components, arrays, strings and numbers. A good rule of thumb is that if a part of your UI is used several times (Button, Panel, Avatar), or is complex enough on its own (App, FeedStory, Comment), it is a good candidate to be a reusable component. Component names should also always start with a capital letter (`<Wrapper/>` **not** `<wrapper/>`). See [this documentation](/docs/components-and-props.html#rendering-a-component) for more information on rendering components. 
 
-### [`props`](/docs/components-and-props.html)
+### [`props`](/docs/components-and-props.html) {#props}
 
 `props` are inputs to a React component. They are data passed down from a parent component to a child component.
 
@@ -92,7 +92,7 @@ props.number = 42;
 
 If you need to modify some value in response to user input or a network response, use `state` instead.
 
-### `props.children`
+### `props.children` {#propschildren}
 
 `props.children` is available on every component. It contains the content between the opening and closing tags of a component. For example:
 
@@ -118,7 +118,7 @@ class Welcome extends React.Component {
 }
 ```
 
-### [`state`](/docs/state-and-lifecycle.html#adding-local-state-to-a-class)
+### [`state`](/docs/state-and-lifecycle.html#adding-local-state-to-a-class) {#state}
 
 A component needs `state` when some data associated with it changes over time. For example, a `Checkbox` component might need `isChecked` in its state, and a `NewsFeed` component might want to keep track of `fetchedPosts` in its state.
 
@@ -126,7 +126,7 @@ The most important difference between `state` and `props` is that `props` are pa
 
 For each particular piece of changing data, there should be just one component that "owns" it in its state. Don't try to synchronize states of two different components. Instead, [lift it up](/docs/lifting-state-up.html) to their closest shared ancestor, and pass it down as props to both of them.
 
-## [Lifecycle Methods](/docs/state-and-lifecycle.html#adding-lifecycle-methods-to-a-class)
+## [Lifecycle Methods](/docs/state-and-lifecycle.html#adding-lifecycle-methods-to-a-class) {#lifecycle-methods}
 
 Lifecycle methods are custom functionality that gets executed during the different phases of a component. There are methods available when the component gets created and inserted into the DOM ([mounting](/docs/react-component.html#mounting)), when the component updates, and when the component gets unmounted or removed from the DOM.
 
@@ -140,7 +140,7 @@ An *uncontrolled component* works like form elements do outside of React. When a
 
 In most cases you should use controlled components.
 
-## [Keys](/docs/lists-and-keys.html) 
+## [Keys](/docs/lists-and-keys.html) {#keys}
 
 A "key" is a special string attribute you need to include when creating arrays of elements. Keys help React identify which items have changed, are added, or are removed. Keys should be given to the elements inside an array to give the elements a stable identity.
 
@@ -148,19 +148,19 @@ Keys only need to be unique among sibling elements in the same array. They don't
 
 Don't pass something like `Math.random()` to keys. It is important that keys have a "stable identity" across re-renders so that React can determine when items are added, removed, or re-ordered. Ideally, keys should correspond to unique and stable identifiers coming from your data, such as `post.id`.
 
-## [Refs](/docs/refs-and-the-dom.html)
+## [Refs](/docs/refs-and-the-dom.html) {#refs}
 
 React supports a special attribute that you can attach to any component. The `ref` attribute can be an object created by [`React.createRef()` function](/docs/react-api.html#reactcreateref) or a callback function, or a string (in legacy API). When the `ref` attribute is a callback function, the function receives the underlying DOM element or class instance (depending on the type of element) as its argument. This allows you to have direct access to the DOM element or component instance.
 
 Use refs sparingly. If you find yourself often using refs to "make things happen" in your app, consider getting more familiar with [top-down data flow](/docs/lifting-state-up.html).
 
-## [Events](/docs/handling-events.html) 
+## [Events](/docs/handling-events.html) {#events}
 
 Handling events with React elements has some syntactic differences:
 
 * React event handlers are named using camelCase, rather than lowercase.
 * With JSX you pass a function as the event handler, rather than a string.
 
-## [Reconciliation](/docs/reconciliation.html)
+## [Reconciliation](/docs/reconciliation.html) {#reconciliation}
 
 When a component's props or state change, React decides whether an actual DOM update is necessary by comparing the newly returned element with the previously rendered one. When they are not equal, React will update the DOM. This process is called "reconciliation".
diff --git a/content/docs/reference-react-component.md b/content/docs/reference-react-component.md
index 0962fffeec..ecb4d087c0 100644
--- a/content/docs/reference-react-component.md
+++ b/content/docs/reference-react-component.md
@@ -17,7 +17,7 @@ redirect_from:
 
 This page contains a detailed API reference for the React component class definition. It assumes you're familiar with fundamental React concepts, such as [Components and Props](/docs/components-and-props.html), as well as [State and Lifecycle](/docs/state-and-lifecycle.html). If you're not, read them first.
 
-## Overview
+## Overview {#overview}
 
 React lets you define components as classes or functions. Components defined as classes currently provide more features which are described in detail on this page. To define a React component class, you need to extend `React.Component`:
 
@@ -37,11 +37,11 @@ The only method you *must* define in a `React.Component` subclass is called [`re
 >
 >React doesn't force you to use the ES6 class syntax. If you prefer to avoid it, you may use the `create-react-class` module or a similar custom abstraction instead. Take a look at [Using React without ES6](/docs/react-without-es6.html) to learn more.
 
-### The Component Lifecycle
+### The Component Lifecycle {#the-component-lifecycle}
 
 Each component has several "lifecycle methods" that you can override to run code at particular times in the process. **You can use [this lifecycle diagram](http://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/) as a cheat sheet.** In the list below, commonly used lifecycle methods are marked as **bold**. The rest of them exist for relatively rare use cases.
 
-#### Mounting
+#### Mounting {#mounting}
 
 These methods are called in the following order when an instance of a component is being created and inserted into the DOM:
 
@@ -56,7 +56,7 @@ These methods are called in the following order when an instance of a component
 >
 >- [`UNSAFE_componentWillMount()`](#unsafe_componentwillmount)
 
-#### Updating
+#### Updating {#updating}
 
 An update can be caused by changes to props or state. These methods are called in the following order when a component is being re-rendered:
 
@@ -73,45 +73,45 @@ An update can be caused by changes to props or state. These methods are called i
 >- [`UNSAFE_componentWillUpdate()`](#unsafe_componentwillupdate)
 >- [`UNSAFE_componentWillReceiveProps()`](#unsafe_componentwillreceiveprops)
 
-#### Unmounting
+#### Unmounting {#unmounting}
 
 This method is called when a component is being removed from the DOM:
 
 - [**`componentWillUnmount()`**](#componentwillunmount)
 
-#### Error Handling
+#### Error Handling {#error-handling}
 
 These methods are called when there is an error during rendering, in a lifecycle method, or in the constructor of any child component.
 
 - [`static getDerivedStateFromError()`](#static-getderivedstatefromerror)
 - [`componentDidCatch()`](#componentdidcatch)
 
-### Other APIs
+### Other APIs {#other-apis}
 
 Each component also provides some other APIs:
 
   - [`setState()`](#setstate)
   - [`forceUpdate()`](#forceupdate)
 
-### Class Properties
+### Class Properties {#class-properties}
 
   - [`defaultProps`](#defaultprops)
   - [`displayName`](#displayname)
 
-### Instance Properties
+### Instance Properties {#instance-properties}
 
   - [`props`](#props)
   - [`state`](#state)
 
 * * *
 
-## Reference
+## Reference {#reference}
 
-### Commonly Used Lifecycle Methods
+### Commonly Used Lifecycle Methods {#commonly-used-lifecycle-methods}
 
 The methods in this section cover the vast majority of use cases you'll encounter creating React components. **For a visual reference, check out [this lifecycle diagram](http://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/).**
 
-### `render()`
+### `render()` {#render}
 
 ```javascript
 render()
@@ -137,7 +137,7 @@ If you need to interact with the browser, perform your work in `componentDidMoun
 
 * * *
 
-### `constructor()`
+### `constructor()` {#constructor}
 
 ```javascript
 constructor(props)
@@ -188,7 +188,7 @@ Avoid introducing any side-effects or subscriptions in the constructor. For thos
 
 * * *
 
-### `componentDidMount()`
+### `componentDidMount()` {#componentdidmount}
 
 ```javascript
 componentDidMount()
@@ -202,7 +202,7 @@ You **may call `setState()` immediately** in `componentDidMount()`. It will trig
 
 * * *
 
-### `componentDidUpdate()`
+### `componentDidUpdate()` {#componentdidupdate}
 
 ```javascript
 componentDidUpdate(prevProps, prevState, snapshot)
@@ -231,7 +231,7 @@ If your component implements the `getSnapshotBeforeUpdate()` lifecycle (which is
 
 * * *
 
-### `componentWillUnmount()`
+### `componentWillUnmount()` {#componentwillunmount}
 
 ```javascript
 componentWillUnmount()
@@ -243,12 +243,12 @@ You **should not call `setState()`** in `componentWillUnmount()` because the com
 
 * * *
 
-### Rarely Used Lifecycle Methods
+### Rarely Used Lifecycle Methods {#rarely-used-lifecycle-methods}
 
 The methods in this section correspond to uncommon use cases. They're handy once in a while, but most of your components probably don't need any of them. **You can see most of the methods below on [this lifecycle diagram](http://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/) if you click the "Show less common lifecycles" checkbox at the top of it.**
 
 
-### `shouldComponentUpdate()`
+### `shouldComponentUpdate()` {#shouldcomponentupdate}
 
 ```javascript
 shouldComponentUpdate(nextProps, nextState)
@@ -268,7 +268,7 @@ Currently, if `shouldComponentUpdate()` returns `false`, then [`UNSAFE_component
 
 * * *
 
-### `static getDerivedStateFromProps()`
+### `static getDerivedStateFromProps()` {#static-getderivedstatefromprops}
 
 ```js
 static getDerivedStateFromProps(props, state)
@@ -293,7 +293,7 @@ Note that this method is fired on *every* render, regardless of the cause. This
 
 * * *
 
-### `getSnapshotBeforeUpdate()`
+### `getSnapshotBeforeUpdate()` {#getsnapshotbeforeupdate}
 
 ```javascript
 getSnapshotBeforeUpdate(prevProps, prevState)
@@ -313,7 +313,7 @@ In the above examples, it is important to read the `scrollHeight` property in `g
 
 * * *
 
-### Error boundaries
+### Error boundaries {#error-boundaries}
 
 [Error boundaries](/docs/error-boundaries.html) are React components that catch JavaScript errors anywhere in their child component tree, log those errors, and display a fallback UI instead of the component tree that crashed. Error boundaries catch errors during rendering, in lifecycle methods, and in constructors of the whole tree below them.
 
@@ -327,7 +327,7 @@ For more details, see [*Error Handling in React 16*](/blog/2017/07/26/error-hand
 > 
 > Error boundaries only catch errors in the components **below** them in the tree. An error boundary can’t catch an error within itself.
 
-### `static getDerivedStateFromError()`
+### `static getDerivedStateFromError()` {#static-getderivedstatefromerror}
 ```javascript
 static getDerivedStateFromError(error)
 ```
@@ -365,7 +365,7 @@ For those use cases, use `componentDidCatch()` instead.
 
 * * *
 
-### `componentDidCatch()`
+### `componentDidCatch()` {#componentdidcatch}
 
 ```javascript
 componentDidCatch(error, info)
@@ -420,11 +420,11 @@ class ErrorBoundary extends React.Component {
 
 * * *
 
-### Legacy Lifecycle Methods
+### Legacy Lifecycle Methods {#legacy-lifecycle-methods}
 
 The lifecycle methods below are marked as "legacy". They still work, but we don't recommend using them in the new code. You can learn more about migrating away from legacy lifecycle methods in [this blog post](/blog/2018/03/27/update-on-async-rendering.html).
 
-### `UNSAFE_componentWillMount()`
+### `UNSAFE_componentWillMount()` {#unsafe_componentwillmount}
 
 ```javascript
 UNSAFE_componentWillMount()
@@ -442,7 +442,7 @@ This is the only lifecycle method called on server rendering.
 
 * * *
 
-### `UNSAFE_componentWillReceiveProps()`
+### `UNSAFE_componentWillReceiveProps()` {#unsafe_componentwillreceiveprops}
 
 ```javascript
 UNSAFE_componentWillReceiveProps(nextProps)
@@ -470,7 +470,7 @@ React doesn't call `UNSAFE_componentWillReceiveProps()` with initial props durin
 
 * * *
 
-### `UNSAFE_componentWillUpdate()`
+### `UNSAFE_componentWillUpdate()` {#unsafe_componentwillupdate}
 
 ```javascript
 UNSAFE_componentWillUpdate(nextProps, nextState)
@@ -492,13 +492,13 @@ Typically, this method can be replaced by `componentDidUpdate()`. If you were re
 
 * * *
 
-## Other APIs
+## Other APIs {#other-apis-1}
 
 Unlike the lifecycle methods above (which React calls for you), the methods below are the methods *you* can call from your components.
 
 There are just two of them: `setState()` and `forceUpdate()`.
 
-### `setState()`
+### `setState()` {#setstate}
 
 ```javascript
 setState(updater[, callback])
@@ -569,7 +569,7 @@ For more detail, see:
 
 * * *
 
-### `forceUpdate()`
+### `forceUpdate()` {#forceupdate}
 
 ```javascript
 component.forceUpdate(callback)
@@ -583,9 +583,9 @@ Normally you should try to avoid all uses of `forceUpdate()` and only read from
 
 * * *
 
-## Class Properties
+## Class Properties {#class-properties-1}
 
-### `defaultProps`
+### `defaultProps` {#defaultprops}
 
 `defaultProps` can be defined as a property on the component class itself, to set the default props for the class. This is used for undefined props, but not for null props. For example:
 
@@ -617,21 +617,21 @@ If `props.color` is set to null, it will remain null:
 
 * * *
 
-### `displayName`
+### `displayName` {#displayname}
 
 The `displayName` string is used in debugging messages. Usually, you don't need to set it explicitly because it's inferred from the name of the function or class that defines the component. You might want to set it explicitly if you want to display a different name for debugging purposes or when you create a higher-order component, see [Wrap the Display Name for Easy Debugging](/docs/higher-order-components.html#convention-wrap-the-display-name-for-easy-debugging) for details.
 
 * * *
 
-## Instance Properties
+## Instance Properties {#instance-properties-1}
 
-### `props`
+### `props` {#props}
 
 `this.props` contains the props that were defined by the caller of this component. See [Components and Props](/docs/components-and-props.html) for an introduction to props.
 
 In particular, `this.props.children` is a special prop, typically defined by the child tags in the JSX expression rather than in the tag itself.
 
-### `state`
+### `state` {#state}
 
 The state contains data specific to this component that may change over time. The state is user-defined, and it should be a plain JavaScript object.
 
diff --git a/content/docs/reference-react-dom-server.md b/content/docs/reference-react-dom-server.md
index eac4040702..80c0303775 100644
--- a/content/docs/reference-react-dom-server.md
+++ b/content/docs/reference-react-dom-server.md
@@ -15,7 +15,7 @@ import ReactDOMServer from 'react-dom/server';
 var ReactDOMServer = require('react-dom/server');
 ```
 
-## Overview
+## Overview {#overview}
 
 The following methods can be used in both the server and browser environments:
 
@@ -29,9 +29,9 @@ These additional methods depend on a package (`stream`) that is **only available
 
 * * *
 
-## Reference
+## Reference {#reference}
 
-### `renderToString()`
+### `renderToString()` {#rendertostring}
 
 ```javascript
 ReactDOMServer.renderToString(element)
@@ -43,7 +43,7 @@ If you call [`ReactDOM.hydrate()`](/docs/react-dom.html#hydrate) on a node that
 
 * * *
 
-### `renderToStaticMarkup()`
+### `renderToStaticMarkup()` {#rendertostaticmarkup}
 
 ```javascript
 ReactDOMServer.renderToStaticMarkup(element)
@@ -55,7 +55,7 @@ If you plan to use React on the client to make the markup interactive, do not us
 
 * * *
 
-### `renderToNodeStream()`
+### `renderToNodeStream()` {#rendertonodestream}
 
 ```javascript
 ReactDOMServer.renderToNodeStream(element)
@@ -73,7 +73,7 @@ If you call [`ReactDOM.hydrate()`](/docs/react-dom.html#hydrate) on a node that
 
 * * *
 
-### `renderToStaticNodeStream()`
+### `renderToStaticNodeStream()` {#rendertostaticnodestream}
 
 ```javascript
 ReactDOMServer.renderToStaticNodeStream(element)
diff --git a/content/docs/reference-react-dom.md b/content/docs/reference-react-dom.md
index 4060a6c0ea..3732ebe8d7 100644
--- a/content/docs/reference-react-dom.md
+++ b/content/docs/reference-react-dom.md
@@ -8,7 +8,7 @@ permalink: docs/react-dom.html
 
 If you load React from a `<script>` tag, these top-level APIs are available on the `ReactDOM` global. If you use ES6 with npm, you can write `import ReactDOM from 'react-dom'`. If you use ES5 with npm, you can write `var ReactDOM = require('react-dom')`.
 
-## Overview
+## Overview {#overview}
 
 The `react-dom` package provides DOM-specific methods that can be used at the top level of your app and as an escape hatch to get outside of the React model if you need to. Most of your components should not need to use this module.
 
@@ -18,7 +18,7 @@ The `react-dom` package provides DOM-specific methods that can be used at the to
 - [`findDOMNode()`](#finddomnode)
 - [`createPortal()`](#createportal)
 
-### Browser Support
+### Browser Support {#browser-support}
 
 React supports all popular browsers, including Internet Explorer 9 and above, although [some polyfills are required](/docs/javascript-environment-requirements.html) for older browsers such as IE 9 and IE 10.
 
@@ -28,9 +28,9 @@ React supports all popular browsers, including Internet Explorer 9 and above, al
 
 * * *
 
-## Reference
+## Reference {#reference}
 
-### `render()`
+### `render()` {#render}
 
 ```javascript
 ReactDOM.render(element, container[, callback])
@@ -56,7 +56,7 @@ If the optional callback is provided, it will be executed after the component is
 
 * * *
 
-### `hydrate()`
+### `hydrate()` {#hydrate}
 
 ```javascript
 ReactDOM.hydrate(element, container[, callback])
@@ -74,7 +74,7 @@ Remember to be mindful of user experience on slow connections. The JavaScript co
 
 * * *
 
-### `unmountComponentAtNode()`
+### `unmountComponentAtNode()` {#unmountcomponentatnode}
 
 ```javascript
 ReactDOM.unmountComponentAtNode(container)
@@ -84,7 +84,7 @@ Remove a mounted React component from the DOM and clean up its event handlers an
 
 * * *
 
-### `findDOMNode()`
+### `findDOMNode()` {#finddomnode}
 
 > Note:
 >
@@ -105,7 +105,7 @@ When a component renders to `null` or `false`, `findDOMNode` returns `null`. Whe
 
 * * *
 
-### `createPortal()`
+### `createPortal()` {#createportal}
 
 ```javascript
 ReactDOM.createPortal(child, container)
diff --git a/content/docs/reference-react.md b/content/docs/reference-react.md
index 3ac8c607a8..d506a1ad31 100644
--- a/content/docs/reference-react.md
+++ b/content/docs/reference-react.md
@@ -15,9 +15,9 @@ redirect_from:
 
 `React` is the entry point to the React library. If you load React from a `<script>` tag, these top-level APIs are available on the `React` global. If you use ES6 with npm, you can write `import React from 'react'`. If you use ES5 with npm, you can write `var React = require('react')`.
 
-## Overview
+## Overview {#overview}
 
-### Components
+### Components {#components}
 
 React components let you split the UI into independent, reusable pieces, and think about each piece in isolation. React components can be defined by subclassing `React.Component` or `React.PureComponent`.
 
@@ -30,7 +30,7 @@ React components can also be defined as functions which can be wrapped:
 
 - [`React.memo`](#reactmemo)
 
-### Creating React Elements
+### Creating React Elements {#creating-react-elements}
 
 We recommend [using JSX](/docs/introducing-jsx.html) to describe what your UI should look like. Each JSX element is just syntactic sugar for calling [`React.createElement()`](#createelement). You will not typically invoke the following methods directly if you are using JSX.
 
@@ -39,7 +39,7 @@ We recommend [using JSX](/docs/introducing-jsx.html) to describe what your UI sh
 
 See [Using React without JSX](/docs/react-without-jsx.html) for more information.
 
-### Transforming Elements
+### Transforming Elements {#transforming-elements}
 
 `React` provides several APIs for manipulating elements:
 
@@ -47,25 +47,25 @@ See [Using React without JSX](/docs/react-without-jsx.html) for more information
 - [`isValidElement()`](#isvalidelement)
 - [`React.Children`](#reactchildren)
 
-### Fragments
+### Fragments {#fragments}
 
 `React` also provides a component for rendering multiple elements without a wrapper.
 
 - [`React.Fragment`](#reactfragment)
 
-### Refs
+### Refs {#refs}
 
 - [`React.createRef`](#reactcreateref)
 - [`React.forwardRef`](#reactforwardref)
 
-### Suspense
+### Suspense {#suspense}
 
 Suspense lets components "wait" for something before rendering. Today, Suspense only supports one use case: [loading components dynamically with `React.lazy`](/docs/code-splitting.html#reactlazy). In the future, it will support other use cases like data fetching.
 
 - [`React.lazy`](#reactlazy)
 - [`React.Suspense`](#reactsuspense)
 
-### Hooks
+### Hooks {#hooks}
 
 *Hooks* are a new addition in React 16.8. They let you use state and other React features without writing a class. Hooks have a [dedicated docs section](/docs/hooks-intro.html) and a separate API reference:
 
@@ -84,9 +84,9 @@ Suspense lets components "wait" for something before rendering. Today, Suspense
 
 * * *
 
-## Reference
+## Reference {#reference}
 
-### `React.Component`
+### `React.Component` {#reactcomponent}
 
 `React.Component` is the base class for React components when they are defined using [ES6 classes](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes):
 
@@ -102,7 +102,7 @@ See the [React.Component API Reference](/docs/react-component.html) for a list o
 
 * * *
 
-### `React.PureComponent`
+### `React.PureComponent` {#reactpurecomponent}
 
 `React.PureComponent` is similar to [`React.Component`](#reactcomponent). The difference between them is that [`React.Component`](#reactcomponent) doesn't implement [`shouldComponentUpdate()`](/docs/react-component.html#shouldcomponentupdate), but `React.PureComponent` implements it with a shallow prop and state comparison. 
 
@@ -116,7 +116,7 @@ If your React component's `render()` function renders the same result given the
 
 * * *
 
-### `React.memo`
+### `React.memo` {#reactmemo}
 
 ```javascript
 const MyComponent = React.memo(function MyComponent(props) {
@@ -152,7 +152,7 @@ This method only exists as a **[performance optimization](/docs/optimizing-perfo
 
 * * *
 
-### `createElement()`
+### `createElement()` {#createelement}
 
 ```javascript
 React.createElement(
@@ -168,7 +168,7 @@ Code written with [JSX](/docs/introducing-jsx.html) will be converted to use `Re
 
 * * *
 
-### `cloneElement()`
+### `cloneElement()` {#cloneelement}
 
 ```
 React.cloneElement(
@@ -192,7 +192,7 @@ This API was introduced as a replacement of the deprecated `React.addons.cloneWi
 
 * * *
 
-### `createFactory()`
+### `createFactory()` {#createfactory}
 
 ```javascript
 React.createFactory(type)
@@ -206,7 +206,7 @@ You will not typically invoke `React.createFactory()` directly if you are using
 
 * * *
 
-### `isValidElement()`
+### `isValidElement()` {#isvalidelement}
 
 ```javascript
 React.isValidElement(object)
@@ -216,11 +216,11 @@ Verifies the object is a React element. Returns `true` or `false`.
 
 * * *
 
-### `React.Children`
+### `React.Children` {#reactchildren}
 
 `React.Children` provides utilities for dealing with the `this.props.children` opaque data structure.
 
-#### `React.Children.map`
+#### `React.Children.map` {#reactchildrenmap}
 
 ```javascript
 React.Children.map(children, function[(thisArg)])
@@ -232,7 +232,7 @@ Invokes a function on every immediate child contained within `children` with `th
 >
 > If `children` is a `Fragment` it will be treated as a single child and not traversed.
 
-#### `React.Children.forEach`
+#### `React.Children.forEach` {#reactchildrenforeach}
 
 ```javascript
 React.Children.forEach(children, function[(thisArg)])
@@ -240,7 +240,7 @@ React.Children.forEach(children, function[(thisArg)])
 
 Like [`React.Children.map()`](#reactchildrenmap) but does not return an array.
 
-#### `React.Children.count`
+#### `React.Children.count` {#reactchildrencount}
 
 ```javascript
 React.Children.count(children)
@@ -248,7 +248,7 @@ React.Children.count(children)
 
 Returns the total number of components in `children`, equal to the number of times that a callback passed to `map` or `forEach` would be invoked.
 
-#### `React.Children.only`
+#### `React.Children.only` {#reactchildrenonly}
 
 ```javascript
 React.Children.only(children)
@@ -260,7 +260,7 @@ Verifies that `children` has only one child (a React element) and returns it. Ot
 >
 >`React.Children.only()` does not accept the return value of [`React.Children.map()`](#reactchildrenmap) because it is an array rather than a React element.
 
-#### `React.Children.toArray`
+#### `React.Children.toArray` {#reactchildrentoarray}
 
 ```javascript
 React.Children.toArray(children)
@@ -274,7 +274,7 @@ Returns the `children` opaque data structure as a flat array with keys assigned
 
 * * *
 
-### `React.Fragment`
+### `React.Fragment` {#reactfragment}
 
 The `React.Fragment` component lets you return multiple elements in a `render()` method without creating an additional DOM element:
 
@@ -292,12 +292,12 @@ render() {
 You can also use it with the shorthand `<></>` syntax. For more information, see [React v16.2.0: Improved Support for Fragments](/blog/2017/11/28/react-v16.2.0-fragment-support.html).
 
 
-### `React.createRef`
+### `React.createRef` {#reactcreateref}
 
 `React.createRef` creates a [ref](/docs/refs-and-the-dom.html) that can be attached to React elements via the ref attribute.
 `embed:16-3-release-blog-post/create-ref-example.js`
 
-### `React.forwardRef`
+### `React.forwardRef` {#reactforwardref}
 
 `React.forwardRef` creates a React component that forwards the [ref](/docs/refs-and-the-dom.html) attribute it receives to another component below in the tree. This technique is not very common but is particularly useful in two scenarios:
 
@@ -314,7 +314,7 @@ As a result, after React attaches the ref, `ref.current` will point directly to
 
 For more information, see [forwarding refs](/docs/forwarding-refs.html).
 
-### `React.lazy`
+### `React.lazy` {#reactlazy}
 
 `React.lazy()` lets you define a component that is loaded dynamically. This helps reduce the bundle size to delay loading components that aren't used during the initial render.
 
@@ -331,7 +331,7 @@ Note that rendering `lazy` components requires that there's a `<React.Suspense>`
 >
 > Using `React.lazy`with dynamic import requires Promises to be available in the JS environment. This requires a polyfill on IE11 and below.
 
-### `React.Suspense`
+### `React.Suspense` {#reactsuspense}
 
 `React.Suspense` let you specify the loading indicator in case some components in the tree below it are not yet ready to render. Today, lazy loading components is the **only** use case supported by `<React.Suspense>`:
 
diff --git a/content/docs/reference-test-renderer.md b/content/docs/reference-test-renderer.md
index 92f5246cb0..473dfb7ec1 100644
--- a/content/docs/reference-test-renderer.md
+++ b/content/docs/reference-test-renderer.md
@@ -13,7 +13,7 @@ import TestRenderer from 'react-test-renderer'; // ES6
 const TestRenderer = require('react-test-renderer'); // ES5 with npm
 ```
 
-## Overview
+## Overview {#overview}
 
 This package provides a React renderer that can be used to render React components to pure JavaScript objects, without depending on the DOM or a native mobile environment.
 
@@ -67,11 +67,11 @@ expect(testInstance.findByType(SubComponent).props.foo).toBe('bar');
 expect(testInstance.findByProps({className: "sub"}).children).toEqual(['Sub']);
 ```
 
-### TestRenderer
+### TestRenderer {#testrenderer}
 
 * [`TestRenderer.create()`](#testrenderercreate)
 
-### TestRenderer instance
+### TestRenderer instance {#testrenderer-instance}
 
 * [`testRenderer.toJSON()`](#testrenderertojson)
 * [`testRenderer.toTree()`](#testrenderertotree)
@@ -80,7 +80,7 @@ expect(testInstance.findByProps({className: "sub"}).children).toEqual(['Sub']);
 * [`testRenderer.getInstance()`](#testrenderergetinstance)
 * [`testRenderer.root`](#testrendererroot)
 
-### TestInstance
+### TestInstance {#testinstance}
 
 * [`testInstance.find()`](#testinstancefind)
 * [`testInstance.findByType()`](#testinstancefindbytype)
@@ -94,9 +94,9 @@ expect(testInstance.findByProps({className: "sub"}).children).toEqual(['Sub']);
 * [`testInstance.parent`](#testinstanceparent)
 * [`testInstance.children`](#testinstancechildren)
 
-## Reference
+## Reference {#reference}
 
-### `TestRenderer.create()`
+### `TestRenderer.create()` {#testrenderercreate}
 
 ```javascript
 TestRenderer.create(element, options);
@@ -104,7 +104,7 @@ TestRenderer.create(element, options);
 
 Create a `TestRenderer` instance with the passed React element. It doesn't use the real DOM, but it still fully renders the component tree into memory so you can make assertions about it. The returned instance has the following methods and properties.
 
-### `testRenderer.toJSON()`
+### `testRenderer.toJSON()` {#testrenderertojson}
 
 ```javascript
 testRenderer.toJSON()
@@ -112,7 +112,7 @@ testRenderer.toJSON()
 
 Return an object representing the rendered tree. This tree only contains the platform-specific nodes like `<div>` or `<View>` and their props, but doesn't contain any user-written components. This is handy for [snapshot testing](http://facebook.github.io/jest/docs/en/snapshot-testing.html#snapshot-testing-with-jest).
 
-### `testRenderer.toTree()`
+### `testRenderer.toTree()` {#testrenderertotree}
 
 ```javascript
 testRenderer.toTree()
@@ -120,7 +120,7 @@ testRenderer.toTree()
 
 Return an object representing the rendered tree. Unlike `toJSON()`, the representation is more detailed than the one provided by `toJSON()`, and includes the user-written components. You probably don't need this method unless you're writing your own assertion library on top of the test renderer.
 
-### `testRenderer.update()`
+### `testRenderer.update()` {#testrendererupdate}
 
 ```javascript
 testRenderer.update(element)
@@ -128,7 +128,7 @@ testRenderer.update(element)
 
 Re-render the in-memory tree with a new root element. This simulates a React update at the root. If the new element has the same type and key as the previous element, the tree will be updated; otherwise, it will re-mount a new tree.
 
-### `testRenderer.unmount()`
+### `testRenderer.unmount()` {#testrendererunmount}
 
 ```javascript
 testRenderer.unmount()
@@ -136,7 +136,7 @@ testRenderer.unmount()
 
 Unmount the in-memory tree, triggering the appropriate lifecycle events.
 
-### `testRenderer.getInstance()`
+### `testRenderer.getInstance()` {#testrenderergetinstance}
 
 ```javascript
 testRenderer.getInstance()
@@ -144,7 +144,7 @@ testRenderer.getInstance()
 
 Return the instance corresponding to the root element, if available. This will not work if the root element is a function component because they don't have instances.
 
-### `testRenderer.root`
+### `testRenderer.root` {#testrendererroot}
 
 ```javascript
 testRenderer.root
@@ -152,7 +152,7 @@ testRenderer.root
 
 Returns the root "test instance" object that is useful for making assertions about specific nodes in the tree. You can use it to find other "test instances" deeper below.
 
-### `testInstance.find()`
+### `testInstance.find()` {#testinstancefind}
 
 ```javascript
 testInstance.find(test)
@@ -160,7 +160,7 @@ testInstance.find(test)
 
 Find a single descendant test instance for which `test(testInstance)` returns `true`. If `test(testInstance)` does not return `true` for exactly one test instance, it will throw an error.
 
-### `testInstance.findByType()`
+### `testInstance.findByType()` {#testinstancefindbytype}
 
 ```javascript
 testInstance.findByType(type)
@@ -168,7 +168,7 @@ testInstance.findByType(type)
 
 Find a single descendant test instance with the provided `type`. If there is not exactly one test instance with the provided `type`, it will throw an error.
 
-### `testInstance.findByProps()`
+### `testInstance.findByProps()` {#testinstancefindbyprops}
 
 ```javascript
 testInstance.findByProps(props)
@@ -176,7 +176,7 @@ testInstance.findByProps(props)
 
 Find a single descendant test instance with the provided `props`. If there is not exactly one test instance with the provided `props`, it will throw an error.
 
-### `testInstance.findAll()`
+### `testInstance.findAll()` {#testinstancefindall}
 
 ```javascript
 testInstance.findAll(test)
@@ -184,7 +184,7 @@ testInstance.findAll(test)
 
 Find all descendant test instances for which `test(testInstance)` returns `true`.
 
-### `testInstance.findAllByType()`
+### `testInstance.findAllByType()` {#testinstancefindallbytype}
 
 ```javascript
 testInstance.findAllByType(type)
@@ -192,7 +192,7 @@ testInstance.findAllByType(type)
 
 Find all descendant test instances with the provided `type`.
 
-### `testInstance.findAllByProps()`
+### `testInstance.findAllByProps()` {#testinstancefindallbyprops}
 
 ```javascript
 testInstance.findAllByProps(props)
@@ -200,7 +200,7 @@ testInstance.findAllByProps(props)
 
 Find all descendant test instances with the provided `props`.
 
-### `testInstance.instance`
+### `testInstance.instance` {#testinstanceinstance}
 
 ```javascript
 testInstance.instance
@@ -208,7 +208,7 @@ testInstance.instance
 
 The component instance corresponding to this test instance. It is only available for class components, as function components don't have instances. It matches the `this` value inside the given component.
 
-### `testInstance.type`
+### `testInstance.type` {#testinstancetype}
 
 ```javascript
 testInstance.type
@@ -216,7 +216,7 @@ testInstance.type
 
 The component type corresponding to this test instance. For example, a `<Button />` component has a type of `Button`.
 
-### `testInstance.props`
+### `testInstance.props` {#testinstanceprops}
 
 ```javascript
 testInstance.props
@@ -224,7 +224,7 @@ testInstance.props
 
 The props corresponding to this test instance. For example, a `<Button size="small" />` component has `{size: 'small'}` as props.
 
-### `testInstance.parent`
+### `testInstance.parent` {#testinstanceparent}
 
 ```javascript
 testInstance.parent
@@ -232,7 +232,7 @@ testInstance.parent
 
 The parent test instance of this test instance.
 
-### `testInstance.children`
+### `testInstance.children` {#testinstancechildren}
 
 ```javascript
 testInstance.children
@@ -240,7 +240,7 @@ testInstance.children
 
 The children test instances of this test instance.
 
-## Ideas
+## Ideas {#ideas}
 
 You can pass `createNodeMock` function to `TestRenderer.create` as the option, which allows for custom mock refs.
 `createNodeMock` accepts the current element and should return a mock ref object.
diff --git a/content/docs/refs-and-the-dom.md b/content/docs/refs-and-the-dom.md
index 1dafc540f7..9b56fcc9f2 100644
--- a/content/docs/refs-and-the-dom.md
+++ b/content/docs/refs-and-the-dom.md
@@ -15,7 +15,7 @@ Refs provide a way to access DOM nodes or React elements created in the render m
 
 In the typical React dataflow, [props](/docs/components-and-props.html) are the only way that parent components interact with their children. To modify a child, you re-render it with new props. However, there are a few cases where you need to imperatively modify a child outside of the typical dataflow. The child to be modified could be an instance of a React component, or it could be a DOM element. For both of these cases, React provides an escape hatch.
 
-### When to Use Refs
+### When to Use Refs {#when-to-use-refs}
 
 There are a few good use cases for refs:
 
@@ -27,7 +27,7 @@ Avoid using refs for anything that can be done declaratively.
 
 For example, instead of exposing `open()` and `close()` methods on a `Dialog` component, pass an `isOpen` prop to it.
 
-### Don't Overuse Refs
+### Don't Overuse Refs {#dont-overuse-refs}
 
 Your first inclination may be to use refs to "make things happen" in your app. If this is the case, take a moment and think more critically about where state should be owned in the component hierarchy. Often, it becomes clear that the proper place to "own" that state is at a higher level in the hierarchy. See the [Lifting State Up](/docs/lifting-state-up.html) guide for examples of this.
 
@@ -35,7 +35,7 @@ Your first inclination may be to use refs to "make things happen" in your app. I
 >
 > The examples below have been updated to use the `React.createRef()` API introduced in React 16.3. If you are using an earlier release of React, we recommend using [callback refs](#callback-refs) instead.
 
-### Creating Refs
+### Creating Refs {#creating-refs}
 
 Refs are created using `React.createRef()` and attached to React elements via the `ref` attribute. Refs are commonly assigned to an instance property when a component is constructed so they can be referenced throughout the component.
 
@@ -51,7 +51,7 @@ class MyComponent extends React.Component {
 }
 ```
 
-### Accessing Refs
+### Accessing Refs {#accessing-refs}
 
 When a ref is passed to an element in `render`, a reference to the node becomes accessible at the `current` attribute of the ref.
 
@@ -67,7 +67,7 @@ The value of the ref differs depending on the type of the node:
 
 The examples below demonstrate the differences.
 
-#### Adding a Ref to a DOM Element
+#### Adding a Ref to a DOM Element {#adding-a-ref-to-a-dom-element}
 
 This code uses a `ref` to store a reference to a DOM node:
 
@@ -107,7 +107,7 @@ class CustomTextInput extends React.Component {
 
 React will assign the `current` property with the DOM element when the component mounts, and assign it back to `null` when it unmounts. `ref` updates happen before `componentDidMount` or `componentDidUpdate` lifecycle methods.
 
-#### Adding a Ref to a Class Component
+#### Adding a Ref to a Class Component {#adding-a-ref-to-a-class-component}
 
 If we wanted to wrap the `CustomTextInput` above to simulate it being clicked immediately after mounting, we could use a ref to get access to the custom input and call its `focusTextInput` method manually:
 
@@ -138,7 +138,7 @@ class CustomTextInput extends React.Component {
 }
 ```
 
-#### Refs and Function Components
+#### Refs and Function Components {#refs-and-function-components}
 
 **You may not use the `ref` attribute on function components** because they don't have instances:
 
@@ -189,7 +189,7 @@ function CustomTextInput(props) {
 }
 ```
 
-### Exposing DOM Refs to Parent Components
+### Exposing DOM Refs to Parent Components {#exposing-dom-refs-to-parent-components}
 
 In rare cases, you might want to have access to a child's DOM node from a parent component. This is generally not recommended because it breaks component encapsulation, but it can occasionally be useful for triggering focus or measuring the size or position of a child DOM node.
 
@@ -201,7 +201,7 @@ If you use React 16.2 or lower, or if you need more flexibility than provided by
 
 When possible, we advise against exposing DOM nodes, but it can be a useful escape hatch. Note that this approach requires you to add some code to the child component. If you have absolutely no control over the child component implementation, your last option is to use [`findDOMNode()`](/docs/react-dom.html#finddomnode), but it is discouraged and deprecated in [`StrictMode`](/docs/strict-mode.html#warning-about-deprecated-finddomnode-usage).
 
-### Callback Refs
+### Callback Refs {#callback-refs}
 
 React also supports another way to set refs called "callback refs", which gives more fine-grain control over when refs are set and unset.
 
@@ -277,7 +277,7 @@ class Parent extends React.Component {
 
 In the example above, `Parent` passes its ref callback as an `inputRef` prop to the `CustomTextInput`, and the `CustomTextInput` passes the same function as a special `ref` attribute to the `<input>`. As a result, `this.inputElement` in `Parent` will be set to the DOM node corresponding to the `<input>` element in the `CustomTextInput`.
 
-### Legacy API: String Refs
+### Legacy API: String Refs {#legacy-api-string-refs}
 
 If you worked with React before, you might be familiar with an older API where the `ref` attribute is a string, like `"textInput"`, and the DOM node is accessed as `this.refs.textInput`. We advise against it because string refs have [some issues](https://github.com/facebook/react/pull/8333#issuecomment-271648615), are considered legacy, and **are likely to be removed in one of the future releases**. 
 
@@ -285,6 +285,6 @@ If you worked with React before, you might be familiar with an older API where t
 >
 > If you're currently using `this.refs.textInput` to access refs, we recommend using either the [callback pattern](#callback-refs) or the [`createRef` API](#creating-refs) instead.
 
-### Caveats with callback refs
+### Caveats with callback refs {#caveats-with-callback-refs}
 
 If the `ref` callback is defined as an inline function, it will get called twice during updates, first with `null` and then again with the DOM element. This is because a new instance of the function is created with each render, so React needs to clear the old ref and set up the new one. You can avoid this by defining the `ref` callback as a bound method on the class, but note that it shouldn't matter in most cases.
diff --git a/content/docs/render-props.md b/content/docs/render-props.md
index ba396ce12d..c9b6f9c041 100644
--- a/content/docs/render-props.md
+++ b/content/docs/render-props.md
@@ -18,7 +18,7 @@ Libraries that use render props include [React Router](https://reacttraining.com
 
 In this document, we’ll discuss why render props are useful, and how to write your own.
 
-## Use Render Props for Cross-Cutting Concerns
+## Use Render Props for Cross-Cutting Concerns {#use-render-props-for-cross-cutting-concerns}
 
 Components are the primary unit of code reuse in React, but it's not always obvious how to share the state or behavior that one component encapsulates to other components that need that same state.
 
@@ -235,7 +235,7 @@ function withMouse(Component) {
 
 So using a render prop makes it possible to use either pattern.
 
-## Using Props Other Than `render`
+## Using Props Other Than `render` {#using-props-other-than-render}
 
 It's important to remember that just because the pattern is called "render props" you don't *have to use a prop named `render` to use this pattern*. In fact, [*any* prop that is a function that a component uses to know what to render is technically a "render prop"](https://cdb.reacttraining.com/use-a-render-prop-50de598f11ce).
 
@@ -267,9 +267,9 @@ Mouse.propTypes = {
 };
 ```
 
-## Caveats
+## Caveats {#caveats}
 
-### Be careful when using Render Props with React.PureComponent
+### Be careful when using Render Props with React.PureComponent {#be-careful-when-using-render-props-with-reactpurecomponent}
 
 Using a render prop can negate the advantage that comes from using [`React.PureComponent`](/docs/react-api.html#reactpurecomponent) if you create the function inside a `render` method. This is because the shallow prop comparison will always return `false` for new props, and each `render` in this case will generate a new value for the render prop.
 
diff --git a/content/docs/rendering-elements.md b/content/docs/rendering-elements.md
index d56b00001e..34bb62b7c5 100644
--- a/content/docs/rendering-elements.md
+++ b/content/docs/rendering-elements.md
@@ -22,7 +22,7 @@ Unlike browser DOM elements, React elements are plain objects, and are cheap to
 >
 >One might confuse elements with a more widely known concept of "components". We will introduce components in the [next section](/docs/components-and-props.html). Elements are what components are "made of", and we encourage you to read this section before jumping ahead.
 
-## Rendering an Element into the DOM
+## Rendering an Element into the DOM {#rendering-an-element-into-the-dom}
 
 Let's say there is a `<div>` somewhere in your HTML file:
 
@@ -42,7 +42,7 @@ To render a React element into a root DOM node, pass both to `ReactDOM.render()`
 
 It displays "Hello, world" on the page.
 
-## Updating the Rendered Element
+## Updating the Rendered Element {#updating-the-rendered-element}
 
 React elements are [immutable](https://en.wikipedia.org/wiki/Immutable_object). Once you create an element, you can't change its children or attributes. An element is like a single frame in a movie: it represents the UI at a certain point in time.
 
@@ -62,7 +62,7 @@ It calls `ReactDOM.render()` every second from a [`setInterval()`](https://devel
 >
 >We recommend that you don't skip topics because they build on each other.
 
-## React Only Updates What's Necessary
+## React Only Updates What's Necessary {#react-only-updates-whats-necessary}
 
 React DOM compares the element and its children to the previous one, and only applies the DOM updates necessary to bring the DOM to the desired state.
 
diff --git a/content/docs/state-and-lifecycle.md b/content/docs/state-and-lifecycle.md
index c58efae616..dd5e2238c0 100644
--- a/content/docs/state-and-lifecycle.md
+++ b/content/docs/state-and-lifecycle.md
@@ -74,7 +74,7 @@ State is similar to props, but it is private and fully controlled by the compone
 
 We [mentioned before](/docs/components-and-props.html#functional-and-class-components) that components defined as classes have some additional features. Local state is exactly that: a feature available only to classes.
 
-## Converting a Function to a Class
+## Converting a Function to a Class {#converting-a-function-to-a-class}
 
 You can convert a function component like `Clock` to a class in five steps:
 
@@ -107,7 +107,7 @@ class Clock extends React.Component {
 
 The `render` method will be called each time an update happens, but as long as we render `<Clock />` into the same DOM node, only a single instance of the `Clock` class will be used. This lets us use additional features such as local state and lifecycle methods.
 
-## Adding Local State to a Class
+## Adding Local State to a Class {#adding-local-state-to-a-class}
 
 We will move the `date` from props to state in three steps:
 
@@ -197,7 +197,7 @@ ReactDOM.render(
 
 Next, we'll make the `Clock` set up its own timer and update itself every second.
 
-## Adding Lifecycle Methods to a Class
+## Adding Lifecycle Methods to a Class {#adding-lifecycle-methods-to-a-class}
 
 In applications with many components, it's very important to free up resources taken by the components when they are destroyed.
 
@@ -318,11 +318,11 @@ Let's quickly recap what's going on and the order in which the methods are calle
 
 5) If the `Clock` component is ever removed from the DOM, React calls the `componentWillUnmount()` lifecycle method so the timer is stopped.
 
-## Using State Correctly
+## Using State Correctly {#using-state-correctly}
 
 There are three things you should know about `setState()`.
 
-### Do Not Modify State Directly
+### Do Not Modify State Directly {#do-not-modify-state-directly}
 
 For example, this will not re-render a component:
 
@@ -340,7 +340,7 @@ this.setState({comment: 'Hello'});
 
 The only place where you can assign `this.state` is the constructor.
 
-### State Updates May Be Asynchronous
+### State Updates May Be Asynchronous {#state-updates-may-be-asynchronous}
 
 React may batch multiple `setState()` calls into a single update for performance.
 
@@ -375,7 +375,7 @@ this.setState(function(state, props) {
 });
 ```
 
-### State Updates are Merged
+### State Updates are Merged {#state-updates-are-merged}
 
 When you call `setState()`, React merges the object you provide into the current state.
 
@@ -411,7 +411,7 @@ Then you can update them independently with separate `setState()` calls:
 
 The merging is shallow, so `this.setState({comments})` leaves `this.state.posts` intact, but completely replaces `this.state.comments`.
 
-## The Data Flows Down
+## The Data Flows Down {#the-data-flows-down}
 
 Neither parent nor child components can know if a certain component is stateful or stateless, and they shouldn't care whether it is defined as a function or a class.
 
diff --git a/content/docs/static-type-checking.md b/content/docs/static-type-checking.md
index b05a4b1a93..b01b92fec9 100644
--- a/content/docs/static-type-checking.md
+++ b/content/docs/static-type-checking.md
@@ -8,7 +8,7 @@ next: refs-and-the-dom.html
 
 Static type checkers like [Flow](https://flow.org/) and [TypeScript](https://www.typescriptlang.org/) identify certain types of problems before you even run your code. They can also improve developer workflow by adding features like auto-completion. For this reason, we recommend using Flow or TypeScript instead of `PropTypes` for larger code bases.
 
-## Flow
+## Flow {#flow}
 
 [Flow](https://flow.org/) is a static type checker for your JavaScript code. It is developed at Facebook and is often used with React. It lets you annotate the variables, functions, and React components with a special type syntax, and catch mistakes early. You can read an [introduction to Flow](https://flow.org/en/docs/getting-started/) to learn its basics.
 
@@ -20,7 +20,7 @@ To use Flow, you need to:
 
 We will explain these steps below in detail.
 
-### Adding Flow to a Project
+### Adding Flow to a Project {#adding-flow-to-a-project}
 
 First, navigate to your project directory in the terminal. You will need to run the following command:
 
@@ -67,17 +67,17 @@ npm run flow init
 
 This command will create a Flow configuration file that you will need to commit.
 
-### Stripping Flow Syntax from the Compiled Code
+### Stripping Flow Syntax from the Compiled Code {#stripping-flow-syntax-from-the-compiled-code}
 
 Flow extends the JavaScript language with a special syntax for type annotations. However, browsers aren't aware of this syntax, so we need to make sure it doesn't end up in the compiled JavaScript bundle that is sent to the browser.
 
 The exact way to do this depends on the tools you use to compile JavaScript.
 
-#### Create React App
+#### Create React App {#create-react-app}
 
 If your project was set up using [Create React App](https://github.com/facebookincubator/create-react-app), congratulations! The Flow annotations are already being stripped by default so you don't need to do anything else in this step.
 
-#### Babel
+#### Babel {#babel}
 
 >Note:
 >
@@ -114,11 +114,11 @@ This will let you use the Flow syntax in your code.
 >
 >Flow does not require the `react` preset, but they are often used together. Flow itself understands JSX syntax out of the box.
 
-#### Other Build Setups
+#### Other Build Setups {#other-build-setups}
 
 If you don't use either Create React App or Babel, you can use [flow-remove-types](https://github.com/flowtype/flow-remove-types) to strip the type annotations.
 
-### Running Flow
+### Running Flow {#running-flow}
 
 If you followed the instructions above, you should be able to run Flow for the first time.
 
@@ -139,7 +139,7 @@ No errors!
 ✨  Done in 0.17s.
 ```
 
-### Adding Flow Type Annotations
+### Adding Flow Type Annotations {#adding-flow-type-annotations}
 
 By default, Flow only checks the files that include this annotation:
 
@@ -158,7 +158,7 @@ Now you're all set! We recommend to check out the following resources to learn m
 * [Flow Documentation: React](https://flow.org/en/docs/react/)
 * [Linting in Flow](https://medium.com/flow-type/linting-in-flow-7709d7a7e969)
 
-## TypeScript
+## TypeScript {#typescript}
 
 [TypeScript](https://www.typescriptlang.org/) is a programming language developed by Microsoft. It is a typed superset of JavaScript, and includes its own compiler. Being a typed language, TypeScript can catch errors and bugs at build time, long before your app goes live. You can learn more about using TypeScript with React [here](https://github.com/Microsoft/TypeScript-React-Starter#typescript-react-starter).
 
@@ -170,7 +170,7 @@ To use TypeScript, you need to:
 
 Let's go over these in detail.
 
-### Using TypeScript with Create React App
+### Using TypeScript with Create React App {#using-typescript-with-create-react-app}
 
 Create React App supports TypeScript out of the box.
 
@@ -187,7 +187,7 @@ You can also add it to an **existing Create React App project**, [as documented
 >If you use Create React App, you can **skip the rest of this page**. It describes the manual setup which doesn't apply to Create React App users.
 
 
-### Adding TypeScript to a Project
+### Adding TypeScript to a Project {#adding-typescript-to-a-project}
 It all begins with running one command in your terminal.
 
 If you use [Yarn](https://yarnpkg.com/), run:
@@ -215,7 +215,7 @@ Congrats! You've installed the latest version of TypeScript into your project. I
 }
 ```
 
-### Configuring the TypeScript Compiler
+### Configuring the TypeScript Compiler {#configuring-the-typescript-compiler}
 The compiler is of no help to us until we tell it what to do. In TypeScript, these rules are defined in a special file called `tsconfig.json`. To generate this file run:
 
 ```bash
@@ -255,12 +255,12 @@ Great! Now when we run our build script the compiler will output the generated j
 
 Generally, you don't want to keep the generated javascript in your source control, so be sure to add the build folder to your `.gitignore`.
 
-### File extensions
+### File extensions {#file-extensions}
 In React, you most likely write your components in a `.js` file. In TypeScript we have 2 file extensions:
 
 `.ts` is the default file extension while `.tsx` is a special extension used for files which contain `JSX`.
 
-### Running TypeScript
+### Running TypeScript {#running-typescript}
 
 If you followed the instructions above, you should be able to run TypeScript for the first time.
 
@@ -277,7 +277,7 @@ npm run build
 If you see no output, it means that it completed successfully.
 
 
-### Type Definitions
+### Type Definitions {#type-definitions}
 To be able to show errors and hints from other packages, the compiler relies on declaration files. A declaration file provides all the type information about a library. This enables us to use javascript libraries like those on npm in our project. 
 
 There are two main ways to get declarations for a library:
@@ -310,18 +310,18 @@ You are now ready to code! We recommend to check out the following resources to
 * [TypeScript Documentation: Migrating from Javascript](https://www.typescriptlang.org/docs/handbook/migrating-from-javascript.html)
 * [TypeScript Documentation: React and Webpack](https://www.typescriptlang.org/docs/handbook/react-&-webpack.html)
 
-## Reason
+## Reason {#reason}
 
 [Reason](https://reasonml.github.io/) is not a new language; it's a new syntax and toolchain powered by the battle-tested language, [OCaml](https://ocaml.org/). Reason gives OCaml a familiar syntax geared toward JavaScript programmers, and caters to the existing NPM/Yarn workflow folks already know.
 
 Reason is developed at Facebook, and is used in some of its products like Messenger. It is still somewhat experimental but it has [dedicated React bindings](https://reasonml.github.io/reason-react/) maintained by Facebook and a [vibrant community](https://reasonml.github.io/docs/en/community.html).
 
-## Kotlin
+## Kotlin {#kotlin}
 
 [Kotlin](https://kotlinlang.org/) is a statically typed language developed by JetBrains. Its target platforms include the JVM, Android, LLVM, and [JavaScript](https://kotlinlang.org/docs/reference/js-overview.html). 
 
 JetBrains develops and maintains several tools specifically for the React community: [React bindings](https://github.com/JetBrains/kotlin-wrappers) as well as [Create React Kotlin App](https://github.com/JetBrains/create-react-kotlin-app). The latter helps you start building React apps with Kotlin with no build configuration.
 
-## Other Languages
+## Other Languages {#other-languages}
 
 Note there are other statically typed languages that compile to JavaScript and are thus React compatible. For example, [F#/Fable](http://fable.io) with [elmish-react](https://elmish.github.io/react). Check out their respective sites for more information, and feel free to add more statically typed languages that work with React to this page!
diff --git a/content/docs/strict-mode.md b/content/docs/strict-mode.md
index 09b3b9e5db..8d2752b356 100644
--- a/content/docs/strict-mode.md
+++ b/content/docs/strict-mode.md
@@ -24,7 +24,7 @@ In the above example, strict mode checks will *not* be run against the `Header`
 
 Additional functionality will be added with future releases of React.
 
-### Identifying unsafe lifecycles
+### Identifying unsafe lifecycles {#identifying-unsafe-lifecycles}
 
 As explained [in this blog post](/blog/2018/03/27/update-on-async-rendering.html), certain legacy lifecycle methods are unsafe for use in async React applications. However, if your application uses third party libraries, it can be difficult to ensure that these lifecycles aren't being used. Fortunately, strict mode can help with this!
 
@@ -34,7 +34,7 @@ When strict mode is enabled, React compiles a list of all class components using
 
 Addressing the issues identified by strict mode _now_ will make it easier for you to take advantage of async rendering in future releases of React.
 
-### Warning about legacy string ref API usage
+### Warning about legacy string ref API usage {#warning-about-legacy-string-ref-api-usage}
 
 Previously, React provided two ways for managing refs: the legacy string ref API and the callback API. Although the string ref API was the more convenient of the two, it had [several downsides](https://github.com/facebook/react/issues/1373) and so our official recommendation was to [use the callback form instead](/docs/refs-and-the-dom.html#legacy-api-string-refs).
 
@@ -51,7 +51,7 @@ Since object refs were largely added as a replacement for string refs, strict mo
 
 [Learn more about the new `createRef` API here.](/docs/refs-and-the-dom.html)
 
-### Warning about deprecated findDOMNode usage
+### Warning about deprecated findDOMNode usage {#warning-about-deprecated-finddomnode-usage}
 
 React used to support `findDOMNode` to search the tree for a DOM node given a class instance. Normally you don't need this because you can [attach a ref directly to a DOM node](/docs/refs-and-the-dom.html#creating-refs).
 
@@ -77,7 +77,7 @@ class MyComponent extends React.Component {
 >
 > In CSS, the [`display: contents`](https://developer.mozilla.org/en-US/docs/Web/CSS/display#display_contents) attribute can be used if you don't want the node to be part of the layout.
 
-### Detecting unexpected side effects
+### Detecting unexpected side effects {#detecting-unexpected-side-effects}
 
 Conceptually, React does work in two phases:
 * The **render** phase determines what changes need to be made to e.g. the DOM. During this phase, React calls `render` and then compares the result to the previous render.
@@ -115,7 +115,7 @@ At first glance, this code might not seem problematic. But if `SharedApplication
 
 By intentionally double-invoking methods like the component constructor, strict mode makes patterns like this easier to spot.
 
-### Detecting legacy context API
+### Detecting legacy context API {#detecting-legacy-context-api}
 
 The legacy context API is error-prone, and will be removed in a future major version. It still works for all 16.x releases but will show this warning message in strict mode:
 
diff --git a/content/docs/thinking-in-react.md b/content/docs/thinking-in-react.md
index 53caa2b208..3e054806a9 100644
--- a/content/docs/thinking-in-react.md
+++ b/content/docs/thinking-in-react.md
@@ -12,7 +12,7 @@ React is, in our opinion, the premier way to build big, fast Web apps with JavaS
 
 One of the many great parts of React is how it makes you think about apps as you build them. In this document, we'll walk you through the thought process of building a searchable product data table using React.
 
-## Start With A Mock
+## Start With A Mock {#start-with-a-mock}
 
 Imagine that we already have a JSON API and a mock from our designer. The mock looks like this:
 
@@ -31,7 +31,7 @@ Our JSON API returns some data that looks like this:
 ];
 ```
 
-## Step 1: Break The UI Into A Component Hierarchy
+## Step 1: Break The UI Into A Component Hierarchy {#step-1-break-the-ui-into-a-component-hierarchy}
 
 The first thing you'll want to do is to draw boxes around every component (and subcomponent) in the mock and give them all names. If you're working with a designer, they may have already done this, so go talk to them! Their Photoshop layer names may end up being the names of your React components!
 
@@ -59,7 +59,7 @@ Now that we've identified the components in our mock, let's arrange them into a
       * `ProductCategoryRow`
       * `ProductRow`
 
-## Step 2: Build A Static Version in React
+## Step 2: Build A Static Version in React {#step-2-build-a-static-version-in-react}
 
 <p data-height="600" data-theme-id="0" data-slug-hash="BwWzwm" data-default-tab="js" data-user="lacker" data-embed-version="2" class="codepen">See the Pen <a href="https://codepen.io/gaearon/pen/BwWzwm">Thinking In React: Step 2</a> on <a href="http://codepen.io">CodePen</a>.</p>
 <script async src="https://production-assets.codepen.io/assets/embed/ei.js"></script>
@@ -74,11 +74,11 @@ At the end of this step, you'll have a library of reusable components that rende
 
 Simply refer to the [React docs](/docs/) if you need help executing this step.
 
-### A Brief Interlude: Props vs State
+### A Brief Interlude: Props vs State {#a-brief-interlude-props-vs-state}
 
 There are two types of "model" data in React: props and state. It's important to understand the distinction between the two; skim [the official React docs](/docs/interactivity-and-dynamic-uis.html) if you aren't sure what the difference is.
 
-## Step 3: Identify The Minimal (but complete) Representation Of UI State
+## Step 3: Identify The Minimal (but complete) Representation Of UI State {#step-3-identify-the-minimal-but-complete-representation-of-ui-state}
 
 To make your UI interactive, you need to be able to trigger changes to your underlying data model. React makes this easy with **state**.
 
@@ -104,7 +104,7 @@ So finally, our state is:
   * The search text the user has entered
   * The value of the checkbox
 
-## Step 4: Identify Where Your State Should Live
+## Step 4: Identify Where Your State Should Live {#step-4-identify-where-your-state-should-live}
 
 <p data-height="600" data-theme-id="0" data-slug-hash="qPrNQZ" data-default-tab="js" data-user="lacker" data-embed-version="2" class="codepen">See the Pen <a href="https://codepen.io/gaearon/pen/qPrNQZ">Thinking In React: Step 4</a> on <a href="http://codepen.io">CodePen</a>.</p>
 
@@ -129,7 +129,7 @@ Cool, so we've decided that our state lives in `FilterableProductTable`. First,
 
 You can start seeing how your application will behave: set `filterText` to `"ball"` and refresh your app. You'll see that the data table is updated correctly.
 
-## Step 5: Add Inverse Data Flow
+## Step 5: Add Inverse Data Flow {#step-5-add-inverse-data-flow}
 
 <p data-height="600" data-theme-id="0" data-slug-hash="LzWZvb" data-default-tab="js,result" data-user="rohan10" data-embed-version="2" data-pen-title="Thinking In React: Step 5" class="codepen">See the Pen <a href="https://codepen.io/gaearon/pen/LzWZvb">Thinking In React: Step 5</a> on <a href="http://codepen.io">CodePen</a>.</p>
 
@@ -143,6 +143,6 @@ Let's think about what we want to happen. We want to make sure that whenever the
 
 Though this sounds complex, it's really just a few lines of code. And it's really explicit how your data is flowing throughout the app.
 
-## And That's It
+## And That's It {#and-thats-it}
 
 Hopefully, this gives you an idea of how to think about building components and applications with React. While it may be a little more typing than you're used to, remember that code is read far more than it's written, and it's extremely easy to read this modular, explicit code. As you start to build large libraries of components, you'll appreciate this explicitness and modularity, and with code reuse, your lines of code will start to shrink. :)
diff --git a/content/docs/typechecking-with-proptypes.md b/content/docs/typechecking-with-proptypes.md
index b2c72c6210..4004e7820c 100644
--- a/content/docs/typechecking-with-proptypes.md
+++ b/content/docs/typechecking-with-proptypes.md
@@ -32,7 +32,7 @@ Greeting.propTypes = {
 
 `PropTypes` exports a range of validators that can be used to make sure the data you receive is valid. In this example, we're using `PropTypes.string`. When an invalid value is provided for a prop, a warning will be shown in the JavaScript console. For performance reasons, `propTypes` is only checked in development mode.
 
-### PropTypes
+### PropTypes {#proptypes}
 
 Here is an example documenting the different validators provided:
 
@@ -119,7 +119,7 @@ MyComponent.propTypes = {
 };
 ```
 
-### Requiring Single Child
+### Requiring Single Child {#requiring-single-child}
 
 With `PropTypes.element` you can specify that only a single child can be passed to a component as children.
 
@@ -143,7 +143,7 @@ MyComponent.propTypes = {
 };
 ```
 
-### Default Prop Values
+### Default Prop Values {#default-prop-values}
 
 You can define default values for your `props` by assigning to the special `defaultProps` property:
 
diff --git a/content/docs/uncontrolled-components.md b/content/docs/uncontrolled-components.md
index fc904417ee..2b1c974052 100644
--- a/content/docs/uncontrolled-components.md
+++ b/content/docs/uncontrolled-components.md
@@ -43,7 +43,7 @@ Since an uncontrolled component keeps the source of truth in the DOM, it is some
 
 If it's still not clear which type of component you should use for a particular situation, you might find [this article on controlled versus uncontrolled inputs](http://goshakkk.name/controlled-vs-uncontrolled-inputs-react/) to be helpful.
 
-### Default Values
+### Default Values {#default-values}
 
 In the React rendering lifecycle, the `value` attribute on form elements will override the value in the DOM. With an uncontrolled component, you often want React to specify the initial value, but leave subsequent updates uncontrolled. To handle this case, you can specify a `defaultValue` attribute instead of `value`.
 
@@ -66,7 +66,7 @@ render() {
 
 Likewise, `<input type="checkbox">` and `<input type="radio">` support `defaultChecked`, and `<select>` and `<textarea>` supports `defaultValue`.
 
-## The file input Tag
+## The file input Tag {#the-file-input-tag}
 
 In HTML, an `<input type="file">` lets the user choose one or more files from their device storage to be uploaded to a server or manipulated by JavaScript via the [File API](https://developer.mozilla.org/en-US/docs/Web/API/File/Using_files_from_web_applications).
 
diff --git a/content/docs/web-components.md b/content/docs/web-components.md
index e0e8183b9b..cbfcc80e10 100644
--- a/content/docs/web-components.md
+++ b/content/docs/web-components.md
@@ -10,7 +10,7 @@ React and [Web Components](https://developer.mozilla.org/en-US/docs/Web/Web_Comp
 
 Most people who use React don't use Web Components, but you may want to, especially if you are using third-party UI components that are written using Web Components.
 
-## Using Web Components in React
+## Using Web Components in React {#using-web-components-in-react}
 
 ```javascript
 class HelloMessage extends React.Component {
@@ -40,7 +40,7 @@ function BrickFlipbox() {
 }
 ```
 
-## Using React in your Web Components
+## Using React in your Web Components {#using-react-in-your-web-components}
 
 ```javascript
 class XSearch extends HTMLElement {
diff --git a/content/tutorial/tutorial.md b/content/tutorial/tutorial.md
index 3e9065555a..0191348f00 100644
--- a/content/tutorial/tutorial.md
+++ b/content/tutorial/tutorial.md
@@ -14,7 +14,7 @@ redirect_from:
 
 This tutorial doesn't assume any existing React knowledge.
 
-## Before We Start the Tutorial
+## Before We Start the Tutorial {#before-we-start-the-tutorial}
 
 We will build a small game during this tutorial. **You might be tempted to skip it because you're not building games -- but give it a chance.** The techniques you'll learn in the tutorial are fundamental to building any React apps, and mastering it will give you a deep understanding of React.
 
@@ -33,7 +33,7 @@ You don't have to complete all of the sections at once to get the value out of t
 
 It's fine to copy and paste code as you're following along the tutorial, but we recommend to type it by hand. This will help you develop a muscle memory and a stronger understanding.
 
-### What Are We Building?
+### What Are We Building? {#what-are-we-building}
 
 In this tutorial, we'll show how to build an interactive tic-tac-toe game with React.
 
@@ -43,17 +43,17 @@ We recommend that you check out the tic-tac-toe game before continuing with the
 
 You can close the tic-tac-toe game once you're familiar with it. We'll be starting from a simpler template in this tutorial. Our next step is to set you up so that you can start building the game.
 
-### Prerequisites
+### Prerequisites {#prerequisites}
 
 We'll assume that you have some familiarity with HTML and JavaScript, but you should be able to follow along even if you're coming from a different programming language. We'll also assume that you're familiar with programming concepts like functions, objects, arrays, and to a lesser extent, classes.
 
 If you need to review JavaScript, we recommend reading [this guide](https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript). Note that we're also using some features from ES6 -- a recent version of JavaScript. In this tutorial, we're using [arrow functions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions), [classes](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes), [`let`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let), and [`const`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const) statements. You can use the [Babel REPL](babel://es5-syntax-example) to check what ES6 code compiles to.
 
-## Setup for the Tutorial
+## Setup for the Tutorial {#setup-for-the-tutorial}
 
 There are two ways to complete this tutorial: you can either write the code in your browser, or you can set up a local development environment on your computer.
 
-### Setup Option 1: Write Code in the Browser
+### Setup Option 1: Write Code in the Browser {#setup-option-1-write-code-in-the-browser}
 
 This is the quickest way to get started!
 
@@ -61,7 +61,7 @@ First, open this **[Starter Code](https://codepen.io/gaearon/pen/oWWQNa?editors=
 
 You can now skip the second setup option, and go to the [Overview](#overview) section to get an overview of React.
 
-### Setup Option 2: Local Development Environment
+### Setup Option 2: Local Development Environment {#setup-option-2-local-development-environment}
 
 This is completely optional and not required for this tutorial!
 
@@ -116,15 +116,15 @@ We recommend following [these instructions](https://babeljs.io/docs/editors/) to
 
 </details>
 
-### Help, I'm Stuck!
+### Help, I'm Stuck! {#help-im-stuck}
 
 If you get stuck, check out the [community support resources](/community/support.html). In particular, [Reactiflux Chat](https://discord.gg/0ZcbPKXt5bZjGY5n) is a great way to get help quickly. If you don't receive an answer, or if you remain stuck, please file an issue, and we'll help you out.
 
-## Overview
+## Overview {#overview}
 
 Now that you're set up, let's get an overview of React!
 
-### What Is React?
+### What Is React? {#what-is-react}
 
 React is a declarative, efficient, and flexible JavaScript library for building user interfaces. It lets you compose complex UIs from small and isolated pieces of code called "components".
 
@@ -170,7 +170,7 @@ JSX comes with the full power of JavaScript. You can put *any* JavaScript expres
 
 The `ShoppingList` component above only renders built-in DOM components like `<div />` and `<li />`. But you can compose and render custom React components too. For example, we can now refer to the whole shopping list by writing `<ShoppingList />`. Each React component is encapsulated and can operate independently; this allows you to build complex UIs from simple components.
 
-## Inspecting the Starter Code
+## Inspecting the Starter Code {#inspecting-the-starter-code}
 
 If you're going to work on the tutorial **in your browser,** open this code in a new tab: **[Starter Code](https://codepen.io/gaearon/pen/oWWQNa?editors=0010)**. If you're going to work on the tutorial **locally,** instead open `src/index.js` in your project folder (you have already touched this file during the [setup](#setup-option-2-local-development-environment)).
 
@@ -184,7 +184,7 @@ By inspecting the code, you'll notice that we have three React components:
 
 The Square component renders a single `<button>` and the Board renders 9 squares. The Game component renders a board with placeholder values which we'll modify later. There are currently no interactive components.
 
-### Passing Data Through Props
+### Passing Data Through Props {#passing-data-through-props}
 
 Just to get our feet wet, let's try passing some data from our Board component to our Square component.
 
@@ -223,7 +223,7 @@ After: You should see a number in each square in the rendered output.
 
 Congratulations! You've just "passed a prop" from a parent Board component to a child Square component. Passing props is how information flows in React apps, from parents to children.
 
-### Making an Interactive Component
+### Making an Interactive Component {#making-an-interactive-component}
 
 Let's fill the Square component with an "X" when we click it. 
 First, change the button tag that is returned from the Square component's `render()` function to this:
@@ -325,7 +325,7 @@ When you call `setState` in a component, React automatically updates the child c
 
 **[View the full code at this point](https://codepen.io/gaearon/pen/VbbVLg?editors=0010)**
 
-### Developer Tools
+### Developer Tools {#developer-tools}
 
 The React Devtools extension for [Chrome](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi?hl=en) and [Firefox](https://addons.mozilla.org/en-US/firefox/addon/react-devtools/) lets you inspect a React component tree with your browser's developer tools.
 
@@ -342,11 +342,11 @@ After installing React DevTools, you can right-click on any element on the page,
 3. Click "Change View" and then choose "Debug mode".
 4. In the new tab that opens, the devtools should now have a React tab.
 
-## Completing the Game
+## Completing the Game {#completing-the-game}
 
 We now have the basic building blocks for our tic-tac-toe game. To have a complete game, we now need to alternate placing "X"s and "O"s on the board, and we need a way to determine a winner.
 
-### Lifting State Up
+### Lifting State Up {#lifting-state-up}
 
 Currently, each Square component maintains the game's state. To check for a winner, we'll maintain the value of each of the 9 squares in one location.
 
@@ -543,20 +543,20 @@ Since the Square components no longer maintain state, the Square components rece
 
 Note how in `handleClick`, we call `.slice()` to create a copy of the `squares` array to modify instead of modifying the existing array. We will explain why we create a copy of the `squares` array in the next section.
 
-### Why Immutability Is Important
+### Why Immutability Is Important {#why-immutability-is-important}
 
 In the previous code example, we suggested that you use the `.slice()` operator to create a copy of the `squares` array to modify instead of modifying the existing array. We'll now discuss immutability and why immutability is important to learn.
 
 There are generally two approaches to changing data. The first approach is to *mutate* the data by directly changing the data's values. The second approach is to replace the data with a new copy which has the desired changes.
 
-#### Data Change with Mutation
+#### Data Change with Mutation {#data-change-with-mutation}
 ```javascript
 var player = {score: 1, name: 'Jeff'};
 player.score = 2;
 // Now player is {score: 2, name: 'Jeff'}
 ```
 
-#### Data Change without Mutation
+#### Data Change without Mutation {#data-change-without-mutation}
 ```javascript
 var player = {score: 1, name: 'Jeff'};
 
@@ -569,23 +569,23 @@ var newPlayer = Object.assign({}, player, {score: 2});
 
 The end result is the same but by not mutating (or changing the underlying data) directly, we gain several benefits described below.
 
-#### Complex Features Become Simple
+#### Complex Features Become Simple {#complex-features-become-simple}
 
 Immutability makes complex features much easier to implement. Later in this tutorial, we will implement a "time travel" feature that allows us to review the tic-tac-toe game's history and "jump back" to previous moves. This functionality isn't specific to games -- an ability to undo and redo certain actions is a common requirement in applications. Avoiding direct data mutation lets us keep previous versions of the game's history intact, and reuse them later.
 
-#### Detecting Changes
+#### Detecting Changes {#detecting-changes}
 
 Detecting changes in mutable objects is difficult because they are modified directly. This detection requires the mutable object to be compared to previous copies of itself and the entire object tree to be traversed.
 
 Detecting changes in immutable objects is considerably easier. If the immutable object that is being referenced is different than the previous one, then the object has changed.
 
-#### Determining When to Re-render in React
+#### Determining When to Re-render in React {#determining-when-to-re-render-in-react}
 
 The main benefit of immutability is that it helps you build _pure components_ in React. Immutable data can easily determine if changes have been made which helps to determine when a component requires re-rendering.
 
 You can learn more about `shouldComponentUpdate()` and how you can build *pure components* by reading [Optimizing Performance](/docs/optimizing-performance.html#examples).
 
-### Function Components
+### Function Components {#function-components}
 
 We'll now change the Square to be a **function component**.
 
@@ -611,7 +611,7 @@ We have changed `this.props` to `props` both times it appears.
 >
 >When we modified the Square to be a function component, we also changed `onClick={() => this.props.onClick()}` to a shorter `onClick={props.onClick}` (note the lack of parentheses on *both* sides). In a class, we used an arrow function to access the correct `this` value, but in a function component we don't need to worry about `this`.
 
-### Taking Turns
+### Taking Turns {#taking-turns}
 
 We now need to fix an obvious defect in our tic-tac-toe game: the "O"s cannot be marked on the board.
 
@@ -710,7 +710,7 @@ class Board extends React.Component {
 
 **[View the full code at this point](https://codepen.io/gaearon/pen/KmmrBy?editors=0010)**
 
-### Declaring a Winner
+### Declaring a Winner {#declaring-a-winner}
 
 Now that we show which player's turn is next, we should also show when the game is won and there are no more turns to make. We can determine a winner by adding this helper function to the end of the file:
 
@@ -772,11 +772,11 @@ We can now change the Board's `handleClick` function to return early by ignoring
 
 Congratulations! You now have a working tic-tac-toe game. And you've just learned the basics of React too. So *you're* probably the real winner here.
 
-## Adding Time Travel
+## Adding Time Travel {#adding-time-travel}
 
 As a final exercise, let's make it possible to "go back in time" to the previous moves in the game.
 
-### Storing a History of Moves
+### Storing a History of Moves {#storing-a-history-of-moves}
 
 If we mutated the `squares` array, implementing time travel would be very difficult.
 
@@ -816,7 +816,7 @@ history = [
 
 Now we need to decide which component should own the `history` state.
 
-### Lifting State Up, Again
+### Lifting State Up, Again {#lifting-state-up-again}
 
 We'll want the top-level Game component to display a list of past moves. It will need access to the `history` to do that, so we will place the `history` state in the top-level Game component.
 
@@ -1002,7 +1002,7 @@ At this point, the Board component only needs the `renderSquare` and `render` me
 
 **[View the full code at this point](https://codepen.io/gaearon/pen/EmmOqJ?editors=0010)**
 
-### Showing the Past Moves
+### Showing the Past Moves {#showing-the-past-moves}
 
 Since we are recording the tic-tac-toe game's history, we can now display it to the player as a list of past moves.
 
@@ -1069,7 +1069,7 @@ For each move in the tic-tac-toes's game's history, we create a list item `<li>`
 
 Let's discuss what the above warning means.
 
-### Picking a Key
+### Picking a Key {#picking-a-key}
 
 When we render a list, React stores some information about each rendered list item. When we update a list, React needs to determine what has changed. We could have added, removed, re-arranged, or updated the list's items.
 
@@ -1105,7 +1105,7 @@ If no key is specified, React will present a warning and use the array index as
 Keys do not need to be globally unique; they only need to be unique between components and their siblings.
 
 
-### Implementing Time Travel
+### Implementing Time Travel {#implementing-time-travel}
 
 In the tic-tac-toe game's history, each past move has a unique ID associated with it: it's the sequential number of the move. The moves are never re-ordered, deleted, or inserted in the middle, so it's safe to use the move index as a key.
 
@@ -1203,7 +1203,7 @@ If we click on any step in the game's history, the tic-tac-toe board should imme
 
 **[View the full code at this point](https://codepen.io/gaearon/pen/gWWZgR?editors=0010)**
 
-### Wrapping Up
+### Wrapping Up {#wrapping-up}
 
 Congratulations! You've created a tic-tac-toe game that:
 
diff --git a/content/warnings/dont-call-proptypes.md b/content/warnings/dont-call-proptypes.md
index 7eba370903..07dfa33f0b 100644
--- a/content/warnings/dont-call-proptypes.md
+++ b/content/warnings/dont-call-proptypes.md
@@ -12,7 +12,7 @@ permalink: warnings/dont-call-proptypes.html
 
 In a future major release of React, the code that implements PropType validation functions will be stripped in production. Once this happens, any code that calls these functions manually (that isn't stripped in production) will throw an error.
 
-### Declaring PropTypes is still fine
+### Declaring PropTypes is still fine {#declaring-proptypes-is-still-fine}
 
 The normal usage of PropTypes is still supported:
 
@@ -24,7 +24,7 @@ Button.propTypes = {
 
 Nothing changes here.
 
-### Don’t call PropTypes directly
+### Don’t call PropTypes directly {#dont-call-proptypes-directly}
 
 Using PropTypes in any other way than annotating React components with them is no longer supported:
 
@@ -42,7 +42,7 @@ If you depend on using PropTypes like this, we encourage you to use or create a
 
 If you don't fix the warning, this code will crash in production with React 16.
 
-### If you don't call PropTypes directly but still get the warning
+### If you don't call PropTypes directly but still get the warning {#if-you-dont-call-proptypes-directly-but-still-get-the-warning}
 
 Inspect the stack trace produced by the warning. You will find the component definition responsible for the PropTypes direct call. Most likely, the issue is due to third-party PropTypes that wrap React’s PropTypes, for example:
 
@@ -57,7 +57,7 @@ Button.propTypes = {
 
 In this case, `ThirdPartyPropTypes.deprecated` is a wrapper calling `PropTypes.bool`. This pattern by itself is fine, but triggers a false positive because React thinks you are calling PropTypes directly. The next section explains how to fix this problem for a library implementing something like `ThirdPartyPropTypes`. If it's not a library you wrote, you can file an issue against it.
 
-### Fixing the false positive in third party PropTypes
+### Fixing the false positive in third party PropTypes {#fixing-the-false-positive-in-third-party-proptypes}
 
 If you are an author of a third party PropTypes library and you let consumers wrap existing React PropTypes, they might start seeing this warning coming from your library. This happens because React doesn't see a "secret" last argument that [it passes](https://github.com/facebook/react/pull/7132) to detect manual PropTypes calls.
 
diff --git a/content/warnings/invalid-hook-call-warning.md b/content/warnings/invalid-hook-call-warning.md
index 38808adecb..156578ec22 100644
--- a/content/warnings/invalid-hook-call-warning.md
+++ b/content/warnings/invalid-hook-call-warning.md
@@ -16,11 +16,11 @@ There are three common reasons you might be seeing it:
 
 Let's look at each of these cases.
 
-## Mismatching Versions of React and React DOM
+## Mismatching Versions of React and React DOM {#mismatching-versions-of-react-and-react-dom}
 
 You might be using a version of `react-dom` (< 16.8.0) or `react-native` (< 0.59) that doesn't yet support Hooks. You can run `npm ls react-dom` or `npm ls react-native` in your application folder to check which version you're using. If you find more than one of them, this might also create problems (more on that below).
 
-## Breaking the Rules of Hooks
+## Breaking the Rules of Hooks {#breaking-the-rules-of-hooks}
 
 You can only call Hooks **while React is rendering a function component**:
 
@@ -85,7 +85,7 @@ You can use the [`eslint-plugin-react-hooks` plugin](https://www.npmjs.com/packa
 >[Custom Hooks](/docs/hooks-custom.html) *may* call other Hooks (that's their whole purpose). This works because custom Hooks are also supposed to only be called while a function component is rendering.
 
 
-## Duplicate React
+## Duplicate React {#duplicate-react}
 
 In order for Hooks to work, the `react` import from your application code needs to resolve to the same module as the `react` import from inside the `react-dom` package.
 
@@ -117,6 +117,6 @@ This problem can also come up when you use `npm link` or an equivalent. In that
 >
 >In general, React supports using multiple independent copies on one page (for example, if an app and a third-party widget both use it). It only breaks if `require('react')` resolves differently between the component and the `react-dom` copy it was rendered with.
 
-## Other Causes
+## Other Causes {#other-causes}
 
 If none of this worked, please comment in [this issue](https://github.com/facebook/react/issues/13991) and we'll try to help. Try to create a small reproducing example — you might discover the problem as you're doing it.
diff --git a/content/warnings/legacy-factories.md b/content/warnings/legacy-factories.md
index e26fed9def..a99d22e2f1 100644
--- a/content/warnings/legacy-factories.md
+++ b/content/warnings/legacy-factories.md
@@ -14,7 +14,7 @@ function render() {
 }
 ```
 
-## JSX
+## JSX {#jsx}
 
 React components can no longer be called directly like this. Instead [you can use JSX](/docs/jsx-in-depth.html).
 
@@ -27,7 +27,7 @@ function render() {
 }
 ```
 
-## Without JSX
+## Without JSX {#without-jsx}
 
 If you don't want to, or can't use JSX, then you'll need to wrap your component in a factory before calling it:
 
@@ -42,7 +42,7 @@ function render() {
 
 This is an easy upgrade path if you have a lot of existing function calls.
 
-## Dynamic components without JSX
+## Dynamic components without JSX {#dynamic-components-without-jsx}
 
 If you get a component class from a dynamic source, then it might be unnecessary to create a factory that you immediately invoke. Instead you can just create your element inline:
 
@@ -54,6 +54,6 @@ function render(MyComponent) {
 }
 ```
 
-## In Depth
+## In Depth {#in-depth}
 
 [Read more about WHY we're making this change.](https://gist.github.com/sebmarkbage/d7bce729f38730399d28)
diff --git a/content/warnings/refs-must-have-owner.md b/content/warnings/refs-must-have-owner.md
index e95dff489c..9eda89c4c9 100644
--- a/content/warnings/refs-must-have-owner.md
+++ b/content/warnings/refs-must-have-owner.md
@@ -22,7 +22,7 @@ This usually means one of three things:
 - You are trying to add a `ref` to an element that is being created outside of a component's render() function.
 - You have multiple (conflicting) copies of React loaded (eg. due to a misconfigured npm dependency)
 
-## Refs on Function Components
+## Refs on Function Components {#refs-on-function-components}
 
 If `<Foo>` is a function component, you can't add a ref to it:
 
@@ -33,7 +33,7 @@ If `<Foo>` is a function component, you can't add a ref to it:
 
 If you need to add a ref to a component, convert it to a class first, or consider not using refs as they are [rarely necessary](/docs/refs-and-the-dom.html#when-to-use-refs).
 
-## Strings Refs Outside the Render Method
+## Strings Refs Outside the Render Method {#strings-refs-outside-the-render-method}
 
 This usually means that you're trying to add a ref to a component that doesn't have an owner (that is, was not created inside of another component's `render` method). For example, this won't work:
 
@@ -56,7 +56,7 @@ ReactDOM.render(
 
 Consider if you [really need a ref](/docs/refs-and-the-dom.html#when-to-use-refs) before using this approach.
 
-## Multiple copies of React
+## Multiple copies of React {#multiple-copies-of-react}
 
 Bower does a good job of deduplicating dependencies, but npm does not. If you aren't doing anything (fancy) with refs, there is a good chance that the problem is not with your refs, but rather an issue with having multiple copies of React loaded into your project. Sometimes, when you pull in a third-party module via npm, you will get a duplicate copy of the dependency library, and this can create problems.
 

From 2a8c4a53b31f96236f5350d669d133de79b7053a Mon Sep 17 00:00:00 2001
From: Deniz Susman <susmandeniz@gmail.com>
Date: Fri, 8 Feb 2019 16:24:23 +0300
Subject: [PATCH 52/54] Typo fix in blog content (#1651)

"Recommendation" instead of "Recomendation".
---
 content/blog/2018-06-07-you-probably-dont-need-derived-state.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/content/blog/2018-06-07-you-probably-dont-need-derived-state.md b/content/blog/2018-06-07-you-probably-dont-need-derived-state.md
index 7709054b8a..6949be3ecf 100644
--- a/content/blog/2018-06-07-you-probably-dont-need-derived-state.md
+++ b/content/blog/2018-06-07-you-probably-dont-need-derived-state.md
@@ -213,7 +213,7 @@ To recap, when designing a component, it is important to decide whether its data
 Instead of trying to **"mirror" a prop value in state**, make the component **controlled**, and consolidate the two diverging values in the state of some parent component. For example, rather than a child accepting a "committed" `props.value` and tracking a "draft" `state.value`, have the parent manage both `state.draftValue` and `state.committedValue` and control the child's value directly. This makes the data flow more explicit and predictable.
 
 For **uncontrolled** components, if you're trying to reset state when a particular prop (usually an ID) changes, you have a few options:
-* **Recomendation: To reset _all internal state_, use the `key` attribute.**
+* **Recommendation: To reset _all internal state_, use the `key` attribute.**
 * Alternative 1: To reset _only certain state fields_, watch for changes in a special property (e.g. `props.userID`).
 * Alternative 2: You can also consider fall back to an imperative instance method using refs.
 

From 741dc3b5f1b83b793b725edec2b1ef88c9181c44 Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Fri, 8 Feb 2019 20:16:30 +0000
Subject: [PATCH 53/54] Just throw

---
 content/docs/hooks-reference.md | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/content/docs/hooks-reference.md b/content/docs/hooks-reference.md
index 90091d8d12..7a3a0dde8f 100644
--- a/content/docs/hooks-reference.md
+++ b/content/docs/hooks-reference.md
@@ -246,9 +246,7 @@ function reducer(state, action) {
     case 'reset':
       return init(action.payload);
     default:
-      // A reducer must always return a valid state.
-      // Alternatively you can throw an error if an invalid action is dispatched.
-      return state;
+      throw new Error();
   }
 }
 

From e3cf542e75018ff7f0104ab7a4df9dc2b8d43bef Mon Sep 17 00:00:00 2001
From: Dan Abramov <dan.abramov@gmail.com>
Date: Fri, 8 Feb 2019 20:37:28 +0000
Subject: [PATCH 54/54] Fix line numbers

---
 content/docs/hooks-reference.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/content/docs/hooks-reference.md b/content/docs/hooks-reference.md
index 7a3a0dde8f..dac51b17a1 100644
--- a/content/docs/hooks-reference.md
+++ b/content/docs/hooks-reference.md
@@ -232,7 +232,7 @@ You can also create the initial state lazily. To do this, you can pass an `init`
 
 It lets you extract the logic for calculating the initial state outside the reducer. This is also handy for resetting the state later in response to an action:
 
-```js{1-3,11-12,21,26}
+```js{1-3,11-12,19,24}
 function init(initialCount) {
   return {count: initialCount};
 }