diff --git a/app/react-native/src/index.js b/app/react-native/src/index.js
index f197d31b91b0..21298b6d5241 100644
--- a/app/react-native/src/index.js
+++ b/app/react-native/src/index.js
@@ -11,6 +11,7 @@ const preview = new Preview();
 export const storiesOf = preview.storiesOf.bind(preview);
 export const setAddon = preview.setAddon.bind(preview);
 export const addDecorator = preview.addDecorator.bind(preview);
+export const clearDecorators = preview.clearDecorators.bind(preview);
 export const configure = preview.configure.bind(preview);
 export const getStorybook = preview.getStorybook.bind(preview);
 export const getStorybookUI = preview.getStorybookUI.bind(preview);
diff --git a/app/react-native/src/preview/index.js b/app/react-native/src/preview/index.js
index fd4e157c616d..742945492120 100644
--- a/app/react-native/src/preview/index.js
+++ b/app/react-native/src/preview/index.js
@@ -6,8 +6,7 @@ import parse from 'url-parse';
 import addons from '@storybook/addons';
 import createChannel from '@storybook/channel-websocket';
 import { EventEmitter } from 'events';
-import { StoryStore } from '@storybook/core/client';
-import StoryKindApi from './story_kind';
+import { StoryStore, ClientApi } from '@storybook/core/client';
 import OnDeviceUI from './components/OnDeviceUI';
 import StoryView from './components/StoryView';
 
@@ -15,26 +14,13 @@ export default class Preview {
   constructor() {
     this._addons = {};
     this._decorators = [];
-    this._stories = new StoryStore();
     this._events = new EventEmitter();
-  }
-
-  storiesOf(kind, module) {
-    if (module && module.hot) {
-      // TODO remove the kind on dispose
-    }
-
-    const fileName = module ? module.filename : null;
-
-    return new StoryKindApi(this._stories, this._addons, this._decorators, kind, fileName);
-  }
-
-  setAddon(addon) {
-    Object.assign(this._addons, addon);
-  }
+    this._stories = new StoryStore();
+    this._clientApi = new ClientApi({ storyStore: this._stories });
 
-  addDecorator(decorator) {
-    this._decorators.push(decorator);
+    ['storiesOf', 'setAddon', 'addDecorator', 'clearDecorators', 'getStorybook'].forEach(method => {
+      this[method] = this._clientApi[method].bind(this._clientApi);
+    });
   }
 
   configure(loadStories, module) {
@@ -45,19 +31,6 @@ export default class Preview {
     }
   }
 
-  getStorybook() {
-    return this._stories.getStoryKinds().map(kind => {
-      const fileName = this._stories.getStoryFileName(kind);
-
-      const stories = this._stories.getStories(kind).map(name => {
-        const render = this._stories.getStory(kind, name);
-        return { name, render };
-      });
-
-      return { kind, fileName, stories };
-    });
-  }
-
   getStorybookUI(params = {}) {
     return () => {
       let webUrl = null;
diff --git a/app/react-native/src/preview/story_kind.js b/app/react-native/src/preview/story_kind.js
deleted file mode 100644
index 01024277cac4..000000000000
--- a/app/react-native/src/preview/story_kind.js
+++ /dev/null
@@ -1,32 +0,0 @@
-/* eslint no-underscore-dangle: 0 */
-
-export default class StoryKindApi {
-  constructor(stories, addons, decorators, kind, fileName) {
-    this.kind = kind;
-    this._stories = stories;
-    this._decorators = decorators.slice();
-    this._fileName = fileName;
-    Object.assign(this, addons);
-  }
-
-  addDecorator(decorator) {
-    this._decorators.push(decorator);
-    return this;
-  }
-
-  add(story, fn) {
-    const decorated = this._decorate(fn);
-    this._stories.addStory(this.kind, story, decorated, this._fileName);
-    return this;
-  }
-
-  _decorate(fn) {
-    return this._decorators.reduce(
-      (decorated, decorator) => context => {
-        const _fn = () => decorated(context);
-        return decorator(_fn, context);
-      },
-      fn
-    );
-  }
-}
diff --git a/lib/core/src/client/preview/client_api.js b/lib/core/src/client/preview/client_api.js
index c159ee1ec511..9f268e783621 100644
--- a/lib/core/src/client/preview/client_api.js
+++ b/lib/core/src/client/preview/client_api.js
@@ -11,14 +11,7 @@ const defaultDecorateStory = (getStory, decorators) =>
   );
 
 export default class ClientApi {
-  constructor({
-    channel,
-    storyStore = new StoryStore(),
-    decorateStory = defaultDecorateStory,
-  } = {}) {
-    // channel can be null when running in node
-    // always check whether channel is available
-    this._channel = channel;
+  constructor({ storyStore = new StoryStore(), decorateStory = defaultDecorateStory } = {}) {
     this._storyStore = storyStore;
     this._addons = {};
     this._globalDecorators = [];