diff --git a/src/Resolver.js b/src/Resolver.js
index 0c1b62d..426bf60 100644
--- a/src/Resolver.js
+++ b/src/Resolver.js
@@ -1,8 +1,14 @@
/* eslint-disable no-underscore-dangle */
import React from "react";
-import ReactDOM from "react-dom";
-import {renderToStaticMarkup} from "react-dom/server";
+
+// react-dom seems to be clashing with react-native, no idea why
+// so I'll just comment them out to make it work in react-native.
+//import ReactDOM from "react-dom";
+//import {renderToStaticMarkup} from "react-dom/server";
+
+let ReactDOM;
+let renderToStaticMarkup
const ID = "ReactResolver.ID";
const CHILDREN = "ReactResolver.CHILDREN";
@@ -10,6 +16,16 @@ const HAS_RESOLVED = "ReactResolver.HAS_RESOLVED";
const IS_CLIENT = "ReactResolver.IS_CLIENT";
const PAYLOAD = "__REACT_RESOLVER_PAYLOAD__";
+/**
+ * Check if we're running under a ReactNative enviroment;
+ * @return {boolean}
+ *
+ * https://stackoverflow.com/questions/39468022/how-do-i-know-if-my-code-is-running-as-react-native
+ */
+function isReactNative() {
+ return (typeof navigator != 'undefined' && navigator.product == 'ReactNative');
+}
+
export default class Resolver extends React.Component {
static childContextTypes = {
resolver: React.PropTypes.instanceOf(Resolver),
@@ -47,14 +63,16 @@ export default class Resolver extends React.Component {
static resolve = function(render, initialData = {}) {
const queue = [];
- renderToStaticMarkup(
- {
- queue.push(promise);
- return Promise.resolve(true);
- })}>
- {render}
-
- );
+ if (!isReactNative()) {
+ renderToStaticMarkup(
+ {
+ queue.push(promise);
+ return Promise.resolve(true);
+ })}>
+ {render}
+
+ );
+ }
return Promise.all(queue).then((results) => {
const data = { ...initialData };