diff --git a/.gitignore b/.gitignore
index 548807aab6a6..bbe2c0a3d5a7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,7 @@
/shells/browser/firefox/*.xpi
/shells/browser/firefox/*.pem
/shells/browser/shared/build
+/packages/react-devtools-core/dist
/shells/dev/dist
build
node_modules
diff --git a/babel.config.js b/babel.config.js
index 1d705076ff9f..6dd41082dede 100644
--- a/babel.config.js
+++ b/babel.config.js
@@ -24,6 +24,9 @@ module.exports = api => {
} else {
targets.chrome = minChromeVersion.toString();
targets.firefox = minFirefoxVersion.toString();
+
+ // This targets RN/Hermes.
+ targets.IE = '11';
}
const plugins = [
['@babel/plugin-transform-flow-strip-types'],
diff --git a/fixtures/standalone/index.html b/fixtures/standalone/index.html
new file mode 100644
index 000000000000..17e133bae891
--- /dev/null
+++ b/fixtures/standalone/index.html
@@ -0,0 +1,284 @@
+
+
+
+
+ TODO List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/flow-typed/chrome.js b/flow-typed/chrome.js
new file mode 100644
index 000000000000..fac810912420
--- /dev/null
+++ b/flow-typed/chrome.js
@@ -0,0 +1,94 @@
+// @flow
+
+declare var chrome: {
+ devtools: {
+ network: {
+ onNavigated: {
+ addListener: (cb: (url: string) => void) => void,
+ removeListener: (cb: () => void) => void,
+ },
+ },
+ inspectedWindow: {
+ eval: (code: string, cb?: (res: any, err: ?Object) => any) => void,
+ tabId: number,
+ },
+ panels: {
+ create: (
+ title: string,
+ icon: string,
+ filename: string,
+ cb: (panel: {
+ onHidden: {
+ addListener: (cb: (window: Object) => void) => void,
+ },
+ onShown: {
+ addListener: (cb: (window: Object) => void) => void,
+ },
+ }) => void
+ ) => void,
+ themeName: ?string,
+ },
+ },
+ tabs: {
+ create: (options: Object) => void,
+ executeScript: (tabId: number, options: Object, fn: () => void) => void,
+ onUpdated: {
+ addListener: (
+ fn: (tabId: number, changeInfo: Object, tab: Object) => void
+ ) => void,
+ },
+ query: (options: Object, fn: (tabArray: Array