From d731a058e4022e0259adfdbfcf7365201c4817a5 Mon Sep 17 00:00:00 2001
From: Edvin Erikson <edvin@rocketblast.com>
Date: Sat, 15 Aug 2015 17:03:21 +0200
Subject: [PATCH 1/2] Added documentation about pooled events

---
 docs/ref-05-events.md | 27 ++++++++++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)

diff --git a/docs/ref-05-events.md b/docs/ref-05-events.md
index 2a0ab348..e271f483 100644
--- a/docs/ref-05-events.md
+++ b/docs/ref-05-events.md
@@ -33,11 +33,36 @@ string type
 >
 > As of v0.12, 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
+
+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.  
+As such, you cannot access the event in an asynchronous way.
+
+```javascript
+function onClick(event) {
+  console.log(event); // => nullified object.
+  console.log(event.type); // => "click"
+  var eventType = event.type; // => "click"
+
+  setTimeout(function() {
+    console.log(event.type); // => null
+    console.log(eventType); // => "click"
+  }, 0);
+
+  this.setState({clickEvent: event}); // Won't work. this.state.clickEvent will only contain null values.
+  this.setState({eventType: event.type}); // You can still export event properties.
+}
+```
+
+> Note:
+>
+> If you want to access event properties in an asynchronous way, you need to create a new object e.g `var copiedEvent = assign({}, event);` or assign the specific properties to variables.
 
 ## Supported Events
 
 React normalizes events so that they have consistent properties across
-different browsers. 
+different browsers.
 
 The event handlers below are triggered by an event in the bubbling phase. To register an event handler for the capture phase, append `Capture` to the event name; for example, instead of using `onClick`, you would use `onClickCapture` to handle the click event in the capture phase.
 

From b37b8538a150e8fe419dea60c28f698c51387c63 Mon Sep 17 00:00:00 2001
From: Edvin Erikson <edvin@rocketblast.com>
Date: Sat, 15 Aug 2015 21:47:59 +0200
Subject: [PATCH 2/2] Updated event pooling note in docs

---
 docs/ref-05-events.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/ref-05-events.md b/docs/ref-05-events.md
index e271f483..86f65c5a 100644
--- a/docs/ref-05-events.md
+++ b/docs/ref-05-events.md
@@ -57,7 +57,7 @@ function onClick(event) {
 
 > Note:
 >
-> If you want to access event properties in an asynchronous way, you need to create a new object e.g `var copiedEvent = assign({}, event);` or assign the specific properties to variables.
+> 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